Detail předmětu

Programování na strojové úrovni

ISU Ak. rok 2023/2024 letní semestr 6 kreditů

Číselné soustavy: zobrazování celých čísel bez a se znaménkem, aritmetika ve dvojkové soustavě, reálná čísla ve formátu IEEE-754. Strojový jazyk: jazyk symbolických instrukcí, základní funkce počítače. Konkrétní architektura procesoru: registry, základy organizace paměti, adresování, systém přerušení, práce s koprocesory, soubor instrukcí a jejich formát. Programování na úrovni strojového jazyka: základní programátorské konstrukce, překlad a linkování kódu. Návaznost na vyšší programovací jazyky: standardní předávání řízení a parametrů při volání funkcí, služby operačního systému. Koprocesor: formát čísel, instrukční sada, programování koprocesoru FPU.

Garant předmětu

Koordinátor předmětu

Jazyk výuky

česky, anglicky

Zakončení

zápočet+zkouška (písemná)

Rozsah

  • 39 hod. přednášky
  • 26 hod. pc laboratoře

Bodové hodnocení

  • 60 bodů závěrečná zkouška (písemná část)
  • 16 bodů půlsemestrální test (písemná část)
  • 24 bodů numerická cvičení

Zajišťuje ústav

Přednášející

Cvičící

Cíle předmětu

Seznámit s programováním počítačů na nejnižší úrovni se zaměřením na vybranou architekturu. Seznámit a naučit aktivně pracovat s číselnými soustavami, zobrazováním čísel bez a se znaménkem, aritmetikou v dvojkové soustavě a se zobrazováním reálných čísel. Seznámit s vybranou konkrétní architekturou procesorů, formátem instrukcí a adresovacími režimy. Naučit aktivně programovat běžné řídící konstrukce v asembleru s daným souborem instrukcí. Propojit programování v asembleru na nízké úrovni s programovacími jazyky vyšší úrovně knihovnami a službami operačního systému. Naučit používat koprocesor pro práci s reálnými čísly (FPU).
Studenti se seznámí s jednou konkrétní architekturou procesoru. Naučí se používat nejdůležitější instrukce daného procesoru a koprocesoru FPU, jazyk symbolických instrukcí a budou schopni vytvářet jednoduché programy, překládat je a spojovat do spustitelných programů. Získají základní vědomosti o předávání řízení, předávání parametrů, přehled o službách operačního systému a jejich volání a budou schopni tyto získané vědomosti prakticky používat. Studenti získají základní vědomosti o architektuře a činnosti procesoru, které patří k základním znalostem všech odborníků oboru IT. Naučí se řešit jednoduché problémy v jazyku symbolických instrukcí a návaznost na vyšší programovací jazyky.

Proč je předmět vyučován

Elementární znalost fungování procesoru na nízké úrovni z hlediska jeho programování je nepostradatelná dovednost budoucího odborníka z oblasti IT. Každý programátor by měl vědět, jak pracuje procesor a jak se programuje na úrovni instrukční sady.

Požadované prerekvizitní znalosti a dovednosti

Základní znalost programování v jazyce C.

Literatura studijní

  • Marek, R.: Assembler pro PC - učíme se programovat v jazyce, Computer Press, 2003, ISBN 80-7226-843-0
  • Duntemann, Jeff. Assembly language step-by-step: programming with linux. 3rd ed. Indianapolis: Wiley, 2009. ISBN 978-0470497029.
  • Irvine, Kip R. Assembly language for x86 processors. Seventh edition. Boston: Pearson, 2015. ISBN 978-0133769401.
  • Intel® 64 and IA-32 architectures software developer’s manual combined volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4. Webové stránky společnosti Intel [online]. [cit. 2022-01-06]. Dostupné z: https://www.intel.com/content/dam/develop/public/us/en/documents/325462-sdm-vol-1-2abcd-3abcd.pdf
  • The Netwide Assembler: NASM, Quick reference Guide [online]. [cit. 2022-01-06]. Dostupné z: https://www.nasm.us/xdoc/2.15.05/nasmdoc.pdf

