Sunteți pe pagina 1din 40

CUPRINS

5. STRUCTURA I ARHITECTURA CALCULATORULUI DIDACTIC ..................................................... 5-1 5.1 PRIMITIVELE FUNCIONALE ALE CALCULATORULUI DIDACTIC ....................................................................... 5-2 5.2 SCHEMA BLOC I FLUXUL INFORMAIEI........................................................................................................ 5-3 5.3 SETUL DE INSTRUCIUNI ............................................................................................................................. 5-5 5.3.1 Instruciuni de transfer date .................................................................................................................. 5-6 5.3.2 Instruciuni aritmetice ........................................................................................................................... 5-6 5.3.3 Instruciuni de transfer control ............................................................................................................. 5-9 5.4 FORMATUL INSTRUCIUNILOR CALCULATORULUI DIDACTIC........................................................................ 5-11 5.5 MODURI DE ADRESARE ............................................................................................................................. 5-12 5.6 CLASIFICAREA INSTRUCIUNILOR.............................................................................................................. 5-18 5.7 CODIFICAREA INSTRUCIUNILOR ............................................................................................................... 5-20 5.8 FAZA DE CITIRE INTERPRETARE A INSTRUCIUNILOR MAIN ...................................................................... 5-22 5.9 FAZA DE EXECUIE A INSTRUCIUNILOR MAIN ........................................................................................ 5-26 5.10 COMPLETAREA SETULUI DE INSTRUCIUNI ................................................................................................. 5-34 5.10.1 Introducerea instruciunilor RCL, RCR, ROL, ROR ........................................................................ 5-35
5.10.1.1 5.10.1.2 5.10.1.3 5.10.1.4 Formatul i funciile instruciunilor RCL, RCR, ROL, ROR ..................................................................... 5-35 Codificarea instruciunilor RCL, RCR, ROL, ROR................................................................................... 5-35 Modificarea fazei de citire interpretare n scopul recunoaterii acestor instruciuni ................................... 5-36 Descrierea fazei de execuie ..................................................................................................................... 5-36 Formatul i funciile instruciunilor LOOP i LOOPZ. ............................................................................. 5-36 Codificarea instruciunilor LOOP i LOOPZ ............................................................................................ 5-37 Modificarea fazei de citire interpretare n scopul recunoaterii acestor instruciuni ................................... 5-37 Descrierea fazei de execuie ..................................................................................................................... 5-37 Formatul i funcia instruciunii XCHG. .................................................................................................. 5-37 Codificarea instruciunii XCHG ............................................................................................................... 5-38 Modificarea fazei de citire interpretare n scopul recunoaterii acestei instruciuni ................................... 5-38

5.10.2

Introducerea instruciunilor LOOP, LOOPZ ................................................................................... 5-36

5.10.2.1 5.10.2.2 5.10.2.3 5.10.2.4

5.10.3

Introducerea instruciunii XCHG .................................................................................................... 5-37

5.10.3.1 5.10.3.2 5.10.3.3

5. STRUCTURA I ARHITECTURA CALCULATORULUI DIDACTIC


OBIECTIVE n capitolul 5 se definesc structura i arhitectura calculatorului didactic, care va fi dezvoltat n continuare i n capitolele care urmeaz. Astfel sunt elaborate specificaiile primitivelor funcionale i modul de interconectare a acestora. De asemenea n acest capitol se urmrete funcionarea detaliat a unui calculator numeric prin parcurgerea tuturor etapelor de specificare, descriere, proiectare i evaluare a unitii de execuie i a unitii de comand ale calculatorului didactic. Pentru a facilita nsuirea principalelor aspecte privind proiectarea unui calculator numeric se va considera un calculator didactic simplu dar care acoper, din punct de vedere conceptual, principiile ce stau la baza proiectrii i realizrii calculatoarelor numerice moderne. Considerarea unui calculator didactic ca prim etap n nsuirea conceptelor privind funcionarea i realizarea unui calculator numeric ofer, fa de analiza unui calculator real, mai multe avantaje, cum ar fi: participarea direct la proiectarea calculatorului; o mare elasticitate n ceea ce privete opiunile proiectului n diferite etape ale procesului de proiectare;o mai mare ndependen fa de constrngerile i detaliile de implementare. Calculatorul didactic este conceput ca un calculator universal adecvat prelucrrilor numerice i logice asupra unor structuri de date ntlnite, n general, n limbajele de nivel nalt.

5-1

5.1 Primitivele funcionale ale calculatorului didactic n continuare se vor prezenta, pe scurt, primitivele funcionale ale calculatorului didactic i funciile acestora. Memoria M , 1M=16 ; 2M=65536 Memoria M [65536;16] este o matrice de elemente de memorare organizat ntr-un spaiu de adresare unic de 65536 cuvinte a cte 16 bii fiecare. Memoria este utilizat pentru a pstra informaii neinterpretate reprezentnd date sau instruciuni. Oricare dou celule de memorie sunt accesibile n mod echivalent. Totui, memoria poate fi logic mprit n segmente de instruciuni, date, stiv, i segmente de memorie disponibil. Pentru segmentul de instruciuni se poate prevedea i o memorie cu coninut permanent de tip "numai citire". Citirea i scrierea se fac asincron sub controlul unitii de comand. Registrul AM, AM=16 Registrul de adresare a memoriei, AM, pstreaz adresa celulei de memorie la care se face acces la un moment dat. Lungimea acestui registru se alege astfel ca 2AM 2M. Adresa calculat (adresa efectiv) este memorat n AM selectnd, prin decodificare, cuvntul din memorie la care se va face accesul. Registrele RG, 1RG=16 ; 2RG=8 Deoarece timpul de acces la memoria M este relativ mare (150ns-400ns) se va prevedea o memorie rapid organizat sub forma a 8 registre de cte 16 bii fiecare. Registrele RG conin unul sau ambii operanzi necesari pentru execuia instruciunilor calculatorului didactic. Unele din aceste registre vor fi utilizate i pentru calculul adresei efective a operanzilor din memorie (Astfel, BA,BB sunt utilizate ca registre de baz; XA,XB sunt utilizate ca registre index iar IS este utilizat ca indicator pentru adresarea unor structuri de date de tip stiv. RA, RB, RC sunt utilizate numai pentru pstrarea operanzilor.) Adresa registrului selectat este specificat n codul instruciunii. Selectarea registrelor generale va fi prezentat detaliat n paragraful 5.4. Registrul CP, CP=16 Registrul contor program CP este utilizat pentru pstrarea adresei instruciunii ce urmeaz s se execute dup terminarea execuiei instruciunii curente. Lungimea registrului CP se alege astfel ca 2CP 2M. Registrul CP poate fi iniializat cu o valoare dat la iniializarea sistemului, cu o valoare oarecare prin execuia instruciunilor de transfer control (vezi paragraful 5.3) sau poate fi incrementat n cazul execuiei instruciunilor (operaionale) ce nu specific transferul controlului la o alt secven. Unitatea aritmetic logic UAL, UAL=16 Unitatea aritmetic logic (UAL) realizeaz operaiile aritmetice i logice ale calculatorului didactic i este utilizat pentru prelucrarea datelor i pentru calculul adresei efective. Unitatea aritmetic logic este de tip paralel, prelucreaz operanzi pe 16 bii reprezentai n cod complementar. Unitatea aritmetic logic implementeaz direct toate operaiile elementare necesare execuiei instruciunilor aritmetice i logice ale calculatorului didactic. Condiiile n care s-a efectuat o operaie n unitatea aritmetic logic i caracteristicile rezultatului sunt pstrate ntr-un registru de indicatori IND. Registrele T1,T2, T1=T2=16 Registrele temporare T1 i T2 sunt utilizate pentru a pstra operanzii unei operaii executate n unitatea aritmetic logic , rezultate intermediare la calcularea adresei efective i nu sunt accesibile n mod explicit de programator. Indicatorii de condiii IND, IND = 16 Registrul de indicatori constituie o grupare a unor bistabili cu funcii individuale, pozitionai la execuia instruciunilor n funcie de rezultatul din unitatea aritmetic logic . Registrul IND permite alegerea unei secvene de execuie urmtoare unei operaii aritmetice/logice n funcie de rezultatul acestei operaii.
5-2

