EU EU   Unitatea aritmetica si logica Registrii de uz general .1. Arhitectura Etapele executiei unui program:     Extragere instructiune Citire operand(daca operatia o cere) Executia instructiunii Scriere rezultatului(daca instructiunea o cere) CPUEU (unitatea de executie) executa instructiunile  BIU (unitatea de interfata cu magistrala) extrage instructiunile citeste operanzi scrie rezultatul in memorie 2.

1.2.   Registrul indicator de conditie Bloc logic de control Magistrala interna de 16biti Executa instructiunile ce sunt introduse de BIU in coada de instructiuni. Registrii de uz general 8 registrii de 16 biti grupati in doua seturi a cate 4 registrii  registrii de date (hight si low) :     AX –acumulator BX .data  registrii pointer si index:     SP – stack pointer BP. Indicatori de conditie . 2.base pointer SI –source index DI – destination index Registrele high si low pot fi folosite ca entitati pe 8 biti(doar registrele de date) 2.contor DX.base CX.

9 biti de control 15 14 13 12 11 10 9 8 7 6 5 4 AF 3 2 PF 1 0 CF OV DF IF TF SF ZF  3 de control  TF –trap flag (1)atunci cand procesorul intra in executia pas cu pas  DF –direction flag  semnaleaza autoincrementarea(1) sau autodecrementarea(0) registrilor SI si DI in cazul sirurilor de caractere  IF. BIU BIU      Registrii de segment Registru de tip contor numit pointer de instructiuni (IP) O coada de instructiuni Registrii de comunicatie interna O sechema logica pentru generarea de adrese pe 20 biti si pentru controlul magistralei multiplexate . SF=0-pozitiv  ZF –zero flag valoarea zero a rezultatului ZF=1  AF –auxiliar flagtransport catre bitul 8 dinspre bitul 7 sau imprumut invers  PF –parity flagPF=1 rezultatul are un nr par de biti cu valoarea 1  CF –cary flag a existat un transport catre MSB sau imprumut 3.intrerupt flag STI – activeaza intreruperile mascabile  CLI –le dezactiveaza  6 de stare  OF –overflow flag  cand are loc o depasire aritmetica  SF –sign flagSF=1 cel mai semnificatif bit =1 (negativ).

Coada de instructiuni are 6Kb si contine instructiuni ce urmeaza a fi preluate de microprocesor. . 3.BIU alimenteaza in avans coada de instructiuni. Registrele de segment 4 registrii pe 16 biti     CS.code segment DS.data segment SS. Registrul pointer de instructiuni IP – instrucion pointer contor pentru urmatoarea instructiune. offsetul octetului curent masurat de la inceputul segmentului de cod.extra segment Deoarece memoria de 1Mb este impartita in segmente de maxim 64Kb.2. exista 4 segmente adresabile la un moment dat ale caror adresa de inceput se afla in cele 4 registre de segment.stack segment ES. chiar daca microprocesorul nu o cere. 3.1. BIU suspenda sau reseteaza alimentarea coazii de instructinuni ori de cate ori EU solicita(ex:cand EU vrea sa citeasca sau sa scrie un operand din memorie sau porturile I/O).

Memoria 1 Mb = 220 bytes = 1. Val variabilei word la 246H este: 8C04H. O variabila de tip word se memoreaza cu octetul cel mai semnificativ la adresa superioara.576 bytes Adrese pare si impare. adresa segmentului la adresele superioare. O variabila de tip pointer (double word): ofsetul se memoreaza la adresele inferioare.048. Se anuleazaavantajul microporcesorului de a avea o magistala de date pe 16 biti. O variabila de tip word aflata la adresa impara este nealineata si este nevoie de doua cicluri de magistrala pentru accesarea ei. .4.

Segmentarea memoriei Memoria de 1 Mb este segmentata in blocuri de memorie de maxim 64Kb. suprapuse partial sau total (o locatie fizica poate sa apartina unui singur segment. BIU are 4 registre segment adresabile la un moment dat: CS. Fiecare aplicatie trebuie sa-si defineasca de la inceput adresele de bazaale segmentelor.1. Adresa de baza trebuie sa fie multiplu de 16.Val offsetului pointerului la 4H: adresa de segment 3B4CH. iar offsetul 65H 1. Segmentele pot fi adiacente. DS. mai multor segmente sau niciunui segment). ES. Daca 64Kb de cod.    Fiecare segment are asignat o adresa de baza(adresa celei mai de jos locatii din segment). SS. . 64Kb de stiva si 128Kb de date sunt suficiernte atunci registrele segment nu vor suferii modificari pe parcursul rularii programului.

