Sunteți pe pagina 1din 41

Registrele CPU şi

modurile de adresare
ale memoriei
(Cursul 2)

1
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Introducere
 Subiectele prelegerii:

 În cursul anterior s-a făcut o scurtă prezentare a


componentelor unui sistem compatibil IBM PC

 În prelegerea de faţă ne vom concentra asupra celor mai


importante două componente (CPU şi memoria internă)
care compun sistemele compatibile IBM PC:
 CPU-ul (microprocesorul) şi registrele sale
 Memoria internă, organizarea ei şi diferitele moduri de
adresare care sunt folosite de CPU pentru accesarea
locaţiilor de memorie

2
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Registrele CPU
 CPU-ul
 Unitatea Centrală de Procesare (CPU abreviere de
la Control Process Unit) este componenta
fundamentală şi nelipsită a oricărui sistem PC
(numărul minim de procesoare pentru a exista un
sistem PC este unu)
 În esenţă este un microprocesor complex a cărui
sarcină principală este să proceseze date dintr-o
memorie internă RAM, în funcţie de instrucţiunile
stocate de asemenea în memoria internă RAM
 Cu toate acestea, CPU-ul conţine un fel de
memorie internă rapidă formată din totalitatea
registrelor de care dispune acesta

3
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Registrele CPU
 Registrele
 Registrele pot fi utilizate de programator/utilizator ca o
“tăbliţă de scris” pentru a efectua calcule sau alte
sarcini care trebuie efectuate în cadrul CPU
 Toată familia de microprocesoare 80X86 dispune de
registre de 14, 16 (↓80286) sau 32 şi 64 (80386↑),
registre care se află în mod constant la dispoziţia
utilizatorului
 Începând cu 80386, Intel a adăugat un nou set de
registre pe 32 de biţi şi instrucţiuni care lucrează cu ele
 Totuşi, în acest curs ne vom opri numai asupra a ceea
ce Intel a numit operaţii în “mod real” a CPU

4
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Registrele CPU
 Operaţie Real Mode
• Modul special numit Real Mode transformă
orice familie CPU 8086 într-un mod de compatibilitate
cu microprocesorul standard 8086 (chiar si
microprocesoarele Pentuim IV au implementate acest
mod)
• În acest mod, utilizatorului îi este permis accesul
la numai 14 registre de bază de 14 biţi, 1Mb de RAM şi
64 Kb de spaţiu I/O
• Odată ce această parte a fost însuşită, abilităţile
de bază şi cunoştinţele necesare pentru a înţelege CPU-
urile (chiar şi cele ce vor urma să vină în viitor) sunt
mai scăzute, cum ar fi 80386, 80486, Pentium-uri,
Pentium II-uri cu MMX etc. vor fi uşor dezvoltate
5
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Componente CPU
 Componente de bază
 Registre şi Flag-uri
 Unitatea aritmetică şi
Logică ALU
 Deplasări şi rotaţii
 Module de decodare
a adreselor
 Componente avansate
 Co-Procesor Matematic
 Data & Program Pipelines
 Caches
 Decodor de instrucţiuni mico-cod
 Procesor Extensie
Multimedia (MMX)
 Etc. 6
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Organizarea memoriei
1 Mb RAM
 În mod real, familia de CPU 8086 poate adresa
maximul 1Mb de RAM
 Din punct de vedere conceptual această memorie poate
fi considerată ca o zonă continuă de octeţi de memorie
(unitatea minimă de acces la memorie este octetul)
începând de la adresa 00000h până la FFFFFh
 În practică, această memorie este segmentată în
blocuri de 64 Kb, blocuri notate de la 0000h la FFFFh
 Acest lucru a fost făcut pentru a păstra
compatibilitatea cu procesoarele timpului 8085, care
aveau doar 16 linii de adresare, oferind acces la 64 Kb
de memorie (216 = 64 Kb)

7
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Organizarea memoriei

8
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real

9
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
 Registrele de date (AX, BX, CX, DX)
 Sunt registre cu scop general – pentru calcule aritmetice, stocare
temporară de date, transfer de date etc.
 Registrul Acumulator AX(AH/AL)
 Registrul cel mai utilizat
 Folosit în instrucţiuni de tip şir de caractere (STOSB, STOSW etc.)
pentru a reşine datele care sunt transferate
 Utilizat în instrucţiuni I/O (IN, OUT) pentru reţine datele care sunt
transferate
 Folosit la instrucţiunea de înmulţire (MUL) sau la împărţire
