You are on page 1of 26

Curs 10 Arhitectura CaIcuIatoareIor

1

NIVELUL LIMBA1ULUI COD MA$IN


1. Codificarea instruc(iunilor

1.1. Generalit(i

Dup cum s-a artat, arhitectura deIineste o Irontier ntre dou nivele ale
sistemului de calcul. Exist mai multe tipuri de arhitecturi pentru c exist mai multe
nivele ale sistemului de calcul si implicit mai multe Irontiere. Printre acestea
arhitectura calculatorului joac un rol special pentru c este plasat ntre hardware si
soItware.
Arhitectura calculatorului este deIinit ca Irontiera ntre ansamblul hardware-
Iirmware si limbajul cod masin. Deci arhitectura calculatorului este o viziune pe
care o are programatorul la nivelul limbajului cod masin. ConIorm acestei deIinitii
nu prezint important structura intern a calculatorului, aspectele de organizare si
proiectare logic.

DeIinirea arhitecturii este echivalent cu urmtoarele elemente:
1) Tipurile de date. Adic, reuniunea datelor care se pot prelucra la nivelul
cod masin. Unele date se pot reprezenta n memoria principal n
exclusivitate cum ar Ii: vectorii, matricile etc. Altele, pot Ii reprezentate att
n memorie sau stiv ct si n CPU, adic n registrele generale sau speciale.
Stabilirea tipului de date implic unele caracteristici si pentru ALU (date
FXP, FLP, alIanumerice, zecimale, etc). Legat de date trebuie s existe un
mecanism special de acces la ele (la memorie, la stiv, la registru, etc).
Numai prin disponibilitatea datelor acestea pot ajunge s Iie prelucrate de
CPU. Prelucrarea n cele din urm se va materializa astIel:
a) Se deIineste un set de operatii (operatori) pentru Iiecare tip de date
(adunare n FXP, adunare n FLP, adunare binar zecimal, adunare n
simpl precizie, adunare n dubl precizie, etc);
b) Un anumit tip de date complex se poate reprezenta printr-un alt tip de date
considerat Iundamental (primitiv) la un anumit CPU pentru care sunt
deIinite deja operatiile (operatorii) de procesare. De exemplu, adunare
vectorial.
2) Modul de referire la date (modul de adresare sau acces al datelor). Exist
diIerite metode de adresare, instrumentul de baz Iiind adresa. Modul de
reIerire depinde n primul rnd de tipul de memorie si de tipul datei (scalar,
vector, tablou). Uneori locatia unei date este cunoscut anticipat, aceasta
Iiind un registru particular din CPU sau stiva. n cazul instructiunilor, care
sunt un tip de dat, adresa este deIinit de PC. n aceste ultime cazuri este
adresare implicit. Instructiunile sunt depuse n memorie si se prelucreaz n
Iaza Ietch. Adresarea se Iace prin PC care pointeaz spre instructiunea
Curs 10 Arhitectura CaIcuIatoareIor
2
imediat urmtoare de executat. n cazul datelor de tip vector se utilizeaz un
numrtor de date numit Data Counter (DC).
3) Repertoriul de instruc(iuni. Adic, reuniunea operatiilor ce se pot eIectua
asupra Iiecrui tip de dat. Acest repertoriu este deIinit de proiectantul
arhitecturii trebuie s includ pe lng toate instructiunile de prelucrare si
instructiuni speciale, numite si instructiuni de sistem. Acestea sunt
instructiuni auxiliare care aIecteaz starea procesorului si sunt necesare
pentru executia programului. Structura instructiunii variaz de la un
calculator la altul. La deIinirea repertoriului de instructiuni se tine seama de:
a) Setul de operatori de procesare necesari;
b) Regula de asociere ntre operatie si tipul de date;
c) Necesitatea de a mentine o rezerv ca pe lng setul initial s se poat
deIini ulterior noi instructiuni;
d) DeIinirea unor instructiuni de testare care nu sunt Icute publice pentru
utilizatori.
4) Organizarea registrelor din CPU. La proiectarea CPU se deIineste
memoria local, Iormat dintr-un grup de registre care memoreaz starea
procesorului central, date intermediare etc. n cazul executiei unui program n
aceste registre se retine inIormatia ce trebuie transIerat de la o instructiune
la urmtoarea. De asemenea n CPU se mai gsesc si registre dedicate, care
au un rol precis, cum ar Ii acumulatorul, PC-ul, stack pointerul (SP), etc.
Fiecare CPU si are propria structur de registre. Procesul de executie al unui
program care implic executarea unei secvente de instructiuni cod masin
nseamn o secvent de stri, deoarece reuniunea continuturilor registrelor
din CPU reprezint starea procesorului. Deci, n urma prelucrrii la
momentul t cel putin un registru si modiIic starea si deci CPU intr ntr-o
nou stare.
5) Organizarea memoriei principale. S-a artat c memoria oricrui calculator
are o structur ierarhizat. S-a subliniat rolul memoriei principale n care se
aIl programul si datele aIerente. Organizarea depinde de: tehnologie,
disponibilitatea de module, lrgimea magistralei CPU-memorie, timpul de
acces etc.
6) Structura magistralelor. Se reIer la structura ansamblului de ci de
comunicatie. Arhitectul sau proiectantul sistemului trebuie s aib cunostiinte
despre protocoalele magistralelor si despre modul de interIatare ntre
diIeritele magistrale. Dup cum s-a aIirmat si ansamblul magistralelor este
structurat ierarhic.
7) Organizarea sistemului de I/O. Este cel mai variat sistem datorit
multitudinii de echipamente periIerice si datorit variettii organizrii I/O
(Iie direct prin porturi I/O, Iie prin procesoare I/O). Pentru realizarea
operatiilor de I/O trebuie deIinite instructiuni speciale de I/O.




