Documente Academic
Documente Profesional
Documente Cultură
9
Prezentare generala a microprocesorului 8086. Registre. Moduri de adresare.
Asignare implicita a registrelor segment. Instructiuni
Microprocesorul I8086:
- realizat in tehnologie N-MOS;
- impachetat in capsula cu 40 pini;
- functioneaza la o frecventa de 5..8 MHz
- transfer de date pe 8 sau 16 biti;
- adreseaza direct o memorie maxima de 1Mo.
unde:
CF - carry flag, reprezinta indicatorul de transport, devine 1 daca operatia a
produs un transport de iesire din cel mai semnificativ bit al rezultatului. Acest
transport semnifica imprumut in cazul operatiei de scadere.
AF - auxiliary carry, reprezinta indicatorul de transport auxiliar, devine 1 daca
operatia a produs un transport de la bitul al 4-lea (D3) la bitul al 5-lea al rezultatului.
PF - parity flag, reprezinta indicatorul de paritate, devine 1 in urma operatiilor
logice daca rezultatul este par;
OF - overflow, reprezinta indicatorul de depasire, OF=1 indica depasirea,
adica alterarea bitului de semn;
DF - direction flag, indicatorul de directie, semnifica incrementarea/
decrementarea registrelor SI/DI in cazul instructiunilor iterative;
IF - interrupt flag, activeaza/dezactiveaza intreruperile externe;
TF - trap flag, permite executia instructiunilor pas cu pas;
SF - sign flag, indicator de semn, devine 1 daca bitul cel mai semnificativ al
rezultatului este 1;
ZF - zero flag, devine 1 daca rezultatul operatiei anterioare este nul.
Registrele generale sint utilizate ca surse si/sau destinatie pentru operanzi.
Sint prezentate in continuare citeva exemple de utilizare implicita a registrelor I8086:
AX - operatii aritmetice si operatii de I/O pe 16 biti;
BX - conversii cod si registru de baza de adresare;
CX - contor ciclu pentru operatii pe siruri de caractere si bucle;
CL - contor pentru intructiuni deplasare;
DX - registru de adresare indirecta, utilizat si in operatiile de inmultie/
impartire pe 16 biti ;
SI - registru index sursa in operatii cu siruri de caractere;
DI - registru index destinatie operatii cu siruri de caractere;
CS - adrese de baza ale segmentelor pentru codurile instructiunilor;
DS - adrese de baza ale segmentelor pentru operanzi;
ES - adrese de baza ale segmentelor pentru operanzi (extra-segment de date);
SS - adresa de baza pentru segmentul de stiva;
unde:
Observatii:
1. D reprezinta adresa relativa (offset) in cadrul unui segment, adresa fizica (AF)
fiind:
A = s * 16 + D ,
unde:
s reprezinta continutul registrului segment implicat in instructiune (s*16
similar cu deplasarea la stinga cu o cifra hexa !!).
2. Oricare din cei trei termeni poate lipsi.
3. Registrul segment utilizat implicit depinde de tipul operatiei si de
registrul utilizat ca adresa de baza sau index:
____________________________________________________________
|
|
|
|
| Adresa efectiva (EA) | RS implicit | Alte RS utilizabile |
|______________________|_____________|______________________|
|
|
|
|
| D
| DS
| CS,SS,ES
|
| BX + SI + D
|
|
|
| BX + DI + D
|
|
|
|______________________|_____________|______________________|
|
|
|
|
| BP + SI + D
| SS
| CS,DS,ES
|
| BP + DI + D
|
|
|
|______________________|_____________|______________________|
|
|
|
|
| SI + D
| DS
|
|
| DI + D
|
|
|
|______________________|_____________|______________________|
|
|
|
|
| BP + D
| SS
| CS,DS,ES
|
|______________________|_____________|______________________|
|
|
|
|
| BX + D
| DS
| CS,DS,ES
|
|______________________|_____________|______________________|
De ex:
MOV AX,8[BX][SI] va determina incarcarea in reg. AX a unui cuvint de la
adresa BX+SI+8 relativa la DS
MOV CX,[BP+5][SI] va determina incarcarea in reg. CX a unui cuvint de la
adresa BP+SI+5 relativa la SS
Utilizarea altui segment decit cel implicit va fi indicat printr-un prefix, astfel:
MOV BX,ES:758 care incarca in registrul BX cuvintul de la adresa ES:758.
- Trasare (Tracing) - executia unei linii sursa sau a unei linii in limbaj de
asamblare;
- Reluare trasare (Back tracing);
- Executie pas cu pas (Stepping), procedurile si functiile nu se executa pas
cu pas;
- Vizualizare (Viewing) - vizualizare prin intermediul ferestrelor a:
variabilelor, continutului stivei, fisiere, cod Central Processor Unit (CPU), memorie,
registre, informatii
Numeric Processor Unit (NPU), etc;
- Inspectare (Inspecting) - vizualizare structuri complexe de date: vectori,
uniuni, structuri;
- Modificare (Changing), globala sau locala a valorii unei variabile;
- Vizualizare pe timpul executiei programului (Watching);
Nu permite:
- nu are un editor incorporat; daca la instalare a fost specificat in programul
de configurare TDINST un editor, acesta va putea fi folosit din meniul local al
ferestrei Module sau File;
- nu permite recompilarea sursei;
Avantaje:
- meniuri globale convenabile si logice;
- meniuri locale sensibile la context;
- posibilitatea de a alege, seta si selecta optiuni;
- posibilitate de memorare a unui "istoric" a tastelor introduse;
- posibilitate de definire macrouri;
- copiere si transfer intre ferestre;
- lucru cu mouse-ul;
- meniuri de help "online";
- reluare executie si memorare a "sesiunii" curente;
Meniuri si ferestre de dialog:
- Meniul global - selectat cu F10, sau ALT+prima litera si ALT+space
pentru =.
- Se revine din meniul curent in cel anterior apasind tasta Esc.
- Partea de jos a ecranului reprezinta linia de stare, contine permanent
informatii de Help relativ la linia selectata sau la fereastra curenta, inclusiv "hotkeys";
informatii suplimentare se obtin prin apasarea tastelor ALT si CTRL.
- In cadrul unei ferestre, trecerea dintr-o subfereastra in alta se face cu Tab,
respectiv Shift-Tab.
Important:
- Fiecare fereastra are un meniu local specific, selectabil prin ALT-F10.
- Rezultatul unei comenzi depinde de contextul in care aceasta a fost lansata.
Ferestre Turbo Debugger
Exista doua surse posibile de ferestre: meniul View si meniul Data/ Inspect.
Meniul View poate genera urmatoarele ferestre:
- Module Window - contine codul program curent;
- Watches Window - afisare variabile si expresii; permite adaugarea de noi
variabile cu comanda CTRL-W.
- Breakpoints Window - afiseaza punctele de oprire setate, cu tipul
corespunzator (global sau local) si conditiile in care breakpoint-ul selectat se executa.
- Stack window - afiseaza starea curenta a stivei, prima functie apelata - in
partea inferioara a stivei. Folosind comanda Inspect (CTRL-I) se poate examina codul
sursa al oricarei functii din stiva. CTRL-L (din meniul local) deschide o fereastra ce
afiseaza variabilele globale unui program, variabilele locale ale unei functii, impreuna
cu argumentele lor de apel.
- Log Window - afiseaza o lista de mesaje si informatii generate si
memorate in timpul depanarii: motivele opririi programului, rezultatele breakpointurilor, etc.
- Variables Window - afiseaza variabile globale si locale pentru functia sau
modulul curent.
- File Window - afisare continutul unui fisier in format ASCII sau
hexazecimal.
- CPU Window - afisare stare curenta CPU, contine 5 ferestre:
- instructiuni in limbaj de asamblare;
- date, implicit in format hexa, echivalenta cu Dump Window;
- continutul stivei, in cuvinte format hexa, echivalenta cu Stack
Window;
- continutul registrelor CPU,
- starea indicatorilor de conditie CPU, ultimele doua ferestre CPU
fiind echivalente cu Registers Window.
- Dump Window -afisare zona de memorie pointata de registrul DS curent,
in diferite formate; permite manipularea blocurilor de date.
- Registers Window - afiseaza continutul registrelor CPU, (inclusiv a
flagurilor), permite modificarea acestora.
- NPU Window - afiseaza starea curenta a coprocesorului matematic,
contine 3 ferestre:
- continutul registrelor CPU;
- indicatorii de stare NPU;
- indicatorii de control NPU.