Modelul de software intel 8086

Prelegeri la cursul "Proiectarea asamblorilor, linkerelor, macroprocesoarelor"

Procesorul ne interesează, în primul rând, ca un set de registre.

În plus față de celulele de memorie pentru stocarea datelor (deși pe termen scurt), puteți utiliza și registre - celule amplasate în procesorul central și accesibile din programele aparatului. Accesul la registre este mult mai rapid decât la celulele de memorie, astfel că utilizarea registrelor reduce semnificativ timpul de execuție al programelor.







Registrul este un dispozitiv de memorie de mare viteză implementat pe componente electronice.

Toate registrele au dimensiunea unui cuvânt (16 biți), pentru fiecare dintre acestea este atribuit un anumit nume. Prin scop și metodă de utilizare, registrele pot fi împărțite în următoarele grupuri:

  • registrele de uz general (AX, BX, CX, DX, SI, DI, BP, SP);
  • registrele segmentale (CS, DS, SS, ES);
  • indicatorul de instrucțiuni (IP);
  • Registrul de steaguri.

Aici este decodificarea numelor registrelor:

Acumulator AX, baterie;
BX bază, bază;
Contor CX, contor;
Date DX, date;

(litera X este de la cuvântul eXtended, extins: 8080 a avut registre de octeți A, B, C și D, dar apoi au fost extinse la dimensiunea cuvântului)

Indice sursă SI, index sursă;
DI indice de destinație, index receptor;
BP pointer de bază, indicatorul de bază;
SP pointer stack, pointer stivă;

Indicatorul de instrucțiuni IP, pointerul de comandă;

Segmentul de stive SS, segmentul de stivă;
Segment de date DS, segment de date;
Segment de cod CS, segment de comandă;
ES segment suplimentar, segment suplimentar.

Scopuri generale

O caracteristică a registrelor cu scop general este aceea că pot fi folosite în orice aritmetică, logică și așa mai departe. operațiunile mașinii. De exemplu, puteți adăuga un număr din registrul DI cu un număr din registrul SP (adăugați DI, SP) sau scădea conținutul registrului CX (sub BP, CX) din conținutul registrului BP.







În același timp, fiecare dintre aceste registre are o anumită specializare: unele echipe necesita operand sau operanzi trebuie să fie în registre specifice. De exemplu, împărțind comanda cere ca primul operand (dividend) este în AX registru sau registre AX și DX (în funcție de mărimea operanzi) și de control al ciclului registrului de comandă CX folosit ca un contor buclă.

Când lucrați cu un teanc, se utilizează registrul SP. În comenzile care funcționează cu stivă, se presupune că registrul SP indică celula stivei în care elementul stocat pe stivă este ultimul.

Registrele AX, BX, CX și DX sunt aranjate astfel încât să fie posibil accesul independent la jumătățile mai vechi și mai tineri. Reprezintă jumătate literele H (high - byte mai mare) și L (low - de mai jos, Jr.) și prima literă a registrului nume: AH și AL - în AX, BH și BL - în BX, etc.

Rețineți că numai registrele AX, BX, CX și DX sunt împărțite în părți. Înregistrarea în alte registre și citirea acestora se efectuează numai în întregime.

Segmente de registru

Command Index

Registrul de steaguri

Un steag este un bit care ia o valoare de 1 ("pavilionul este setat") sau o valoare de 0 ("pavilionul este șters"). Modelul i8086 utilizează 9 steaguri, asamblate într-un singur registru de 16 biți numit registrul flags. Unele biți din registru nu sunt ocupate.

Steaguri sunt împărțite în două grupe: condițiile de steaguri (acestea sunt schimbate automat atunci când execută comenzi și să înregistreze anumite proprietăți ale rezultatelor lor (de exemplu, este dacă este zero)), iar informațiile de stare (în care schimbă programul, starea acestor steaguri are un impact asupra comportamentului suplimentar de procesare) .

  • CF (pavilion de transportare) - transportați steagul. Cele mai utile în operațiile aritmetice pe numere nesemnate; de exemplu, în cazul în care adăugarea de numere fără semn obține cantitate prea mare - o unitate de transfer, care nu are loc în celulă, atunci indicatorul CF este 1, iar în cazul în care cantitatea de „stivuite“, în dimensiunea celulei, valoarea CF este 0.
  • OF (semnalizator de preaplin) - semnalizatorul de suprasarcină. Util în operații aritmetice pe numere cu un semn; de exemplu, în cazul în care adunarea sau scăderea numerelor semnate transformat modulo rezultat care depășește valoarea admisă (a survenit mantisa overflow), apoi OF pavilion atribuit valoarea 1, iar în cazul în care nu a existat nici o depășire a mantisei - 0.
  • ZF (steagul zero) - steagul zero. Acesta este setat la 1 dacă rezultatul comenzii este zero.
  • SF (pavilion semn) - pavilionul semnului. Este setat la 1 dacă operația pe numerele semnate este negativă.
  • PF (steagul de paritate) - steagul de paritate. Egal 1. dacă cei 8 biți cei mai puțin semnificativi ai rezultatului următoarei comenzi conțin un număr par de unități binare.
  • AF (semnalizator auxiliar de transportare) - semn de transfer suplimentar. Stabilește particularitățile operațiilor pe numere zecimale binare.






Articole similare

Trimiteți-le prietenilor: