Sunteți pe pagina 1din 1

L 5.

ARHITECTURA SISTEMULUI – STAREA MAŞINII SECVENŢIALE - FLAGURI

Arhitectura simplificată a unui sistemului de calcul:


magistrală
Set registre Flaguri
porturi

Memoria Unitate de
transfer
Interfeţe

Stiva Op. logic


aritmetic
Disp.periferice

Indicatorii de stare
Bistabilii indicatorilor de stare (biţii de flag) au rolul de a memora anumite informaţii rezultate după
execuţia unei instrucţiuni şi necesare, eventual, pentru execuţia ulterioară a programului. Valoarea
biţilor de stare poate fi urmărită la fiecare pas de execuţie în fereastra din dreapta a programului de
monitorizare (TD.exe). Aceştia au următoarele semnificaţii:
C (Carry flag) – reprezintă valoarea “transportului” (binar) după o operaţiede adunare. Ca şi în cazul
numerelor zecimale, pentru numere reprezentate binar adunarea se efectuează cifră cu cifră, adunând
şi transportul de la operaţia precedentă. De exemplu, dacă cifrele locale au fost “1”, rezultatul local
este “0” şi transportul “1”. Procesorul poate efectua operaţii numai la nivel de octet sau de cuvânt.
Atunci când numerele sunt reprezentate pe mai mulţi octeţi sau cuvinte o operaţie aritmetică trebuie
executată prin mai multe instrucţiuni separate. De aceea, informaţia de transport trebuie memorată
pentru a fi transmisă unei instrucţiuni următoare,
Z (Zero flag) – capătă valoarea “1” atunci când rezultatul unei operaţii aritmetice a fost zero.
S (Sign flag) – are valoarea “1” dacă un rezultat este reprezentat “cu semn”. În cazul unui octet, de
exemplu, în notaţia “cu semn” numărul este reprezentat numai cu şapte cifre binare, a opta
reprezentând semnul.
O (“Overflow flag” - Depăşire) – are valoarea “1” atunci când, rezultatul obţinut în urma unei operaţii
nu poate fi reprezentat în formatul de date respectiv (octet sau cuvânt).
P (Parity flag) – reprezintă “paritatea” unui număr binar. Acesta are valoarea “1” când suma cifrelor
binare, egale cu “1” este pară.
A (“Auxiliary carry flag”) – are o funcţie similară bitului “carry” dar acţionează în cazul operaţiilor pe
grupuri de câte patru cifre, utilizate în cazul reprezentării “BCD” (Binary Code Decimal) folosită
pentru numere reprezentate cu cifre zecimale şi codificate binar. Reamintim că valoarea maximă (în
reprezentarea zecimală) a unui număr cu patru cifre binare este 15 (1111 b = 15z). În cazul codului
BCD, valoarea maximă reprezentă cu un grup 4 de cifre binare corespunde cifrei 9 (din zecimal).
I (Interrupt flag) – are valoarea “1” atunci când este activat sistemul de întreruperi.
D (Direction flag) – în funcţie de valoare (0 sau 1) indică direcţia de variaţie (incrementare sau
decrementare) a contorului de indici pentru operaţiile cu şiruri. Acestea sunt interpretate ca vectori.
Există instrucţiuni care acţionează la nivelul întregului vector. Operaţiile, de fapt, se fac pe
componente, în ordine crescătoare sau descrescătoare a indicilor.
Transferul valorilor indicatorilor de stare se efectuează cu instrucţiunile “LAHF” (“load flags into
AH”) şi “SAHF” (“store AH into flags”), care folosesc AH ca registru de manevră. Corespondenţa
dintre biţii indicatori şi cei ai registrului AH este următoarea:
SF–AH7, ZF-AH6, AF-AH4, PF-AH2, IF-AH1, CF-AH0.

* Scrieţi un program care să realizeze comutarea pe “1”, a câte unui bit de Flag, ceilalţi rămânând pe
“0”, pe rând, pentru fiecare tip de Flag;
* Iniţializaţi biţii de Flag cu valorile: 0, 1, 0, 1, 0,… cu instrucţiunea SAHF;
* Realizaţi o operaţie care să activeze bitul de semn;
* Realizaţi o operaţie care să activeze bitul de transport;

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