( DIV) pentru a reţine datele înainte de execuţia instrucţiunii si
pentru a reţine rezultatul după executarea acesteia
 Folosit la instrucţiuni pe şiruri şi BIOS pentru a reţine valori
ASCII şi ATTRIBUTE atunci când se scrie pe ecran în modul text

10
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
 Registrele de date (AX, BX, CX, DX)
 Registrul de bază BX (BH/BL)
 Utilizat la mai multe instrucţiuni în modul de adresare bazată
pentru a reţine adresa bazei unui bloc de date ce urmează a fi
manipulat
 Un bloc conţine în general unele date cu aceleaşi caracteristici, de
exemplu, un mesaj în ASCII de imprimat
 Registrul de contorizare CX (CH/CL)
 Utilizat în instrucţiuni cum ar fi REP şi LOOP ca numărător
(contor), de exemplu: dacă se introduce în CX valoarea 10,
atunci instrucţiunea LOOP ce urmează va executa o buclă de 10
ori, scăzând în mod repetat din CX valoarea 1 (decrementare
executată la fiecare parcurgere a buclei) până se ajunge la
valoarea zero când se încheie bucla
 De asemenea este folosit în instrucţiunile de deplasare (SHR,
SHL) şi re rotaţii (ROR, ROL) pentru precizarea numărului de
deplasări şi rotaţii 11
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real

 Registrele de date (AX, BX, CX, DX)


 Registrul destinaţie DX (DH/DL)
 Utilizat la instrucţiuni I/O (IN, OUT) pentru a reţine
adresa portului accesat
 Folosit la instrucţiunea de înmulţire (MUL) sau la
împărţire ( DIV) pentru a reţine rezultatul după
executarea acestora folosind date pe 32 de biţi
 De asemenea este utilizat de BIOS pentru a seta
poziţia cursorului

12
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
 Contorul (pointer-ul) de instrucţiuni (IP)
 Un registru de 16 biţi care arată întotdeauna adresa din RAM a
viitoarei instrucţiuni ce urmează a fi executată
 Dacă, de exemplu, se execută o instrucţiune pe doi octeţi aflată la
adresa 0100h, atunci în IP se află valoarea 0102h, adică (în
momentul curent) adresa viitoarei instrucţiuni ce urmează a fi
executată în secvenţă
 IP poate conţine valori cuprinse între 0000h (0000 zecimal) şi
FFFFh (65535 zecimal)
 Aceasta înseamnă că CPU-ul poate accesa numai până la 64 Kb
din instrucţiuni, dacă se foloseşte doar IP-ul pentru adresare
 Registrul IP lucrează întotdeauna împreună cu registrul CS
(Code Segment) pentru a se genera adresa fizică de memorie
(perechea CS:IP)

13
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
 Contorul (pointer-ul) de instrucţiuni (IP)
 Unele instrucţiuni de program pot fi modificate pentru a
produce execuţia unor secţiuni de cod diferite
 Instrucţiunea de salt necondiţionat (JMP) alterează IP-ul
pentru a indica adresa instrucţiunii unde se face saltul
necondiţionat
 Instrucţiunea de apel a unei proceduri (CALL) de asemenea
alterează IP-ul pentru a indica adresa relativă a noii locaţii de
memorie unde se află prima instrucţiune din procedură, dar
valoarea curentă din momentul apelului (adică adresa relativă
a primei instrucţiuni de după CALL) este automat salvată în
stivă, de unde va fi luată de instrucţiunea RET (ultima
executabilă în procedură) care reface din stivă IP-ul dinaintea
apelului
 Şi întreruperile modifică conţinutul IP-ului care va indica
adresa relativă din rutina de tratare a întreruperii
14
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
 Registrele de segment (CS, DS, SS, ES)
 Aceste registre sunt folosite deoarece IP este numai de
16 biţi lungime, în timp ce spaţiul de memorie RAM
adresabil (în modul real) este de 1Mb = 220 = 216+4
lungime
 Adresa fizică actuală (adresă absolută) din RAM se
calculează ca:
(SEGMENT * 16) + IP , i. e. (in extenso) Segment &
Offset
 De exemplu, dacă CS = 07A0 şi IP = 0100 atunci
adresa fizică = 07A00 + 0100 = 07B00
 Notă: Aceiaşi adresă fizică se poate exprima prin mai
multe combinaţii de segment şi pointer, de exemplu:
07B00 = 07A0:0100 sau 07B0:0000
15
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
 Registrele de segment (CS, DS, SS, ES)
 Registrul Code Segment (CS)
 Utilizat pentru a defini segmentul de cod, unde se află instrucţiunile
