Aritmetikai utasítások I.



Hasonló dokumentumok
Aritmetikai utasítások

Assembly programozás levelező tagozat

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

Assembly programozás: 2. gyakorlat

Máté: Assembly programozá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.

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

3. gyakorlat. Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F}

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

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

Assembly. Iványi Péter

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

Harmadik gyakorlat. Számrendszerek

A 32 bites x86-os architektúra regiszterei

SZÁMRENDSZEREK KÉSZÍTETTE: JURÁNYINÉ BESENYEI GABRIELLA

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

2. Fejezet : Számrendszerek

Processzorok Utasításszintű Kezelése tavasz

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

Programozott soros szinkron adatátvitel

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

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

Fixpontos és lebegőpontos DSP Számrendszerek

Assembly utasítások listája

Assembly. Iványi Péter

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

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

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

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

Informatikai Rendszerek Alapjai

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

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

(jegyzet) Bérci Norbert szeptember 10-i óra anyaga. 1. Számrendszerek A számrendszer alapja és a számjegyek

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

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

DIGITÁLIS TECHNIKA I BINÁRIS SZÁMRENDSZER BEVEZETŐ ÁTTEKINTÉS BINÁRIS SZÁMRENDSZER HELYÉRTÉK. Dr. Lovassy Rita Dr.

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

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

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.

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Dr. Oniga István DIGITÁLIS TECHNIKA 2

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

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

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

A TMS320C50 és TMS320C24x assembly programozására példák

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

I+K technológiák. Számrendszerek, kódolás

Gyakorló feladatok. Bipoláris tranzisztor

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