Lungimea registrului IND este de 16 dei numai o parte din acetia sunt utilizai n mod efectiv. Funciile acestor bistabili indicator vor fi prezentate n paragraful 5.3.2. Registrul RI, RI = 16 Registrul de instruciuni RI pstreaz codul instruciunii n curs de execuie. Coninutul su este decodificat i transmis seciunii de generare comenzi/verificare stri din unitatea de comand. n RI se pstreaz i informaiile necesare pentru selecia registrelor generale n funcie de instruciunea n curs de execuie. Magistrala MAG, MAG = 16 Interconectarea resurselor prezentate mai sus se realizeaz prin intermediul unei magistrale multiplexate n timp, MAG, care constituie suportul fizic de comunicaie ntre aceste resurse. Dimensiunea magistralei este de 16 i este format din 16 linii de interconectare, fiind astfel n totalitate pasiv. Fiecare resurs conectat la magistral va include i circuitele de interfa necesare cuplrii la magistral. Transmisia pe MAG se face astfel nct un singur cuvnt de informaie circul pe magistral la un moment dat. Instruciunile calculatorului didactic Specificarea transferurilor de informaii ntre resursele calculatorului didactic i transformrile suferite n timpul transferului se face prin intermediul instruciunilor. Instruciunile calculatorului didactic sunt grupate n trei clase i anume: instruciuni de transfer date; instruciuni aritmetice/logice i instruciuni de transfer control. Instruciunile de transfer date vor fi utilizate atunci cnd este necesar o transformare spaial a datelor fr a modifica coninutul informaiilor transferate. Acest grup include instruciuni de transfer ntre resursele interne ale unitii de execuie sau ntre unitatea de execuie i subsistemul de intrri/ ieiri. Instruciunile aritmetice i logice trebuie s permit efectuarea operaiilor aritmetice/logice uzuale. Grupul de instruciuni de transfer control este necesar pentru implementarea structurilor de control care asigur nlnuirea secvenelor de execuie a instruciunilor conform cu un algoritm dat, descris prin program. 5.2 Schema bloc i fluxul informaiei Schema bloc a calculatorului didactic este prezentat n Fig. 5.1. n schem se evideniaz principalele subansambluri ale calculatorului didactic: - unitatea de execuie (UE); - unitatea de comand (UCd); - subsistemul de intrri /ieiri (I/E). Informaiile care se transfer ntre resursele calculatorului didactic reprezint date sau comenzi. Informaiile reprezentnd datele pot fi interpretate ca instruciuni sau operanzi n funcie de contextul n care acestea sunt transferate i prelucrate. Datele circul n principal pe magistrala comun MAG iar comenzile circul prin conexiuni dedicate ntre unitatea central i resursele UE i subsistemului de intrare/ieire. Fluxul datelor trebuie astfel organizat nct s permit preluarea datelor primare din mediul extern prin intermediul subsistemului de intrri/ieiri, prelucrarea acestora n unitatea de execuie UE i transmiterea rezultatelor spre mediul extern. Datele preluate din exterior prin subsistemul de intrri/ieiri sunt transferate prin magistrala MAG n registrele generale sau n memorie. Avnd n vedere viteza de lucru ridicat a registrelor generale RG n raport cu memoria M este de dorit ca prelucrrile s se efectueze, pe ct posibil, ntre operanzi memorai n RG. n procesul de prelucrare operanzii sunt preluai din RG i transferai n registrele de lucru T1, T2 ca intrri pentru unitatea aritmetic logic UAL, iar rezultatul se depune n unul din registrele surs din
5-3

RG. Datorit numrului redus de registre generale RG, apare necesitatea transferului de operanzi ntre memorie i acestea. Exist i posibilitatea prelurii ambilor operanzi din memorie sau a unui operand din memorie i a celuilalt din RG. Rezultatul este memorat n locul unuia din cei doi operanzi. Registrul de indicatori este poziionat direct de ctre unitatea aritmetic logic . Exist posibilitatea transferului direct, prin MAG, ntre IND i memorie pentru salvarea/restaurarea indicatorilor de condiii. Registrul contor program CP poate fi ncrcat cu o valoare din RG sau memorie, iar coninutul su poate fi transferat n registrul AM sau n memorie. Posibilitile de transfer a datelor ntre resursele calculatorului didactic sunt prezentate n tabelul 5.1. Registrul de instruciuni RI este ncrcat din memorie cu codul instruciunii curente iar coninutul su este accesibil unitii de comand pentru interpretare. Fluxul informaiilor n calculatorul didactic, pentru execuia unui program, poate fi rezumat n felul urmtor. Se citete din memorie instruciunea a crei adres se gsete n registrul CP. Primul cuvnt al instruciunii se citete n RI i este utilizat de unitatea central pentru a controla mai departe operaiile ce urmeaz s se execute. Se citesc, dac este cazul, urmtoarele cuvinte ale instruciunii (instruciunile pot fi formate din 1,2 sau 3 cuvinte de 16) i se citesc operanzii. Aceste operaii formeaz faza de citire interpretare a instruciunii. Urmeaz apoi faza de execuie care execut prelucrarea efectiv a operanzilor conform cu codul operaiei specificat n RI. Rezultatul este depus n memorie sau n RG dup cum este specificat n RI. Pentru execuia operaiilor de I/E datele sunt transferate ntre registrul RA i subsistemul de I/E. Tabelul 5.1 Posibiliti transfer date n calculatorul didactic Destinaie Surs RG M T1 T2 RI CP I/E RG x x x x x x M x x x x x x x T1 T2 RI CP x x x I/E x x AIE x UAL x x x x x AM IND x

AIE

UAL

AM x x

IND x

x x x x

5-4

I/E

Subsistem de I/E

AIE MAG UE

RA S E L RG RB RC IS XA XB BA BB

T1

T2

UAL AM

RI UC Interpretor cod instructiune IND Generare comenzi verificare stari

CP

Magistrala comuna bidirectionala Cai de acces paralele

Comenzi si stari Acces individual la indicatori de conditie

Schema bloc a calculatorului didactic

Figura 5.1 5.3 Setul de instruciuni Pentru rezolvarea pe calculator a unei probleme date, programatorul specific prin instruciuni operaiile ce trebuiesc efectuate asupra datelor i ordinea n care acestea trebuie executate de ctre calculator. Stabilirea setului de instruciuni al unui calculator este o operaie dificil i trebuie corelat cu o serie de aspecte ca: aplicaiile pentru care este destinat calculatorul, resursele calculatorului i structura acestora (registre generale, memorie), modul de acces la operanzii din registre sau memorie etc. Pentru specificarea operaiilor logice i de calcul sunt necesare instruciuni aritmetice i logice care s permit realizarea unui set minim de operaii cum ar fi: adunarea i scderea (sau adunarea i schimbarea semnului); conjuncia, disjuncia i negaia (sistem complet de funcii); deplasarea arimetic i logic . Pentru implementarea structurilor de control ale unui algoritm sunt necesare instruciuni de transfer control cum ar fi: salt necondiionat la o anumit secven de instruciune; testarea condiiilor de terminare a operaiilor aritmetice/ logice i ramificarea execuiei programului n funcie de aceste condiii.
5-5

Pentru transferul datelor primare i a rezultatelor ntre calculator i mediul extern sunt necesare instruciuni de intrare/ieire. Pentru structurarea datelor n memorie sau registrele generale sunt necesare instruciuni de transfer a datelor ntre aceste resurse. Setul de instruciuni pentru calculatorul didactic poate fi format din urmtoarele tipuri de instruciuni: transfer date; aritmetice; logice; transfer control. 5.3.1 Instruciuni de transfer date Cu instruciunile de transfer date se poate specifica transferul datelor ntre memorie i registrele generale sau ntre registrul RA i porturi de I/E. Instruciunile de manipulare a stivei sunt incluse tot n acest grup. n tabelul 5.2 se prezint instruciunile de transfer date: Tabelul 5.2 Instruciuni de transfer date MOV Transfer cuvnt Instruciuni CU SCOP GENERAL PUSH Transfer cuvnt n stiv POP Transfer cuvnt din stiv IN intrare cuvnt Instruciuni INTRARI / IEIRI OUT ieire cuvnt PUSHF Transfer indicatori n stiv Instruciuni TRANSFER INDICATORI POPF Transfer indicatori din stiv n continuare, se prezint funciile efectuate la execuia acestora(Tabelul 5.3). Tabelul 5.3 Instruciuni cu scop general Format Funcie instruciune MOV transfer un cuvnt specificat de operandul surs la operandul destinaie. MOV destinaie,surs Coninutul indicatorilor nu se schimb. PUSH decrementeaz indicatorul stivei IS apoi transfer un cuvnt specificat de PUSH surs operandul surs n vrful stivei, indicat de IS. PUSH permite ntr-un mod convenabil memorarea temporar a datelor n stiv, de exemplu transferul parametrilor la chemarea unei proceduri. PUSH nu afecteaz indicatorii. POP transfer cuvntul din vrful stivei indicat de IS la operandul destinaie apoi POP destinaie incrementeaz pe IS pentru a indica noul vrf al stivei. POP permite transferarea datelor temporare din stiv n registre sau memorie. POP nu afecteaz indicatorii. PUSHF decrementeaz indicatorul stivei IS, apoi transfer toi indicatorii n PUSHF cuvntul din vrful stivei indicat de IS. Coninutul indicatorilor nu se schimb. POPF transfer biii corespunztori din cuvntul aflat n vrful stivei n indicatorii POPF de condiii nlocuind vechile valori ale acestora. IS este incrementat pentru a indica noul vrf al stivei. IN transfer un cuvnt de la portul de intrare specificat prin adresa "port" n IN port registrul RA. Adresele porturilor de I/E sunt cuprinse ntre 0 i 255. OUT transfer un cuvnt din RA la portul de ieire specificat prin adresa "port". OUT port Observaii: PUSHF i POPF permit unei proceduri s salveze i s restaureze indicatorii corespunztori programului chemtor i de asemenea permit modificarea prin program a coninutului indicatorilor. IN i OUT nu modific indicatorii. 5.3.2 Instruciuni aritmetice
5-6