Literatura referenční

Osnova přednášek

  1. Úvod, číselné soustavy, reprezentace čísel, binární aritmetika.
  2. Základní funkce procesoru, strojový jazyk, jazyk symbolických instrukcí, asembler.
  3. Architektura procesoru - registry, typy operandů, formát instrukcí, adresování paměti, přerušení.
  4. Architektura procesoru - přenosy, aritmetické a logické instrukce.
  5. Architektura procesoru - posuny a rotace, předávání řízení.
  6. Architektura procesoru - další instrukce.
  7. Půlsemestrální test.
  8. Zásady programování ve strojovém jazyku, základní řídící konstrukce.
  9. Funkce, standardní předávání řízení a parametrů.
  10. Programové moduly, knihovny, služby operačního systému.
  11. Koprocesor FPU - architektura, reprezentace reálných čísel, instrukční sada.
  12. Koprocesor FPU - instrukční sada, programování a ukázky použití.
  13. Překladač jazyka symbolických instrukcí - pseudoinstrukce, direktivy, výrazy, operátory, operandy a makra.

Osnova počítačových cvičení

  1. Číselné soustavy (převody mezi soustavami), číselné kódy (reprezentace záporných čísel).
  2. Překlad, sestavení a spuštění programu v příkazové řádce. Vývojové prostředí pro asemblery. Ladění programu ve vývojovém prostředí a v samostatném nástroji na ladění.
  3. Práce s registry a s pamětí (proměnné, pole).
  4. Aritmetické instrukce.
  5. Logické instrukce, instrukce posunů a rotací.
  6. Skokové instrukce, volání funkcí a předávání parametrů funkcím registry, knihovna pro vstupní a výstupní operace.
  7. Test.
  8. Základní řídicí konstrukce (if-then-else, while, do-while, for, switch-case).
  9. Instrukce pro práci s řetězci (poli).
  10. Test.
  11. Volání funkcí a předávání parametrů funkcím z knihoven vyšších programovacích jazyků.
  12. Práce s koprocesorem FPU.
  13. Test.

Průběžná kontrola studia

  • půlsemestrální písemný test
  • testy v počítačových cvičeních


  • průběžné bodované testy na počítačových cvičeních
  • testy v počítačových cvičeních zmeškané z důvodu nemoci nebo jiné, řádně doložené absenci lze nahradit v následujícím cvičení případně v jiném termínu domluveném s garantem předmětu

Podmínky zápočtu

Nejméně 20 bodů získaných v průběhu semestru.

Rozvrh

