A verem két felső szavának cseréje (ábra)
description
Transcript of A verem két felső szavának cseréje (ábra)
Máté: Architektúrák 7. előadás 1
A verem két felső szavának cseréje (ábra)
Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny, de néha hátrány!
Most hátrány! swap6 csak TOS frissítése miatt kell!
swap1 MAR = SP – 1; rd // A 2. szó címe, olvasás.
swap2 MAR = SP // MAR a verem tetejére mutat.
swap3 H = MDR; wr // 2. szó H-ba, verem tetejére.
swap4 MDR = TOS // verem teteje
swap5 MAR = SP – 1; wr // a 2. szóba.
swap6 TOS = H; goto Main1 // TOS frissítése.
Máté: Architektúrák 7. előadás 2
A WIDE utasítás
A WIDE utasítás valójában prefixum: önmagában nem csinál semmit, csak jelzi, hogy a következő utasításnak 16 bites indexe van. Pl.:
ILOAD varnum lokális változó verembe
varnum a lokális változó 8 bites indexe.
WIDE
ILOAD varnum lokális változó verembe
varnum a lokális változó 16 bites indexe.
w_iload1 címe = iload1 címe + 0x100
Máté: Architektúrák 7. előadás 3
*) MDR az előző utasítás végén kapott értéket!
iload1 H = LV
iload2 MAR = MBRU + H; rd // rd(H+varnum)
iload3 MAR = SP = SP + 1
iload4 PC = PC + 1; fetch; wr // *
iload5 TOS = MDR; goto Main1
wide1 PC = PC + 1; fetch; goto(MBR OR 0x100)
w_iload1 PC = PC + 1; fetch // index 2. bájtja
w_iload2 H = MBRU << 8 // 1. bájt léptetése
w_iload3 H = MBRU OR H // H = a 16 bites index
w_iload4 MAR = LV + H; rd; goto iload3
Máté: Architektúrák 7. előadás 4
Az GOTO offset utasítás. PC relatív: PC értékéhez hozzá kell adni offset értékét. offset két bájtos előjeles érték. Mic-1 program:
goto1 OPC=PC-1 // korábban volt: PC=PC+1
goto2 PC=PC+1; fetch // offset 2. bájtja
goto3 H=MBR<<8 // 1. (előjeles) bájt léptetése
goto4 H=MBRU OR H // 16 bites offset
goto5 PC=OPC+H; fetch // PC új értéke
goto6 goto (Main1) // a folytatás 1. utasítása
Máté: Architektúrák 7. előadás 5
A IFLT offset utasítás (Mic-1)
Kivesz egy szót a veremből és ugrik, ha negatív.
iflt1 MAR=SP=SP-1; rd // 2. szó a veremből
iflt2 OPC=TOS // TOS mentése
iflt3 TOS=MDR // TOS= a verem új teteje
iflt4 N=OPC; if(N) goto T; else goto F //elágazás
T OPC=PC-1; fetch; goto goto2 // igaz ág
F PC=PC+1 // hamis ág, nincs ugrás
F2 PC=PC+1; fetch // PC új értéke
F3 goto (Main1) // a folytatás 1. utasítása
Máté: Architektúrák 7. előadás 6
INVOKEVIRTUAL disp (~4.12. ábra),
• A CPP által mutatott területen a disp (2 bájt) indexű szó mutat a meghívandó metódus kezdő szavára.
• Ennek a szónak
- az első két bájtja tartalmazza a metódus
paramétereinek számát,
- a második két bájtja a metódus lokális változóinak
számát.
• A metódus végrehajtása a metódus 5. bájtján indul.
Máté: Architektúrák 7. előadás 7
INVOKEVIRTUAL disp // ~4.12. ábra
A CPP által mutatott táblázat disp indexű eleme mutat a meghívandó metódusra. disp első bájtját Main1 már beolvasta MBR-be.
invo1 PC = PC + 1; fetch // disp 2. bájtját olvassa
invo2 H = MBRU << 8 // disp 1. bájtját lépteti
invo3 H = MBRU OR H // H = disp
invo4 MAR = CPP + H; rd // kezdő cím olvasása
invo5 OPC = PC + 1 // OldPC = visszatérési cím
Máté: Architektúrák 7. előadás 8
INVOKEVIRTUAL: paraméterek száma 2 bájt a metódus elején
invo6 PC = MDR; fetch // PC: új metódus eleje
invo7 PC = PC + 1; fetch // paraméterek számainvo8 H = MBRU << 8invo9 H = MBRU OR H // paraméterek száma
Máté: Architektúrák 7. előadás 9
INVOKEVIRTUAL: lokálisok száma 2 bájt a paraméterek száma után
Talán logikusabb lenne a 11, 12, 10, 13 sorrend.
invo10 PC = PC + 1; fetch // lokálisok száma 1. bájtinvo11 TOS = SP – H // OBJREF is
paraméter!invo12 TOS = MAR = TOS + 1 // OBJREF címeinvo13 PC = PC + 1; fetch // lokálisok száma 2. bájtinvo14 H = MBRU << 8invo15 H = MBRU OR H // lokálisok száma
Máté: Architektúrák 7. előadás 10
INVOKEVIRTUAL: verem kezelés
OBJREF cseréje a hívó PC-jét mutató mutatóra
invo16 MDR = SP + H + 1; wr // OBJREF cseréje
invo17 MAR = SP = MDR // hívó PC-jének helye invo18 MDR = OPC; wr // hívó PC vermeléseinvo19 MAR = SP = SP + 1 // hívó LV-jének a
helye invo20 MDR = LV; wr // hívó LV
vermeléseinvo21 PC = PC + 1; fetch // utasítás olvasásinvo22 LV = TOS // LV új értékeinvo23 TOS = MDR; goto Main1 // TOS=hívó LV-je
Máté: Architektúrák 7. előadás 11
IRETURN // ~4.13. ábra
*) rd lehetne egy utasítással korábban is!
iret1 MAR = SP = LV; rd // összekötő olvasása
iret2 H = H // vár, hogy az olvasás befejeződjön
iret3 LV = MAR = MDR; rd // hívó PC olvasása
iret4 MAR = LV + 1 // hívó LV címe
iret5 PC = MDR; rd; fetch // *
iret6 MAR = SP // visszatérési érték címe
iret7 LV = MDR // hívó LV
iret8 MDR = TOS; wr; goto Main1
Máté: Architektúrák 7. előadás 12
Az egyes IJVM utasításokat megvalósító mikroprogram az utasításkódnak megfelelő címnél kezdődik, a további utasítások nem feltétlenül ebben a sorrendben vannak a vezérlőtárban (minden mikroutasítás tartalmazza az utána következő mikroutasítás címét)!
Házi feladat: A 4.17. ábra többi része.
Továbbfejlesztések: több sínes rendszerek.
Máté: Architektúrák 7. előadás 13
Pszeudo utasítások
A pszeudo utasításokat a fordítóprogram hajtja végre. Ez a végrehajtás fordítás közbeni tevékenységet vagy a fordításhoz szükséges információ gyűjtést jelenthet.
Máté: Architektúrák 7. előadás 14
Adat definíciós utasításokAz adatokat általában külön szegmensben szokás és
javasolt definiálni iniciálással vagy anélkül. Az adat definíciós utasítások elé általában azonosítót
(változó név) írunk, hogy hivatkozhassunk az illető adatra. Egy-egy adat definíciós utasítással – vesszővel elválasztva – több azonos típusú adatot is definiálhatunk. A kezdőérték – megfelelő típusú – tetszőleges konstans (szám, szöveg, cím, ...) és kifejezés lehet. Ha nem akarunk kezdőértéket adni, akkor ? -et kell írnunk.
DUP operátorkifejezés DUP (adat)
Máté: Architektúrák 7. előadás 15
Egyszerű adat definíciós utasítások
Define Byte (DB):
Adat1db 25 ; 1 byte, kezdőértéke decimális 25
Adat2db 25H ; 1 byte, kezdőértéke hexadec. 25
Adat3db 1,2 ; 2 byte (nem egy szó!)
Adat4db 5 dup (?); 5 inicializálatlan byte
Kar db ’a’,’b’,’c’ ; 3 ASCII kódú karakter
Szoveg db ”Ez egy szöveg”,13,0AH
; ACSII kódú szöveg és 2 szám
Szov1db ’Ez is ”szöveg”’
Szov2db ”és ez is ’szöveg’”
Máté: Architektúrák 7. előadás 16
Define Word (DW):
Szo dw 0742H,452
Szo_címe dw Szo ; Szo offset címe
Define Double (DD):
Szo_f dd Szo ; Szo távoli ; (segment + offset) címe
Define Quadword (DQ)
Define Ten bytes (DT)
Máté: Architektúrák 7. előadás 17
Összetett adat definíciós utasítások
Struktúra és a rekord.
Először a típust kell definiálni. A típus definíció nem jelent helyfoglalást. A struktúra illetve rekord konkrét példányai struktúra illetve rekord hívással definiálhatók. A struktúra illetve rekord elemi részeit mezőknek (field) nevezzük.
A hardware nem ismeri ezeket az adat típusokat, a kezelésükről sofware-esen kell gondoskodni!
Máté: Architektúrák 7. előadás 18
StruktúraStruktúra definíció: a struktúra típusát definiálja a későbbi
struktúra hívások számára, ezért a memóriában nem jár helyfoglalással.
Str_típus STRUC ; struktúra (típus) definíció ... ; mező (field) definíciók: ... ; egyszerű adat definíciós ... ; utasításokStr_típus ENDS ; struktúra definíció vége
A mező (field) definíció csak egyszerű adat definíciós utasítással történhet, ezért struktúra mező nem lehet másik struktúra vagy rekord.
Máté: Architektúrák 7. előadás 19
A mezők definiálásakor megadott értékek kezdőértékül szolgálnak a későbbiekben történő struktúra hívásokhoz. A definícióban megadott kezdőértékek közül azoknak a mezőknek a kezdőértéke híváskor felülbírálható, amelyek csak egyetlen adatot tartalmaznak (ilyen értelemben a szöveg konstans egyetlen adatnak minősül). Pl.:
S STRUC ; struktúra (típus) definícióF1 db 1,2 ; nem lehet felülírniF2 db 10 dup (?) ; nem lehet felülírniF3 db 5 ; felülírhatóF4 db ’a’,’b’,’c’; nem lehet felülírni, deF5 db ’abc’ ; felülírhatóS ENDS
Máté: Architektúrák 7. előadás 20
Struktúra hívás: A struktúra definíciójánál megadott Str_típus névnek a műveleti kód részen történő szerepeltetésével hozhatunk létre a definíciónak megfelelő típusú struktúra változókat. A kezdőértékek fölülbírása a kívánt értékek < > közötti felsorolásával történik
S1 S ; kezdőértékek a definícióbólS2 S <,,7,,’FG’> ; F3 kezdőértéke 7,
; F5-é ’FG ’ S3 S <,,’A’> ; F3 kezdőértéke ’A’ ,
; a többi a definícióból
Struktúrából vektort is előállíthatunk, pl.:S_v S 8 dup (<,,’A’>)
; 8 elemű struktúra vektor
Máté: Architektúrák 7. előadás 21
Struktúra mezőre hivatkozás: A struktúra változó nevéhez tartozó OFFSET cím a struktúra OFFSET címét , míg a mező neve a struktúrán belüli címet jelenti. A struktúra adott mezejére úgy hivatkozhatunk, hogy a struktúra és mező név közé .-ot írunk, pl.:
MOV AL,S1.F3A . bármely oldalán lehet másfajta cím is, pl.
MOV BX, OFFSET S1után az alábbi utasítások mind ekvivalensek az előzővel:
MOV AL,[BX].F3MOV AL,[BX]+F3MOV AL,F3.[BX]MOV AL,F3[BX]
Máté: Architektúrák 7. előadás 22
A fentiekből az is következik, hogy a mező név – ellentétben a magasabb szintű programozási nyelvekkel – szükségképpen egyedi név, tehát sem másik struktúra definícióban, sem közönséges változóként nem szerepelhet.
A struktúra vektorokat a hagyományos módon még akkor sem indexezhetjük, ha az index konstans. Ha pl. 5, akkor
MOV AL,S_v[5].F3
; szintaktikusan helyes
de [5] nem a vektor ötödik elemére mutató címet fogja eredményezni, csupán 5 byte-tal magasabb címet, mint S_v.F3. Ha i változó, akkor
MOV AL,S_v[i].F3
; szintaktikusan is HIBÁS!
Máté: Architektúrák 7. előadás 23
Mindkét esetben programmal kell kiszámíttatni az elem offset-jét, pl. ha i word:
MOV AX,TYPE S ; S hossza byte-okban
; (l. később)
MUL i ; Az indexet 0-tól számoljuk!
MOV BX,AX ; az adat nem „lóghat ki” a
; szegmensből (DX=0)
MOV AL,S_v.F3[BX] ; AL az i-dik elem F3 mezeje.
Máté: Architektúrák 7. előadás 24
Rekord
Rekord definíció: Csak a rekord típusát definiálja a későbbi rekord hívások számára.
Rec_típus RECORD mező_specifikációk
Az egyes mező specifikációkat ,-vel választjuk el egymástól.
Mező specifikáció:
mező_név:szélesség=kezdőérték
szélesség a mező bit-jeinek száma.
Az =kezdőérték el is maradhat, ez a mező 0-val való inicializálását írja elő.
Máté: Architektúrák 7. előadás 25
Pl.:
R RECORD X:3,Y:4=15,Z:5
Az R rekord szavas (12 bit), a következőképpen helyezkedik el egy szóban:
X X X Y Y Y Y Z Z Z Z Z
0 0 0 1 1 1 1 0 0 0 0 0
Máté: Architektúrák 7. előadás 26
Rekord hívás: A rekord definíciójánál megadott névnek a műveleti kód részen történő szerepeltetésével hozhatunk létre a definíciónak megfelelő típusú rekord változókat. A kezdőértékek fölülbírálása a kívánt értékek < > közötti felsorolásával történik.
R1 R < > ; 01E0H, kezdőértékek a ; definícióból
R2 R <,,7> ; 01E7H, X, Y kezdőértéke a; definícióból, Z-é 7
R3 R <1,2> ; 0240H, X kezdőértéke 1, Y-é 2, ; Z-é a definícióból
Rekordból vektort is előállíthatunk, pl.:R_v R 5 dup (<1,2,3>) ; 0243H,
; 5 elemű rekord vektor
Máté: Architektúrák 7. előadás 27
Rekord mezőre hivatkozás
A mező név olyan konstansként használható, amely azt mondja meg, hány bittel kell jobbra léptetnünk a rekordot, hogy a kérdéses mező az 1-es helyértékre kerüljön.
MASK és NOT MASK operátor
; AX R3 Y mezeje a legalacsonyabb helyértékenMOV AX,R3 ; R3 szavas rekord!AND AX,MASK Y ; Y mezőhöz tartozó bitek
; maszkolásaMOV CL,Y ; léptetés előkészítéseSHR AX,CL ; kész vagyunk.
SAR nem lenne korrekt: nem biztos, hogy az Y mező nem tartalmazza az előjel bitet.
Máté: Architektúrák 7. előadás 28
KifejezésEgy művelet operandusa lehet konstans, szimbólum
vagy kifejezés. KonstansA konstans lehet numerikus vagy szöveg konstans.A numerikus konstansok decimális, hexadecimális,
oktális és bináris számrendszerben adhatók meg. A számrendszert a szám végére írt D, H, O illetve B betűvel választhatjuk ki. .RADIXn ; 2 < n < 16 , n decimális
A szöveg konstansokat a DB utasításban ” vagy ’ jelek között adhatjuk meg.
Máté: Architektúrák 7. előadás 29
Szimbólum
A szimbólum lehet szimbolikus konstans, változó név vagy címke.
Szimbolikus konstans: Az = vagy az EQU pszeudo utasítással definiálható. Szimbolikus szöveg konstans csak EQU-val definiálható. A szimbolikus konstans a program szövegnek a definíciót követő részében használható, értékét a használat helyét megelőző utolsó definíciója határozza meg.
Máté: Architektúrák 7. előadás 30
S = 1 ; S értéke 1
N EQU 14 ; N értéke 14
MOV CX,N ; CX 14ISM:
S = S+1 ; S értéke ezután 2, függetlenül ; attól, hogy hányadszor fut a ciklus
MOV AX,S ; AX 2 LOOP ISM
N = 5 ; hibás
N EQU 5 ; hibás
S = 5 ; helyes
S EQU 5 ; hibás
Máté: Architektúrák 7. előadás 31
Szimbolikus konstansként használhatjuk a $ jelet (helyszámláló), melynek az értéke mindenkor a program adott sorának megfelelő OFFSET cím. A helyszámláló értékének módosítására az ORG utasítás szolgál, pl.:
ORG $+100H; 100H byte kihagyása
; a memóriában
Máté: Architektúrák 7. előadás 32
Címke: Leggyakoribb definíciója, hogy valamelyik utasítás előtt a sor első pozíciójától : -tal lezárt azonosítót írunk. Az így definiált címke NEAR típusú. Címke definícióra további lehetőséget nyújt a LABEL és a PROC pszeudo utasítás:
ALFA: ... ; NEAR típusú
BETA LABEL FAR; FAR típusú
GAMMA: ... ; BETA is ezt az utasítást
; címkézi, de GAMMA NEAR típusú
Máté: Architektúrák 7. előadás 33
Az eljárás deklarációt a PROC pszeudo utasítással nyitjuk meg. A címke rovatba írt azonosító az eljárás neve és egyben a belépési pontjának címkéje. Az eljárás végén az eljárás végét jelző ENDP pszeudo utasítás előtt meg kell ismételnünk ezt az azonosítót, de az ismétlés nem minősül címkének. Az eljárás címkéje aszerint NEAR vagy FAR típusú, hogy maga az eljárás NEAR vagy FAR. Pl.:
A PROC ; NEAR típusú
...
B PROC NEAR ; NEAR típusú
...
C PROC FAR ; FAR típusú
...
Máté: Architektúrák 7. előadás 34
Címkére vezérlés átadó utasítással hivatkozhatunk, NEAR típusúra csak az adott szegmensből, FAR típusúra más szegmensekből is.
Változó: Definíciója adat definíciós utasításokkal történik. Néha (adat) címkének is nevezik.
Máté: Architektúrák 7. előadás 35
Kifejezés
A kifejezés szimbólumokból és konstansokból épül fel az alább ismertetendő műveletek segítségével. Kifejezés az operátorok, pszeudo operátorok operandus részére írható. Értékét a fordítóprogram határozza meg, és a kiszámított értéket alkalmazza operandusként. Szimbólumok értékén konstansok esetében természetesen a konstans értékét, címkék, változók esetében a hozzájuk tartozó címet – és nem a tartalmat – értjük. Az érték nemcsak számérték lehet, hanem minden, ami az utasításokban megengedett címzési módok valamelyikének megfelel. Pl. [BX] is kifejezés és értéke a BX regiszterrel történő indirekt hivatkozás, és ehhez természetesen a fordító programnak nem kell ismernie BX értékét.
Máté: Architektúrák 7. előadás 36
Természetesen előfordulhat, hogy egy kifejezés egyik szintaktikus helyzetben megengedett, a másikban nem, pl.:
mov ax,[BX]; [BX] megengedettmul [BX] ; [BX] hibás, demul WORD PTR [BX] ; megengedett
Egy kifejezés akkor megengedett, ha az értéke fordítási időben meghatározható és az adott szintaktikus helyzetben alkalmazható, pl. az adott utasítás lehetséges címzési módja megengedi. A megengedett kifejezés értékeket az egyes utasítások ismertetése során megadtuk.
Máté: Architektúrák 7. előadás 37
A műveletek, csökkenő precedencia szerinti sorrendben:
1. ( ) és [ ] (zárójelek) továbbá < >: míg a ( ) zárójel pár a kifejezés kiértékelésében csupán a műveletek sorrendjét befolyásolja, addig a [ ] az indirekció előírására is szolgál. Ha a [ ] -en belüli kifejezésre nem alkalmazható indirekció, akkor a ( ) -lel egyenértékű– LENGTH változó: a változó-hoz tartozó adat
terület elemeinek száma – SIZE változó: a változó-hoz tartozó adat terület
hossza byte-okban– WIDTH R/F: az R rekord vagy az F (rekord) mező
szélessége bitekben– MASK F: az F (rekord) mező bitjein 1, másutt 0
Máté: Architektúrák 7. előadás 38
Pl.:v dw 20 dup (?)rec record x:3,y:4tabledw 10 dup (1,3 dup (?))str db ”12345”
esetén:mov ax,LENGTH v ; ax 20mov ax,LENGTH rec ; ax 1mov ax,LENGTH table ; ax 10
; belső DUP ignorálvamov ax,LENGTH str ; ax 1
; str egy elem
Máté: Architektúrák 7. előadás 39
v dw 20 dup (?)rec record x:3,y:4tabledw 10 dup (1,3 dup (?))str db ”12345”
esetén: mov ax,SIZE v ; ax 40
mov ax,SIZE rec ; ax 1mov ax,SIZE table ; ax 20
; belső DUP ignorálvamov ax,SIZE str ; ax 1
; str bájtos
Máté: Architektúrák 7. előadás 40
v dw 20 dup (?)
rec record x:3,y:4
tabledw 10 dup (1,3 dup (?))
str db ”12345”
esetén:
mov ax,WIDTH rec ; ax 7mov ax,WIDTH x ; ax 3mov ax,MASK x ; ax 70H
Máté: Architektúrák 7. előadás 41
2. . (pont): struktúra mezőre hivatkozásnál használatos 3. : mező szélesség rekord definícióban és explicit
szegmens megadás (segment override prefix). Az explicit szegmens megadás az automatikus szegmens regiszter helyett más szegmens regiszter használatát írja elő, pl.:
mov ax, ES:[BX]; ax (ES:BX) címen lévő szó
Nem írható felül az automatikus szegmens regiszter az alábbi esetekben:– CS program memória címzésnél,– SS stack referens utasításokban (PUSH, POP, ...),– ES string utasításban DI mellett,
de az SI-hez tartozó DS átírható.
Máté: Architektúrák 7. előadás 42
4.– típus PTR cím: (típus átdefiniálás) ahol típus lehet BYTE, WORD, DWORD, QWORD, TBYTE, illetve NEAR, FAR (előre hivatkozás esetén fontos) és PROC. Pl.:
MUL BYTE PTR [BX] ; a [BX] címet
; byte-osan kell kezelni
– OFFSET kifejezés: a kifejezés OFFSET címe (a szegmens kezdetétől számított távolsága byte-okban)
– SEG kifejezés: a kifejezés szegmens címe (abban az értelemben, ahogy a szegmens regiszterben szokásos tárolni, tehát valós üzemmódban a szegmens tényleges kezdőcímének 16-oda)
Máté: Architektúrák 7. előadás 43
– TYPE változó: az elemek hossza byte-okban, ha változó, de
TYPE string = 1, TYPE konstans = 0, TYPE NEAR címke = -1, TYPE FAR címke = -2
JMP (TYPE cím) PTR [BX]
; NEAR vagy FAR ugrás
– ... THIS típus: a program szöveg adott pontján adott típusú szimbólum létrehozása
Máté: Architektúrák 7. előadás 44
Pl.:
ADATB EQU THIS BYTE
; BYTE típusú változó, helyfoglalás nélkül
ADATW dw 1234H
; ez az adat ADATB-vel byte-osan érhető el
. . .
mov al,BYTE PTR ADATW ; al 34H, helyes
mov al,ADATB ; al 34H, helyes
mov ah,ADATB+1 ; ah 12H, helyes
Emlékeztetünk arra, hogy szavak tárolásakor az alacsonyabb helyértékű byte kerül az alacsonyabb címre!
Máté: Architektúrák 7. előadás 45
5.– LOW kifejezés: egy szó alsó (alacsonyabb
helyértékű) byte-ja– HIGH kifejezés: egy szó felső (magasabb
helyértékű) byte-jaPl.:
mov al,LOW ADATW ; al 34Hmov ah,HIGH ADATW ; ah 12H
6. Előjelek:– + : pozitív előjel– – : negatív előjel
Máté: Architektúrák 7. előadás 46
FeladatokWIDE ILOAD programja átalakítható úgy, hogy
eggyel kevesebb mikroutasításból álljon (ehhez ILOAD programját is módosítani kell). Hogyan?
Gyorsabb lesz-e WIDE ILOAD programja az átalakítás után?
Mire szolgál az INVOKEVIRTUAL utasítás?Hol található az INVOKEVIRTUAL disp utasítással
hívott metódus?Milyen információ van a metódus elején?Hogy néz ki a veremnek egy metódus számára látható
része?
Máté: Architektúrák 7. előadás 47
Feladatok
Mely regiszterek tartalmát kell menteni metódus hívás esetén?
Hogy találhatók meg a mentett regiszter tartalmak visszatéréskor?
Miért nem lenne jó IRETURN megvalósításábaniret3: MAR = MDR; rdiret4: MAR = MAR + 1 ?
Hol található a metódus visszatérési értéke az IRETURN utasítás után?
Elemezze a 4.17. ábra programjait!
Máté: Architektúrák 7. előadás 48
FeladatokMilyen adat definíciós utasítást ismer?Hogy használható a DUP operátor?Milyen adatok definiálhatók a DB operátorral?Milyen adatok definiálhatók a DW operátorral?Milyen operátor segítségével adhatunk meg távoli cím
konstanst?Milyen összetett adat definíciós utasítást ismer?Hogy definiálhatunk struktúrát?Hogy hozhatunk létre struktúra példányt?Hogy hozhatunk létre struktúra vektort?
Máté: Architektúrák 7. előadás 49
Feladatok
Hogy inicializálhatjuk egy struktúra valamely mezejét?
Mit kell tudni a struktúra és mező névről?
Hogy hivatkozhatunk egy struktúra valamely mezejére?
Hogy hivatkozhatunk egy struktúra vektor valamely mezejére?
Mi a rekord?
Hogy definiálhatunk rekordot?
Hogy adhatunk kezdőértéket egy rekordnak?
Máté: Architektúrák 7. előadás 50
Feladatok
Mit kell tudni a rekord és mező névről?
Hogy hivatkozhatunk egy rekord valamely mezejére?
Hogy hivatkozhatunk egy rekord vektor valamely mezejére?
Mi a szimbólum?
Hogy definiálhatunk szimbolikus konstanst?
Mi a különbség az EQU-val és az = jellel történt konstans definíció között?
Mi egy szimbolikus konstans értéke?
Hogy definiálhatunk címkét?
Máté: Architektúrák 7. előadás 51
Feladatoka dw 5 dup (1,2)b recordx:3,y:4,z:5c dw 10 dup (1,2 dup (3))d db ”szoveg”Alkalmazza a, b, c, d, x, y,és z-re a LENGTH, SIZE, WIDTH, MASK és a NOT MASK, operátort (ha lehet)! Milyen eredményeket kap?
Melyik címet jelenti az ES:5[BX+DI] hivatkozás?Miért hibás a
MUL ES:[DI]utasítás? Hogy javítható ki?
Máté: Architektúrák 7. előadás 52
Feladatoka db 12Hb db 23HC dw ?esetén, mi lesz AX, BL és BH tartalma a
mov AX, word ptr amov c, AXmov BL, low cmov BH, byte ptr c
utasítások után?