Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

Hasonló dokumentumok
Assembly utasítások listája

Assembly Utasítások, programok. Iványi Péter

A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.

Aritmetikai utasítások I.

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

Assembly. Iványi Péter

A 32 bites x86-os architektúra regiszterei

assume CS:Code, DS:Data, SS:Stack Start mov dl, 100 mov dh, 100 push dx Rajz

Digitális rendszerek. Utasításarchitektúra szintje

A regiszterek az assembly programozás változói. A processzor az egyes mőveleteket kizárólag regiszterek közremőködésével tudja végrehajtani.

Adatelérés és memóriakezelés

1. Az utasítás beolvasása a processzorba

Bevezetés a számítástechnikába

code segment para public 'code' assume cs:code, ds:code, es:nothing, ss:nothing

Gyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék

Aritmetikai utasítások

Assembly programozás levelező tagozat

Assembly. Iványi Péter

A számítógép alapfelépítése

Máté: Assembly programozás

Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása

Archi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz

Előszó avagy Murphy és az optimizmus. Tartalomjegyzék

Processzorok Utasításszintű Kezelése tavasz

assume CS:Code, DS:Data, SS:Stack Start: xor di, di mov si, 1 Torles int 10h mov dl, 40 xor bh, bh mov ah, 02h Kesleltet int 16h

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Assembly Rekurzív függvények, EXE, C programok. Iványi Péter

A MiniRISC processzor

Assebly feladatok SHR SHL NOT NEG AND XOR. Ezt követően ismertetni kell a szoftver megszakítás fogalmát és szükségességét.

Assembly programozás levelező tagozat

Dr. Máté Eörs docens. Képfeldolgozás és Számítógépes Grafika Tanszék Árpád tér 2. II. em

Mikrokontrollerek. Tihanyi Attila május 8

GÁBOR DÉNES FŐISKOLA PREZENTÁCIÓ. Vezetőtanár: Ágoston György 2002/ szemeszter. 222 lap

ELŐSZÓTJ "Előszó" \l

Bevezetés az informatikába

Egyszerű RISC CPU tervezése

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Az integrált áramkörök kimenetének kialakítása

II. KMAPR21TNB, KMAPR21ONB PC

[1] Bevezetés. A "debug" a DOS-ból közvetlenûl indítható a "debug" szó begépelésével. Kilépés hasonlóképpen a "q" paranccsal történik.

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Máté: Számítógép architektúrák

A Számítógépek felépítése, mőködési módjai

1. ábra: Perifériára való írás idődiagramja

SZÁMÉRTÉKEK (ÁT)KÓDOLÁSA

Assembly Címzési módok. Iványi Péter

Máté: Számítógép architektúrák

Assembly programozás Bevezetés

GPU Lab. 3. fejezet. Az X86 Utasításkészlet. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Assembly Programozás Rodek Lajos Diós Gábor

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Intel x86 utasításkészlet + disassembler működése

Intel x86 utasításkészlet

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Bevezetés a számítástechnikába

Máté: Számítógép architektúrák

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Segédlet az Informatika alapjai I. című tárgy számrendszerek fejezetéhez

Architektúra, megszakítási rendszerek

INTEL 8085 gépi utasításkészlete

Programozás alapjai. 10. előadás

Programozott soros szinkron adatátvitel

2. Fejezet : Számrendszerek

Programozás II. Segédlet az első dolgozathoz

Bevezetés a méréstechnikába és jelfeldolgozásba. Tihanyi Attila április 24.

Paraméter átadás regisztereken keresztül

2016/08/31 02:45 1/6 Hardver alapok

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

A 6502 mikroprocesszor

Bevezetés az assembly nyelvbe

Máté: Assembly programozás

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Kitlei Róbert kitlei.web.elte.hu. Karunkról Kari digitális könyvtár

Számítógépek felépítése

Megszakítások és kivételek

Stack Vezérlés szerkezet Adat 2.

A TURBO DEBUGGER HASZNÁLATA

Máté: Számítógép architektúrák

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Központi vezérlőegység

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

2017/12/16 21:33 1/7 Hardver alapok

Máté: Számítógép architektúrák

Információs Technológia

Számítógép Architektúrák

Bevezetés a számítástechnikába

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

Az MSP430 mikrovezérlők digitális I/O programozása

