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

Hasonló dokumentumok
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.

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.

Assembly utasítások listája

Aritmetikai utasítások I.

Assembly. Iványi Péter

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

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

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

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

Assembly programozás levelező tagozat

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

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

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.

Processzorok Utasításszintű Kezelése tavasz

Aritmetikai utasítások

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

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. Iványi Péter

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

A MiniRISC processzor

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.

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

Máté: Assembly programozás

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

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

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

A 32 bites x86-os architektúra regiszterei

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

Bevezetés az informatikába

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

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

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

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

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

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

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

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

2. Fejezet : Számrendszerek

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

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

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

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

Programozott soros szinkron adatátvitel

Assembly programozás levelező tagozat

II. KMAPR21TNB, KMAPR21ONB PC

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

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

Stack Vezérlés szerkezet Adat 2.

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

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

Assembly programozás: 2. gyakorlat

Mikrokontrollerek. Tihanyi Attila május 8

A SZÁMÍTÓGÉP KIALAKULÁSA. Zámori Zoltán, KFKI

HARDVERKÖZELI PROGRAMOZÁS1

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

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

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

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

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

Információs Technológia

Informatika 1 2. el adás: Absztrakt számítógépek

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

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

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

Bevezetés az informatikába

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

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai

Programozási nyelvek 6. előadás

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

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

Az egér, a botkormány (joystick) és a nyomtató programozása DOS-ban

A hibát az alábbi Python program segítségével tudjuk előidézni:

Programozás I gyakorlat. 10. Stringek, mutatók

Az i8080 és az i8085 utasításai

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

Digitális technika VIMIAA01

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

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

Digitális technika VIMIAA01

Digitális technika VIMIAA02 1. EA

Adatok ábrázolása, adattípusok

Blaise Pascal ( )

Dr. Oniga István DIGITÁLIS TECHNIKA 2

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

100% BIO Natur/Bio kozmetikumok és testápolás

Assembly programozás Bevezetés

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

Algoritmizálás és adatmodellezés tanítása 1. előadás

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

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

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

Miért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?

Összeadás BCD számokkal

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

Harmadik gyakorlat. Számrendszerek

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

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Az interrupt Benesóczky Zoltán 2004

Átírás:

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

Assembly programozás Egyszerű logikán alapul Egy utasítás CSAK egy dolgot csinál Magas szintű nyelven: x = 5 * z + y; /* 3 darab művelet */ Assembly: Szorozzuk meg z-et 5-el és tároljuk az eredményt valahol Adjuk y értékét az időleges eredményhez Az eredményt tároljuk x-ben

Időleges változó Regiszterek Változók Assembly programozás Memóriában egy hely Regiszter használat Sebesség miatt Csökken az adatbusz használata Bizonyos műveleteket csak regiszterekkel lehet végrehajtani

Assembly programozás x = y + 1 Mozgassuk y értékét az 1. regiszterbe Mozgassuk az 1-es számot a 2. Regiszterbe Az 1. regisztert adjuk a 2. regiszterhez A 2. regisztert mozgassuk az x változóba

if x == 1 then y = 2 end if Assembly programozás Hasonlítsuk össze x-et és az 1-es számot Ugorj a THEN címkére ha igaz Ugorj a VÉGE címkére THEN: címke Mozgassuk a 2-es értéket az 1. regiszterbe Mozgassuk az 1. regisztert az y memória helyre VÉGE: címke...

Assembly programozás Hasonlítsuk össze x-et és az 1-es számot Ugorj a VÉGE címkére ha nem igaz THEN: címke ; nem is kell Mozgassuk a 2-es értéket az 1. regiszterbe Mozgassuk az 1. regisztert az y memória helyre VÉGE: címke...

MOV BL, szam MOV AH, 02 MOV CX, 0008 ujra: MOV DL, 00 RCL BL, 1 ADC DL, 30h INT 21h LOOP ujra INT 20h Bináris szám kiírása

Bitforgatás Carry 7 6 5 4 3 2 1 0 Átforgatjuk a biteket a Carry biten keresztül A Carry bit vagy 1 vagy 0

ASCII előállítása 0 -ASCII 30h 1 -ASCII 31h ADC DL,30h DL = DL + 30h + Carry bit

Hexadecimális szám kiírása 0-9 számjegyek: 30h -39h ASCII A -F számjegyek: 41h -46h ASCII Két csoportot külön kell kezelni IF BL < 0Ah THEN BL = BL + 30h ELSE BL = BL + 37h Assembly-ben nincs ELSE ág

Hexadecimális szám kiírása Átszervezett kód: BL = BL + 30h IF BL >= 03Ah THEN BL = BL + 07h

1 Hexadecimális szám kiírása szam: MOV BL, szam MOV AH, 02 MOV DL, BL ADD DL, 30h CMP DL, 3ah JL szam ADD DL, 07 INT 21h INT 20h ; DL < 3ah

2 Hexadecimális szám kiírása, első számjegy szam: MOV BL, szam MOV AH, 02 MOV DL, BL MOV CL, 4 SHR DL, CL ADD DL, 30h CMP DL, 3ah JL szam ADD DL, 07 INT 21h INT 20h ; DL < 3ah