Generarea adresei fizice Fiecare locatie din memorie are 2 tipuri de adrese: fizicasi logica. ambele pe 16 biti.2. Unitatea de interfata cu magistala acceseaza memoria folosind adresa fizica. . Adresa fizica reprezinta valoarea pe 20 biti ce identifica in mod unic fiecare octet din memorie de la 0Hla FFFFFH.1. Aceasta se realizaeaza prin deplasarea la stanga cu 4 biti a adresei de baza a segmentului si adunarea acesteia cu offsetul. Adresa logica este formata din adresa de baza a segmentuluisi valoarea de offset(numarul de octeti de la inceputul segmentului pana la octetul curent).

s.a. 1. SPcontine varful stive(TOS. Elementele stivei ->word(16 biti) =>SP se incrementeaza(POP) sau decrementeaza(PUSH) cu 2 unitati.top of stack)  Offsetul fata de de adresa de baza din SS. Pot fi mai multe stive de max 64Kb insa numa una singura adresabila la un moment dat.3.Cu alte cuvinte. catre adresa de baza a segmentului de stiva. stiva creste in jos in memorie. .Instructiunile sunt extrase din segmentul de cod iar ofsetul este dat de registrul IP.m. Offsetul este calculat de unitatea de executie. Stiva Stiva este implementata cu ajutorul SS (registru de segment) si SP (registru indicator de stiva).d. operatiilecu stiva sunt executate in segmentul de stiva curent iar ofsetul este dat de registrul SP.

4.1.D8). Selectia memoriei Spatiu de memorie este divizat fizic in doua zone(bank) a cate 512Kb fiecare. Lower bank-> zonei inferioare a magistralei de date(bitii D7-D0) –adrese pare Upper bank ->zonei superioarea magistralei(D15.adrese impare .

BHE – selectia bank-ului superior(adrese impare) O adresa para se acceseaza atunci cand A0=0 si BHE=1. . datele transferanduse pe liniile inferioare ale magistralei de date(D7-D0) .A19-A1 -pt accesarea locatiei unui octet simultan in cele doua bank-uri A0-se foloseste pt selectia bank-ului inferior.

ceea ce face A0=0 si octetul high aflat in lower bank va fi transferat pe liniile D7-D0. Liniile A19-A1 adreseaza locatia corespunzatoare din ambele bank-uri.O adresa impara se acceseaza atunci cand A0=1 si BHE=0. In prima faza. cu semnalele de selectie A0=1 si BHE = = 0 . iar datele se transfera pe liniile superioare ale magistralei de date(D15-D8). octetul low este transferat pe bitii D15-D8. cuvantul este aliniat si poate fi transferat intr-un singur ciclu de magistrala. . Cand octetul mai putin semnificativ al cuvantului se afla la o adresa impara. Adresa de memorie este incrementata in a doua faza. cel inferior prin A0=0 iar cel superior prin BHE = 0 . Cand octetul low al cuvintului ce trebuie transferat se afla la o adresa para (deci se afla in lower bank). cuvantul estenealiniat si se va transfera in doua cicluri de magistrala. 8086 poate accesa o locatie din lower bank simultan cu una din upper bank pentru a efectua transferul unei date de tip word. bank-uri care sunt amandoua selectate simultan.

principal este orpita in mod asincron printr-o cerere de intrerupere. ajunge la rutina de tratare a intreruperii respective. Cuvantul cel mai semnificativ al pointerului contine adresa de baza de segment — si se va incarca in registrul CS — iar cuvantul mai putin semnificativ contine ofsetul fata de inceputul segmentului al subrutinei respective — ofset ce se va incarca in registrul IP — astfel incat urmatoarea instructiune ce se va extrage si executa va fi prima instructiune din cadrul subrutinei de intrerupere. Fiecare intrerupere are un cod num tipul intreruperii. Aceasta tabela ocupa primul ko de memorie incepand cu adresa zero si are pana la 256 de intrari.32. unitatea de interfata cu magistrala plaseaza adresa portului (cuprinsa. Instructiunile INput si OUTput transfera date intre acumulator (AL pentru transfer pe octet si AX pentru transfer pe cuvint) si porturile localizate in spatiul de intrare/iesire. corespunzand la 256 de vectori de intrerupere—cate unul pentru fiecare tip de intrerupere ce poate fi definit intr-un sistem cu microprocesor 8086.2.8086 poate strata 256 de intreruperi Vectorii de intrerupere Legatura dintre tipul intreruperii si procedura care deserveste intreruperea este reprezentata de tabela vectorilor de intrerupere. Cum fiecare intrare in tabela vectorilor de intrerupere are o lungime de 4 octeti. . prin intermediul unui vector de intrerupere. 5.). intre 0H si FFFFH) pe cele mai putin semnificative 16 linii ale magistralei de adrese. deci. procesorul revine in programul principal. Un vector de intrerupere al microprocesorului 8086 reprezinta un pointer (4 octeti) continand adresa rutinei de tratare a intreruperii asociate. Sistemul de intreruperi Executia prog. reluandu-l de la instructiunea urmatoare celei ce a fost executata inainte de acceptarea intreruperii. Spatiul de intrare/ iesire Spatiul propriu-zis este de 64ko porturi de 8 biti sau 32 ko porturi de 16biti. Procesorul termina de executat instructiunea curenta si. spatiul de I/E nu este segmentat: pentru a accesa un port. CPU calculeaza locatia vectorului asociat unei intreruperi anume prin simpla inmultire cu 4 a numarului (cuprins intre 0 si 255) ce reprezinta tipul intreruperii respective (figura 4. Spre deosebire de memorie. La sfarsitul acestei subrutine.

 externe– generate de un echipament extern o nemascabile (NMI -Non Maskable Interrupt)  pentru a semnala microprocesorului aparitia unui eveniment "catastrofal" ce semnifica existenta unui pericol major .0—divide error. restul (vectorii 32 pina la 255) sunt la dispozitia utilizatorului. 1—single-step 2—NMI 3—breakpoint 4—overflow urmatorii 27 (deci pina la locatia 07FH) sunt rezervati de firma INTEL.

atunci CPU recunoaste intreruperea (o accepta) si urmeaza sa o proceseze. Apoi. CLI (IF=0).  Aparitia semnalului INTR cauzeaza actiuni diferite ale CPU in functie de starea indicatorului de conditie de activare a intreruperii mascabile (IF). Daca intreruperile sunt activate (deci daca IF=1).  determina care dintre solicitanti (daca apar mai mult de unul. dezactivate) CPU ignora cererea de intrerupere si continua cu executia urmatoarei instructiuni. deci. Recunoasterea unei intreruperi mascabile implica executia de catre microprocesor a doua cicluri de magistrala de acceptare a intreruperii — INTA cycles. Nici o actiune nu are loc insa pana la terminarea executiei instructiunii curente.  activeaza linia INTR catre microprocesor daca solicitantul selectat are un nivel de prioritate mai mare decit al acelui care este servit in acel moment (daca exista vreunul in aceasta situatie). respectiv. Registrele CS si IP sunt incarcate cu adresele continute de vectorul 2. Rolul acestui prim ciclu INTA este de a avertiza controlerul de intreruperi ca cererea transmisa pe linia INTR este onorata de microprocesor. la un moment dat) are cea mai inalta prioritate. urmand extragerea si executia primei instructiuni din rutina de tratare a intreruperii nemascabile. Starea acestuia este controlata de instructiunile STI (IF=1) si. o Pe durata primului ciclu. o mascabile(INTR – INTrerupt Request)  activata de controlerul de intreruperi 8259A  primeste cererile de intrerupere de la echipamentele de I/E atasate la el. daca IF=0 (ceea ce inseamna ca intreruperile ce apar pe linia INTR sunt mascate. CPU isi trece in stare de inalta impedanta driver-ele de magistrala si furnizeaza semnalul de control INTA ( INTerrupt Acknowledge) din starea T2 pina in starea T4. implica salvarea in stiva a continutului registrului indicatorilor de conditie (SP este decrementat cu 2) si apoi resetarea indicatorilor IF si TF (dezactivandu-se. automat intreruperile mascabile si intreruperea pentru modul de operare pas-cu-pas).  .

Nu are loc nici un ciclu de magistrala de recunoastere a intreruperii.  interne (software) – generate intern de CPU in urma executarii unor instructiouni specifice o Instructiune INT n genereaza o intrerupere de tip n. cu TIP=1. − modul special mascat („special mask mode”) în care o cerere de întrerupere apărută pe un nivel de întrerupere nemascat poate întrerupe programul în curs de execuţie indiferent de nivelul de prioritate pe care a apărut. o SINGLE STEP. fie continut in instructiune. se generează automat după execuţia fiecărei instrucţiuni. dacă flag-ul TF (“test flag”) a fost setat în “ o Toate instructiunile interne (unele exceptii prezinta intreruperea pas-cu-pas) au urmatoarele caracteristici:  1.  Circuitul oferă două moduri de evaluare a priorităţilor: – modul complet înlănţuit („fully nested mode”) în care o cerere de întrerupere poate întrerupe programul în curs de execuţie dacă nivelul de întrerupere pe care apare nu este mascat (în registrul IMR) şi dacă prioritatea ataşată nivelului de întrerupere este strict mai mare decât cea a nivelului de întrerupere în curs de servire (indicat de bitul setat cel mai prioritar din registrul ISR). Vectorul intreruperii respective nu mai trebuie furnizat de nimeni. provoaca întrerupere TIP=4 dac flag-ul overflow a fost setat în urma apariţiei unor depăşiri laefectuarea operaţiilor aritmetice. o IDIV.o Pe parcursul celui de-al doilea ciclu INTA initiat de catre microprocesor 8259A plaseaza pe liniile cele mai putin semnificative ale magistralei de date (AD7-AD0) un octet ce contine tipul intreruperii asociate liniei Interrupt Request activata de echipamentul ce a solicitat intreruperea. o INTO (INTerrupt Overflow). . cu TIP=0.  2. In acest mod se realizeaza identificarea sursei externe ce a generat intreruperea. intrucat se afla codificat direct in instructiune. Codul tipului intreruperii este fie predefinit. generat automat dacă apare o eroare de depăşire laoperaţia de împărţirre.

INTR  IV. IP iar TF si IF sunt resetati.Subrutina de tratare a unei intreruperi trebuie sa salveze toti registrii pe care ii utilizeaza inainte de a-i initializa si sa-i restaureze inainte de terminarea rutinei. stiva trebuie sa aiba la dispozitie un spatiu suficient. intreruperea pas-cu-pas Subrutina de tratare a intreruperii Cand se intra in subrutina de tratare a intreruperii se salveaza in stiva indicatorii de conditie. Segmente de stare task (TSS) Cand se comuta un task: salveaza contextul in reg TSS. Ordinea de prioritate este:  I. incarca contextul taskului care devine activ .Ca urmare. determinand astfel reluarea executiei programului cu instructiunea ce urma in mod logic. Toate subrutinele de intrerupere trebuie sa se termine cu instructiunea IRET (Interrupt RETurn). 4. intrerupere interna (cu exceptia pas-cu-pas)  II. Orice intrerupere interna (cu exceptia intreruperii pas-cu-pas) are prioritate mai mare decit orice intrerupere externa. NMI  III. CS si registrul indicatorilor de conditie. O intrerupere interna nu poate fi dezactivata (cu exceptia intreruperii pascu-pas ce este inhibata de resetarea indicatorului TF). IRET extrage din stiva trei cuvinte succesive pe care le incarca in IP. in cazul procesarii unor intreruperi simultane.  3. daca nu s-ar fi efectuat saltul la intrerupere. registrii CS.

şi fiecare registru general este încărcat cu valorile respective. div . din noul TSS. sunt încărcate din TSS. apoi.Bx Instructiuni de transfer intrare/iesire IN/OUTIN AL 12h Instructiuni aritmeticeadd. dec. • Când apare o comutare de task. curent. Registrul task se încarcă. • Când un apel sau întrerupere. printr-o poartă determină o modificare în privilegiu. Registrul de task (TR) conţine selectorul TSS activ. sub. pe care procesorul îl utilizează pentru a suporta mutitasking. mul. 8259A Set de instructiuni    Instructiuni de uz general mov Ax. • TSS mai conţine ‘legăturaînapoi’ (back link) care reprezintăselectorul TSS-ul executat anterior. noile SS:ESP.• Un TSS este un segment special de memorie. cu selectorul unui nou TSS. toate registrele task-ului curent executat sunt salvate în TSSul activ.

Instructiuni cu operanzi pe biti   Instructiuni logice AND. OR. SAL . XOR Instructiuni de deplasere si rotireSHL.

Sign up to vote on this title
UsefulNot useful