Instruciunile aritmetice ale calculatorului didactic opereaz asupra unor numere reprezentate pe 16 bii sub forma de numere binare fr semn sau numere binare cu semn, numerele negative fiind reprezentate n cod complementar. Numerele sunt considerate ntregi, poziia virgulei fiind implicit dup cea mai puin semnificativ cifr a numrului. Astfel domeniul de valori pentru numerele fr semn este ntre 0 i 65535, iar pentru numerele cu semn ntre -32768 i +32767. n tabelul 5.4 se specific instruciunile aritmetice care intr n setul de instruciuni al calculatorului didactic. Tabelul 5.4 Instruciuni aritmetice ADD Adun cuvnt Instruciuni ADUNARE ADC Adun cuvnt i transport INC Incrementeaz cuvnt Scade cuvnt Instruciuni SCADERE SUB SBB Scade cuvnt cu mprumut DEC Decrementeaz cuvnt NEG Schimb semnul la cuvnt CMP Compar cuvnt Pentru a analiza rezultatul operaiilor aritmetice se utilizeaz indicatori de condiii prezentai n tabelul 5.5. Tabelul 5.5 Indicatorii de condiii Indicator Funcie T este setat (pozitionat n "1" ) dac n urma unei adunri rezult un transport dinspre (transport) rangul cel mai semnificativ, altfel T este ters (trecut n "0"). Transportul T este setat dac n urma unei scderi rezult un mprumut n cel mai semnificativ bit al rezultatului, altfel este ters. poate fi interpretat ca depire n operaiile cu numere ntregi fr semn. poate fi utilizat n instruciunile ADC i SBB pentru a efectua operaii aritmetice n precizie multipl (32 de bii sau 64 bii). poate fi testat cu instruciuni de salt condiionat. S la execuia instruciunilor aritmetice i logice indicatorul S este setat la valoarea bitului (semn) cel mai semnificativ al rezultatului (bitul de semn). Pentru numere cu semn n absena depirii S=0 indic rezultat pozitiv iar S=1 indic rezultat negativ. poate fi testat cu instruciuni de salt condiionat. n cazul operaiilor cu numere fr semn S poate fi ignorat deoarece n acest caz specific cel mai semnificativ bit al rezultatului. Z este setat dac n urma unei operaii aritmetice sau logice se obine rezultat egal cu 0, (zero) altfel Z este ters. poate fi testat cu instruciuni de salt condiionat pentru a dirija secvena de execuie a instruciunilor n funcie de valoarea rezultatului. P indicatorul de paritate P este setat dac n urma execuiei unei operaii aritmetice sau (paritate) logice rezultatul conine un numr par de bii egali cu 1, altfel P este ters. poate fi testat cu instruciuni de salt condiionat. D indicatorul de depire D este setat dac n urma execuiei unei operaii aritmetice (depire) rezultatul este un numr pozitiv prea mare sau un numr negativ prea mic pentru a putea fi reprezentat n operandul destinaie (exclusiv bitul de semn); altfel D este ters. poate fi interpretat ca depire n operaiile cu numere ntregi cu semn i poate fi testat cu instruciuni de salt condiionat. poate fi ignorat n operaiile aritmetice cu numere ntregi fr semn.
5-7

n continuare se prezint formatul instruciunilor aritmetice i funciile efectuate la execuia acestora (tabelul 5.6). Tabelul 5.6 Formatul instruciunilor aritmetice Format instruciune Descriere ADD destinaie, surs Suma celor doi operanzi trece n locul operandului destinaie. Operanzii pot fi numere binare cu semn sau fr semn. ADD pozitioneaz indicatorii T, S, Z, P, D. ADC destinaie, surs ADC adun cei doi operanzi i mai adun 1 dac T=1 iar rezultatul l trece n locul operandului destinaie. Operanzii pot fi numere binare cu sau fr semn. ADC se utilizeaz pentru operaii n precizie multipl. ADC poziioneaz toi indicatorii de condiii. INC adun 1 la operandul destinaie considerat ca un numr pe 16 bii fr INC destinaie semn. INC poziioneaz bistabilii de condiii cu excepia lui T. Operandul surs este sczut din operandul destinaie i rezultatul este trecut SUB destinaie,surs n locul operandului destinaie. Operanzii pot fi numere binare cu sau fr semn. SUB pozitioneaz toi indicatorii de condiii. SBB scade operandul surs din operandul destinaie i mai scade 1 dac T=1. SBB destinaie,surs Rezultatul trece n locul operandului destinaie. Operanzii pot fi numere binare cu sau fr semn. SBB se utilizeaz pentru operaii n precizie multipl. SBB pozitioneaz toi indicatorii de condiii. DEC scade 1 din operandul destinaie considerat ca un numr pe 16 bii fr DEC destinaie semn. DEC poziioneaz indicatorii cu excepia lui T. Operandul destinaie se scade din 0 i rezultatul trece n locul operandului NEG destinaie destinaie. Aceasta operaie inverseaz semnul unui ntreg, trecndu-l sub form de complement fa de doi. Dac se ncearc negarea lui -32768, operandul rmne neschimbat i se seteaz indicatorul de depire, D=1. NEG poziioneaz toi indicatorii de condiii. T este ntotdeauna setat exceptnd situaia n care operandul este zero. CMP destinaie,surs CMP scade operandul surs din operandul destinaie dar rezultatul nu se reine. Operanzii rmn neschimbai iar indicatorii de condiii sunt poziionai corespunztor i pot fi testati cu instruciuni de salt condiionat. 5.3.3 Instruciuni logice i de deplasare n acest grup au fost incluse instruciunile care opereaz asupra biilor unui cuvnt prin funcii logice i de deplasare i sunt prezentate n Tabelul 5.7. Instruciunile logice afecteaz indicatorii astfel: T i D sunt ntotdeauna zero n urma unei operaii logice iar Z, S i P sunt poziionai n funcie de rezultatul operaiei i pot fi testai cu instruciunile de salt condiionat, ca i n cazul instruciunilor aritmetice. Tabelul 5.7 Instruciuni logice i de deplasare NOT Instruciuni LOGICE AND OR XOR TEST SHL/SAL Instruciuni DEPLASARE SHR

"NU" cuvnt "I" cuvnt "SAU" cuvnt "SAU exclusiv" cuvnt "TEST" cuvnt Deplasare logic/aritmetic la stnga cuvnt Deplasare logic la dreapta cuvnt
5-8

SAR Deplasare aritmetic la dreapta cuvnt n continuare se prezint formatul instruciunilor logice i de deplasare i funciile efectuate la execuia acestora (tabelul 5.8 i 5.9). Tabelul 5.8 Formatul instruciunilor logice Formatul instruciunii Funcie NOT inverseaz (complementul fa de 1) biii cuvntului dat de operandul NOT destinaie destinaie. AND efectueaz "I" logic ntre biii celor doi operanzi i trece rezultatul n locul AND destinaie,surs operandului destinaie. OR efectueaz "SAU" logic ntre biii celor doi operanzi i trece rezultatul n locul OR destinaie,surs operandului destinaie. XOR efectueaz "SAU-exclusiv" ntre biii celor doi operanzi i trece rezultatul n XOR destinaie,surs locul operandului destinaie. TEST efectueaz "I" logic ntre cei doi operanzi i nu se reine rezultatul. Cei TEST destinaie,surs doi operanzi rmn neschimbai iar indicatorii sunt pozitionai corespunztor, putnd fi testai cu instruciunile de salt condiionat. Instruciunile de deplasare se utilizeaz pentru a deplasa aritmetic sau logic biii unui cuvnt. Deplasarea aritmetic se utilizeaz pentru nmulirea/mprirea numerelor cu puteri ale lui 2 iar deplasarea logic se utilizeaz pentru izolarea unor bii dintr-un cuvnt. Bistabilii de condiii sunt afectai de instruciunile de deplasare n felul urmtor: S, Z, P sunt poziionai n mod obinuit, ca i n cazul instruciunilor logice. T conine ntotdeauna bitul deplasat n afara operandului destinaie iar D este setat dac n urma operaiei de deplasare bitul cel mai semnificativ (semn) i-a schimbat valoarea, altfel D este ters. Tabelul 5.9. Formatul instruciunilor de deplasare Formatul instruciunii Funcie SHL/SAL realizeaz deplasarea la stnga cu o poziie a operandului destinaie. n SHL/SAL destinaie bitul cel mai puin semnificativ se introduce zero. Deplasarea logic i aritmetic la stnga cu o poziie produc acelai rezultat. S-au prevzut dou mnemonice pentru a mri flexibilitatea de exprimare a utilizatorului, n funcie de contextul de prelucrare a datelor. SHR deplaseaz logic la dreapta biii operandului destinaie introducnd zero n SHR destinaie bitul cel mai semnificativ. SAR deplaseaz aritmetic la dreapta biii operandului destinaie. Deplasarea se face SAR destinaie cu extensia bitului de semn (bitul de semn rmne neschimbat iar bitul cel mai semnificativ de date preia coninutul bitului de semn). 5.3.3 Instruciuni de transfer control Ordinea n care se execut instruciunile unui program pentru calculatorul didactic este determinat de secvena de valori reprezentnd coninutul registrului CP. Secvena normal de execuie a unui program se obine prin incrementarea contorului program CP, la fiecare instruciune pentru a obine instruciunea urmtoare. Instruciunile de transfer control opereaz asupra contorului program. Incrcarea registrului CP cu o valoare oarecare determin alterarea secvenei normale de execuie a programului. Transferul controlului la o alt secven se poate face necondiionat sau condiionat de valorile indicatorilor de condiii. Instruciunile de transfer control sunt prezentate n Tabelul 5.10.

5-9

Instruciunea HLT a fost inclus n acest grup dei efectul execuiei acestei instruciuni este suspendarea execuiei programului i trecerea unitatii centrale a calculatorului didactic ntr-o stare de ateptare (se ateapt un reset sau o ntrerupere ). Tabelul 5.10 Instruciuni de transfer control CALL Salt necondiionat la o procedur Instruciuni RET Revenire necondiionat dintr-o procedur TRANSFER IRET Revenire necondiionat dintr-o procedur de ntrerupere NECONDIIONAT JMP Salt necondiionat la o anumit adres Condiia testat salt dac Instruciuni JA (T OR Z)=0 "above";d>s (d,s fr semn) TRANSFER JAE T=0 CONDIIONAT "above or equal";ds(d,s fr semn) JB T=1 "below";d<s (d,s fr semn) JBE (T OR Z)=1 "below or equal";ds(d,s fr semn) JC T=1 "carry"; transport JE Z=1 "equal"; d=s JG ((S XOR D)OR Z)=0 "greater";d>s (d,s cu semn) JGE (S XOR D)=0 "greater or equal";ds (d,s cu semn) JL (S XOR D)=1 "less"; d<s (d,s cu semn) JLE ((S XOR D)OR Z)=1 "less or equal";ds (d,s cu semn) JNC T=0 "not carry"; nu exist transport JNE Z=0 "not equal"; d diferit s JNO D=0 "not overflow";nu exist depire JPO P=0 "parity odd";paritate impar JNS S=0 "not sign";rezultat pozitiv JO D=1 "overflow";depire JPE P=1 "parity even";paritate par JS S=1 "sign";rezultat negativ Nota s=surs ; d=destinaie

5-10

Tabelul 5.11 Formatul instruciunilor de transfer control Formatul instruciunii Funcie CALL nume-procedura CALL transfer controlul la procedura definit n cadrul programului i salveaz n stiv informatiile necesare revenirii n programul principal (chemtor). Revenirea se face la instruciunea imediat urmtoare instruciunii CALL, prin executarea, n procedura chemat, a unei instruciuni RET. Indiferent de modul n care se calculeaz adresa procedurii, unitatea central decrementeaz registrul IS i salveaz apoi n stiv adresa instruciunii urmtoare lui CALL. Valoarea calculat, reprezentnd adresa procedurii nlocuiete apoi coninutul registrului CP i secvena continu cu execuia procedurii RET transfer controlul dintr-o procedur napoi n programul chemtor, la RET instruciunea imediat urmtoare instruciunii care a activat, prin CALL, procedura. RET extrage coninutul celulei indicat de IS (vrful stivei) i-l introduce n registrul CP apoi incrementeaz pe IS. IRET transfer controlul dintr-o procedur de tratare a unei ntreruperi IRET napoi n programul ntrerupt prin urmtoarea secven de operaii, coninutul celulei din vrful stivei, indicat de IS, este transferat n registrul CP, se incrementeaz IS i coninutul celulei indicat de IS (actualizat) este transferat n registrul de indicatori dup care IS se incrementeaz din nou i programul continu cu instruciunea de la adresa aflat n registrul CP. IRET poziioneaz indicatorii de condiii conform coninutului din stiv. JMP transfer controlul la locaia indicat de destinaie. JMP nu salveaz JMP destinaie nimic n stiv, execuia programului continu cu instruciunea indicat de adresa calculat (adresa destinaie). Instruciunile de salt condiionat transfer controlul la alt secven numai Jcond destinaie dac se ndeplinete condiia de test specificat n instruciune. Dac nu este ndeplinit condiia de salt se continu execuia programului cu instruciunea urmtoare. Adresa "destinaie" trebuie s fie cuprins n limitele - 128 i +127 . Saltul se face relativ la contorul program : CP + " destinaie ". HLT trece unitatea central de prelucrare ntr-o stare de ateptare a unei HLT ntreruperi sau reiniializare a secvenei de comand. Altfel spus din starea de HALT se poate iei numai n urma unei ntreruperi (continundu-se cu instruciunea urmtoare lui HLT) sau cu un reset (care introduce 0 n CP ). 5.4 Formatul instruciunilor calculatorului didactic Repertoriul de instruciuni al calculatorului didactic a fost alctuit n vederea ilustrrii principalelor categorii de instruciuni ntlnite n calculatoarele moderne i pentru a satisface cerinele privind transferul informaiei, operaiile aritmetice i logice, transferul comenzii n cadrul programului, comanda procesorului, etc. Aceste instruciuni, prin formatul pe care l au, prin modalitile extrem de variate pentru calculul adreselor efective ale operanzilor asigur faciliti pentru manipularea unor structuri complexe de date, cum sunt tablourile unidimensionale i bidimensionale de date, diverse tipuri de nregistrri, fiiere, etc. Instruciunile calculatorului didactic pot manipula operanzi aflai n registrele unitii centrale, operanzi continui n instruciuni sau operanzi aflai n memorie, adresele efective ale acestor operanzi fiind calculate n diferite moduri, asigurnd o mare suplee n adresare.
5-11

Instruciunile au lungimi variabile de 1, 2 sau 3 cuvinte de cte 16 bii, lungimea fiind dictat de tipul operaiei codificate, de numrul de operanzi, de modul de adresare, etc. n Fig. 5.2 este prezentat structura instruciunii calculatorului didactic.
0 I) COP 6 7 8 9 10 d MOD 12 13 RM registrul ce contine unul din operanzi sau registrul care participa la calculul adresei efective (in functie de modul de adresare) registrul ce contine unul din operanzi sau extensie cod operatie modul de calcul al adresei efective d=0 registru/memorie registru/memorie OP registru
[R/M R/M OP REG]

15

REG

d=1 registru registru OP registru/memorie


[REG REG OP R/M ]

codul operatiei al instructiunii respective II) III) Deplasament/Data

Figura 5.2
Data

Primul cuvnt din instruciune (I) conine 5 cmpuri distincte : COP, d, MOD, REG, RM (descrise in tabelul 5.12) Tabelul 5.12 Cmpurile primului cuvnt al instruciunii calculatorului didactic Cmp Descriere reprezint codul operaiei, are 7 bii i reprezint funcia ce trebuie efectuat COP specific destinaia rezultatului innd seama de faptul c cei doi operanzi ai instruciunii sunt D indicai cu ajutorul cmpurilor REG i RM. d = 0 , RM RM COP REG d = 1 , REG REG COP RM arat modul de calcul al adresei efective a operandului i necesit 2 bii MOD specific registrul care conine operandul, sau se foloseste ca extensie a cmpului COP, REG ocup 3 bii indic registrul care conine un operand sau registrul folosit pentru calculul adresei efective. RM Al doilea cuvnt al instruciunii (II) conine deplasamentul (depls) folosit n calculul adresei efective sau data ca operand imediat, n cazul instruciunilor fr deplasament sau fr adresare la memorie. Al treilea cuvnt al instruciunii (III), n cazul n care exist, specific data ca operand imediat. 5.5 Moduri de adresare Modul de adresare reprezint modalitatea n care se calculeaz adresa efectiv (AE) a operanzilor implicai n instruciunea curent. Instruciunile calculatorului didactic pot prelucra maxim doi operanzi. Acetia se pot gsi : -ambii n registrele generale RG ;
5-12

-unul n registrele generale RG i altul n memorie ; -unul n registrele generale RG i altul n cadrul instruciunii respective (operand imediat) ; -unul n memorie i altul imediat. n funcie de codificarea cmpurilor MOD i RM se precizeaz modul n care se calculeaz adresa efectiv (AE) a operandului. Tabelul 5.6 specific modul n care se calculeaz adresa efectiv i codurile din cmpurile MOD, RM. Se observ c pentru MOD = 11, operanzii se gsesc n registrele generale. Pentru a asigura o mare flexibilitate n prelucrarea datelor alegem, pentru calculatorul didactic, urmtoarele moduri de adresare: 1. Adresare direct Adresa efectiv este prevzut n instruciune, n cuvntul al doilea, Fig. 5.3. AE = Depls Exemplu: mov RA,adres
0 COP 6 7 8 9 10 d MOD 12 13 RM 15 0 Deplasament AE MEMORIE OPERAND 15 REG

Figura 5.3

2. Adresare indirect Adresa efectiv se citete din memorie, din locaia a crei adres este coninut n al doilea cuvnt al instruciunii, Fig.5.4. AE = [Depls] Exemplu: mov RA,[adresa]
0 COP 6 7 8 9 10 d MOD 12 13 RM 15 0 Deplasament MEMORIE 15 REG

AE

Figura 5.4

AE

MEMORIE OPERAND

3. Adresare indirect prin registru Adresa efectiv se gsete n unul din registrele XA, XB,BA, BB, Fig. 5.5.
AE = XA XB BA BB

Exemplu:

mov RA,[BA]

5-13

0 COP

6 7 8 9 10 d MOD

12 13 RM

15

REG

XA

AE

MEMORIE OPERAND

Figura 5.5

XB BA BB

4. Adresare indirect prin sum de registre Adresa efectiv se obine ca sum a coninutului unui registru de baz cu coninutul unui registru index, Fig. 5.6.
AE = BA+XA BA+XB BB+XA BB+XB

Exemplu:
0

mov mov
COP

RA,[BA] [XA] RA,[BA + XA]


6 7 8 9 10 d MOD 12 13 RM RG BA BB RG XA XB 15 REG

Figura 5.6

AE

MEMORIE OPERAND

5. Adresare indirect prin sum de registre cu autoincrementare a registrelor index dup calculul adresei efective. Fa de modul precedent de adresare apare deosebirea c registrele index se incrementeaz dup generarea adresei efective, Fig. 5.7.
BA+XA+ AE = BA+XB+ BB+XA+ BB+XB +

ceea ce este echivalent cu :

AE =

BA+XA BA+XB BB+XA BB+XB

;XA XA + 1 ;XB XB + 1 Incrementarea registrului index XA sau XB are loc dup participarea la calculul adresei efective. Exemplu: mov RA,[BA][XA+]
5-14

0 COP

6 7 8 9 10 d MOD 0 1

12 13 RM

15

REG x x x

0 x x RG BA BB RG XA+ XB+

Figura 5.7

AE

MEMORIE OPERAND

6. Adresare indirect prin sum de registre cu autodecrementare a registrului index nainte de calculul adresei efective. n acest caz se folosete doar un singur registru index i anume registrul XA, Fig. 5.8.
AE = BA+XABB+XAAE = BA+XA BB+XA

ceea ce este echivalent cu: XA XA -1 i Decrementarea registrului index XA are loc nainte de a participa la calculul adresei efective. Exemplu: mov RA,[BA][XA-]
0 COP 6 7 8 9 10 d MOD 0 1 12 13 RM 1 0 x RG BA BB RG XA15 REG x x x

Figura 5.8

AE

MEMORIE OPERAND

7. Adresare bazat Adresa efectiv se obine prin adunarea coninutului celui de-al doilea cuvnt al instruciunii cu unul din registrele baz, Fig. 5.9.
AE = BA BB + deplasament

Exemplu:

mov RA,[BA]+adres mov RA,adresa[BA]


5-15

mov RA,[BA+adresa]
0 COP 6 7 8 9 10 d MOD 1 0 12 13 RM 1 1 x RG BA BB 15 0 deplasament 15

REG x x x

Figura 5.9

AE

MEMORIE OPERAND

8. Adresare indexat Adresa efectiv se obine prin adunarea coninutului celui de-al doilea cuvnt al instruciunii cu unul din registrele index, Fig. 5.10.
AE = XA XB + deplasament

Exemplu:

mov RA,[XA]+adresa mov RA,adresa[XA] mov RA,[XA+adresa]


0 COP 6 7 8 9 10 d MOD 1 0 12 13 RM 1 0 x RG XA XB 15 0 deplasament 15

REG x x x

Figura 5.10

AE

MEMORIE OPERAND

9. Adresare bazat indexat Adresa efectiv se obine prin adresarea coninutului celui de-al doilea cuvnt al instruciunii cu suma dintre un registru de baz i un registru index, Fig. 5.11.

5-16

AE =

BA+XA BA+XB + deplasament BB+XA BB+XB

Exemplu:

mov mov mov mov


0 COP

RA,[BA][XA]+adresa RA,adresa[BA][XA] RA,[BA+XA+adresa] RA,[BA][XA].adresa


6 7 8 9 10 d MOD 1 0 12 13 RM 0 x x RG BA BB XA 15 0 deplasament 15 REG x x x

Figura 5.11

XB

AE

MEMORIE OPERAND

10. Adresare imediat Operandul se gsete n al doilea cuvnt al instruciunii sau al treilea cuvnt al instruciunii, Fig. 5.12.
AE = CP + 1 CP + 2

Exemplu:
0

mov RA,7
AE 6 7 8 9 10 COP d MOD 12 13 RM sau 0 COP 6 7 8 9 10 d MOD 12 13 RM AE 0 operand Figura 5.12 15 15 0 deplasament 15 15 0 operand 15

REG

REG

11. Adresare direct la registru Operandul se gsete ntr-unul din registrele specificate n cmpurile REG sau RM, Fig 5.13.
5-17

AE =

REG RM

Exemplu:
0

mov RA,RB
6 7 8 9 10 COP d MOD 12 13 RM 15 0 deplasament 15 REG

OPERAND AE

RA RB RC IS

OPERAND Figura 5.13

BA BB XA XB

5.6 Clasificarea instruciunilor Din punctul de vedere al adresrii, putem clasifica instruciunile n urmtoarele mari categorii: a) - instruciuni cu calcul de adres efectiv n care distingem: a1) - instruciuni cu o singura adres efectiv (cu un singur operand), Fig 5.14 : INC; DEC; NEG; NOT; SHL/SAL; SHR; SAR; PUSH; POP; CALL; JMP
0 COP 6 7 8 9 10 d MOD 12 13 RM 15 0 deplasament 15 REG

a2) - instruciuni cu 2 adrese efective (cu 2 operanzi) a2.1) - cu 2 operanzi ale cror adrese sunt specificate n instruciune, Fig. 5.15 : MOV; ADD; ADC; SUB; SBB; CMP; AND; OR; XOR; TEST
0 a) 0 b) COP COP 6 7 8 9 10 d MOD 12 13 RM 15 RM 0 deplasament 15 15 REG 12 13

6 7 8 9 10 d MOD

REG

a2.2)

- cu 2 operanzi dintre care unul este imediat, Fig. 5.16 : MOV; ADD; ADC; SUB; SBB; CMP; AND; OR; XOR; TEST

5-18

0 a) 0 b) COP COP

6 7 8 9 10 d MOD

12 13 RM

15

0 data (operand imediat)

15

REG 12 13

6 7 8 9 10 d MOD

15 RM

0 deplasament 0 data(operand imediat)

15

REG

15

b) - instruciuni fr calcul de adres efectiv, Fig. 5.17: PUSHF; POPF; RET; IRET; HLT; IN; OUT; Jcond
0 COP a) PUSHF; POPF; RET; IRET; HLT 0 COP b) IN; OUT 0 COP b) J cond 3 4 7 8 15 7 8 adresa port 15 7 8 15

cond. test

deplasament relativ la CP

Avnd n vedere clasificarea instruciunilor main ale calculatorului didactic se propune codificarea modurilor de adresare din Tabelul 5.13.

Tabelul 5.13 Calculul adresei efective MOD(RI8,RI9) RM(RI13:15) 00 01 000 [BA+XA] [ BA+XA+] 001 [BA+XB] [BA+XA+] 010 [BB+XA] [BB+XA+] 011 [BB+XB] [BB+XB+] 100 [XA] [BA+-XA-] 101 [XB] [BB+-XA-] 110 [BA] Depls 111 [BB] [Depls] * registrul general conine chiar operandul

10 BA+XA+Depls BA+XB+Depls BB+XA+Depls BB+XB+Depls XA+Depls XB+Depls BA+Depls BB+Depls

11 RA* RB* RC* IS* XA* XB* BA* BB*

0 1 2 3 4 5 6 7

5-19

5.7 Codificarea instruciunilor innd seama de clasificarea instruciunilor main ale calculatorului didactic se propune ca instruciunile din aceeai categorie s fie codificate cu coduri adiacente pentru a simplifica faza de interpretare a acestora. n codificarea instruciunilor main se va ine cont de urmtoarele criterii generale : Bitul RI0 va separa grupul de instruciuni cu adres efectiv de cele fr calcul de adres efectiv. Astfel: RI0=0 va caracteriza grupul de instruciuni cu calcul de adres efectiv, iar RI0=1 va caracteriza grupul de instruciuni fr calcul de adres efectiv . n cadrul primului grup, bitul RI1 va separa instruciunile cu o adres de cele cu dou adrese: RI1=0 caracterizeaz instruciunile cu o singur adres RI1=1 caracterizeaz instruciunile cu dou adrese Bitul RI2 din codul operaiei separ grupul de instruciuni cu operand imediat de celelalte: RI2=0 caracterizeaz instruciunile fr operand imediat, RI2=1 caracterizeaz instruciunile cu operand imediat. n cadrul grupului de instruciuni cu o singur adres bitul RI3 separ instruciunile de transfer date sau transfer control de celelalte. Astfel: RI3=0 caracterizeaz instruciunile de transfer date/control, iar RI3=1 caracterizeaz instruciunile operaionale cu un singur operand. n cadrul grupului de instruciuni cu dou adrese bitul RI3=0 specific instruciunile care nu produc rezultat ci poziioneaz numai indicatorii de condiii (CMP, TEST). Biii RI4:6 codific individual instruciunile din fiecare subgrup. n cadrul clasei de instruciuni fr calcul de adres efectiv bitul RI3=1 separ instruciunile de salt condiionat de celelalte. Biii RI4:6 codific individual instruciunile iar n cazul instruciunilor de salt condiionat RI4:7 specific condiia de test. Avnd n vedere aspectele prezentate privind codificarea instruciunilor main rezult codificarea din Tabelul 5.14.

Tabelul 5.14 Codificarea instruciunilor


RI1=0 cu o adres RI3=0 transfer date/contr RI0=0 cu adres efectiv 0=MOV 0=MOV 1= 1= 2=PUSH 2= 3=POP 3= 4=CALL 4= 5=JMP 5= 6= 6= 7= 7= 0=INC 0= 1=DEC 1= 2=NEG 2= 3=NOT 3= 4=S HL/SAL 4= 5=SHR 5= 5-20 RI0=1 fr adres efectiv 0=IN 0= 1=OUT 1= 2=PUSHF 2= 3=POPF 3= 4=RET 4= 5=IRET 5= 6=HLT 6= 7= 7= Jcond[RI4:7] 0= Jcond[RI4:7] 1= Jcond[RI4:7] 2= Jcond[RI4:7] 3= Jcond[RI4:7] 4= Jcond[RI4:7] 5=

RI3=1 operaii

RI1=1 cu dou adrese

RI3=0 nu produc Rezultat

RI3=1 produc rezultat

6=SAR 7= 0= 1= 2=CMP 3= 4=TEST 5= 6= 7= 0=ADD 1=ADC 2=SUB 3=SBB 4=AND 5=OR 6=XOR 7= RI2=0 op neimediat

6= 7= 0= 1= 2=CMP 3= 4=TEST 5= 6= 7= 0=ADD 1=ADC 2=SUB 3=SBB 4=AND 5=OR 6=XOR 7= RI2=1 op imediat

Jcond[RI4:7] Jcond[RI4:7] 0= 1= 2= 3= 4= 5= 6= 7= 0= 1= 2= 3= 4= 5= 6= 7=

6= 7= 0= 1= 2= 3= 4= 5= 6= 7= 0= 1= 2= 3= 4= 5= 6= 7=

Obs: n cadru codificrii instruciunea MOV a fost grupat mpreun cu cele cu o adres PUSH, POP, CALL, JMP, considerndu-se faptul c se citete un singur operand n faza de preluare operanzi. Tabelul 5.15 Codurile instruciunilor main Bit RI Instruciune Observaii 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 d MOV 0 0 0 0 0 1 0 x PUSH 0 0 0 0 0 1 1 x POP 0 0 0 0 1 0 0 x CALL 0 0 0 0 1 0 1 x JMP 0 0 0 1 0 0 0 x INC 0 0 0 1 0 0 1 x DEC 0 0 0 1 0 1 0 x NEG 0 0 0 1 0 1 1 x NOT 0 0 0 1 1 0 0 x SHL/SAL 0 0 0 1 1 0 1 x SHR 0 0 0 1 1 1 0 x SAR 0 0 1 0 0 0 0 x MOV cu operand imediat 0 1 0 0 0 1 0 d CMP 0 1 0 0 1 0 0 d TEST 0 1 0 1 0 0 0 d ADD 0 1 0 1 0 0 1 d ADC 0 1 0 1 0 1 0 d SUB 0 1 0 1 0 1 1 d SBB 0 1 0 1 1 0 0 d AND 0 1 0 1 1 0 1 d OR 0 1 0 1 1 1 0 d XOR 0 1 1 0 0 1 0 x CMP cu operand imediat 0 1 1 0 1 0 0 x TEST cu operand imediat
5-21