[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.

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.

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

Műveletek lebegőpontos adatokkal

5. Fejezet : Lebegőpontos számok

LEBEGŐPONTOS SZÁMÁBRÁZOLÁS

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.

ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA

INFO1 Számok és karakterek

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

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

DIGITÁLIS TECHNIKA BINÁRIS SZÁMRENDSZER BEVEZETŐ ÁTTEKINTÉS BINÁRIS SZÁMRENDSZER HELYÉRTÉK. Dr. Lovassy Rita Dr.

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

Bevezetés az informatikába Tételsor és minta zárthelyi dolgozat 2014/2015 I. félév

5. Fejezet : Lebegőpontos számok. Lebegőpontos számok

Assembly programozás levelező tagozat

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

Bevezetés az informatikába

Assembly programozás Bevezetés

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

A számrendszerekrl általában

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

Karunkról Kari digitális könyvtár

Adatok ábrázolása, adattípusok

Adattípusok. Dr. Seebauer Márta. Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár

Informatika érettségi vizsga

Központi vezérlőegység

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

Matematikai alapok. Dr. Iványi Péter

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

ASSEMBLY PROGRAMOZÁS

Digitális technika VIMIAA02 1. EA Fehér Béla BME MIT

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

Alapfogalmak. Dr. Kallós Gábor A Neumann-elv. Számolóeszközök és számítógépek. A számítógép felépítése

Digitális technika VIMIAA01

Digitális technika VIMIAA02 1. EA

Digitális technika VIMIAA01

AZ SIMD ARCHITEKTÚRA BEVEZETÉSE AZ OKTATÁSBA INTRODUCTION OF SIMD ARCHITECTURE TO EDUCATION

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

DIGITÁLIS TECHNIKA I SZÁMRENDSZEREK HELYÉRTÉK SZÁMRENDSZEREK RÓMAI SZÁMOK ÉS RENDSZERÜK. Dr. Lovassy Rita Dr.

Digitális technika VIMIAA hét

DIGITÁLIS TECHNIKA I KÓD IRODALOM SZIMBÓLUMKÉSZLET KÓDOLÁS ÉS DEKÓDOLÁS

Kedves Diákok! A feladatok legtöbbször egy pontot érnek. Ahol ettől eltérés van, azt külön jelöljük.

10-es számrendszer, 2-es számrendszer, 8-as számrendszer, 16-os számr. Számjegyek, alapműveletek.

Digitális technika VIMIAA01

Verilog HDL ismertető 2. hét : 1. hét dia

TARTALOMJEGYZÉK. 1. BEVEZETÉS A logikai hálózatok csoportosítása Logikai rendszerek... 6

Architektúra, megszakítási rendszerek

A feladatok legtöbbször egy pontot érnek. Ahol ettől eltérés van, azt külön jelöljük.

Digitális technika VIMIAA hét

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

Átírás:

Aritmetikai utasítások I. Az értékadó és aritmetikai utasítások során a címzési módok különböző típusaira látunk példákat. A 8086/8088-as mikroprocesszor memóriája és regiszterei a little endian tárolást követik, vagyis az alacsonyabb címen az alacsonyabb helyiértékű bájt helyezkedik el. Az assembly nyelvben a negatív számok ábrázolására a kettes komplemens számábrázolást használják. Az egyes műveletek beállítják a STATUS regiszter bitjeit is: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - - - - O D I T S Z - A - P - C Overflow Előjeles túlcsordulás Direction a string műveletek iránya, 0: növekvő, 1: csökkenő Interrupt 1: megszakítás engedélyezése, 0: tiltása Trap 1: single step, 0: automatikus üzemmód Sign az eredmény legmagasabb helyiértékű bitje (előjel) Zero 1, ha az eredmény 0, különben 0 Auxiliary Carry átvitel a 3. és 4. bit között (decimális aritmetika) Parity az eredmény alsó 8 bitjének paritása Carry átvitel előjel nélküli műveletekhez Bevezetésképpen megnézzük a MOV utasítás működését. A MOV utasítás nem aritmetikai utasítás, viszont fontos megemlíteni a további példák miatt. Az adatmozgató utasítások nem módosítják a flag-eket. MOV: A MOV operációs kód után két operandust kell megadni. Az első operandusába képződik le az eredmény. Példa: MOV AX, 0006h ; AX = 0006h MOV AX, -0F10h ; AX = F0F0h kettes komplemens Tegyük fel, hogy az adatszegmensünkben az alábbi tartalom van:

DS:0000 CD 20 FF 9F 00 9A F0 FE MOV AL, [0] ; AL = CD nem szokás így hivatkozni, de szabályos MOV AX, [0] ; AX= 20CD little endian Összeadás ADD: Az ADD utasítás az eslő operandushoz hozzáadja a második operandus értékét. Az ADD utasítás módosítja a C, az O és a S flag értékét a STATUS regiszterben (mást is, de azzal most nem foglalkozunk). Példa: MOV AX, 0005h ADD AL, 01h ; AX=0005h ; AX=0006h Térjünk vissza a fenti DS regiszter tartalomhoz: DS:0000 CD 20 FF 9F 00 9A F0 FE MOV AX, 0005h ; AX=0005h ADD AL, [01h] ; AX=0025h DS:0001h = 20 MOV AX, 0005h MOV BX, 0006h ADD AX, BX ; AX=0005h ; BX=0006h ; AX=000Bh MOV AX, 0005h ; AX=0005h MOV BX, 0006h ; BX=0006h ADD AX, [BX] ; AX=FEF5h DS:0006h = F0, de word-öt olvasunk!! Az összeadás során ügyelni kell a túlcsordulásokra. 16 biten csak a [-32768 ; 32767] intervallumban tudunk tárolni előjeles számokat. Tekintsük az alábbi példát: Decimális Bináris 16 bites előjeles (decimális) eredmény 0101 0011 0110 0100 + 0110 0100 1111 0001 21348 + 25841 47189 0 1 011 1000 0101 0101 C S 21348 + 25841-18347

A fenti példában az előjeles számábrázolás miatt nem a valódi értéket kapjuk vissza 16 biten. A 2-es komplemenses számábrázolásban az első bit az előjel bit, amely ha 1, akkor negatív számról van szó. A fenti számítás assemblyben az alábbi kódrészlettel valósítható meg (hexadecimális értékeket használva): MOV AX, 5364h ; AX=5364h ADD AX, 64F1h ; AX=B855h az AX-ben tárolt érték negatív, S:1 O:1 Két 16 bites számnál gondot okozhat az átvitel is. példát: Lássuk az alábbi Decimális Bináris 16 bites előjeles (decimális) eredmény 1001 0000 0000 0000 + 1000 1000 0000 0000-28672 + -30720-59392 1 0 001 1000 0000 0000 C S -28672 + -30720 + 6144 Az eredményben a Carry értéke 1-es, az előjel pedig pozitív. Ugyanez a példa egy assembly kódrészletben: MOV AX, 9000h ; AX=9000h ADD AX, 8800h ; AX=1800h az AX-ben tárolt érték pozitív, S:0 O:1 C:1 Ha egy 8 bites és egy 16 bites számot szeretnénk összeadni előjelhelyesen, akkor assemblyben a 8 bites operandust 16 bitesre kell konvertáltunk. CBW: Az AL 8 bites regiszterben tárolt értéket 16 bitesre konvertálja (előjelhelyesen). Példa: MOV AL, -10d MOV BX, 2525d CBW ADD AX, BX ; AL=0F6h ; BX=99DDh ; AX=FFF6h ; AX=09D3h

Szorzás Assemblyben megkülönböztetünk előjeles és előjel nélküli szorzást. MUL: Előjel nélküli szorzás. A szorzás műveletét úgy alakították ki, hogy két 8 bites, vagy pedig két 16 bites számot tudjunk szorozni. A MUL utasításnak egyetlen operandusa van, amely nem lehet közvetlen operandus (vagyis konstans). Két szám szorzatakor egy egyik (első) operandus 8 bites számok esetén az AL-ben tárolódik, 16 bites számok esetén pedig AX-ben. Két 8 bites vagy 16 bites szám szorzata ritkán fér el 8 illetve 16 biten, ezért 8 bites operandusok szorzata AX-ben keletkezik, a 16 bites operandusok szorzata pedig DX:AX-ben keletkezik. Azt, hogy egy számot 8 bitesnek vagy 16 bitesnek kell tekinteni, a MUL utasítás operandusa határozza meg. A MUL utasítás csak a biteket nézi, a számábrázolást nem. A MUL utasítás hatással van az O és C flag-ekre. IMUL: Előjeles szorzás. Működése hasonló a MUL utasításhoz. Példák: Az előjel nélküli szorzásnál nem vesszük külön figyelembe az előjelet. Példaképpen szorozzuk össze a 2-t és a 3-at. Mindkét szám ábrázolható 8 biten, a 2-t kettes komplemens formában kell ábrázolni. -2 = FEh, 3 = 03h. F E 0 3 0 0 2 F A 2 F A h Az előjeles szorzás úgy végzendő el, hogy a számok abszolút értékét és előjelét külön szorozzuk össze. Szorozzuk össze a 2-t és a 520 decimális számokat. A szorzást most hexadecimális alakban végezzük el (decimálisban is lehetne): 2d = 0002h és 520d = 0208h 0 0 0 2 0 2 0 8 0 0 0 0 0 0 0 4 0 0 0 0 0 0 1 0 0 0 0 0 4 1 0 h

Az előjel pedig 0 lesz, tehát DX:AX = 0000 0410 h. Az eredmény decimális alakban 1040 lesz. MOV AX, 0102h ; AX=0102h MOV CX, 0003h ; CX=0003h MUL CL ; AX=0006h a szorzás során csak AL-et és CL-et vettük figyelembe MOV AX, 0102h MOV CX, 0003h MUL CX MOV AX, 0202h MOV SI, 0003h MUL byte ptr [SI] MOV AX, 0602h MOV SI, 0003h MUL word ptr [SI] MOV AL, -2d MOV CL, 3d IMUL CL ; AX=0102h ; CX=0003h ; DX:AX=0000 0306h ; AX=0202h ; DS:0003h = 9F ; AX=013Eh ; AX=0602h ; DS:0003h = 9F 00h ; 0602h * 9F00h = DX:AX=03BB 3E00h ; AL=0FEh ; CL=03h ; AX=FFFAh Ha AL egy 8 bites operandust tartalmaz, amelyet egy 16 biten tárolt értékkel szeretnénk szorozni, akkor a szorzás elvégzése előtt AL tartalmát előjelhelyesen 16 bitesre kell konvertálni a CBW (Convert Byte to Word) utasítással. MOV AL, -2d CBW MOV CX, -520d IMUL CX ; AL=0FEh ; AX=FFFEh ; CX=FDF8h DX:AX=0000 0410h = 1040d

Feladatok 1. Adjuk össze binárisan az 53-at és a 18-at! Vizsgáljuk meg az előjelet 2. Adjuk össze binárisan az 53-at és a 83-at! Vizsgáljuk meg az előjelet 3. Adjuk össze binárisan a 53-at és a 18-at! Vizsgáljuk meg az előjelet 4. Adjuk össze binárisan a 53-at és a 83-at! Vizsgáljuk meg az előjelet 5. Adjuk össze binárisan az 53-at és a 18-at! Vizsgáljuk meg az előjelet 6. Adjuk össze binárisan az 18-at és a 18-at! Vizsgáljuk meg az előjelet 7. Szorozzuk össze a 4-et és a 3-at előjel nélküli szorzással (MUL)! 8. Szorozzuk össze a 14-et és a 7-et előjeles szorzással (IMUL)!