de executat ale programului curent. Adresa conţinută de acest
registru este folosită ca bază de adresare pentru segmentul de cod.
În timpul execuţiei programului CS conţine adresa fizică absolută a
începutului segmentului de cod, iar IP va conţine adresa relativă
(offset) faţă de începutul segmentului de cod pentru viitoarea
instrucţiune ce urmează a fi executată
 Registrul Data Segment (DS)
 Folosit pentru a defini segmentul de date (constante şi variabile)
unde se află toate datele programului
 Registrul Stack Segment (SS)
 Folosit pentru a defini segmentul de stivă (o zonă de stocare
temporară a conţinutului registrului, adresa de returnare de la
subrutine şi întreruperi etc.) în timpul execuţiei programului

16
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
 Registrele de segment (CS, DS, SS, ES)
 Registrul Extra Segment (ES) – (registrul de date
suplimentare)
 Folosit pentru a defini un alt segment, în afara segmentului de
date definit de DS, astfel încât conţinutul de memorie aflat la
distanţă mai mare de 64 Kb poate fi accesată (de exemplu,
scrierea directă în memoria video necesită ca ES să fie setat
pentru a pointa spre segmentul RAM video)
 Notă: Datorită unei convenţii stabilite de către INTEL, nu se
poate încărca direct o valoare într-unul din registrele segment,
valoarea trebuie încărcată mai întâi într-unul din registrele de
date (AX, BX, CX sau DX) ţi apoi copiat în registrul segment
 De exemplu, pentru a încărca adresa de început a segmentului
de ecran în ES se face:
MOV AX,0B800h ; Adresa de început a memoriei video
MOV ES,AX ; Se culege adresa de segment în ES
17
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Vizualizarea unui program în memorie

18
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Stocarea datelor şi Variabile
 Stocarea datelor
 În interiorul sistemului de calcul datele pot fi stocate în
următoarele locuri:
 În registrele CPU (AX, BX, CX, …)
 În octeţii imediat următori codului de operaţie al instrucţiunii (op-
code) (de exemplu, MOV AX,1234)
Segmentul de Cod (CS)
 După o instrucţiune PUSH datele sunt stocate în stivă
Segmentul Stack (SS)
 În alt segment de date din RAM (folosind instrucţiuni de suprascriere a
segmentului numită şi reacoperire) (de exemplu, memoria RAM video)
Extra Segment (ES)

19
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Stocarea datelor şi Variabile
 Variabile de nivel înalt
 RAM este organizată ca o înşiruire de octeţi, şi cade în
sarcina utilizatorului să folosească acest spaţiu variabil
 Variabilele dintr-un limbaj de nivel înalt trebuie
convertite într-o secvenţă corespunzătoare de octeţi (De
exemplu, FLOAT = 4 octeţi, CHAR = 1 octet etc.)
 Revine programatorului din limbaj de asamblare
sarcina să definească ce grupuri de octeţi sau de
cuvinte ar trebui unite să formeze variabile de nivel
înalt
 Programatorul trebuie să decidă de asemenea, nişte
locaţii de stocare potrivite pentru date

20
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
 Variabile de nivel înaltStocarea datelor şi Variabile
 O hartă a memoriei care arată numele, adresa variabilelor şi
numărul de biţi alocaţi pentru fiecare poate fi de folos în
alocarea memoriei pentru date

21
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Stocarea datelor şi Variabile
 Exemplu de program
 Pentru a converti comanda de limbaj înalt C = A + B În limbaj
de asamblare, unde A = 5 şi B = 10:
 Dacă la adresa 0200h = A = 5h = 5d,
 C va fi stocat la adresa 020Ah
 Şi codul se găseşte la 0300h
CS:0300 8A260002 MOV AH,[0200h] ; Valoarea A (DS:0200h)
CS:0304 B70A MOV BH,0Ah ; Valoarea B (CS:0305h)
CS:0306 00FC ADD AH,BH ;A=A+B
CS:0308 88260A02 MOV [020Ah],AH ; C = A (DS:020Ah)
CS:030C CC INT 3 ; Ieşire (Exit)

22
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Stocarea datelor şi Variabile
 Exemplu de program
 Pentru a încărca locaţia de memorie 0200h cu 5 la început va fi
nevoie:
MOV AH,5
MOV [0200h],AH
 În mod similar dacă locaţia de memorie a fost încărcată cu 0Ah =
10d atunci a doua asignare poate fi înlocuită cu:
MOV BH,[0201h]
 Notă: Convenţia pentru microprocesoarele INTEL este să se