0 1 1 1 0 0 0 x ADD cu operand imediat 0 1 1 1 0 0 1 x ADC cu operand imediat 0 1 1 1 0 1 0 x SUB cu operand imediat 0 1 1 1 0 1 1 x SBB cu operand imediat 0 1 1 1 1 0 0 x AND cu operand imediat 0 1 1 1 1 0 1 x OR cu operand imediat 0 1 1 1 1 1 0 x XOR cu operand imediat 1 0 0 0 0 0 0 x IN 1 0 0 0 0 0 1 x OUT 1 0 0 0 0 1 0 x PUSHF 1 0 0 0 0 1 1 x POPF 1 0 0 0 1 0 0 x RET 1 0 0 0 1 0 1 x IRET 1 0 0 1 1 1 0 x HLT 1 0 0 1 condiie x Jcond Codurile operaie specifice instruciunilor main, mpreun cu bitul ce precizeaz destinaia sunt prezentate n tabelul 5.15. 5.8 Faza de citire interpretare a instruciunilor main Faza de citire interpretare a instruciunilor main are ca obiective principale: -citirea instruciunii curente; -separarea instruciunilor n clase mari; -calculul adresei efective dac este cazul; -pregatirea adresei efective n registrele AM i T1. Pentru a permite o implementare hardware simpl i o descriere AHPL sub o form ct mai compact, vom considera c adresa registrelor generale implicate n transfer, prelucrare sau calcul de adres efectiv va fi generat cu ajutorul unei memorii denumit MAP, Fig.5.18.
3 RM A2 :4 D3:5 3 MAP 3:5 Adresa celui de-al doilea registru implicat in calculul adresei (va fi adus in T2)

2 MOD A0 :1 D0:2

3 MAP 0:2 Adresa primului registru implicat in calculul adresei (va fi adus in T1)

Figura 5.28

5-22

Aceast memorie va avea memorate adresele registrelor generale implicate, n funcie de modul de adresare. Adresele registrelor generale sunt prezentate n tabelul 5.16. Tabelul 5.17 Coninutul memoriei MAP ADR MAP0:2 MAP3:5 ADR 0 6 4 10 1 6 5 11 2 7 4 12 3 7 5 13 4 4 x 14 5 5 x 15 6 6 x 16 7 7 x 17 8 6 4 18 9 6 5 19 A 7 4 1A B 7 5 1B C 6 4 1C D 7 5 1D E x x 1E F x x 1F Tabelul 5.16 Adresele registrelor generale RG Registru Adres RA 0 RB 1 RC 2 IS 3 XA 4 XB 5 BA 6 BB 7

MAP0:2 6 6 7 7 4 5 6 7 x x x x x x X X

MAP3:5 4 5 4 5 x x x x x x x x x x x x

Coninutul memoriei MAP, care genereaz adrese de registre general implicate n calculul adresei efective, este prezentat n tabelul 5.17. Descrierea fazei de citire interpretare a instruciunilor main este realizat prin programul AHPL ( pasii 1...25 ), conform cu organigrama din Fig. 5.19.

5-23

1 2:3 IURM RIM CP 4 5 26 Operandul in RGR/M 6 un singur registru implicat in AE 7 tip instr. citeste al-II-lea registru implicat in calculul de AE se aduna continutul celor doua registre 10 8 indirect DA T2XX 1718 9 T1T1+T2 DA T2XA increm. reg. index XAXA-1 T1MT1 2324 T1BXXX 1 0 tip instr. Citeste primul registru implicat in calculul de AE T2Depls(MCP+1) NU Citeste instructiunea curenta in RI Instructiuni fara calcul de AE start

RI0

66

AE directa / indirecta

autoincrementare. 16

XXXX+1

11 deplasament. citeste deplasament se aduna deplasament 1214 DA T2Depls(M CP+1) 15 T1T1+T2

25

AMT1 26 executie

Organigrama fazei de citire interpretarea ainstructiunilor masina


Figura 5.19

Pentru simplificarea descrierii AHPL vom considera lucrul cu memoria principal de tip sincron. Programul AHPL pentru descrierea fazei de citire interpretare.
5-24