Curs 10 Arhitectura CaIcuIatoareIor
3
1.2. Instruc(iuni la nivel cod mayin

Definijie: Instruc(iunea la nivel cod mayin reprezint o comand elementar
de natur binar ce asigur transIormarea vectorului de stare al procesorului ntr-un
nou vector de stare.

Definijie: Instruc(iunea la nivel cod mayin reprezint o reuniune de ciIre
binare, ce desemneaz operatii si operanzi, si care deIineste o comand elementar
asupra blocurilor Iunctionale ale calculatorului si care totodat reprezint un pas al
procesului de implementare al algoritmului aIerent problemei de rezolvat.

Observajie: A se Iace distinctie clar ntre conceptul de instructiune si enunt
(statement). Primul se reIer la masina Iizic sau limbaje de asamblare, iar al doilea
apare la limbajele de nivel nalt.
ConIorm principiului comenzii dup program, programul reprezint o secvent
de instructiuni care dup diIerite etape de translatare se introduce n memoria
calculatorului n Iorm binar. Alturi de acestea se introduc si datele de prelucrat.
De obicei, programul se depune n zona de program, iar datele n zona de date. Se
stie c nu se poate distinge o dat de o instructiune pentru c Iiecare reprezint o
reuniune de biti. De aceea utilizatorul trebuie s cunoasc amplasamentul datelor si
instructiunilor n memorie.
Orice instructiune la nivelul cod masin are dou componente Iundamentale:
a) cmpul func(iei sau OPCODE-ul. Este o combinatie binar care reprezint
n mod codiIicat o Iunctie elementar realizat de calculator;
b) cmpul de adres n care se speciIic adresa operandului (operanzilor),
adresa unde se depune rezultatul, adresa instructiunii urmtoare etc. Deci,
acest cmp este Iormat din mai multe subcmpuri.
La nivelul cod masin instructiunile se mpart n:
1) Instruc(iuni generale se gsesc la toate procesoarele:
a) instructiuni de transIer (ntre registre, registre-memorie, memorie-stiv
etc.);
b) instructiuni ce deIinesc operatii monadice (deplasare, rotire etc.);
c) instructiuni ce deIinesc operatii diadice (adunare, scdere, nmultire etc.);
d) instructiuni de salturi sau ramiIicare. Acestea pot Ii conditionate sau
neconditionate. Cele conditionate depind de indicatorii de stare si de
obicei sunt nsotite de Iunctii de comparare ntre scalari sau vectori;
e) instructiuni de apel de proceduri. Procedura este un grup de instructiuni
destinat a eIectua un task (sarcin de lucru) si care poate Ii apelat din orice
punct al programului numit program principal sau apelant. Uneori se mai
numeste si subrutin. Apelul de proceduri reuneste mecanisme soItware si
hardware speciIice diIeritelor CPU-uri (de obicei se Ioloseste stiva pentru
memorarea adresei de revenire);
I) instructiuni pentru controlul ciclurilor;
g) instructiuni de intrare-iesire. Acestea sunt dependente de arhitectura de
intrare-iesire si de complexitatea protocoalelor de intrare-iesire etc. Exist
Curs 10 Arhitectura CaIcuIatoareIor
4
o mare varietate de instructiuni intrare-iesire Iiind caracteristice diverselor
Iamilii de calculatoare.
2) Instruc(iuni speciale sau specifice se regsesc doar la anumite procesoare.

2. Formate de instruc(iuni la nivel cod mayin

Formatele de instructiuni cod masin se reIer la numrul de subcmpuri ce
exist n cmpul de adres. Deci, Iormatele se reIer la numrul de adrese existente
n instructiune. n cmpul de adres se poate gsi Iie adresa explicit care reprezint
adresa eIectiv, Iie o Iorm implicit de adres numit adres logic. Prin tehnici de
calcul speciIice se determin adresa eIectiv pornind de la adresa logic. Se vor
prezenta din punct de vedere al Iormatelor, evolutia tipurilor de instructiuni cod
masin, dup divizarea cmpului adres n subcmpuri de adres.

2.1. Instruc(iuni cu 4 adrese

OPCODE ADR1 ADR2 ADR3 ADR4
unde:
ADR1 adresa primului operand;
ADR2 adresa celui de-al doilea operand;
ADR3 adresa unde se depune rezultatul;
ADR4 adresa de unde se extrage urmtoarea instructiune.

Functii realizate:


) 4 ( Re
) 2 ( ) 1 ( 3
ADR ad
ADR ADR ADR


Acesta este modul cel mai general de speciIicare al unei instructiuni cod masin.
Desi este ideal, totusi nu este Iolosit datorit lungimii mari. Instructiunile trebuie s
Iie scurte pentru c acestea se memoreaz n memoria principal si trebuie s ocupe
un volum rezonabil.
O prim Iorm de perIectionare a constat n renuntarea la cmpul ADR4 prin
introducerea PC-ului si respectarea principiului de organizare liniar a programului.
Dup Iiecare citire a instructiunii are loc incrementarea PC-ului. PC-ul este un pointer
ctre instructiunea urmtoare de executat.

2.2. Instruc(iuni cu 3 adrese

OPCODE ADR1 ADR2 ADR3
unde:
ADR1 adresa primului operand;
ADR2 adresa celui de-al doilea operand;
ADR3 adresa unde se depune rezultatul;

Curs 10 Arhitectura CaIcuIatoareIor
5
Functii realizate:

+

1
) 2 ( ) 1 ( 3
PC PC
ADR ADR ADR


Observajie: n cazul instructiunilor de salt n locul actiunii PC PC 1 are loc
ncrcarea paralel a PC-ului cu adresa de salt. Are loc o nclcare a principiului
liniarittii, deci apare un punct de discontinuitate. La pornirea calculatorului, Iie
manual, Iie automat, trebuie s se speciIice adresa de nceput a programului care se
ncarc n PC.

2.3. Instruc(iuni cu 2 adrese

OPCODE ADR1 ADR2
unde:
ADR1 adresa primului operand;
ADR2 adresa celui de-al doilea operand;

Functii realizate:

+

1
) 2 ( ) 1 (
PC PC
ADR ADR ACC


Formatul cu dou adrese este Ioarte rspndit pentru c asigur un echilibru bun
ntre lungimea instructiunii si eIicienta adresrii. De multe ori pe lng ADR1 si
ADR2 apare nc un subcmp (cmp de modiIicatori) ce speciIic tehnica de
adresare.

2.4. Instruc(iuni cu 1 adres

Se poate renunta la ADR2 din Iormatul precedent dac se presupune c unul
dintre operanzi este apriori n CPU ntr-un registru special, si anume n acumulator
(ACC).
OPCODE ADR

unde:
ADR adresa operandului;

Functii realizate:

+

1
) ( ) (
PC PC
ADR ACC ACC


Si acest Iormat este Ioarte rspndit datorit lungimii mici. De obicei pe lng
cmpul ADR apare cmpul suplimentar de modiIicatori care precizeaz modul de
Curs 10 Arhitectura CaIcuIatoareIor
6
calcul al adresei pornind de la adresa logic. Deci cmpul M deIineste tehnica de
adresare.

OPCODE M ADR

Functii realizate:

+
=
=
1
) ( ) ( ; 1
) ( ) ( ; 0
PC PC
ADR ACC ADR M
ADR ACC ACC M


2.5. Instruc(iuni fr nici o adres

OPCODE

Este Iormatul cel mai scurt de instructiune si apare la calculatoarele de tip stiv
(Stack computers). La aceste calculatoare datele sunt disponibile conIorm unor
mecanisme strict impuse de lucru cu stiva. Suplimentar astIel de instructiuni pot
exista si la alte tipuri de calculatoare n cazul unor operatii particulare asupra
acumulatorului sau a altor registre speciale deIinite prin OPCODE, cnd un astIel de
registru este subnteles prin combinatia speciIic a OPCODE-ului.

Exemple:
- Deplasarea continutului acumulatorului la stnga sau la dreapta (SHL sau
SHR);
- Rotirea continutului acumulatorului la stnga sau la dreapta (ROL sau ROR);
- Incrementarea sau decrementarea acumulatorului (INC sau DEC);
- Complementarea continutului acumulatorului (NOT sau NEG).

3. Criterii de proiectare a formatelor de instruc(iuni

O etap important n proiectarea unui calculator este alegerea unui Iormat
concret de instructiuni pentru c acest Iormat inIluenteaz arhitectura calculatorului
precum si metodologia de programare la nivel Iizic.
Dup cum se stie instructiunea cod masin reprezint o comand elementar
pentru blocurile Iunctionale din calculator. Programul reprezint o reuniune de
instructiuni cod masin dispuse n memoria principal n zona de program. n vederea
executiei programului, instructiunile trebuie citite din memoria principal si aduse pe
rnd n registrul de instructiuni.
S-a mentionat c prin UIA se ntelege un grup de biti care se citeste sau se scrie
n memorie. De obicei UIA este un octet, dar nu ntotdeauna. Cuvntul calculator este
o reuniune de UIA. Uneori este egal cu UIA.
Pentru proiectarea Iormatelor de instructiuni se Iolosesc patru criterii:
1. Lungimea instruc(iunii cod mayin trebuie s fie multiplu sau divizor de
UIA. Acest criteriu implic o asezare compact a instructiunilor pe cuvntul
calculator astIel asigurndu-se o Iolosire optim a memoriei calculatorului.
Curs 10 Arhitectura CaIcuIatoareIor
7
Chiar dac instructiunile au Iormat variabil ele trebuie s corespund conditiei
enuntate. Cauza este aceea c programul se depune n memorie care este o resurs
scump si deci trebuie Iolosit eIicient.
Formatele deIinite presupun moduri particulare de Ietch instruction:
a. printr-un Ietch se aduce o insructiune
b. printr-un Ietch se aduc dou sau mai multe instructiuni
c. este nevoie de mai multe Iaze Ietch pentru o instructiune
Aceste conditii trebuie cunoscute de UC.

NSTR1
NSTR2
NSTR3
..................
UA
NSTR1 NSTR2
NSTR3 NSTR3
............... ...............
UA
..................
UA
NSTR1
NSTR2
NSTR2 NSTR3
NSTR4
............... ...............
UA
NSTR1
NSTR5
NSTR6


2. Lungimea unei instruc(iuni trebuie s fie ct mai mic. n primul rnd o
instructiune scurt consum putin memorie. n al doilea rnd o instructiune scris n
mai multe UIA-uri mai ales dac este lung pentru a putea Ii executat trebuie s se
Iac mai multe citiri ale memoriei, care sunt consumatoare de timp.
3. Lungimea cmpului de OPCODE depinde de numrul de Iunctii executate
de masina Iizic. Dac N este numrul de Iunctii distincte atunci OPCODE-ul trebuie
s aib
(
N m
2
log = ranguri binare. La proiectarea unui procesor se recomand ca o
parte din combinatiile binare s rmn neutilizate, dar care ntr-o etap ulterioar s
permit extinderea setului de instructiuni. O parte din combinatiile neIolosite de ctre
utilizator sunt destinate operatiilor de testare n procesul de productie. Problema
asignrii Iunctiilor inIluenteaz procesul de decodiIicare (interpretare) a
instructiunilor de ctre UC. Arhitectul sistemului de calcul trebuie s impun anumite
reguli pentru a simpliIica decodiIicarea. Exist dou moduri de codiIicare:
i) OPCODE-uri rezervate. Pentru Iiecare Iunctie se asigneaz o combinatie
Iix de biti ce Iormeaz OPCODE-ul. Aceasta metod se recomand pentru
repertorii mici.
ii) DeIinirea unor clase de OPCODE-uri. Cmpul de OPCODE este compus
din 2 subcmpuri:
(1) Subcmpul de clas, care identiIic tipul sau clasa instructiunii cod
masin
(2) Subcmpul de opera(ie, care identiIic o Iunctie particular pentru acea
clas. Se recomand repertoriilor mari sau pentru Iormate de lungime
variabil.
Curs 10 Arhitectura CaIcuIatoareIor
8
Folosirea subcmpului de clas permite distingerea diIeritelor clase de
instructiuni din repertoriul de instructiuni cod masin.

Exemplu: La calculatorul IBM 370, subcmpul de clas continea 2 biti care
deIinea lungimea instructinii ce putea Ii pe 2, 4, sau 6 octeti

4. Lungimea cmpului de adres. ReIeritor la lungimea cmpului de adres
exist divergenta:
a) Se cere un acces ct mai raIinat la memorie, dac se poate chiar la nivel de
bit. Aceasta presupune o adres lung, deci o instructiune lung.
b) ConIorm criteriului 2 instructiunea trebuie s Iie ct mai scurt.

n Iunctie de necesitti proiectantii de calculatoare au utilizat diIerite criterii
pentru adresarea memorie care s asigure un echilibru bun ntre cele dou tendinte.
n cele mai multe cazuri adresarea se Iace la nivel de octet. Exist cazuri de adresare
la nivel de bit (BI 700) sau la nivel de cuvnt (CYBER 170).

Exemplu: Se consider o memorie organizat pe octeti ce contine 2
n
locatii. n
cazul adresrii la nivel de octet lungimea cmpului de adres are n ranguri. Dac se
doreste adresarea la nivel de cuvnt (42
2
octeti) sunt necesare n-2 ranguri, iar pentru
adresarea la nivel de bit sunt necesare n3 ranguri.
Pentru un exemplu concret, avnd un microcalculator pe 8 biti, unde magistrala
de adres este pe 16 biti. Deci spatiul de adres este de 2
16
. Pentru acest
microcalculator UIA1 byte.
Dac se doreste adresarea la nivel de bit atunci trebuie lrgit magistrala de
adres. Numrul de biti este
19 3 16 16
2 2 2 8 2 = = . Deci, magistrala de adrese trebuie s
Iie pe 19 biti. Dac se doreste adresarea la nivel de cuvnt, adic un grup de 4 bytes,
deci numrul total de cuvinte este
14 2 16 16
2 2 : 2 4 : 2 = = . Deci magistrala de adrese se
reduce la 14 biti.
n sistemele moderne adresa este pe 24 sau 32 biti. n Ielul acesta lungimea
instructiunilor ar creste datorit cresterii cmpului de adres. Din acest motiv deseori
n cmpul de adres nu se Ioloseste adresa eIectiv ci adresa logic. Adresa eIectiv
se obtine prin eIectuarea unor operatii aritmetice simple asupra adresei logice
(tehnicile de adresare).

4. Formate de instruc(iuni cu lungime fix yi variabil

O problem important a arhitecturii unui calculator este stabilirea tipului de
organizare a instructiunilor din punct de vedere al lungimii. Exist diIerite Iormate n
Iunctie de numrul de adrese. Se adopt dou abordri:
1) Instruc(iuni cu lungime fix. La instructiunile cu lungime Iix Iiecare
instructiune are lungimea unui cuvnt instructiune. Acest cuvnt trebuie s
Iie suIicient de lung pentru a cuprinde toate Iormatele existente n repertoriul
de instructiuni. Aceast abordare satisIace n primul rnd instructiunile care
au aceeasi lungime, dar pentru cele cu lungime mai mic rmn cmpuri
Curs 10 Arhitectura CaIcuIatoareIor
9
neIolosite. Deci va exista o utilizare nerational a memoriei. n schimb UC
este mai simpl.
2) Instruc(iuni cu lungime variabil. La instructiunile cu lungime variabil,
Ioarte rspndite n prezent, exist o interdependent ntre lungimea unei
UIA si lungimea cuvntului instructiune Iiind posibil adoptarea unui numr
Ioarte mare de Iormate Ir nici o pierdere de memorie (Ir a avea biti
neIolositi). La astIel de instructiuni prima parte a instructiunii trebuie s
reprezinte OPCODE-ul. Acesta prin decodiIicarea sa stabileste lungimea
instructiunii. Deci, codiIicarea OPCODE-ului trebuie Icut astIel nct s
ncorporeze si lungimea instructiunii.

Solutia a doua este recomandat n cazul microcalculatoarelor cu UIA mic (pe 8
sau 16 biti).
Putem avea instructiuni pe un cuvnt care contine OPCODE.

OPCODE


Pot Ii instructiuni pe 2 cuvinte. Primul este OPCODE, al doilea este Iie adres,
Iie data imediat.

OPCODE
ADRESA /
DATA


Atunci cnd data nu este dat n instructiune prin adresa sa, ci apare eIectiv n
instructiune, se numeste dat imediat. Avantajul ar Ii c nu mai necesit un ciclu
suplimetar de citire a memoriei n cadrul actiunii de Ietch data.
Instructiunile pe 3 cuvinte au primul cuvnt OPCODE, iar urmtoarele 2
deIinesc adresa Iormat din dou segmente: adresa inIerioar si adresa superioar.
Dup citire se construieste adresa ADR ADRsup.ADRinI. De asemenea n locul
adresei se poate deIini data imediat pe dou cuvinte.

OPCODE
ADR_inf /
DATA_inf
ADR_sup /
DATA_sup


La sistemele pe 8 biti avem instructiuni pe 1 octet, pe 2 octeti sau pe 3 octeti.

Exemple:
Instructiuni ale microprocesorului I8080
- instructiuni pe 1 octet: ADD R adun acumulatorul cu un registru din ALU
dat printr-un subcmp n Iormatul instructiunii.
- instructiuni pe 2 octeti: MVI M transIer data imediat din instructiune n
memorie la o adres desemnat implicit.
Curs 10 Arhitectura CaIcuIatoareIor
10
- instructiuni pe 3 octeti: LDA adresa incarc acumulatorul cu data extras
din memorie de la adresa speciIicat imediat n memorie n urmtorii 2 octeti
de dup OPCODE.

5. Mrirea zonei de OPCODE

Un criteriul n proiectarea instructiunilor a Iost acela al utilizrii corecte a
numrului de biti din cmpul de OPCODE. Dac OPCODE-ul are n ranguri, iar
cmpul de adres are m ranguri, atunci se pot deIini 2
n
Iunctii, iar numrul adreselor
va Ii 2
m
.

n m

OPCODE ADR
2
n
Iunctii 2
m
adrese


Dac se deplaseaz Irontiera dintre cele dou cmpuri spre dreapta cu un rang
rezult un Iormat cu n1 ranguri la OPCODE si m-1 ranguri la cmpul de adres. Cu
acest nou Iormat se pot deIini 2
n1
Iunctii, iar numrul de adrese va Ii 2
m-1
.
n1 m-1

OPCODE ADR
2
n1
Iunctii 2
m-1
adrese


Definijie: Mecanismele legate de mrirea numrului de Iunctii deIinite de o
instructiune se numesc mecanisme de mrire a zonei de OPCODE.

La proiectarea arhitecturii calculatorului se tine seama de necesitatea deIinirii
unei reuniuni de tipuri de instructiuni pornind de la un Iormat dat n conditiile n care
sunt posibile modiIicri ale Irontierelor dintre cele dou cmpuri Iundamentale.

Exemplu:
Se consider o instructiune cu trei adrese pe 16 biti care are 4 cmpuri.

OPCODE ADR1 ADR2 ADR3
0 3 4 7 8 11 12 15

Cu acest Iormat se pot deIini 2
4
16 Iunctii (instructiuni) cu 3 adrese:

0000 xxxx yyyy zzzz
0000 xxxx yyyy zzzz
. . . . . . . . . . . .
1110 xxxx yyyy zzzz
1111 xxxx yyyy zzzz
{
16 instructiuni
cu 3 adrese
Curs 10 Arhitectura CaIcuIatoareIor
11

Ultima combinatie pentru OPCODE poate s nu Iie Iolosit ca un OPCODE
pentru un Iormat cu 3 adrese, ci ca un indicator pentru alt Iormat de instructiuni si
anume Iormatul cu 2 adrese. Rezult c rmn 15 instruc(iuni cu 3 adrese si se pot
deIini 16 instructiuni cu 2 adrese.

1111 0000 yyyy zzzz
1111 0000 yyyy zzzz
. . . . . . . . . . . .
1111 1110 yyyy zzzz
1111 1111 yyyy zzzz

n mod asemntor ultimele 2 combinatii ale OPCODE-ului pot s nu Iie
Iolosite pentru Iormatul cu 2 adrese, ci pot deveni coduri de identiIicare pentru
Iormatul cu o adres. Se obtin astIel 14 instruc(iuni cu 2 adrese si se pot deIini 32
instructiuni cu o adres.

1111 1110 0000 zzzz
1111 1110 0000 zzzz
. . . . . . . . . . . .
1111 1110 1110 zzzz
1111 1110 1111 zzzz

1111 1111 0000 zzzz
1111 1111 0000 zzzz
. . . . . . . . . . . .
1111 1111 1110 zzzz
1111 1111 1111 zzzz

n mod asemntor ultima combinatie a OPCODE-ului poate s nu Iie Iolosite
pentru Iormatul cu 1 adrese, ci poate deveni cod de identiIicare pentru Iormatul Ir
nici o adres. Se obtin astIel 31 instruc(iuni cu 1 adres si se pot deIini 16
instruc(iuni fr nici o adres.

1111 1111 1111 0000
1111 1111 1111 0000
. . . . . . . . . . . .
1111 1111 1111 1110
1111 1111 1111 1111

Deci, pornind de la Iormatul initial care asigura doar 16 instructiuni cu 3 adrese,
Iolosind mecanismele de mrire a zonei de OPCODE s-au putut obtine
1514311676 instructiuni n diIerite Iormate. La unele Iamilii de calculatoare se
Ioloseste si alt principiu. De exemplu, se delimiteaz un subcmp din OPCODE care
identiIic cmpul adresei.

{
16 instructiuni
cu 2 adrese
{
32 instructiuni
cu 1 adres
{
16 instructiuni cu
nici o adres
adrese
Curs 10 Arhitectura CaIcuIatoareIor
12
Observajie: Acesta este doar un exemplu. Se pot alege si alte reguli de
extindere, schimbndu-se numrul total de Iunctii.

6. No(iunea de metabit

ConIorm principiului comenzii dup program, programul codiIicat binar se
introduce n memoria operativ alturi de datele de prelucrat. n principiu nu se pot
distinge cuvintele instructiune de cuvintele dat. ntruct pot s existe situatii de
Iolosire eronat se poate adopta urmtoarea solutie (propus de arhitectii de sisteme
de calcul) de diIerentiere: se adaug un bit suplimentar Iiecrui cuvnt nscris n
memorie. Acest bit se noteaz cu M si se numeste metabit. Acesta diIerentiaz
cuvintele instructiune de cuvintele dat astIel: M 0 cuvnt instructiune si M 1
cuvnt dat.
La citirea unui cuvnt din memorie se extrage automat si metabitul. UC-ul Iace
o comparatie ntre metabitul citit si cel sortat si n caz de divergent semnaleaz
eroare si opreste executia. Testarea metabitului pentru valoarea 0 se Iace n Iaza de
Ietch instructiune, iar la Iaza Ietch data se testeaz megabitul pentru 1.
Metoda metabitului se poate extinde si pentru alte scopuri. AstIel se pot
identiIica diverse tipuri de date (ntregi, Iractionare, binar-zecimale, siruri de
caractere etc.) prin anumite combinatii particulare ce se asociaz datei la nscrierea n
memorie. Conceptul de metabit se poate extinde si pentru validarea tipului de dat
(devine TAG).

7. Formate de instruc(iuni ortogonale yi arhitecturi etichetate

Se stie c orice instructiune contine dou cmpuri: cmpul de operatie numit
OPCODE si cmpul de adres. Anumite cmpuri din instructiune numite modiIicatori
servesc pentru a speciIica o serie de elemente auxiliare ca de exemplu tipul de
adresare. Aceste cmpuri joac un rol Iundamental n tehnicile de adresare. Exist si
alternativa ca anumite tipuri de instructiuni s Iie asociate cu anumite tipuri de
adresare. Deci, vor exista attea OPCODE-uri pentru Iiecare operatie cte tipuri de
adresare exist pentru acea operatie, deci tipul de adresare este intrinsec n OPCODE.

Definijie: Acele Iormate de instructiuni n care se prevd cmpuri separate
pentru OPCODE si tehnica de adresare se numesc ortogonale.

Aceast metod de identiIicare a tehnicilor de adresare corespunde clasei de
instructiuni ortogonale care deIinesc arhitecturile ortogonale.
O alt problem important o reprezint separarea OPCODE-ului de tipul de
dat. n aceast privint exist o mare diIerent ntre arhitectura calculatorului si
limbajele de nivel nalt. n arhitectura calculatorului pentru Iiecare operatie posibil
exist attea OPCODE-uri cte tipuri de date exist pentru acea operatie (adunare
FXP pe 8 biti, adunare FXP pe 16 biti, adunare FLP, adunare binar-zecimal). La
limbajele de nivel nalt se prevede doar un operator (), iar tipul de dat se ataseaz
Curs 10 Arhitectura CaIcuIatoareIor
13
(se eticheteaz) datei nssi. n acest Iel a aprut conceptul de arhitecturi etichetate, n
care Iiecrei date i se asociaz un cmp numit etichet (TAG) si care contine
inIormatii reIeritoare la tip, lungime etc. O variant de TAG este chiar metabitul.

Definijie: Se numeste arhitectur etichetat (Tagged architecture) acel mod de
organizare a instructiunilor n care Iiecrei date i se asociaz un cmp numit etichet
care reprezint inIormatia reIeritoare la natura datei.

Observatie: Arhitecturile etichetate prezint multe avantaje, dar marea
majoritate a arhitecturilor prezente leag natura datelor de instructiune, adic de
OPCODE.
Arhitecturile etichetate desi sunt Ilexibile s-au adoptat rar n practic.
Majoritatea arhitecturilor actuale sunt ne-etichetate, deci natura datelor este
incoporat n OPCODE. n schimb se accept si este rspnditit ortogonalitatea n
privinta tehnicilor de adresare. Se mentioneaz accentuarea ortogonalittii
arhitecturale n dauna celor etichetate.

8. Clase de instruc(iuni la nivel cod mayin

8.1. Clasa de instruc(iuni de transfer al datelor

Operatiile de transIer se mai numesc si de copiere pentru c la destinatie se
obtine o copie a datei existente la surs. Prin copie se ntelege o combinatie identic
de biti.
Fiecare Iamilie de calculatoare contine un numr de instructiuni de transIer care
la rndul lor se mpart n 6 subclase:
a) ncrcarea registrelor din memorie;
b) transIerul din registru n memorie;
c) transIerul din registru n registru;
d) transIerul din memorie n memorie;
e) nscrierea n stiv;
I) citire (extragere) din stiv.
Aceste subclase sunt deIinite prin locurile unde datele sunt pstrate n interiorul
calculatorului: n memorie, n registre (din CPU), stiv.
Prin Iaptul c n transIer are loc un proces de copiere, denumirea corect ar Ii
instruc(iune de duplicare a datelor.




n mod general pe lng identiIicarea sursei si destinatiei ar mai trebui deIinit si
volumul. Exist propunerea de a Iolosi un Iormat special pentru aceast clas numit
GPM (General Purpose Move), care s deIineasc o instructiune generalizat. n
Iormatul acestor instructiuni GPM trebuie s existe cmpuri pentru surs, destinatie,
nr de Bytes (de entitti, cuvinte) si un indicator reIeritor la vectorul de stare. O astIel
D D
Surs Destina(ie
data path
Curs 10 Arhitectura CaIcuIatoareIor
14
de structur se numeste ortogonal pentru c Iiecare parametru este independent de
ceilalti, dar putine procesoare au adoptat structura GPM datorit lungimii acestei
instructiuni (necesit un volum mai mare de memorii).

Exemple de instrucjiuni de transfer la procesorul I88

1) Instruc(iunea LOAD (LDA)
Asigur transIerul din memorie de la adresa precizat de instructiune n ACC
(acumulator). Este o instructiune pe 3 octeti, octetii 2 si 3 precizeaz adresa de
memorie (pe 16 biti). Adresa destinatiei (ACC, la I8080 se noteaz A) nu se d, este
subnteleas. Opcode-ul instructiunii este 3A n hexa.

Forma general este: LDA Adres, adic (A) ( (octet 3) (octet 2) )

0011 1010
(Adr. Inf)
octet 2
(Adr. Sup)
octet 3

2) Instruc(iunea STORE (STA)
Salveaz n memorie continutul ACC la adresa speciIicat n instructiune. Este o
instructiune pe 3 octeti, unde octetii 2 si 3 precizeaz adresa de memorie (pe 16 biti)
unde se va depune continutul ACC.

STA Adres ( (octet3) (octet2) ) (A)

0011 0010
(Adr. Inf)
octet 2
(Adr. Sup)
octet 3

3) Instruc(iuni de transfer ntre registre
Din punct de vedere al registrelor procesorul I8080 are urmtoarea alctuire:
A PSW
B C
D E
H L
SP
PC
R
8 biti
16 biti
8 biti 8 biti

{
3 loca(ii
3A
{
3 loca(ii
32
Curs 10 Arhitectura CaIcuIatoareIor
15
A este acumulatorul (ACC) pe 8 biti.
B, C, D, E, H, L sunt 6 registre pe 8 biti organizate pe perechi BC, DE, HL
Iiecare pereche pe 16 biti.
PC, SP sunt registre pe 16 biti cu destinatie special: PC este numrtorul de
program, SP este indicator sau contor de stiv.
RI este registrul de instructiuni pe 8 biti.
PSW este cuvntul de stare al programului (Program Status Word), are doar 5
celule (biti) utile si se numeste registrul indicator de stare sau conditie (Ilags).
Cele 5 Ilaguri sunt:
C indicator de transport ce iese din ACC
Z indicator de zero
S indicator de semn
P indicator de paritate
AC transportul partial care apare ntre rangul 3 si 4 din ACC, datorit
Iolosirii tetradelor la operatii zecimale.
7 4 3 0


MOV R
1
, R
2
(R
1
) (R
2
)
TransIer continutul registrului R
2
(surs) n R
1
(destinatie). Este o instructiune
pe un singur octet, adic ocup o locatie de memorie.

01 DDD SSS
unde
DDD - adres registru destinatie
SSS - adres registru surs
Intern registrii se desemneaz n Ielul urmtor:

DDD sau SSS Registru
111 A
000 B
001 C
010 D
011 E
100 H
101 L

Combinatia 110, adic 6, reprezint memoria.

4) Instruc(iuni de transfer din memorie n registru

MOV R, M (R) ((H) (L))
TransIer data din memorie din locatia precizat de adresa Iurnizat de perechea
(HL) n registrul precizat n instructiune, adic subcmpul DDD). Instructiunea este
pe un octet, adic ocup o locatie de memorie. Formatul n limbaj cod masin este:
1 loca(ie
Curs 10 Arhitectura CaIcuIatoareIor
16

01 DDD 110
unde
DDD - adres registru destinatie
110 - identiIicator memorie
Aceast instructiune adreseaz memoria indirect prin perechea de registre (HL).

5) Instruc(iuni de transfer din registru n memorie

MOV M, R ((H) (L)) (R)
TransIer data din registrul desemnat n instructiune n memorie la locatia cu
adresa desemnat prin continutul perechii de registre (HL), deci adresare implicit.
Instructiunea este pe un octet, adic ocup o locatie de memorie. Formatul n limbaj
cod masin este:

01 110 SSS
unde
110 - identiIicator memorie
SSS - adres registru surs
Aceast instructiune adreseaz memoria indirect prin perechea de registre (HL).

6) Instruc(iuni de transfer imediat de dat n registru

MVI R, DATA (R) DATA
Realizeaz transIerul imediat de dat n registrul speciIicat, adic data imediat
ce nsoteste instructiunea se poate transIera ntr-un registru intern speciIicat n
instructiune. Este o instructiune pe 2 octeti, al doilea octet l reprezint data imediat.

00 DDD 110
DATA
unde
DDD - adres registru destinatie

7) Instruc(iuni de transfer imediat de dat n memorie

MVI M, DATA ((H)(L)) DATA
Realizeaz transerul imediat de dat ntr-o locatie de memorie, adic data
imediat ce nsoteste instructiunea se poate transIera ntr-o locatie de memorie a crei
adres este speciIicat de perechea de registre (HL). Este o instructiune pe 2 octeti, al
doilea octet l reprezint data imediat.

00 110 110
DATA


1 loca(ie
1 loca(ie
2 loca(ii
2 loca(ii
Curs 10 Arhitectura CaIcuIatoareIor
17
8.2. Clasa de instruc(iuni diadice

Se reIer la instructiunile de prelucrare de natur aritmetic si logic n care
intervin 2 operanzi.

Exemple de instrucjiuni diadice la procesorul I88

1) Adunarea ntre ACC yi un registru
Rezultatul se depune n ACC, registrul este desemnat n instructiune. Este o
instructiune pe un singur octet.

ADD R (A) (A) (R)
Un operand se aIl n acumulator, iar cellalt operand n registrul R. Formatul n
cod masin este:

10 000 SSS

unde
SSS - adres registru surs

2) Adunare cu operand din memorie
Se adun continutul ACC cu operandul existent n memorie n locatia desemnat
de perechea de registre (H L), iar suma se depune n ACC.

ADD M (A) (A) ((H)(L))

Formatul n cod masin este:

10 000 110

unde 110 desemneaz memoria. De asemenea avem o adresare indirect prin
prechea (HL).

3) Adunare cu registru yi transport
S-a artat c unul dintre indicatorii de stare e indicatorul de transport "carry"
(CY). Operatia realizat de aceast instructiune este urmtoarea: se adun continutul
ACC cu cel al registrului desemnat n instructiune prin SSS si bitul de transport ce se
aIl n PSW (CY), rezultatul se depune n ACC.

ADC R (A) (A) (R)(CY)

Formatul n cod masin este:

10 001 SSS
unde
1 loca(ie
1 loca(ie
86
1 loca(ie
Curs 10 Arhitectura CaIcuIatoareIor
18
SSS - adres registru surs

4) Adunare cu data din memorie yi transport
Locatia de memorie este speciIicat prin continutul perechii (HL). Se adun
continutul ACC cu data din memorie si cu bitul de transport CY memorat n PSW, iar
rezultatul se depune n ACC.

ADC M (A) (A) ((H)(L))(CY)

Formatul n cod masin este:

10 001 110
unde, 110 desemneaz memoria. De asemenea avem o adresare indirect prin
prechea (HL).

Observajie: Asemntor se deIinesc si operatiile de scdere.

Pe lng Iunctiile aritmetice n clasa instructiunilor diadice mai intr si Iunctiile
logice. Se stie c pe 2 variabile se deIinesc 16 Iunctii booleene, dar nu toate au
rspndire si nu prezint o mare utilitate. Numai o parte din ele sunt incluse n
repertoriul de instructiuni.

Urmtoarele 3 Iunctii (operatori) logice sunt nelipsite: AND, OR, XOR.
O operatie logic deIinit pe 2 operanzi implic realizarea acelei operatii pe
Iiecare component a operandului.

a) Instruc(iunea AND are rolul de a extrage o parte din bitii unui operand. Pentru
aceasta se Ioloseste o masc. Masca contine 1 pe rangul bitilor ce trebuie extrasi.

S presupunem c un operand este 10100101, si dorim s extragem ultimii 3
biti. Se va Iolosi masca:
10100101
00000111
-------------- AND
00000101
De aceea instructiune AND se mai numeste si instruc(iune de mascare.

b) Instruc(iunea OR asigur introducerea de noi biti ntr-un operand.

De exemplu s presupunem un operand de Iorma 00001101 si se cere insertia de
3 de 1 n primele 3 ranguri, atunci se adopt masca 1110000.
00001101
11100000
-------------- OR
11101101
1 loca(ie
Curs 10 Arhitectura CaIcuIatoareIor
19

c) Instruc(iunea XOR
10101101
10100110
-------------- XOR
00001011

Deci prin operatia OR creste numrul de 1, prin AND scade numrul de 1, iar
prin XOR n medie numrul de 1 rmne acelasi.

5) Instruc(iunea AND cu registru
Se realizeaz operatia AND ntre continutul ACC si continutul registrului R
speciIicat direct n instructiune. Dup realizarea acestei operatii indicatorul de stare
de transport n mod obligatoriu se Iixeaz pe 0.

ANA R (A) (A) (R)
(CY) 0

Formatul n cod masin este:

10100 SSS

unde
SSS - adres registru

6) Instruc(iunea AND cu memoria
Se realizeaz operatia AND ntre continutul ACC si continutul unei locatii de
memorie speciIicat implicit prin continutul perechii de registre (HL).

ANA M (A) (A) ((H)(L))
(CY) 0

Formatul n cod masin este:

10100 110

unde
110 - desemneaz memoria.

7) Instruc(iunea XOR cu registrul
Se Iace XOR ntre continutul ACC si cel al unui registru, iar rezultatul se
trimite n ACC. Obligatoriu indicatorul CY e resetat, adic adus n 0.

XRA R (A) (A) (R)
(CY) 0
1 loca(ie
1 loca(ie
A6
Curs 10 Arhitectura CaIcuIatoareIor
20

Formatul n cod masin este:

10101 SSS
unde
SSS - adres registru

8) Intruc(iunea XOR cu memoria
Se Iace XOR ntre continutul ACC si cel al unei locatii de memorie ce este
desemnat indirect prin continutul perechii de registre (HL). Obligatoriu indicatorul
de stare CY e resetat, adic adus n 0.

XRA M (A) (A) ((H)(L))
(CY) 0

Formatul n cod masin este:

10101 110
unde
110 - desemneaz memoria.

8.3. Clasa instruc(iunilor monadice

Sunt instructiuni de procesare cu un operand. Pentru c lipseste al doilea
operand instructiunile pot Ii mai scurte. Aceast categorie de instructiuni contine
- instructiuni de complementare
- instructiuni de deplasare stnga/dreapta
- instructiuni de rotire stnga/dreapta
- instructiuni de incrementare
- instructiuni de decrementare

O important deosebit o au instructiunile de deplasare.
Fie un operand pe 8 biti 10101010.
Prin deplasare la dreapta bitul cel mai din dreapta se pierde, iar prin stnga se
poate insera 0 sau 1.
Deplasarea dreapta cu insertie de 0: 01010101
Deplasarea dreapta cu insertie de 1: 11010101
Exist instructiuni de deplasare dreapta aritmetic unde prin deplasare msb-ul
se conserv (ca si cum e bit de semn).
Exemplu: operandul 10101010 prin deplasare dreapta aritmetic se obtine
11010101.

n cazul rotirii bitul care iese se reinscrie n cealalt extremitate.


1 loca(ie
1 loca(ie
AE
Curs 10 Arhitectura CaIcuIatoareIor
21
Exemplu:
10101010 prin rotire dreapta 01010101
10101010 prin rotire stnga 01010101

Proprietate: Dac operandul e pe n biti atunci o rotire dreapta cu k biti e
echivalent cu o rotire stnga cu (n-k) biti.

Observajie: De aceea nu toate repertoriile de instructiuni includ ambele rotiri, nu
este necesar.

Instructiunile de deplasare sunt Ioarte utile pentru operatile aritmetice pentru
nmultire, mprtire, ridicare la putere sau radical.
Se reaminteste c o deplasare stnga e echivalent cu o nmultire cu 2, iar o
deplasare dreapta este echivalent cu o mprtire la 2.

8.4. Clasa instruc(iunilor de compara(ie yi salt

Toate programele necesit s testeze date si s modiIice Iluxul de executie
(control).
De exemplu, realizarea rdcinii ptrate N . Mai ni se testeaz semnul lui N.
Dac N0 atunci operatia nu are loc si se lanseaz rutina EROARE. Dac N~0 atunci
operatia are loc si se lanseaz subrutina RADICAL.
Metoda uzual de a implementa o astIel de operatie este prin salt condi(ionat
care se mai numeste si ramificare condi(ionat.
La aceste instructiuni se testeaz mai nti o conditie si dac e ndeplinit are loc
saltul la o adres particular de memorie. Uneori n instructiune exist un subcmp de
1 bit care stabileste logica testului, adic se testeaz dac acea conditie e adevrat
sau dac nu este adevrat. n acest ultim caz (Ials) are loc saltul la o anumit adres
de memorie. Cea mai simpl metod de test este de a evalua un bit particular din
CPU, adic se testeaz dac acel bit este 0 sau 1. De aceea CPU-urile au mai multi
biti care se Iolosesc pentru identiIicarea unor conditii speciIice si care se numesc
indicatori de stare, indicatori de condi(ie sau fanioane. De regul ele sunt grupate
si alctuiesc un cuvnt distinct din CPU care se numeste cuvnt de stare.
Ca Ilag-uri uzuale amintim:
- indicatorul de zero - Z
- indicatorul de paritate - P
- indicatorul de transport - C
- indicatorul de depsire OV (overIlow)
- indicatorul de semn S

Testarea se poate realiza si prin compararea a dou cuvinte pentru a constata
dac sunt egale sau dac unul e mai mare ca altul.
Instructiunile de comparare, Iie a egalittii, Iie a inegalittii sunt prezente n
majoritatea repertoriilor de instructiuni. Ele permit si realizarea unor Iunctii de
sortare.
Curs 10 Arhitectura CaIcuIatoareIor
22
Dac cu ajutorul instructiunilor de comparare au loc setrile unor biti de conditie
ce memoreaz rezultatul comparrii, apoi acesti biti de conditie sunt testati si dac
acea conditie este indeplinit atunci are loc saltul la adresa speciIicat de memorie.

Observajii:
1) La compararea numerelor trebuie s se tin cont de semnul lor.
2) Exist si instructiuni de salt neconditionat care nu sunt altceva dect un caz
particular de salturi conditionate, unde conditia este ndeplinit ntotdeauna.

Exemple de instrucjiuni de salt yi comparajie la procesorul I88

1) Salt necondi(ionat
Adresa se ncarc n PC, deci este o instructiune pe 3 octeti (3 locatii), iar octetii
2 si 3 reprezint adresa de salt. Octelul 3 este partea cea mai semniIicativ, octetul 2
este partea cea mai putin semniIicativ a adresei. Deci reuniunea celor doi octeti 3 si
2 se transIer n PC
1MP Adres (PC) ((octet 3) (octet 2))

11000011
(Adr. Inf)
octet 2
(Adr. Sup)
octet 3
2) Salt necondi(ionat

1condijie Adres
Se testeaz conditia speciIicat si dac este ndeplinit atunci are loc saltul la
adresa dat n instructiune. Este o instructiune pe 3 octeti, unde octetii 2 si 3
reprezint adresa de salt. Conditia de test apare implicit n primul octet, adic n
OPCODE. Se reaminteste c PSW are 5 indicatori de stare:
AC - transportul partial de la rangul 3 spre 4
P - indicator paritate
Z - indicator de zero
C - indicator de transport
S - indicator de semn
Fiecare conditie poate Ii testat (din cele 5) pentru adevrat sau Ials, adic
testm dac ACC este 0 (atunci Z1) sau dac ACC nu este 0 (atunci Z0).
Conditiile sunt codiIicate n instructiune prin 3 biti desemnati CCC.
iI (CCC) then
PC ((octet 3) (octet 2))

11CCC011
(Adr. Inf)
octet 2
(Adr. Sup)
octet 3
{
3 loca(ii
C3
{
3 loca(ii
Curs 10 Arhitectura CaIcuIatoareIor
23

CCC Condi(ie
000 NZ NOT ZERO (Z0)
001 Z ZERO (Z1)
010 NC NO CARRY (CY0)
011 C CARRY (CY1)
100 PO PARITY ODD (P0)
101 PE PARITY EVEN (P1)
110 P PLUS (S0)
111 M MINUS (S1)

Pentru implementarea operatiilor de comparare repertoriul de instructiuni
contine si instructiuni de comparatie. Comparatia se Iace prin scdere. Dup
eIectuarea scderii se poate determina dac cei doi operanzi sunt egali atunci
rezultatul este zero, si deci indicatorul Z se activeaz (devine 1). De asemenea dac
rezultatul este negativ atunci primul operand este mai mic dect al doilea si se
activeaz indicatorul de stare de transport.

3) Instruc(iune de compara(ie cu registrul
Se compar continutul registrului cu ACC. Registrul este desemnat n OPCODE.
Operatia de comparare se Iace prin scderea din continutul ACC a continutului
registrului desemnat. Dup operatie ACC rmne nemodiIicat, dar se modiIic
indicatorii de stare. Dac cei 2 operanzi sunt egali, atunci se seteaz Z si dac ACC e
mai mic dect continutul registrului atunci se seteaz CY.

CMP R (A) - (R) ~ (A) nemodiIicat
(Z) 1 dac (ACC)(R)
(CY)1 dac (ACC)(R)

10111 SSS
unde
SSS - adres registru.

4) Instruc(iune de compara(ie cu memoria
Se compar contintul ACC cu continutul locatiei de memorie desemnat implicit
prin continutul perechii de registre (HL), comparatia se Iace prin scdere.

CMP M (A) - ((H)(L)) ~ (A) nemodiIicat
(Z)1 dac (ACC)((H)(L))
(CY)1 dac (ACC) ((H)(L))

10111 110




1 loca(ie
1 loca(ie BE
Curs 10 Arhitectura CaIcuIatoareIor
24
5) Instruc(iune de compara(ie imediat
Se compar continutul ACC cu un octet ce se d explicit n instructiune, deci
dat imediat. Data se d n instructiune n cel de-al doilea octet, deci instructiunea
este pe 2 octeti.

CPI DATA (A) - (octet 2) ~ (A) nemodiIicat
(Z) 1 dac (ACC)DATA
(CY)1 dac (ACC)DATA

11111110
DATA
Octet 2

8.5. Clasa instruc(iunilor de apel de proceduri

Se stie c procedura reprezint un grup de instructiuni ce reprezint o anumit
sarcin de calcul si poate Ii invocat din diIerite puncte ale programului n executie.
De multe ori termenul de procedur este nlocuit cu subrutin.
Dup ce procedura si ncheie executia trebuie s aib loc revenirea dup apelul
procedurii. De aceea adresele de revenire n programul apelant (principal) trebuie
memorate. Exist 3 locuri unde adresa de revenire poate Ii plasat: n memorie, n
registru sau n stiv.
Cel mai bun procedeu este de a memora adresa de revenire (retur) n stiv. La
executia instructiunii de apel care de regul este instructiunea CALL are loc
nscrierea n vrIul stivei a adresei de revenire n programul apelant. Atunci cnd
procedura este terminat (sarcina de calcul a Iost ndeplinit), procedura execut o
instructiune de revenire RETURN, prin care citeste vrIul stivei si-l dirijeaz spre
PC. Deci are loc un salt la adresa impus reprezentnd punctul de revenire n
programul apelant. Procedeul Iolosirii stivei este Ioarte rspndit n special pentru c
asigur implementarea recurentei.

Definijie: Abilitatea unei proceduri de a se autoapela se numeste recuren(.

Definijie: Dac procedura A apeleaz procedura B, care la rndul su apelaz
procedura C si care apeleaz apoi pe A, atunci se obtine o recurent de tipul DAISY
CHAIN.

Observajie: Instructiunile CALL si RETURN se vor prezenta la aplicatiile
stivei.

8.6. Clasa instruc(iunilor de control al ciclurilor

Necesitatea de executie a unui grup de instructiuni de un anumit numr de ori
predeterminat se ntlneste Irecvent, implicit setul de instructiuni trebuie s contin
instructiuni speciIice.
{
2 loca(ii
FE
Curs 10 Arhitectura CaIcuIatoareIor
25
Acestea presupun existenta unui numrtor ce Iunctioneaz cu rolul de contor al
executiei ciclurilor. Dup Iiecare parcurgere a grupului de instructiuni se d o
comand de incrementare sau decrementare a numrtorului de bucl si cnd se
ajunge la valoarea 0 sau la o valoare predeterminat se d comanda de iesire din
bucl.
Deci la Iiecare parcurgere a grupului se testeaz si numrtorul. Dac conditia
este ndeplinit atunci executia buclei se ncheie.
Procesorul I8080 nu are astIel de instructiuni.

8.7. Clasa instruc(iunilor de I/O

Este clasa cu cea mai mare varietate ntre diIeritele tipuri de CPU-uri. Trebuie
Icut o distinctie clar ntre CPU-urile care au instructiuni explicite de I/O si cele
care nu au instructiuni speciIice de I/O.
Cea mai simpl metod pentru deIinirea operatiilor de I/O este de a Iolosi
instructiuni ce asigur transIerul unui singur octet.
Instructiunea INPUT permite transIerul unui singur octet dintr-un port de intrare
ce trebuie desemnat n instructiune si ACC.
Instructiunea OUTPUT asigur transIerul unui singur octet din ACC ntr-un port
de iesire, ce este desemnat prin numrul su (adres) ce este dat n instructiune.
O Iorm mai evoluat este pentru transIerul unui bloc de date. Cnd trebuie
precizat si dimensiunea blocului (n numr de bytes). Blocul se transIer n memoria
principal si nu n ACC, de aceea n instructiune trebuie precizat adresa de nceput a
blocului. O Iorm mai evoluat este Iolosirea procesoarelor IOP.

Exemple de instrucjiuni de I/O la procesorul I88

1) Instruc(iunea Input
Se citeste continutul portului de intrare (1 octet) se depune pe DATA BUS si
apoi se tranIer n ACC.
IN port (A) (port)
n limbajul cod masin o astIel de instructiune are 2 octeti.

11011011
Nr. de port

2) Instruc(iunea Output
Continutul ACC (1 octet) se depune pe DATA BUS (pe 8 biti) si se trimite n
portul de iesire desemnat, unde se nscrie o copie a ACC.
OUT port (port) (A)
n limbajul cod masin o astIel de instructiune are 2 octeti.

11010011
Nr. de port

{
2 loca(ii DB
{
2 loca(ii
D3
Curs 10 Arhitectura CaIcuIatoareIor
26
8.8. Clasa instruc(iunilor de control ale CPU

Sunt instructiuni speciIice Iiecrui CPU pentru administrarea intern. Dar n
mare se regsesc n toate repertoriile, de exemplu, instructiunea HALT care asigur
oprirea Iunctiunrii CPU.
Grupul EI si DI asigur activarea/ dezactivarea sistemului de ntreruperi.
Instructiunea NOP este util pentru deIinirea unor cuante de timp.