Název:

Programování na strojové úrovni

Zkratka:ISU
Ak.rok:2019/2020
Semestr:letní
Studijní plán:
ProgramObor/
specializace
RočníkPovinnost
BIT-1.povinný
IT-BC-3BIT1.povinný
Vyučovací jazyk:čeština
Kredity:6 kreditů
Ukončení:zápočet+zkouška (písemná)
Výuka:
hod./sempřednáškasem./cvič.lab. cvič.poč. cvič.jiná
Rozsah:3900260
 zkouškatestycvičenílaboratořeostatní
Body:60162400
Garant:Orság Filip, Ing., Ph.D. (UITS)
Zástupce garanta:Hanáček Petr, doc. Dr. Ing. (UITS)
Přednášející:Hanáček Petr, doc. Dr. Ing. (UITS)
Orság Filip, Ing., Ph.D. (UITS)
Zbořil František V., doc. Ing., CSc. (UITS)
Cvičící:Benna Filip, Ing. (UIFS)
Goldmann Tomáš, Ing. (UITS)
Orság Filip, Ing., Ph.D. (UITS)
Semerád Lukáš, Ing. (UITS)
Fakulta:Fakulta informačních technologií VUT v Brně
Pracoviště:Ústav inteligentních systémů FIT VUT v Brně
Nahrazuje:
Strojově orientované jazyky (SOJ), FIT
Rozvrh:
DenVýukaTýdenMístnostOdDoPSKSkupiny
PopřednáškavýukyD105 11:0013:501BIB 2BIA 2BIB xx
PopřednáškavýukyD105 14:0016:501BIA 2BIA 2BIB xx
Útpoč. labvýukyN103 N104 N105 08:0009:501BIA 1BIB 2BIA 2BIB xx
Útpoč. labvýukyN103 N104 N105 10:0011:501BIA 1BIB 2BIA 2BIB xx
Útpoč. labvýukyN103 N104 N105 12:0013:501BIA 1BIB 2BIA 2BIB xx
Útpoč. labvýukyN103 N104 N105 14:0015:501BIA 1BIB 2BIA 2BIB xx
Útpoč. labvýukyN103 N104 N105 16:0017:501BIA 1BIB 2BIA 2BIB xx
Útpoč. labvýukyN103 N104 N105 18:0019:501BIA 1BIB 2BIA 2BIB xx
Stpoč. labvýukyN103 N104 08:0009:501BIA 1BIB 2BIA 2BIB xx
Stpoč. labvýukyN103 N104 N105 10:0011:501BIA 1BIB 2BIA 2BIB xx
Stpoč. labvýukyN103 N104 N105 12:0013:501BIA 1BIB 2BIA 2BIB xx
Stpoč. labvýukyN103 N104 N105 14:0015:501BIA 1BIB 2BIA 2BIB xx
Stpoč. labvýukyN103 N104 N105 16:0017:501BIA 1BIB 2BIA 2BIB xx
Stpoč. labvýukyN103 N104 N105 18:0019:501BIA 1BIB 2BIA 2BIB xx
 
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).
Anotace:
  Čí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.
Požadované prerekvizitní znalosti a dovednosti:
  Základní znalost programování v jazyce C.
Získané dovednosti, znalosti a kompetence z předmětu:
  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.
Dovednosti, znalosti a kompetence obecné:
  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.
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.
Literatura referenční:
 
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.
  • Carter, P.: Assembly language tutorial, http://www.drpaulcarter.com/pcasm/, 2002
  • IRVINE, Kip R. Assembly language for x86 processors. Seventh edition. Boston: Pearson, 2015. ISBN 978-0133769401.
Kontrolovaná výuka:
  
  • 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
Průběžná kontrola studia:
  
  • půlsemestrální písemný test
  • testy v počítačových cvičeních
Podmínky zápočtu:
  Nejméně 20 bodů získaných v průběhu semestru.

Minimální počet bodů nutný pro úspěšné absolvování semestrální zkoušky je 25.

 

Vaše IPv4 adresa: 54.210.158.163