Máté: Számítógép architektúrák

Digitális technika VIMIAA hét

Digitális technika VIMIAA01

Számítógép architektúrák

4. Fejezet : Az egész számok (integer) ábrázolása

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

16F628A megszakítás kezelése

Átírás:

Balaton Marcell Balázs Assembly jegyzet Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

1. Regiszterek Regiszterek fajtái a. Szegmensregiszterek cs (code): utasítások címzéséhez ss (stack): verem címzéséhez ds (data): adat terület címzéséhez es (extra): extra terület címzéséhez b. Index regiszterek si (source): forrásregiszter di (destination): célregiszter c. Vezérlő regiszterek ip (instruction pointer): utasítások számlálása bp (base pointer): az eltolás sp (stack pointer): verem teteje d. Munkaregiszterek ax: általános célra bx: általános célra és címzéshez szokás használni cx: általános célra és ciklusok lépésszámához dx: általános célra és megszakítások kezeléséhez A munkaregiszterek 16 bitesek; megkülönböztetünk alsó és felső részt. Ezeket x helyett l illetve h-val jelöljük. (pl: ah, cl) felső rész h alsó rész l 11011001 10110100 8 bit=1 bájt 8 bit=1bájt 16 bit = 2 bájt = 1 szó Assembly jegyzet 2 Balaton Marcell Balázs

e. Flag regiszter z (zero flag): értéke 1, ha az előző művelet kiértékelése 0-t eredményezett s (sign flag): értéke 1, ha az előjele negatív p (parity flag): értéke 1, ha az alsó bájtban páros számú 1-es bit volt c (carry flag): értéke 1, ha volt átvitel előjelnélküli műveletnél o (overflow flag): értéke 1, ha túlcsordulás volt előjeles műveletnél d (direction flag): értéke 1, ha előre t (trace flag): értéke 1, ha engedélyezett a lépésenkénti végrehajtás i (interrupt flag): értéke 1, ha engedélyezett a megszakítás A flag regisztereket a következő utasításokkal lehet befolyásolni: st_ (beállítás), cl_ (törlés), cm_ (ellentettjére állítás), ahol az aláhúzás helyére az imént felsorolt betűjeleket lehet behelyettesíteni. 2. Utasítások Utasítások általános felépítése utasítás cél vagy utasítás cél,forrás A cél mindig egy regiszter vagy változó, míg a forrás egy szám, egy regiszter vagy egy változó lehet. Bizonyos parancsok esetében nincs forrás (a forrás egyértelmű és fix). Utasítások fajtái a. Mozgató utasítások mov op1, op2: op1=op2 push op: verembe teszi az op értéket pop op: veremből kiveszi a legfelső elemet lea reg, memcím lea reg, offset xchg op1, op2: csere les reg, op lds reg, op Assembly jegyzet 3 Balaton Marcell Balázs

b. Aritmetikai utasítások add op1, op2: op1:=op1+op2 adc op1, op2: op1:=op1+op2+c sub op1, op2: op1:=op1-op2 sbb op1, op2: op1:=op1-(op2+c) inc op op:=op+1 dec op op:=op-1 mul op 2 bájtos op-nál: (dx,ax):=ax*op; 1 bájtosnál ax:=al*op imul op előjeles szorzás div op 2 bájtos op-nál: (dx,ax)/op; hányados ax-be, maradék dx-be. 1 bájtos op-nál: ax/op; hányados al-be, maradék ah-ba kerül. idiv op előjeles; hányados: al-be, maradék ah-ba. cmp op1, op2 összehasonlítja op1-et és op2-t c. Logikai utasítások and op1, op2 or op1, op2 xor op1, op2 not op d. Bitforgató utasítások rol op (rotate left): a bitek balra tolódnak, a jobbra kieső balról visszakerül ror op (rotate right): a bitek jobbra tolódnak, a balra kieső jobbról visszakerül rcl op (rotate carry left): a bitek balra tolódnak, a jobbra kieső bekerül a carry-be, miközben a carry értéke balról visszakerül rcr op (rotate carry right): a bitek jobbra tolódnak, a balra kieső bekerül a carry-be, miközben a carry értéke jobbról visszakerül shl op (shift left): a bitek balra tolódnak, a balra kieső bekerül a carry-be shr op (shift right): a bitek jobbra tolódnak, a jobbra kieső bekerül a carry-be sal op (shift arithmetic left): a bitek balra tolódnak, a balra kieső bekerül a carry-be, a felszabaduló helyre pedig egy 0 Assembly jegyzet 4 Balaton Marcell Balázs