MODULE : UCD-CD Unitatea de comand a calculatorului didactic MEMORY: M[65536;16]; RG[8;16]; AM[16]; CP[16]; T1[16]; T2[16]; IND[16]; RI[16]; AIE[8] INPUTS: <semnalele de intrare> COMBUS: MAG[16] 1. SL(SYN(starta))/(1) /* se ateapt pornirea calculatorului didactic, ce face i o iniializare a contorului program CP. 2. AM CP /* se aduce adresa instruciunii ce trebuie citit n registrul de adrese al memoriei. 3. RI BUSFN(M;DCD(AM)) /* se citete n registrul de instruciuni instruciunea ce se va executa. 4. RI0 /(66) /* se separ instruciunile fr calcul de adres (pas 66) de cele cu calcul de adres i se continu cu cele din urm. /* Se calculeaz adresa efectiv.
5 ((RI8 RI 9 ), ( RI 8 RI 9 RI13 RI14 )) /(26,19) /* se separ instruciunile pentru care MOD=11 (pas 26) i cele cu adresare direct sau indirect (pas 19) de celelalte.

6. T1 BUSFN(RG;DCD(BUSFN0:2(MAP;DCD(MOD,RM)))) /* Se citete n registrul temporar T1 coninutul primului registru general care este utilizat la calculul adresei efective. Adresa registrului general este preluat din memoria MAP de la adresa specificat de MOD i RM
7 ((RI 9 RI13 ), (RI 9 RI13 )) /(11,17) /* Se separ modul de adresare indirect prin registre, indexat, bazat (pas 11) i cu autodecrementare (pas17) de celelalte moduri

8. T2 BUSFN(RG;DCD(BUSFN3:5(MAP;DCD(MOD,RM)))) /* Pentru modurile de adresare rmase se citete n T2 cel de al doilea registru general ce particip la calculul adresei. 9. T1 ADD(T1;T2;0) /* se nsumeaz cele dou registre ce particip la calculul adresei. 10. RI9/(16) /* se separ modul de adresare cu autoincrementare de celelalte 11. RI 8 /(25) /* se separ modul de adresare cu deplasament de cel fr deplasament 12. CP INC(CP) /* se pregtete adresa pentru citirea deplasamentului 13. AM CP
5-25

14. T2 BUSFN(M;DCD(AM)) /* se citete deplasamentul 15. T1 ADD(T1;T2;0) ; (25) /* se adun deplasamentul la adresa efectiv i se trece controlul la faza de execuie 16. RG * DCD(BUSFN3:5(MAP;DCD(MOD,RM))) ADD(0;T2;1) ; (25) /* se ncrementeaz registrul index utilizat n modul de adresare cu autoincrementare i se trece la faza de execuie 17. T2 BUSFN(RG;DCD(BUSFN3:5(MAP;DCD(MOD,RM)))) 18. T2 ADD(0FFFFH;T2;0); RG * DCD(BUSFN3:5(MAP;DCD(MOD,RM))) ADD(0FFFFH;T2;0) ; (15) /* se trateaz modul de adresare cu autodecrementare prin decrementarea registrului index specificat i utilizarea sa la calculul adresei efective 19. CP INC(CP) /* ncepe tratarea modului de adresare direct/indirect 20. AM CP 21. T1 BUSFN(M;DCD(AM)) /* se citete deplasamentul
22. RI15 /(25) /* se separ modul de adresare direct de indirect

23. AM T1 24. T1 BUSFN(M;DCD(AM)) /* se aduce n T1 adresa calculat indirect 25. AM T1 /* se aduce adresa efectiv n registrul AM 5.9 Faza de execuie a instruciunilor main Faza de execuie a instruciunilor main este descris prin programul AHPL ( paii 26...88 ) conform cu organigramele din Fig.5.20, 5.21, 5.22. /* Faza de execuie a instruciunilor cu calcul de adres efectiv /* Se separa instruciunile cu doua adrese ADD,ADC,etc de cele cu o adres (cu un operand) INC, DEC, etc, formndu-se un grup separat cu cele de transfer date i chemare de subrutin sau salt necondiionat deoarece aceste trei mari clase au pri comune n faza de execuie. 26. (RI1)/(57) /* se separ instruciunile cu dou adrese de celelalte
5-26

27. (RI3)/(54) /* se separ instruciunile cu o adres reprezentand operatii (54) de cele de transfer date i ramificaie. /* Execuia instruciunilor MOV; CALL; JMP; PUSH; POP (organigrama din Fig. 5.20)
26 RI1 27 0 instr. cu 1 adresa RI0 MOV 29 RI2 0 T1 sursa T2 Data(M CP+1) 46:47 IS IS + 1 40:42 MIS T1 ADR. URM 37 dest T2 50:52 32 CP T 1 Formarea adresei instructiunii urmatoare 53 MIS CP IS IS - 1 IS IS - 1 operand 1 imediat 33:36 0 00 38 43:45 RI4:5 01 RI6 1 T2 MIS 10 1 54 Instructiuni aritmeice, logice cu 1 operand 1

instr. cu 2 adrese 57

ADD, ADC, SUB, SBB

INC, DEC, NEG CALL, JMP JMP 1

PUSH, POP 0 PUSH 49 39 T1 sursa RI6 0

POP

CP CP + 1

CP CP + 1 IURM 2

Citirea instructiunii urmatoare

Figura 5.20 Faza de execuie a instruciunilor MOV; CALL; JMP; PUSH; POP

28. (RI4,RI5)/(48,38) /* se separ instruciunile CALL;JMP (pas48) i PUSH;POP (pas 38) de instruciunile MOV care se trateaz n continuare /* Execuia instruciunilor MOV 29. (RI2)/(33) /* se trateaz separat instruciunea MOV cu operand imediat de cea cu operand de la adres efectiv; innd seama de sensul bitului d=RI7 i modul de adresare prezentate n formatul instruciunilor, operandul surs al instruciunii MOV poate fi ntr-un registru general specificat de biii REG sau RM sau ntr-o celul de memorie specificat de adresa efectiv.
5-27

dac d=0 dac d=1

sursa este n RG specificat de REG iar destinaia este n RG specificata de RM (MOD=11) sau n memorie la adresa efectiv (MOD11) sursa este n RG specificat de RM sau n memorie la adresa efectiv iar destinaia n RG specificat de REG

30. T1 (BUSFN(RG;DCD(REG))!BUSFN(M;DCD(AM))!BUSFN(RG;DCD(RM))) * (RI 7 , RI 7 RI 8 RI 9 , RI 7 RI 8 RI 9 ) 31.(((RG*DCD(REG))!(M*DCD(AM))!(RG*DCD(RM))


* (RI7 , RI 7 RI8 RI 9 , RI 7 RI8 RI 9 )) T1

/* operandul surs citit n registrul temporar T1 se depune la adresa efectiv sau ntr-un registru general 32. CP INC(CP) (2) /* s-a terminat de executat instruciunea MOV cu operandul de la adresa efectiv. Se pregtete adresa pentru instruciunea urmtoare i se reia faza de citire interpretare. /* Execuia instruciunii MOV cu operand imediat

33. CP INC(CP) /* se stabilete adresa pentru operandul imediat i se aduce n registrul de adrese 34. AM CP 35. T2 BUSFN(M;DCD(AM)) /* Se citete operandul imediat n T2 pentru a nu pierde adresa efectiv ce se gsea n T1 36. AM T1 /* Se reface n registrul de adrese al memoriei adresa efectiv 37. ((M * DCD(AM))!(RG * DCD(RM)) * (RI 8 RI 9 , RI 8 RI 9 )) T2 (32) /* se depune operandul surs la adresa efectiv i se trece la formarea adresei pentru instruciunea urmtoare. /* Execuia instruciunilor PUSH i POP 38. (RI6)/(43) /* se separ instruciunea POP. Se citete n T1 operandul ce trebuie dus n stiv

40. T2 BUSFN(RG;DCD(ADRIS)) /* se decrementeaz IS i se duce i n registrul de adrese al memoriei 41.RG*DCD(ADRIS) ADD(0FFFFH;T2;0) AM ADD(0FFFFH;T2;0)
5-28

42. M*DCD(AM) T1 (32) /* se salveaz operandul surs n stiv i se merge la formarea adresei instruciunii urmtoare /* se execut POP 43. AM BUSFN(RG;DCD(ADRIS)) 44. T2 BUSFN(M;DCD(AM)) /* se citete din stiv 45. AM T1 /* se reface adresa efectiv din registrul de adrese al memoriei 46. T1 BUSFN(RG;DCD(ADRIS)) /* se incrementeaz 47. RG*DCD(ADRIS) ADD(T1;0;1) (37) /* Execuia instruciunilor CALL; JMP

48. (RI6)/(53) /* se separ instruciunea JMP 49. CP INC(CP) /* se formeaz adresa instruciunii urmtoare i se salveaz n stiv 50. T2 BUSFN(RG;DCD(ADRIS)) 51. RG*DCD(ADRIS) ADD(0FFFFH;T2;0) AM ADD(0FFFFH;T2;0) 52. M*DCD(AM) CP 53. CP T1 (2) /* adresa efectiv se depune n contorul de program /* Execuia instruciunilor cu un operand INC; DEC; NEG; NOT; SHL/SAL; SHR; SAR (organigrama din Fig.5.21)

5-29

54 11 54 T1 MAM MOD=11 =11 54 T1 RGR/M

55 Depunere rezultat

T1 operatie(T1) 56 11 MOD=11 =11

MAM T1

RGR/M T1

Adresa urmatoare

32

Formarea adresei instructiunii urmatoare

Figura 5.21 Faza de execuie a instruciunilor cu un operand

INC;DEC;NEG;NOT;SHL/SAL;SHR;SAR
54. T1 (BUSFN(M; DCD(AM)))!(BUSFN(RG; DCD(RM))) * (RI 8 RI 9 , RI 8 RI 9 )

/* s-a citit operandul n registrul temporar T1


55. T1 (ADD(T1;0;1)!ADD(T1;0FFFFH;0)! ADD(T1;0;1)! T1!T11:15 ,0! 0, T10:14 !T10 , T10:14 ) * DCD 0:6 (RI 4:6 ) /* Z,S,D,T,P-se poziioneaz corespunztor rezultatului 56.(M * DCD(AM)!RG * DCD(RM)) * (RI 8 RI 9 , RI 8 RI 9 ) T1

(32) /* Execuia instruciunilor cu doi operanzi ADD;ADC;SUB;SBB;AND;OR;XOR;CMP;TEST (organigrama din Fig.5.22)

5-30

57 RI2 58 0 T1 dest 59 T2 sursa 60

1 61:64 T2 Data(MCP+1) 65 T1 dest

T1*RI3 T1 operatie T2 1 RI2 0 depune rezultat in AM M ; RG REG; RGR/M depune rezultat 31 56 operand imediat

Figura 5.22 Faza de execuie a instruciunilor cu doi operanzi ADD;ADC;SUB;SBB;AND;OR;XOR;CMP;TEST 57. (RI2)/(61) /* se separ instruciunile cu operand imediat 58. T1 (BUSFN(RG;DCD(REG))!BUSFN(M;DCD(AM))!BUSFN(RG;DCD(RM))) * (RI 7 , RI 7 RI 8 RI 9 , RI 7 RI 8 RI 9 ) /* d=0 R/M R/M cop REG /* d=1 REG REG cop R/M /* se citete n T1 operandul 1 59. T2 (BUSFN(RG;DCD(REG))!BUSFN(M;DCD(AM))!BUSFN(RG:DCD(RM)))
* (RI 7 , RI 7 RI 8 RI 9 , RI 7 RI 8 RI 9 )

/* se citete n T2 operandul 2 /* RI3=0 caracterizeaz instruciunile ce nu produc rezultat i poziioneaz indicatorii de stare (CMP;TEST) 60.T1 * RI3 (ADD(T1; T2;0)! ADD(T1; T2; T)!ADD(T1; T2;1)! ADD(T1; T2; T )! AND(T1;T2)!OR(T1;T2)!XOR(T1;T2))*DCD0:6(RI4:6) /* Z,S,D,T,P-se poziioneaz conform rezultatului (RI 2 , RI 2 )/(31,56) /* execuia instruciunilor cu doi operanzi, dintre care unul este imediat
5-31

61. CP INC(CP) /* se citete operandul imediat 62. AM CP 63. T2 BUSFN(M;DCD(AM)) /* se reface adresa efectiv 64. AM T1 _____ 65. T1 (BUSFN(M;DCD(AM))!BUSFN(RG;DCD(RM))*(RI8RI9,RI8RI9) (60) /*Execuia instruciunilor fr calcul de adres efectiv IN;OUT;PUSHF;POPF;RET;IRET; HLT (organigrama din Fig.5.23)
66 RI3 0 67 68 00 IN,OUT 73:75 69 0 IN 70
AIE

85 1 conditie coind indepl RET,IRET,HLT 10 CP MIS ISIS+1 76:78 RI6 1 82:83 IRET IND MIS ISIS+1 RET 84 11 DEAD END 86:88 0 CP CP+RI8:15 da

RI4:5 PUSHF,POPF 0 PUSHF ISIS-1 MIS IND RI6 01 72 1 IND MIS ISIS+1

AIE RI8:15

POPF

RI6 71 Port

1 OUT
AIE

RA Port

RA

ADR.URM

32

Formarea adresei urmatoare

Citirea instructiunii urmatoare

Figura 5.23 Faza de execuie a instruciunilor fr calcul de adres efectiv IN;OUT;PUSHF;POPF;RET;IRET;HLT 66. RI3/(85) /* se separ instruciunile de salt condiionat 67. (RI 4 RI 5 , RI 4 RI 5 , RI 4 RI 5 )/(72,79,84)

5-32

/* se separ instruciunile PUSHF; POPF (pas 72), instruciunile RET; IRET (pas 79) i instruciunea HLT (pas(84) /* Execuia instruciunilor IN, OUT 68. AIE RI8:15 69. RI6/(71) /* se separ instruciunea OUT 70. RG*DCD(ADRRA) BUSFN(PORT;DCD(AIE)) (32) /* se execut instruciunea IN 71. PORT * DCD(AIE) BUSFN(RG;DCD(ADRRA)) (32) /* se execut instruciunea OUT /* Execuia instruciunilor PUSHF; POPF

72. (RI6)/(76) /* se separ POPF /* n continuare se execut PUSHF 73. T1 BUSFN(RG;DCD(ADRIS)) 74. RG*DCD(ADRIS) ADD(T1;OFFFFH;0); AM ADD(T1;0FFFFH;0) 75. M*DCD(AM) IND (32) /* s-a executat instruciunea PUSHF 76. AM BUSFN(RG;DCD(ADRIS)) T1 BUSFN(RG;DCD(ADRIS)) 77. IND BUSFN(M;DCD(AM)) 78. RG*DCD(ADRIS) ADD(T1;0;1) (32) /* s-a executat instruciunea POPF /* Execuia instruciunilor RET;IRET

79. AM BUSFN(RG;DCD(ADRIS)) T1 BUSFN(RG;DCD(ADRIS)) 80. CP BUSFN(M;DCD(AM)) /* se reface contorul program


5-33

81. RG*DCD(ADRIS) ADD(T1;0;1) AM ADD(T1;0;1) T1 ADD(T1;0;1) RI 6 /(2) /* se separ RET a crei execuie s-a terminat 82. IND BUSFN(M;DCD(AM)) /* se execut IRET 83. RG*DCD(ADRIS) ADD(T1;0;1) (2) /* Execuia instruciunii HLT 84. DEAD END

85. conditie /(32) /* Execuia instruciunilor de salt condiionat

/* Condiie nendeplinit, salt la instruciunea urmtoare 86. T1 CP 87. T2 RI8:15 /* transferul se face cu extensia semnului RI8 pe biii 0:7) 88. CP ADD(T1;T2;0) (2) 5.10 Completarea setului de instruciuni n procesul de elaborare n limbaj de asamblare a programelor, poate aprea necesitatea unor operaii de rotire (stnga/dreapta), de repetare a unei seciuni de program specificate, de transfer al unui ir de date dintr-o zon de memorie n alta, etc. n cele ce urmeaz vom ncerca s completm setul de instruciuni main pentru implementarea direct a unor operaii. Se vor analiza aspectele implicate de introducerea de noi instruciuni main n setul existent . Aspectele care apar n procesul de introducere a unor instruciuni noi sunt urmtoarele : - alegerea funciei i a mnemonicei; - stabilirea formatului instruciunii; - codificarea instruciunii; - modificarea fazei de citire interpretare n scopul recunoaterii instruciunii; - descrierea fazei de execuie a instruciunii. n vederea prezentrii mecanismului de completare a setului instruciuni vom introduce instruciuni ce realizeaz operaiile: - rotire stnga/dreapta cu sau fr transport; - repetare a unei seciuni de program; - interschimbarea coninutului a doi operanzi.
5-34

Alegerea funciei i a mnemonicei Pentru realizarea operaiilor propuse alegem : Mnemonic Funcie ROL -rotire stnga de un numr de ori ROR -rotire dreapta de un numr de ori RCL -rotire stnga prin indicatorul de transport de un numr de ori RCR -rotire dreapta prin indicatorul de transport de un numr de ori LOOP,LOOPZ -repetarea unei seciuni de program de un numr de ori XCHG -interschimbarea coninutului a doi operanzi 5.10.1 Introducerea instruciunilor RCL, RCR, ROL, ROR 5.10.1.1 Formatul i funciile instruciunilor RCL, RCR, ROL, ROR Formatul instruciunilor RCL, RCR, ROL, ROR este : COP c MOD --- RM Instruciunea ROL realizeaz funcia : dac c=0 atunci CONTOR = 1 altfel CONTOR = (RC) att timp ct CONTOR 0 execut

T,OPERAND0:15 OPERAND0:15,OPERAND0 CONTOR = CONTOR - 1

Instruciunea ROR realizeaz funcia : dac c=0 atunci CONTOR = 1 altfel CONTOR = (RC) att timp ct CONTOR 0 execut T,OPERAND0:15 OPERAND15,OPERAND15,OPERAND0:14 CONTOR = CONTOR - 1 Instruciunea RCL realizeaz funcia : dac c=0 atunci CONTOR = 1 altfel CONTOR = (RC) att timp ct CONTOR 0 execut T,OPERAND0:15 OPERAND0:15,T CONTOR = CONTOR - 1 Instruciunea RCR realizeaz funcia : dac c=0 atunci CONTOR = 1 altfel CONTOR = (RC) att timp ct CONTOR 0 execut T,OPERAND0:15 OPERAND15,T,OPERAND0:14 CONTOR = CONTOR - 1 5.10.1.2 Codificarea instruciunilor RCL, RCR, ROL, ROR Analiznd codificarea instruciunilor main ale calculatorului didactic se observ c aceste instruciuni fac parte din clasa de instruciuni cu un singur operand. Codul 0001111 din aceast categorie de instruciuni nu este utilizat. Vom folosi acest cod pentru codificarea acestui grup de instruciuni iar biii RI10:12 =REG, de asemenea neutilizai, i vom folosi pentru codificarea individual . Rezult codurile: 0001111 c MOD 000 RM - ROL
5-35

0001111 c MOD 001 RM 0001111 c MOD 010 RM 0001111 c MOD 011 RM

- ROR - RCL - RCR

5.10.1.3 Modificarea fazei de citire interpretare n scopul recunoaterii acestor instruciuni Pentru a lua n considerare grupul de instruciuni ROL, ROR, RCL, RCR se introduce dup pasul AHPL 54. care a citit operandul n registrul temporar T1, un pas AHPL care separ aceste instruciuni i face legtura cu secvena de execuie a acestora. 54.1 DCD7(RI4:6) / (90) Se consider c execuia acestor instruciuni ncepe la pasul AHPL 90. 5.10.1.4 Descrierea fazei de execuie
90.T 2 (BUSFN(RG; DCD(ADRRC))!16T1) * (RI 7 , RI 7 )

91. T,T1 ((T10,T11:15,T10)!(T115,T115,T10:14)!(T10,T11:15,T)! (T115,T,T10:14))*DCD0:3(RI11:12) 92. T2 ADD(0FFFFH;T2;0); (( / T 2), ( / T 2)) /(91,56) 5.10.2 Introducerea instruciunilor LOOP, LOOPZ Instruciunile LOOP i LOOPZ sunt utilizate pentru a realiza repetarea unei seciuni de program de un numr prestabilit de ori, altfel spus realizarea ciclurilor n program. 5.10.2.1 Formatul i funciile instruciunilor LOOP i LOOPZ. Instruciunile LOOP i LOOPZ realizeaz un salt relativ la CP stabilit de valoarea deplasamentului din cadrul instruciunii. Aceste instruciuni se pot introduce n grupul instruciunilor de salt condiionat. Fac parte din categoria instruciunilor fr calcul de adres efectiv. Formatul general este : COP Deplasament Instruciunea LOOP realizeaz funcia: RC RC - 1 dac RC 0 atunci CP CP + Deplasament altfel CP CP + 1 registrul RC este decrementat i se relizeaz saltul relativ la CP cu o valoare specificat de Deplasament dac coninutul registrului RC este diferit de zero, iar n caz contrar se continu cu instruciunea urmtoare. Deplasamentul trebuie s aib o valoare ntre -128 i 127 i reprezint o adres relativ fa de adresa instruciunii curente LOOP. Instruciunea LOOPZ realizeaz funcia: RC RC - 1
5-36

atunci CP CP + Deplasament altfel CP CP + 1 registrul RC se decrementeaz i se realizeaz saltul relativ la CP cu o valoare specificat de Deplasament dac coninutul registrului RC este diferit de zero i indicatorul Z este unu, iar n caz contrar ( RC = 0 sau Z = 0 ) se continu cu intruciunea urmtoare. Deplasamentul trebuie s fie aib o valoare ntre -128 i 127 i reprezint o adres relativ fa de adresa instruciunii curente LOOPZ. 5.10.2.2 Codificarea instruciunilor LOOP i LOOPZ Deoarece aceste instruciuni fac parte din grupul instruciunilor de salt condiionat vom stabili o codificare adiacent cu a acestora. Propunem codificarea: 1 0 1 1 0 x x x Deplasament 1 0 1 1 1 x x x Deplasament pentru instruciunea LOOP pentru instruciunea LOOPZ

dac (RC 0) (Z = 1)

5.10.2.3 Modificarea fazei de citire interpretare n scopul recunoaterii acestor instruciuni Pentru a lua n considerare i acest grup de instruciuni, pasul AHPL 85, care realiza execuia instruciunilor de salt condiionat, se modific astfel: 85. (RI 2 , RI 2 conditie )/(93,32) S-a inut seama c cele dou grupuri de instruciuni difer numai prin bitul RI2 din codul de operaie. La pasul 32 se merge n cazul instruciunilor de salt condiionat cnd condiia nu este ndeplinit. Pasul 86 constituie continuarea execuiei instruciunilor de salt condiionat cnd condiia este ndeplinit, iar pasul 93 reprezint nceputul secvenei de execuie a instruciunilor LOOP i LOOPZ. 5.10.2.4 Descrierea fazei de execuie 93. T2 BUSFN(RG;DCD(ADRRC)) 94. RG * DCD(ADRRC) ADD(0FFFFH;T2;0); T2 ADD(0FFFFH;T2;0)
95. (( /T2) RI 4 Z )/(32) 96. T1 CP

97. T2 RI8:15 98. CP ADD (T1;T2;0) (2) 5.10.3 Introducerea instruciunii XCHG Instruciunea XCHG are rolul de a interschimba doi operanzi ce se gsesc, fie ambii n registrele generale, fie unul ntr-un registru general i cel de al doilea n memorie. 5.10.3.1 Formatul i funcia instruciunii XCHG. Instruciunea XCHG face parte din grupul instruciunilor cu dou adrese. Formatul general al instruciunii este:

5-37

0 b) COP

6 7 8 9 10 d MOD

12 13 RM

15

0 deplasament

15

REG

Funcia ndeplinit de instruciunea XCHG este: dac MOD = 11 atunci RGDCD(REG) <--> altfel RGDCD(REG) <-->

RGDCD(RM) MDCD(AM)

5.10.3.2 Codificarea instruciunii XCHG Fcnd parte din grupul instruciunilor cu dou adrese vom stabili o codificare n clasa ADD, ADC, etc Codificarea propus este: 0 1 0 1 1 1 1 x MOD REG RM 5.10.3.3 Modificarea fazei de citire interpretare n scopul recunoaterii acestei instruciuni Pentru a lua n considerare aceast intruciune vom introduce naintea nceputului execuiei grupului de instruciuni ADD, ADC, SUB, SBB, etc, adic naintea pasului AHPL 58, un pas 57.1 care separ aceast instruciune de grupul respectiv. 57.1 (DCD7(RI4:6))/(99) S-a considerat ca la pasul AHPL 99 va ncepe execuia instruciunii XCHG. 5.9.3.4 Descrierea fazei de execuie 99.T1 (BUSFN(M; DCD(AM))!BUSFN(RG; DCD(RM))) * (RI 8 RI 9 , RI 8 RI 9 ) 100.T2 BUSFN(RG;DCD(REG)) 101.RG * DCD(REG) T1 102.((M * DCD(AM))!(RG * DCD(RM))) * (RI 8 RI 9 , RI 8 RI 9 ) T2 (32) S-a citit primul operand n T1, al doilea operand n T2, dup care depunerea s-a fcut n ordine invers. n final se merge la pasul AHPL 32 unde se pregtete adresa pentru instruciunea urmtoare. n acest mod se pot introduce orice instruciune care este absolut necesar n setul de instruciuni main.

5-38

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