{{Předmět|Programování v asembleru|Jakub Yaghob|PRG017}}

## Přednáška ##

* [slidy](http://ulita.ms.mff.cuni.cz/pub/predn/PA/)

## Cvičení ##

* násobení/dělení (32/64it)
* převod čísla na řetězec (hexa, dec)
* C funkce: memset, memcpy, memcmp, memmove, strlen, bsearch
* FPU:
    * průměrná hodnota z pole floatů
    * vybrat nejdelší úsečku ze zadaného pole 
    * obsah n-úhelníku (vstup: pole bodů)
    * násobení matic
* SSE:
    * násobení matic
    * výběr největšího trojúhelníku z pole

## Zkouška ##

Na zkoušku nejsou potřeba žádné teoretické znalosti. Dostanete problém (typicky nějaký výpočetní - např. obsah mnohoúhelníka, násobení matic) a máte za úkol ho naprogramovat jako proceduru v assembleru. Algoritmus není potřeba vymýšlet, Yaghob vám ho popíše. S sebou můžete mít jakékoli pomůcky (zápisky, manuály Intelu...), dokonce i notebook a odladit řešení na něm. Doporučuji s sebou mít nějaký tahák, ve kterém se hledá rychleji, než v manuálech (viz odkazy).

## Odkazy ##

* [Dokumentace k NASM](http://nasm.sourceforge.net/doc/html/nasmdoci.html) (NASM je free assembler pro x86, v jeho dokumentaci jsou důkladně popsány snad všechny jejich instrukce)
* [tutorial na FPU](http://www.ray.masmcode.com/tutorial/index.html)
* [FPU instrukce](http://www.emboss.co.nz/pentopt/opcode_f.html)
* [Tahák z assembleru (FPU, MMX, SSE, SSE2, SSE3)](http://ksvi.mff.cuni.cz/%7Ekrulis/clanky/asm.pdf)

### Starší materiály ###

* [starší slidy](ftp://ulita.ms.mff.cuni.cz/predn/PRG017-old/)
* [Poznámky z přednášky](http://urtax.ms.mff.cuni.cz/%7Enovap2am/poznamky/assembler_prednaska.sxw)
* [Poznámky z cvičení](http://urtax.ms.mff.cuni.cz/%7Enovap2am/poznamky/assembler_cviceni.sxw) (příklady)
