Documente Academic
Documente Profesional
Documente Cultură
15
8
AH
BH
CH
DH
0
AL
BL
CL
DL
15
Acumulator
Baze reg.
Counter reg.
Data reg.
0
Stack pointer
Baze pointer
Source index
Destination index
0
Code segment
Data segment
Stack segment
Extra segment
0
Instruction pointer
Flag register
Bitii din registrul Flag sunt indicatori de stare care se pozitioneaza functie de
rezultatul ultimei operatii aritmetice sau logice si se testeaza de instructiunile de salt.
Instructiunile de transfer a datelor si salt nu pozitioneaza indicatorii.
O Overflow flag
depasire capacitate registru la operatii aritmetice
D Direction flag
directia deplasarii la instr. pe siruri de caractere( d=0 spre dreapta)
I Interupt enableflag intreruperi admise
T Trap flag
S Sign flag
indica semnul rezultatului (S=0 pozitiv, S=1 negativ)
Z Zero flag
indica rezultat zero (Z=1)
A Auxiliar carry
Transport intermediar din rangul 4 ( A=1)
P - Parity flag
Numar de biti par in rezultat (P=1)
C Carry flag
Transport din rangul cel mai semnificativ (C=1)
NT Nested task
Pentru control task-uri
Segment de cod
000
JMP CS :250
250
MOV AX,DS :[150]
MOV BX,ES :[40]
Segment date locale
DS=2000
000
- adresa absoluta
2000+150=2150
150
Z=350
Segment date extern (comune)
ES=5000
000
40
SS=7500
X=333
- adresa absoluta
5000+40=5040
Segment de stiva
..
.
Cod
instr.
Offset Adresa
(Deplasament)
0
15
CS
0
Adresa relativa in
segment
0000
0
19
Reg.sursa, Reg.destinatie
5000 (valoare)
Adresarea directa
ADD AX,alfa
ADD AX,[500]
COD instr
Adresarea indirecta
ADD AX,[BX]
continutul adresei indicate de BX se aduna la AX (bazat cu DS)
COD instr.
BX
Adresa relativa operand
RAM
Operand2
Adresarea indexata
ADD AX,X[SI]
din tabloul X se ia elementul indicat de SI (adr.in tablou)
COD instr.
Adresarea cu baza
ADD AX,[BX+5]
COD instr.
Tablou X
X1
X2 X3
+SI
Xi
BX
Adresa relativa zona
Zona de date
+5
Oper2
- instructiune pe un octet
MOV AL,BL
COD
adr.rel
COD
operand2
COD
adr.rel
operand2
COD
Mod r/m
MOV X[SI],5230
In toate cazurile de mai sus implicit la adresa relativa se aduna continutul reg. DS.
Daca se doreste sa se specifice al registru segment decat cel implicit DS sau SS pentru
stiva, se adauga in fata un octet suplimentar care specifica reg.segment explicit.
MOV AX,ES : [BX+5000] operandul se ia din segmentul indicat de ES
Codul instructiei este pe 1 octet si are structura de baza :
i Cod instr
Instructiunile care fac referire la memorie contin o extensie de cod notata Mod r/m care
specifica modul de adresare folosit (reg-reg, bazata, indirecta,indexata) si are structura:
MOD r/m
Mod
reg
r/m
6cb
COD
2cb
d w Mod
3cb
reg
3cb
r/m
8-16cb
Depl/data
8-16cb
data
w=1
w=0
Registre
reg. pe 16cb
reg. pe 8cb
reg pe 32cb
segment
AX
AL
EAX
ES
CX
CL
ECX
CS
DX
BL
EDX
SS
BX
DL
EBX
DS
SP
AH
ESP
FS
BP
CH
EBP
GS
SI
DH
ESI
DI
BH
EDI
salveaza toare registrele in ordinea data de codul registrului.
Pentru utilizarea registrelor pe 32 biti se introduce un octet extensie de cod si inca unul
pentru utilizarea adreselor pe 32 biti.
Pentru exercitii se va folosi programul de depanare AFD si se vor studia structurile
instructiunilor utilizate. Adresele din memorie au octetii inversati.
Specificarea lungimii operandului cand nu rezulta din reistrul folosit se specifica prin :
/B pentru un octet si /W pentru 2 octeti (word).
ADD W/[BX],50
Pentru exercitii se pot folosi instructiunile de mutare, aritmetice si logice pe 1 sau 2octeti.
MOV reg_dest,reg_sursa transfer intre registre
MOV reg,[adresa]
transfer din memorie in registru (citire din memorie)
MOV [adresa],reg
transfer din registru in memorie (memorare registru)
MOV reg,valoare
incarcare imediata in registru
MOV adresa,valoare
memorare imediata in memorie
Cand se specifica adresa, ea poate fi directa, indirecta,sau/si indexata.
PUSHA
memorare toate registrele in stiva
POPA
incarcare toate registrele din stiva
ADD dest,sursa
se aduna sursa la destinatie cu un singur operand in memorie
SUB dest,sursa
se scade din destinatie sursa
AND dest,sursa
operatia logica SI intre sursa si destinatie
OR
dest,sursa
operatia logica SAU intre sursa si destinatie
XOR dest,sursa
operatia logica SAU EXCLUSIV intre sursa si destinatie
Exista mai multe ferestre deplasarea cu tastele F4 sus, F8 jos,F9 stinga, F10 dreapta
In fiecare fereastra se poate modifica direct pe ecran continutul registrelor, adreselor de
memorie, a continutului celulelor de memoriei.
Schimband adresa sau reg.segment se schimba zona de memorie afisata.
Valorile din register si memorie sunt reprezentate in hexazecimal.
Fereastra din dreapta jos da continutul ASCII al locatiilor de memoriei din fereastra 2.
F4 afiseaza Help-ul programului
F1 Step executa o instructiune de program( pas de program).
F1 StepProg executa un program terminat cu INT 3 (termina un task si revine in AFD).
Fereastra CMD de comanda permite introducerea de comenzi :
D
adresa
-afiseaza in hexa si in limbaj de asamblare o zona de program.
R reg=val
initializeaza registre
M n adresa
afiseaza zona de memorie in fereastra 1 sau 2 (n=1,2)
A adresa
asambleaza un program de la adresa (>100), reg seg. CS (Exit-Ctr/Home)
G adresa
lansare un program de la adresa bazata cu CS (oprire cuCtr/Esc)
L prog
incarca un program .exe in memorie la adresa
W fis,adr,lung
scrie intr-un fisier o zona de memorie de lungime specificata
QUIT
terminare AFD si iesire in DOS sau Windows