stocheze cuvintele în RAM într-un format de tipul „litle indian”
(low byte urmat de un hight byte)
De exemplu: MOV [0200h],AH ⇒ 0200h = AL şi 0200h = AH

23
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
Registrul Stack Pointer, Registrul Base Pointer şi
Registrul de Flag-uri (SP, BP, Flags)
- Registrul Stack Pointer (SP)
 Pointează spre vârful stivei
 SS:SP Întotdeauna pointează spre vârful stivei

- Registrul Base Pointer (BP)


 Folosit ca pointer al zonelor de memorie
 Lucrează în segmentul de date DS
 Rar folosit

24
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
Registrul Stack Pointer, Registrul Base Pointer şi
Registrul de Flag-uri (SP, BP, Flags)
- Registrul de Flag-uri (OF, DF, IF, TF, SF, ZF, AF, PF, CF)
 Numai 9 din 16 biţi sunt utilizaţi
 OF = Overflow Flag, declanşat dacă rezultatele calculelor
depăşes valorile maxime admise
 DF = Direction Flag, folosit în unele instrucţiuni (0 = UP,
dreapta)
 IF = Interrupt Enable Flag, folosit ptr. armarea întreruperilor
 TF = Trap Flag, folosit pentru depanare (debuging)
 SF = Sign Flag, 1 ptr.val. negative (val. în complement faţă de 2)
 ZF = Zero Flag, declanşat pentru rezultat = zero
 AF = Auxiliary Carry Flag, utilizat în calculul în cod BCD
 PF = Parity Flag, declanşat dacă rezultatul are paritate pară
 CF = Carry Flag, declanşat dacă calculele generează un
transport
25
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real

Registrele index (SI, DI)


Registrul index sursă (SI - Source Index)
• Folosit pentru a pointa spre un octet sau un cuvânt, în segmentul
de date curent, care trebuie luat ca o parte a unui bloc
•CPU-ul întotdeauna foloseşte acest registru împreună cu
segmentul, i.e. DS:SI = adresă fizică
• Utilizat în instrucţiuni pe şiruri de caractere (LODS şi MOVS)
ca adresă sursă (DS:SI) pentru date
• Afectat de DF când este utilizat în instrucţiuni pe şiruri
(instrucţiunile pe şiruri de caractere ajustează automat valoarea
lui SI pentru a pointa la următorul octet/caracter)
De exemplu: MOV SI,0200h ⇒ face ca SI să pointeze al 0200h-
elea octet din Data Segment
26
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Familia 8086. Registrele modului real
Registrele index (SI, DI)
o Registrul index destinaţie (DI - Destination Index)
• Similar cu registrul SI dar care lucrează împreună registrul
extra segment (ES)
• Folosit pentru a pointa spre un octet sau un cuvânt, în extra
segment, care are nevoie a fi schimbat ca o parte de început a
blocului de date transferat, i.e. ES:DI = adresă fizică
•Utilizat în instrucţiuni pe şiruri de caractere (STOS şi MOVS)
ca adresă destinaţie (ES:DI) pentru date
• Instrucţiunile pe şir de caractere MOVSB/W utilizează ambele
registre SI şi DI pentru transfer de octeţi sau cuvinte de la
DS:SI ⇒ ES:DI
De asemenea este afectat Flag-ul de direcţie DF

27
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Moduri de adresare 8086 Moduri de adresare
•Modul de adresare registru (General)
oData este copiată dintr-un reg. intr-altul (ex. MOV AX,BX)

28
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Moduri de adresare 8086 Moduri de adresare
 Modul de adresare imediat (Constante)

Valoarea din instr.este mutată într-un registru (ex. MOV AL,1Fh)

29
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Moduri de adresare 8086 Moduri de adresare
 Modul de adresare stivă (Variabile temporale)
 Dată temporală mem. în stivă (ex. PUSH AX sau POP DX)
 Modul de adresare direct (Variabile)
 Dată accesată de la o loc.de memorie (ex. MOV CX,VAR sau
MOV BH,[0200h] sau MOV [0200h],CH sau MOV VAR,AX)

30
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Moduri de adresare
8086 Moduri de adresare
 Modul de adresare implicit (copiere de blocuri)
 Date mutate în blocuri de la adrese definite de registrele index