DenTypTýdnyMístn.OdDoKapacitaPSKSkupInfo
Po zkouška 2024-05-20 D0206 D0207 D105 E104 E112 09:0011:50 2. termín
Po zkouška 2024-06-03 E104 09:0011:50 3. termín (E104)
Po zkouška 2024-06-03 E112 09:0011:50 3. termín (E112)
Po zkouška 2024-03-18 D105 11:0012:30 Termín D105-11:00
Po přednáška 1., 2., 3., 4., 5., 6., 8., 10., 12., 13. výuky D105 11:0013:50400 1BIB 2BIA 2BIB xx 30 - 49 Orság
Po přednáška 2024-04-15 D105 11:0013:50400 1BIB 2BIA 2BIB xx 30 - 49 Jaroš
Po zkouška 2024-03-18 D105 12:3014:00 Termín D105-12:30
Po zkouška 2024-03-18 D0206 14:0015:30 Termín D206-14:00
Po zkouška 2024-03-18 D105 14:0015:30 Termín D105-14:00
Po zkouška 2024-04-29 D0206 14:0016:50 předtermín 1 (D0206)
Po zkouška 2024-04-29 D105 14:0016:50 předtermín 1 (D105)
Po přednáška 1., 2., 3., 4. výuky D0206 D0207 D105 14:0016:50560 1BIA 2BIA 2BIB xx 10 - 29 Husa
Po přednáška 5., 6., 8., 10., 13. výuky D0206 D0207 D105 14:0016:50560 1BIA 2BIA 2BIB xx 10 - 29 Jaroš
Po přednáška 11., 12. výuky D0206 D0207 D105 14:0016:50560 1BIA 2BIA 2BIB xx 10 - 29 Goldmann
Po zkouška 2024-03-18 D0206 15:3017:00 Termín D206-15:30
Po zkouška 2024-03-18 D105 15:3017:00 Termín D105-15:30
Út poč. lab *) 1., 2., 3., 4., 5., 6., 7., 8., 9. výuky N105 08:0009:5020 1BIA 1BIB 2BIA 2BIB xx
Út poč. lab 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. výuky N103 08:0009:5020 1BIA 1BIB 2BIA 2BIB xx Grézl
Út poč. lab výuky N104 08:0009:5020 1BIA 1BIB 2BIA 2BIB xx Setinský
Út poč. lab 2024-02-06 N103 08:0009:5020 1BIA 1BIB 2BIA 2BIB xx Orság
Út poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 9., 11., 12., 13. výuky N105 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Goldmann
Út poč. lab 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. výuky N103 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Grézl
Út poč. lab výuky N104 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Setinský
Út poč. lab 2024-02-06 N103 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Orság
Út poč. lab 2024-04-09 N105 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Orság
Út poč. lab *) výuky N103 12:0013:5020 1BIA 1BIB 2BIA 2BIB xx
Út poč. lab *) 1., 2., 3., 4., 5., 6., 7., 8., 9. výuky N104 12:0013:5020 1BIA 1BIB 2BIA 2BIB xx
Út poč. lab 1., 4., 5., 6., 7., 8., 9., 11., 12., 13. výuky N105 12:0013:5025 1BIA 1BIB 2BIA 2BIB xx Jaroš
Út poč. lab 2., 3. výuky N105 12:0013:5025 1BIA 1BIB 2BIA 2BIB xx Olšák
Út poč. lab 2024-04-09 N105 12:0013:5025 1BIA 1BIB 2BIA 2BIB xx Orság
Út poč. lab 1., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. výuky N105 14:0015:5020 1BIB xx Jaroš
Út poč. lab 2., 3., 4., 5., 7., 8., 9., 10., 11., 12., 13. výuky N103 14:0015:5020 1BIA 2BIA 2BIB xx Grézl
Út poč. lab výuky N104 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Husa
Út poč. lab 1., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. výuky N105 14:0015:5020 1BIA 2BIA 2BIB xx Jaroš
Út poč. lab 2., 3., 4., 5., 7., 8., 9., 10., 11., 12., 13. výuky N103 14:0015:5020 1BIB xx Grézl
Út poč. lab 2., 3. výuky N105 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Olšák
Út poč. lab 2024-02-06 N103 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Goldmann
Út poč. lab 2024-03-12 N103 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Sedlák
Út poč. lab 1., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. výuky N105 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Jaroš
Út poč. lab 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. výuky N103 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Grézl
Út poč. lab výuky N104 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Husa
Út poč. lab 2., 3. výuky N105 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Olšák
Út poč. lab 2024-02-06 N103 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Klhůfek
Út poč. lab výuky N104 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx Husa
Út poč. lab *) 1., 2., 3., 4., 5., 6., 7., 8., 9. výuky N105 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx
Út poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 10., 11., 12., 13. výuky N103 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx Klhůfek
Út poč. lab 2024-04-02 N103 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx Sedlák
St poč. lab *) 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N103 N104 08:0009:5020 1BIA 1BIB 2BIA 2BIB xx
St poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 9., 11., 12. výuky N105 08:0009:5020 1BIA 1BIB 2BIA 2BIB xx Orság
St poč. lab 2024-04-10 N105 08:0009:5020 1BIA 1BIB 2BIA 2BIB xx Goldmann
St poč. lab *) 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N103 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx
St poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 9., 11., 12. výuky N105 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Orság
St poč. lab 1., 2., 3., 4., 5., 6., 8., 9., 10., 11., 12. výuky N104 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Sedlák
St poč. lab 2024-03-20 N104 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Grézl
St poč. lab 2024-04-10 N105 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Jaroš
St poč. lab 1., 2., 3., 4., 5., 6., 8., 9., 10., 11., 12. výuky N104 12:0013:5020 1BIA 1BIB 2BIA 2BIB xx Sedlák
St poč. lab 1., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N105 12:0013:5020 1BIA 1BIB 2BIA 2BIB xx Jaroš
St poč. lab 2., 3., 4., 5., 7., 8., 9., 10., 11., 12. výuky N103 12:0013:5020 1BIA 1BIB 2BIA 2BIB xx Grézl
St poč. lab 2., 3. výuky N105 12:0013:5020 1BIA 1BIB 2BIA 2BIB xx Olšák
St poč. lab 2024-02-07 N103 12:0013:5020 1BIA 1BIB 2BIA 2BIB xx Goldmann
St poč. lab 2024-03-13 N103 12:0013:5020 1BIA 1BIB 2BIA 2BIB xx Sakin
St poč. lab 2024-03-20 N104 12:0013:5020 1BIA 1BIB 2BIA 2BIB xx Setinský
St poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N104 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Husa
St poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 10., 11., 12. výuky N103 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Klhůfek
St poč. lab 1., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N105 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Jaroš
St poč. lab 2., 3. výuky N105 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Olšák
St poč. lab 2024-04-03 N103 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Semerád
St poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N103 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Semerád
St poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N104 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Husa
St poč. lab 1., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N105 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Jaroš
St poč. lab 2., 3. výuky N105 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Olšák
St poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N103 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx Semerád
St poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N104 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx Husa
St poč. lab 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. výuky N105 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx Sedlák
Čt poč. lab 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. výuky N104 08:0009:5020 1BIA 1BIB 2BIA 2BIB xx Grézl
Čt poč. lab 2024-02-08 N104 08:0009:5020 1BIA 1BIB 2BIA 2BIB xx Orság
Čt poč. lab 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. výuky N104 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Grézl
Čt poč. lab výuky N105 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Orság
Čt poč. lab 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. výuky N204 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Semerád
Čt poč. lab 2024-02-08 N104 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Orság
Čt poč. lab 2024-02-08 N204 10:0011:5020 1BIA 1BIB 2BIA 2BIB xx Sakin
Čt poč. lab výuky N104 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Husa
Čt poč. lab výuky N204 14:0015:5020 1BIA 1BIB 2BIA 2BIB xx Sedlák
Čt poč. lab výuky N103 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Sakin
Čt poč. lab výuky N104 16:0017:5020 1BIA 1BIB 2BIA 2BIB xx Husa
Čt poč. lab výuky N103 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx Sakin
Čt poč. lab výuky N104 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx Husa
Čt poč. lab *) výuky N105 18:0019:5020 1BIA 1BIB 2BIA 2BIB xx
zkouška 2024-05-03 D0206 10:0012:50 předtermín 2 (D0206)
zkouška 2024-05-03 D105 10:0012:50 předtermín 2 (D105)
zkouška 2024-05-03 E112 10:0012:50 předtermín 2 (E112)
zkouška 2024-05-10 A112 13:0015:50 1. termín (A112)
zkouška 2024-05-10 D0206 13:0015:50 1. termín (D0206)
zkouška 2024-05-10 D0207 13:0015:50 1. termín (D0207)
zkouška 2024-05-10 D105 13:0015:50 1. termín (D105)
zkouška 2024-05-10 E104 13:0015:50 1. termín (E104)
zkouška 2024-05-10 E105 13:0015:50 1. termín (E105)
zkouška 2024-05-10 G202 13:0015:50 1. termín (G202)
Na výuku se nelze registrovat ve Studis. (Termíny cvičení mohou být v případě potřeby otevřeny dodatečně, ale nemusí být využity vůbec.)

Zařazení předmětu ve studijních plánech

Nahoru