2 Hexadecimális szám kiírása, első számjegy Carry 7 6 5 4 3 2 1 0 0 Bitléptetés előtt 1010 0101 Bitléptetés után 0000 1010

2 Hexadecimális szám kiírása, két számjegy MOV BL, szam MOV AH, 02 MOV DL, BL MOV CL, 4 SHR DL, CL ADD DL, 30h CMP DL, 3ah JL szam1 ADD DL, 07 szam1: INT 21h MOV DL, BL AND DL, 0Fh ADD DL, 30h CMP DL, 3ah JL szam2 ADD DL, 07 szam2: INT 21h INT 20h

1 jegyű hexadecimális szám beolvasása szam: MOV AH, 01 INT 21h SUB AL, 30h CMP AL, 09h JLE szam SUB AL, 07h INT 20h

2jegyű hexadecimális szám beolvasása szam1: MOV AH, 01 INT 21h MOV DL, AL SUB DL, 30h CMP DL, 09h JLE szam1 SUB DL, 07h MOV CL, 04h SHL DL, CL szam2: INT 21h SUB AL, 30h CMP AL, 09h JLE szam2 SUB AL, 07h ADD DL, AL INT 20h

XOR utasítás Sok mindenre használható Törlés Változók cseréje...

XOR utasítás 1. Törlés MOV AX, 0AAFFh XOR AX,AX ; AX=0000 lesz AX= 1010 1010 1111 1111 AX= 1010 1010 1111 1111 XOR 0000 0000 0000 0000

XOR utasítás 2. Írjunk programot a XOR felhasználásával, melynek hatása ugyanaz mint NOT AX. PUSH BX MOV BX, FFFFh XOR AX, BX POP BX BX= 1111 1111 1111 1111 AX= 1010 1010 0011 1001 XOR 0101 0101 1100 0110

XOR utasítás 3. Írjunk programot a XOR felhasználásával, melynek hatása ugyanaz mint MOV AX,BX XOR BX, AX XOR AX, BX

XOR utasítás 3. BX= 1111 1111 1111 1111 AX= 1010 1010 0011 1001 XOR BX,AX BX= 0101 0101 1100 0110 AX= 1010 1010 0011 1001 XOR AX, BX AX= 1111 1111 1111 1111 MOV AX,BX

XOR utasítás 4. Írjunk programot a XOR felhasználásával, melynek hatása ugyanaz mint XCHG AX,BX XOR BX, AX XOR AX, BX XOR BX, AX

XOR utasítás 4. BX= 1111 1111 1111 1111 AX= 1010 1010 0011 1001 XOR BX,AX BX= 0101 0101 1100 0110 AX= 1010 1010 0011 1001 XOR AX, BX AX= 1111 1111 1111 1111 BX= 0101 0101 1100 0110 XOR BX, AX BX= 1010 1010 0011 1001

NOP utasítás Ugyanaz csak másképpen Több ciklust vesz igénybe MOV reg, reg XCHG AX, AX

Aritmetika1. Két kis szám összeadása, az eredmény belefér 8 bitbe átvitel 1 0011 0101 53 +0001 0010 + 18 0 0100 0111 71 Carry bit Sign bit

Aritmetika2. Egykis és egy nagy szám összeadása, az eredmény helytelen átvitel 111 111 0011 0101 53 +0101 0011 + 83 0 1000 1000 136 (-120!)

Aritmetika3. Két negatív szám összeadása átvitel 1 1 1 11 1100 1011-53 +1110 1110 + -18 1 1011 1001-71

Aritmetika4. Két nagy negatív szám összeadása átvitel 1 1 111 1100 1011-53 +1010 1101 + -83 1 0111 1000-136 (120!)

Aritmetika5. Két különböző előjelű szám összeadása átvitel 1 1100 1011-53 +0001 0010 + 18 0 1101 1101-35

Aritmetika6. Két különböző előjelű szám összeadása átvitel 1 1111 1 0011 0101 53 +1110 1110 + -18 1 0010 0011 35

Aritmetika7. Két különböző előjelű szám összeadása átvitel 1 1111 11 1110 1110 18 +0001 0010 + -18 1 0000 0000 0

Overflow bit 2. és 4. esetben az eredmény nem volt jó Overflow bit 1 ha: Ha volt átvitel a 6. és 7. bit között, de a 7.bitről nem generálódik carry bit (2. eset) Ha a 6. és 7. bit között nem volt átvitel, de a 7. bitről generálódik carry bit (4. eset)

Overflow bit Átvitel 7-C-re Átvitel 6-7-re XOR 1. eset 0 0 0 2. eset 0 1 1 3. eset 1 1 0 4. eset 1 0 1 5. eset 1 1 0 6. eset 1 1 0 7. eset 1 1 0

Overflow bit Megmutatja hogy az eredmény előjel helyes-e Hogy a Sign vagy Carry bit alapján kell az előjelet meghatározni Ha 1 akkor a Carry bit adja meg az előjelet Ha 0 akkor a Sign bit adja meg az előjelet