SI sau DI
De exemplu:
STOSB/STOSW ⇒ AH/AX → ES:DI în direcţia DF
LODSB/LODSW ⇒ ES:DI → AH/AX în direcţia DF
MOVSB/MOVSW ⇒ DS:SI → ES:DI în direcţia DF
 Modul de adresare Bază + Deplasament (Complex Arrays)
 Date din locaţii de memorie pointate de BX + o constantă (ex.
MOV CH,[BX+3] sau MOV [BX+6],AH)
 Mod de adr. Bază + Deplasament + Index
 Date din locaţia de memorie pointată de registrul BX + registrul
index SI + o constantă (ex. MOV CL, [BX+SI+12*3] sau
MOV AH, [BX].VAR[SI])
31
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
8086 Moduri de adresare

32
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
8086 Moduri de adresare
xemple de adresare:

Adresare registru - registru MOV DX,CX

33
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
8086 Moduri de adresare
xemple de adresare:

dresare indirectă registru MOV AH,[SI]

34
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
8086 Moduri de adresare
xemple de adresare:

dresare directă indexată: MOV AH,VAR[SI]

35
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
8086 Moduri de adresare
xemple de adresare:

dresare directă bazată MOV [BX].VAR,AL

36
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
8086 Moduri de adresare
Moduri de adresare program
• Curgerea secvenţială a unui program poate fi controlată
prin folosirea unor instrucţiuni care asigură ramificarea sau
salturile
• Sunt folosite de asemenea şi alte moduri de adresare
pentru a direcţiona CPU-ul spre diferite locaţii de memorie
care conţin codul programului executabil
Direct
Salt necondiţionat la o locaţie specificată de o constantă
(ex. JMP 0E001h ⇒ sare direct la CS:E001h)
Registru indirect
Salt necondiţionat la o locaţie specificată de adresa conţinută
de un registru (ex. JMP BX ⇒ sare la adresa a cărei offset
este specificat în registrul BX)
37
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
8086 Moduri de adresare

Moduri de adresare program


Memorie indirectă
Salt necondiţionat la o locaţie care este dată de două
locaţii de memorie piontate de un registru
(ex. JMP [DI] ⇒ Înlocuieşte IP cu conţinutul
locaţiei de memorie pointată de DI şi DI+1)
Departe
Salt necondiţionat la o locaţie de memorie care se
află în afara actualului segment de cod, însemnând
că nu numai IP ci şi CS sunt înlocuite cu valori noi

38
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
8086 Moduri de adresare
Moduri de adresare program
Salturi relative (Salturi condiţionale)
Salt condiţionat în concordanţă cu o condiţie, la o locaţie de
memorie aflată la o distanţă între +128 şi –127 octeţi faţă de
locaţia curentă
Exemple:
JE (JZ)- Jump if Equal/Zero Salt dacă-i egal/zero (ZF=1), ex.
după CMP AX,0
JNE (JNZ)- Jump if Not E/Zero Salt dacă nu-i egal/zero (ZF=0)
JB (JNAE)- Jump if Below Salt dacă-i sub (CF=1)
JAE (JNB)- Jump if Not Equal or Above Salt dacă nu-i egal
sau mai mare (CF=0)
JS - Jump if Sign Salt dacă-i negativ (SF=1)
JNS- Jump if Not Sign Salt dacă nu-i negativ (SF=0)
JCXZ - Jump if CX is Zero Salt dacă CX este zero (CX=0)
39
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Subrutine

Apelarea subrutinelor
• În mod normal, un program complet este scris ca un set
de subrutine
• Pentru a executa o subrutină (apelată) este utilizată
instrucţiunea CALL
• O instrucţiune CALL este similară apelării unei
proceduri într-un limbaj de nivel înalt
• Când este executată , forţează salvarea IP-ului şi CS-
ului (pentru apeluri FAR îndepărtate) în stivă, apoi se execută
un salt necondiţionat la adresa apelată

40
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09
Subrutine
Apelarea subrutinelor
• Se pot executa două tipuri de instrucţiuni CALL:
o Un CALL către o adresă de tip NEAR – Numai Offset-ul
trebuie specificat, segmentul rămânând acelaşi
o Un CALL către o adresă de tip FAR – Atât IP cât şi CS
trebuie specificat
• O subrutină apelată cu CALL se termină cu
instrucţiunea RET şi ea reface contextul de revenire în
programul apelant
• Instrucţiunea RET face ca CPU să extragă din stivă
adresa de RETURN (IP sau CS:IP) ţi execută un salt
necondiţionat înapoi la apelant
Ex: CALL 0200 sau CALL 1029:0200

41
Universitatea "1 Decembrie 1918" Alba Iulia 21.11.09

S-ar putea să vă placă și