sar op (shift arithmetic right): a bitek jobbra tolódnak, a jobbra kieső bekerül a carry-be, a felszabaduló helyre pedig az első bittel egyező e. Vezérlésátadó utasítások jmp címke: feltétel nélküli vezérlésátadás jz címke (jump zero): vezérlésátadás, ha a zero flag 1 jnz címke (jump not zero): vezérlésátadás, ha a zero flag 0 : a z felcserélhető a flag regiszterhez kapcsolódó más betűjelekkel is je címke: előző előjeles vagy előjelnélküli utasítás = jl címke: előző előjeles utasítás < jg címke: előző előjeles utasítás > jb címke: előző előjelnélküli utasítás < ja címke: előző előjelnélküli utasítás > loop címke: ciklusszervezéshez; visszaugrik a címkéhez, amíg a cx regiszter értéke nem 0 call címke: átadja a vezérlést, a híváskori cím a verembe kerül ret: visszatér arra a címre, ahonnan a call parancs eltérítette a vezérlést 3. Gyakran használt parancspárok Képernyő címzése mov ax,0b800h mov es,ax Képernyőtörlés mov ax,3 ;25x80-as képernyő kódja a 3 int 10h ;az ax regiszterben beállított módban meghívja a törlés bios programot Billentyűvárás xor ax,ax ;nullázza az ax-et int 16h ;meghívjuk a bios programot Kilépés DOS-ba mov ax,4c00h Int 21h Assembly jegyzet 5 Balaton Marcell Balázs

Egyszerű példák Egy betű kiírása Egy karaktert úgy tudunk megjeleníteni a képernyőn, hogy betöltjük az egyik munkaregiszter alsó részébe, színét pedig beállítjuk a felső részébe. Ezek után jöhet a kiíratás. mov ax,0b800h ;Az ax-be betöltjük a 0b800 hexadecimális számot. Ez a képernyő bal felső sarka. mov es,ax ;Az es regiszterbe betöltjük az ax tartalmát, ami az imént betöltött szám lesz. Ezt azért kell két lépésben megtenni, mert az extraregiszter direktbe nem címezhető. mov di,1840 ;Beállítjuk, hogy 1840 karakterrel eltoljuk a kiírás pontját a bal felső sarokból. Kb. a képernyő közepén lesz ez a pont. mov al,"a" ;A regiszter alsó részébe betöltjük az A betűt. Azért tettük macskakörmök közé, mert most karakter formában adtuk meg, de írhattuk volna az A betű ASCII kódját decimális, hexadecimális, vagy akár bináris számmal is - kinek melyik a legszimpatikusabb. Decimális szám esetén csak magát a számot kell leírni, hexadecimálisnál egy h betűt, binárisnál pedig egy b betűt kell a szám végére biggyeszteni. mov ah,24h ;A regiszter felső részébe betöltjük a kiírandó karakter színét. A lentebb látható ábra mutatja, hogy ezt hogyan is számíthatjuk ki. Az itt megadott 24 hexadecimális szám zöld alapon piros betűt eredményez. mov es:[di],ax ;Kiíratjuk az képernyőre, a di eltolással az ax regiszter tartalmát. Szín kiszámítása Az előző példában az ah tartalma a következő volt: 0 0 1 0 0 1 0 0 Az ah-t is két részre osztjuk: a felsőben a háttér színét határozhatjuk meg, az alsóban a előtérét. A bitek szerepe balról jobbra a következő: Villogás Piros Zöld Kék Intenzitás Piros Zöld Kék előtér háttér előtér! A villogás természetesen szintén az előtérre vonatkozik. A végtelen elérése A következő rövid kódrészlet azok számára íródott, akik szeretnének elvont dolgokkal megismerkedni. Várd meg a következő program végét, és megtudod, mi az a végtelen! cimke: jmp cimke ;Ezt a konstrukciót sokan csak végtelen ciklus néven emlegetik. Assembly jegyzet 6 Balaton Marcell Balázs