Assembly
Ez a lap az ELTE programtervező matematikus hallgatóinak tartott fordítóprogramok I tárgy gyakorlatának segédanyaga lesz. A gyakorlaton assembly programok készítésével foglalkozunk. Lesznek magyarázatok, linkek, példaprogramok. Jelenleg nincs időm rendesen belefogni, de remélhetőleg még a nyáron többen nekiállunk, és a következő félév elejére el is készül.
Tehát még egyszer: ez a lap nem általában az assembly programozásról, hanem kimondottan az ELTE-n tartott gyakorlatról szól. Ha szeretnél írni egy wikikönyvet az assemblyről általában, akkor csinálj egy másik wikikönyvet.
Tartalom
szerkesztés- Számrendszerek, átváltás, negatív egészek ábrázolása (egyes/kettes komplemens), fixpontos és lebegőpontos számok, IEEE. Karakterek, ASCII, ISO-8859-2. Logikai értékek ábrázolása.
- Helló világ! Az assembly programok felépítése, kommentezés. Az elkészült program lefordítása, összeszerkesztése, futtatása.
- A számítógépek felépítése, processzor, memória, regiszterek, órajel, flagek. Memóiakezelés, lapozás, szegmentálás.
- Abszolút és relatív címzés, eltolások. A NASM címzés-kiterjesztései.
- mov
- db, dw, dd, resb, resw, resd
- inc, dec, add, adc, sub, mul, imul, div, idiv
- cbw, cwd, cwde, cdq
- and, or, xor, not, neg, shl, shr, sal, sar, rol, ror, rcl, rcr
- cmp
- Cimkék. Feltétel nélküli: jmp, feltételes előjelfüggetlen: je, jz, jne, jnz, feltételes előjel nélküli: ja, jnbe, jna, jbe, jb, jnae, je jae, jnb, jnc, feltételes előjeles: jg, jnle, jle, jng, jl, jnge, jge, jnl ugró utasítások. Egyéb: js, jns, jo, jno, jp, jpe, jcxz, jecxz.
Strukturált programok megvalósítása
- Szekvencia, elágazás és ciklus megvalósítása.
- push, pop
- A call és a ret utasítás. A függvények váza. Pareméterátadás és lokális változók használata. Visszatérési érték.
- A rendszerhívások szerepe, mibenléte. Konkrét példa: fájlkezelés, fájlok megnyitása, olvasás, írás, lezárás, hibakezelés.
Összmunka más programozási nyelvekkel
- %define, %xdefine, túlterhelés, megszűntetés, értékadás: %assign, stringkezelés: %strlen, %substr.
- %macro, túlterhelés, rekurzió, lokális címkék, változó paraméterszámú makrók, %rep, paraméterek konkatenációja.
- Egyszerű, assembly-n alapuló programfeltörési módszerek. Crackme-k.
- Hasznos linkek az assembly-vel és a tárggyal kapcsolatban.