Sunteți pe pagina 1din 15

Grupul instruciunilor de transfer al datelor.

Acest grup de instruciuni este utilizat pentru transferul informaiei sub form de
cuvinte ntre registre, sau ntre registre i memorie. Instruciunile de transfer nu afecteaz
faioanele
de
condiie.
1.MOV R1, R2; R1, R2->{A, B, C, D, E, H, L}
2.MOV M, R; (din registru n memorie) R->{H, L} - accesul la memorie se face prin
intermediul registrelor H, L
3.MOV R, M; (din memorie n registru) {H, L}->R
4.MVI R, DATA 8
5.MVI M, DATA 8 - transferul imediat al unui octet ntr-o locaie de memorie
6.LXI RP, DATA 16 transferul imediat al unui dublu octet n registru pereche RP ->{B,
D, H, SP}
Exemplu: LXI SP, 1236H
LXI H, 100D
7.LDA adres - ncarc acumulatorul de la adresa indicat din memorie (A) -> (( octet3),
(octet2))
8.STA adresa - stocarea coninutului acumulatorului la adresa indicat din memorie 9.LDA
X, RP - ncarc acumulatorul cu coninutul locaiei de memorie indicat de registrul
pereche RP, RP->{B, D}
10.STA X, RP - stocarea coninutului acumulatorului n locaia de memorie indicat de
registru pereche RP, RP->{B, D} A->((B), (C))
11.LHLD adresa - ncarc registrul pereche H cu coninutul locaiei de memorie de adresa
indicat direct
(L) -> ((octet 3) (octet 2))
(H) ->((octet3) (octet 2)+1)
12.SHLD adresa - stocarea coninutului registrului pereche H n locaia de memorie de
adresa indicat
Ex. SHLD 8312H
(L) -> (8312)
(H) -> (8313)
13. CHG - schimbul coninutului registrelor pereche H, D.
Grupul instruciunilor aritmetice
Acest grup de instruciuni realizeaz operaii aritmetice cu cuvintele din registre sau
memorie fr alte specificaii, toate instruciunile acestui grup afecteaz fanioanele de
condiie respective. Toate operaiile de scdere sunt realiate prin adunare n cod binar
complimentar fa de 2.
1.ADD R - adunarea la acumulator a coninutului unui registru (A) <- (A) +(B)
2.ADD M - adunarea la acumulator a coninutului unei locaii de memorie
3.ADI DATA 8 - adunarea imediat la acumulator
4.ADC R - adunarea la acumulator a coninutului unui registru i a transportului
5.ADC M - adunarea la acumulator a coninutului unei locaii de memorie i a
transportului (A)<-(A) + ((H) (L))+CF

6.ACI DATA 8 - adunare imediat la acumulator a unui octet i a transferului


(A)<-(A)+DATA8 +CF
7.SUB R - scdarea din acumulator a coninutului unui registru
8.SUB M - scderea din acumulator a coninutului unei locaii de memorie
9.SUI DATA8 - scderea din acumulator a coninutului octetului 2 (scdere imediat)
10.SBB R - scderea din acumulator a coninutului unui registru i a mprumutului
(A)<-(A)(D)(CY)
11.SBB M - scderea din acumulator a coninutului unei locaii de memorie i a
mprumutului
12.SBI DATA8 - scderea imediat a datei i amprumutului din acumulator
13.INR R - incrimentarea coninutului unui registru
14.INR M - incrimentarea coninutului unei locaii de memorie
15.DCR R - decrementarea coninutului unui registru
16.DCR M - decremementarea coninutului unei locaii de memorie
17.INX RP - incrimentarea unui registru pereche RP:{B, D, H, SP}
18.DCX RP - decrementarea unui registru pereche
19.DAD RP - adunarea la registru pereche H a coninutului unui alt registru pereche RP:
{B, D, H, SP}
20.DAA - ajustare zecimal a acumulatorului.
Grupul instruciunilor logice
Acest grup de instruciuni realizeaz operaii logice cu cuvintele din registre sau
memorie, unele instruciuni a acestui grup afecteaz fanioanele de condiie respective.
1.ANA R - nmulirea logic a acumulatorului cu un registru (A)<-(R) AND (A)
2.ANA M - nmulirea logic a acumulatorului cu o celul din memorie
3.ANI DATA8 - nmulirea logic a acumulatorului cu data imediat
4.XRA R - efectuarea operaiei XOR cu un registru i ctocarea rezultatului n acumulator
(A)<-(R) XOR (A)
5.XRA M - efectuarea operaiei XOR cu o celul de memorie i ctocarea rezultatului n
acumulator
6.XRA DATA8 - efectuarea operaiei XOR cu data imediat i ctocarea rezultatului n
acumulator
7.ORA R - efectuarea operaiei OR (sau) cu un registru i ctocarea rezultatului n
accumulator (A)<-(R) OR (A)
8.ORA M - efectuarea operaiei OR cu o celul de memorie i ctocarea rezultatului n
acumulator
9.ORA DATA8 - efectuarea operaiei OR cu data imediat i ctocarea rezultatului n
acumulator
10.CMP R - compararea unui registru cu acumulatorul. Aici se afecteaz fanianele S , Z ,
P , C , AC
11.CMP M - compararea unei celule de memorie cu acumulatorul.
12.CMP DATA8 - compararea datei imediate cu acumulatorul.
13.RRC - se efectueaz rotirea acumulatorului n drepta , cu nscrierea bitului superior n
bitul de transfer.

14.RLC - se efectueaz rotirea acumulatorului n stnga , cu nscrierea bitului inferior n


bitul de transfer.
15.RAR - se efectueaz rotirea acumulatorului n drepta , incluznd i bitul transferului.
16.RAL - se efectueaz rotirea acumulatorului n stnga , incluznd i bitul transferului.
17.CMA - invertarea coninutului acumulatorului.
18.CMC - invertarea coninutului registrului C.
19.STC - setarea n "1" a coninutului registrului C.
Grupul instruciunilor de salt, control I/O,lucru cu stiva
Aceste instruciuni realizeaz operaii de apelare la subrutin sau ntoarcere din ea,
transferul datelor la porturi de ieire, lucru cu stiva, operatii de salt condiionat sau
necondiionat .
1.CALL - chemarea unei subrutine, care se efectuiaz astfel : coninutul contorului de
comenzi se nscrie n stiv pe adresa la care indic SP se scade din SP , 2 i se face trecerea
la comanda care este indicat n urmtorii 2 octei.
2.PCHL - saltul la adresa indicat n regitrii H , L
3.RET - rentoarcerea din subrutin trecerea la comanda adresa creia este indicat n
perechea de octei al stivei i adunarea la SP , 2.
4.RST n - efectuarea resetrii procesorului. i preluarea funcionrii de pe adresa 8 - NNN
5.PUSH RP - nscrierea n stiv a coninutului regitrior pereche RP.
6.POP RP - citirea din stiv a coninutului regitrior pereche RP.
7.XTHL - efectuarea schimbului ntre regitrii H , L i 2 octei de sus a stivei.
8.SPHL - efectuarea transferului coninutului regitrilor H , L n stiv.
9.IN port - transferul datelor din portul adresat n acumulator.
10.OUT port - transferul datelor din acumulator n portul adresat.
11.EI - acceptarea ntreruperilor.
12.DI - interzicerea ntreruperilor.
13.HLT - oprirea efecturii operaiilor de ctre procesor.
14.NOP - comanda fr operaii efectuate , se intrebuineaz pentru obinerea reinerilor .
15.J"cc" - se efectueaz saltul la comanda care este indicat n urmtorii 2 octei .
16.R"cc" - se efectueaz intoarcerea din subrutin , efectunduse comanda RET.
17.C"cc" - se efectueaz chemarea subrutinei , efectunduse comanda CALL.
Ultimele 3 instruciuni snt condiionate i dac condiia nu se ndeplinete
programul se ruleaz mai departe , simbolul "cc" se descifreaz n urmtorul tabel:
Tabelul 1.
Mnemocod "cc"
Condiia
Mnemocod "cc"
Condiia
NZ
diferent de 0
Z
egal cu 0
NC
transfer egal cu 0
C
transfer egal cu 1
PO
impar
PE
paritate
P
semnul pozitiv
M
semnul negativ

Structura procesorului
Arhitectura MP I8080
Pentru a putea scri un program in limbajul de asamblare 8080 programatorul trebuie
sa cunoasca structura generala a MP 8080 si a microcalculatorului pe care se lucreaza
(realizat pe baza acestuia).
Arhitectura MP 8080 este prezentata in fig.1

Figura 1. Arhitectura interna a microprocesorului I8080


Pe desen prin cifre snt marcate :
1 WR
2 DBIN
3 INTE
4 HLDA
5 WAIT
6 SYNC
7 HOLD
8 INT
9 READY
A - 1
B - 2
C - RESET

MP 8080 consta din urmatoarele unitai functionale:


1) Zona registrelor de date si adrese;
2) Unitate aritmetic logic (UAL);
3) Registre de instruciuni;
4) Unitatea de comanda si temporizare;
5) Magistrala intern de date bidericional.
Zona registrelor consta dintr-o zona de memorie RAM organizata in 6 registre de
catre 16 biti fiecare:
numarator de adrese al programului PC;
pointerul stivei SP;
6 registre generale de lucru (B, C, D, E, H, L), care pot fi adresate ca perechi de
registre cu lungimea de 16 biti sau individual ca registre de 8 biti;
un registru pereche temporar (W, Z)
Numaratorul de adrese PC contine adresa instructiunii ce urmeaza a fi executata.
Continutul lui este accesibil si poate fi modificat prin program. Indicatorul de stiva SP
contine totdeauna adresa din memorie(alocata pentru stiva) in care sa depus ultimul cuvint
(indica virful stivei). Stiva se construieste in RAM si creste in jos, adica in sensul de
scadere a numarului adresei. SP este accesibuil programatorului penrtu initializarea zonei
din RAM ca stiva.
Registrul temporar W,S nu este accesibil programatorului si este folosit de procesor
pentru executia interna a instructiunilor. O informatie de 1 octet poate fi transferata intre
zona de memorie afectata registrelor si magistrala interna utizind circuitele pentru
selectarea unui registru-selectie si multiplexorul. Operatia de incrimentare (decrementare)
a unui dublu registru este realizata cu ajutorul circuitelor din blocul operator 1, la iesirea
caruia este conectat si registrul de 16 biti servind la pastrarea adresei de memorie trimisa
de procesor pe magistrala externa de adrese cu ajutorul circuitelor de comanda continute in
blocul denumit BUFER ADRESE.
UAL contine un sumator paralel de 8 biti la care sunt atasate:
un acumulator de 8 biti folosit de utilizator;
un acumulator temporar de 8 biti inaccesibil utilizatorului, fiind folosit pentru
memorarea primului operand;
un registru temporar de 8 biti care nu este accesibil utilizatorului fiind folosit
pentru memorarea celui de-al doilea operand;
5 indicatori de conditii;
un circuit de corectie pentru lucrul in fomatul BCD (corectie zecimala).
UAL este legata de registrul temporar, acumulatorul temporar si registrul
indicatorilor de conditii si permite executia operatiilor aritmetice, logice si de deplasare.
Rezultatul unei operatii se extrage din UAL pe magistrala interna de date si se introduce in
acumulator,indicatorii de conditie fiind pozitionati in conformitate cu valoarea rezultatului
si cu tipul instructiunii curente.
In timpul executiei unei instructiuni codul instructiunii este transferat in registrul de
instructiuni a carui iesire este transferata cu ajutorul decodificatiei de instructiuni. Iesirea
decodificatorului asociata cu semnalele de cias este expluatata de circuitul de comanda si

temporizare care genereaza semnale ce dirijeaza activitatea interna si externa a


procesorului. Circuitul bufer BUS DATE este folosit pentru izolarea magistralei interne de
date a procesorului de magistrala externa (D0-D7). Intr-o operatie de iesire continutul
magistralei interne se afla in zona "tampon" de 8 biti de unde mai departe este transmisa
spre exterior.

Intr-o operatie de intrare datele de pe magistrala externa sunt transferate in zona


tampon a magistralei interne si de aici pe magistrala interna a procesorului.
Semnalele externe
In figura 2 sunt prezentate cele 40 de conexiuni exterioare ale MP I8080.

Semnificatie si functiile acestora sunt descrise in continuare:


A0A15 magistrala de adrese de 16 biti . Are iesirea 3 stari (tri-state) si este activa
sus. Aceasta poate adresa o memorie de 64 Kocteti (216) precum si dispozitive periferice
de intrare /iesire (I/E).
D0-D7 magistrala de date are lungimea de 8 biti, este bidirectionala are I/E active
sus de tip tri-state. Aceasta permite schimbul de informatie dintre pocesor si memorie
externa respectiv dintre procesor si dispozitiv I/E.
Q1- Q2 semnalele de ceas. Sunt intrari active sus.
SYNC iesire, semnal de sincronizare generat de MP prin care se specifica
inceputul fiecarui ciclu-masina. Pe durata semnalului SYNC MP aplica pe DB (magistrala
de date) cuvintul de stare (ce indica tipul opertiei de efectuat in ciclul-masina respectiv).
DBIN semnal generat de MP care informeaza ca MP poate prelua datele aplicate
pe DB de catre memorie sau periferice.
WR (activ in starea 0). Semnal generat de MP care informeaza memoria sau
perifericele ca informatia (bitul) aplicat pe DB poate fi citita.
READY semnaal extern care prin valoarea READY=1 informeaza MP ca
informatia cerutaa este accesibila (valida) pe magistrala de date.
WAIT semnal generat pe MP prin care se indica faptul ca se astepta o data
(informatie) de la memorie sau periferic, prin care se cere ca MP sa elibereze magistralele
(buferele de iesire ale MP sunt trecute in starea de inalta impedanta). In acest caz
magistralele sunt administrate de catre periferic in scopul unui acces direct la memoria
DAM (Direct acces memory).
HLDA semnal emis de MP prin care acesta confirma trecerea buferealor de
magistrala in stare de inalta impedanta.(ca urmare a primirii semnalului HOLD).
INT semnal emis de catre un periferic prin care acesta cere interventia MP.
INTE semnal al unui fanion din MP care indica posibilitatea(INTE=1) sau
imposibilitatea (INTE=0) de intrerupere a MP la primirea unei cereri de intrerupere
(INT=1) . Fanionul INTE poate fi comandat din program.
RESET semnal exterior, semnal de initializare care aduce numaratorul de adrese la
0, deci MP reia rularea programului de la adresa 0. Tot acest semnal pune pe 0 si
semnalele HLDA si INTE.
Algoritmul de functionare a MP I8080
Intervalul de timp necesar procesorului de a schimba informatia cu exteriorul este
denumit ciclul-masina. Intervalul de timp necesar pentru executia unei instructiuni este
denumit ciclul-instructiune. Executarea unei instructiuni (ciclul instructiune) in functie de
in functie de complexitatea sa necsita de la 1 pina la 5 cicluri masina (M1-M5). La rindul
sau fiecare ciclu masina este compus de la 3 pina la 5 stari (T1, T2, T3, T4, T5). O stare
fiind definita ca o perioada a semnalului de tact 1. In primele 3 stari ale primului ciclumasina (M1) primul octet al instructiunii este adus din memorie in registru de instructiuni.
Starea T4 este utilizata pentru decodificarea codului instructiunii. Daca instructiunea este
compusa dintr-un singur octet este necesara si starea T5 pentru executia acesteea (in astfel
de cazuri ciclul-instructiune necesita un singur ciclu-masina ce consuma 5 stari). Daca
instructiunea este compusa din 2 sau 3 octets, dupa ciclul FETCH (M1) (aducerea codului
instructiunii) mai este necesar si alte cicluri-masina. Fiecare ciclu masina din cele 5

posibile realizeaza o anumita operatie exprimata prin cuvintul de stare (citire, inscriere
etc.). Aceste operatii sunt inlantuite in cadrul ciclului-instructiune in functie de tipul
instructiunii, dar ca regula se stie ca totdeauna primul ciclu cu care incepe instructiunea
este FETCH. Pentru fiecare ciclu-masina MP genereaza semnalul de sincronizare SYNC
din fiecare din cele 5 cicluri-masina posibile MP genereaza un cuvint de stare ce indica
spre exterior ce fel de operatii se realizeaza in ciclul-masina curent. Deci magistrala de
date este multiplexata intre cuvintul de stare si datele de intrare sau iesire din MP. Pentru
ciclurile-masina si cicluruile-instructiune se pot scri relatiile de timp:
CICLU MASINA = T1+T2+Twait+T3+T4+T5
CICLU INSTRUCTIUNE = M1+M2+M3+M4+M5

Figura 1. Microcipul de sincronizare


Pentru generarea semnalelor de tact 2 se utilizeaza un circuit generator de orologiu
(integrat separat de 8080). Acesta este circuitul 8224 KP 580 GF24 care e destinat pentru
sincronizarea microsistemelor pe baza microprocesoarelor in studiu. Generatorul in afara
de semnalele 1 si 2 mai produce semnalele READY si RESET. Totodata mai produce
semnalul pentru strobarea cuvintului de stare STSB pe durata impulsului SYNC.
Conectarea genertorului de orologiu este dat in fig. 1. MP are 10 tipuri diferite de operatii
caracterizate fiecare de un cuvint de stare. Realizarea unei instructiuni se reduce la
inlantuirea a maxim 5 din aceste operatii (fiecare operatie executindu-se pe durata unui
ciclu masina). Cuvintul de stare PSW ce corespunde ciclului-masina in curs este generat
de MP pe durata semnalului SYNC multiplexat pe magistrala de date. Deoarecce
magistrala de date va fi folosita pentru vehicularea datelor incepind cu T3 inseamna ca
pentru pastrarea cuvintului de stare pe intreaga durata a ciclului-masina, acest cuvint de
stare trebuie introdus intr-un registru. In acest scop microprocesorului i se ataseaza
circuitul integrat 8228 sau KP 580 BK 28, care este un amplificator de bufer de magistrala
bidirectional si latch pentru cuvintul de stare. Deoarece din cuvintul de stare in KP 580 BK
28 se vor obtine anumite semnale de control, acest circuit este denumit si controler de
sistem. MP impreuna cu generatorul de orologiu , amplificatorul de magistrala si
controlerul de sistem formeaza modul de unitate centrala de procesoare. Pe durata
impulsului SYNC cuvintul de stare generat de MP pe magistrala de date este inscris in
controlerul de sistem care este strobat (validat) de catre semnalul de strob STSTB produs
de generatorul de orologiu.

Confirmare
HALT

Confirmare
intrare n HALT

D1

WO

D2

STACK

D3

HALTA

D4

OUT

D5

M1

D6

INP

D7

MEMR

INTA

INTA

INTA

D0

MEM R

Confirmare
ntrerupere
8

MEM R

Scriere ieire
7

MEM W

Citire intrare
6

MEM R

Scriere stva
5

MEM W

Citire stiva
4

I/O W

memorieiScrierea
3

I/O W

Citirea instr.
2

INTA

Aducerea instr.

Bit mag. date

Tab. 1 Mnemonicele bitilor pentru Processor State Word


Explicatiile pentru mnemonicele bitilor de PSW sunt in Tab. 1. Unul din aceste
semnale este INTA. D0. Este bitul care indica faptul ca o intrerupere prezentata
microprocesorului a fost acceptata (numai daca fanionul intern de autorizare a intreruperii
are valoarea 1). Acest bit apare in ciclurile-masina INTRERUPERE si HALT
INTRERUPERE. In cursul acestor tipuri de cicluri prin configurarea lui D0 cu semnalul
DBIN se obtine un semnal cu care se poate incarca in acumultor un cuvint de pe
magistrala de date DBASE. Acest cuvint este generat de catre perifericul ce a solicitat
intreruperea fiind considerat o instructiune RESTART sau CALL. De fapt acest cuvint
contine adresa subrutinei necesare perifericului solicitat;
WO (WRITE OUTPUT), D1. Acest bit evidentiaza faptul ca ciclul care
debuteaza va realiza o operatie de transfer de informatie de la procesor inspre exterior.
Aceste cicluri (cind WO este activ) corespund inscrierii in memorie (stiva) sau la un
periferic.
STACK, D2. Deorece stiva se realizeaza in memoria externa acest bit
diferentiaza intre operatiile citire/inscriere stiva si operatiile inscriere/citire memorie. In
acest ciclu pe magistrala de adresare se afla adresa virfului stivei.
HLTA, D3. Acest bit este prezentat in ciclurile de tip HALT INTRERUPERE si
semnalizeaza exteriorul ca MP si-a blocat in urma executarii unei instructiuni HALT.
Deblocarea MP se poate face fie printr-o intrerupere externa (daca INTE=1) fie printr-o
comanda de initializare RESET.
OUT, D4. Este pus acest bit cind se efectuiaza operatiile de iesire la un periferic.
Intr-un astfel de ciclu magistrala de adresare contine adresa perifericului, iar cea de date
cuvintul transmis la periferic valid in momentul cind semnalul WR devine activ.

M1-D5. Bitul 5 din cuvintul de stare apare totdeauna in primul ciclu de citire a
instructiunii (FETCH). Apare si in ciclurile intrerupere, HALT INTRERUPERE deoarece
in acestea se citeste o instructiune RESTART sau CALL.
IND-D6.Ca si bitul D4 acest bit indica lucrul cu perifericul, dar sensul
informatieieste de la periferic la procesor, adica de intrare . In acest ciclu magistrala de
adrese contine adresa perifericului, iar pe magistrala de date perifericul trebuie sa plaseze
cuvintul care sa fie valid in momentul cind MP activeaza semnalul DBIN.
MEMR, D7. Utimul bit al cuvintului de stare identifica un ciclu de citire a
memoriei. Informatia din memorie trebuie sa fie valida pe DP la aparitia semnalului
DBIN.
Tabela celor 10 cuvinte de stare generate de MP pe durata semnalului sync precum
si semnalele obtinute pentru magistrala de control vezi figura2.
Pentru cele 10 cuvinte de stare diferite controlerul de sistem produce printr-o logica
interna 5 semnale de control (care formeaza propriul zis semnalele magistralei de control)
Aceste semnale de control sunt: MEM R=D7 * DBIN Este generat prin ecuatia de mai sus
si apare in ciclurile cind se efectuiaza o citire la memorie:

MEM W = D4 * WR Apare in ciclurile de scriere a memoriei.


I/OR = D6 * DBIN Apare in ciclurile de citire a unui periferic
I/OW = D4 * WR Apare in ciclurile de inscriere a unui periferic.
INTA = D0 * DBIN Apare in ciclurile de acceptare a unei intreruperi in scopul
fortarii din exterior pe DB a codului unei instructiuni RESTART sau CALL.

Se observa ca semnalele magistralei de control in contrast cu informatia continuta in


cuvintul de stare inglobeaza atit informatia despre tipul de ciclu cit si relatii de timp
selectind acel interval de timp din cadrul ciclului cre este destinat pentru
transmiterea/receptionarea pe magistrala de date a informatiei catre destinatiile externe sau
provnind de la sursele interne. Pe de alta parte informatia continuta in PSW este mult mai
bogata in sensul ca din cele 10 tipuri de cicluri posibile numai 5 sunt prezentate explicit
prin semnalele magistralei de control, unele din ele fiind suprapuse din punct de vedere al
functionarii memoriei/dispozitivelor periferice. Deaceea daca uneori este nevoie de un bit
din cuvintul de stare, acesta trebuie prins pe durata semnalului SYNC si memorat intrun registru.

Fig. 2 Algoritmul de indeplinire a unui ciclu masina tipic.


Pentru o intelegere mai amanuntita a functionarii microprocesorului se va explica
algoritmul de indeplinire a unui ciclu masina tipic (fig.2).
Pe durata starii T1 continutul numaratorului de adrese PC este transmis pe AB
(magistrala de adrese) si se genereaza semnalul SYNC ceea ce determina la rindul sau ca
pe DB (magistrala de date) sa se transmita cuvintul de stare . Acest cuvint de stare este
totdeauna FETCH daca ciclul masina este M1. Sagetile care pornesc din fronturile
crescatoare ale lui T2 indica semnalele generate (cu anumite intirzieri) de acest front. Stare
T1 este totdeauna urmata de starea T2 (fig.2), pe parcursul careea se testeaza semnalele
READY, HLTA si HOLD. Daca READY=1, iar HLTA=HOLD=0 se trece in continuare in
starea T3. Pe durata starii T3 informatia extrasa din memorie este accesibila pe DB si
transferata in registrul de instructiuni IR. In dependenta de tipul instructiunii in executie
ciclul-masina este complet dupa starea T3, T4, T5. In starea T4, decodificatorul impreuna
cu unitatea de control generaza semnale necesare transferurilor interne. La sfirsitul starii
T4 se testeaza daca ciclul curent este complet. In caz afirmativ se continua cu starea T1 a
ciclului masina urmator M2. Unele cicluri necesita si starea T5 dupa care se trece la T1 in
ciclul M2 inafara situatiei cind ciclul instructiunii a necesitat doar un ciclu-masina. Pe
durata ultimei stari a ultimului ciclu masina al fiecarei instructiuni se testeaza samnalul de
cerere intrerupere INT . Daca INTE=1 si a fost validata posibilitatile de intrerupere, atunci
MP trece la deservirea perifericului, care a cerut intreruperea, printr-un ciclu M1 special.
In acest ciclu M1 special se trimite in stiva adresa din PC, se opreste incrimentarea
numaratorului de adrese si la generarea de catre MP a semnalului de acceptare intrerupere
INTA=0, perifericul trebuie sa puna pe magistrala de date instructiunea RST, care exprima
adresa (ce va fi incarcata in PC) unde se afla prin instructiune din subritina deservirii a
perifericului . Daca READY =0 se trece intr-o stare de asteptare WAIT notata prin Tw. In
starea Tw microprocesorul poate ramine un numar multiplu de perioade T nelimitat.
Semnalul READY=0 permite ca MP sa se sincronizeze (sa astepte) cu memorii externe sau

perifericele cu functie mai lenta. MP confirma intrarea in starea Tw prin generarea


semnalului WAIT=1. Din starea Tw se iese odata cu venirea semnalului READY=1. In
starea T2, daca semnalul READY=1 si HOLD=1 se stabileste in1 un bistabil interior
(bistabilul indica la cerere ca MP sa elibereze magistralele). Starea HLDA. Magistralele
vor fi eliberate in stare T3 (daca ciclul curent introduce informatii in MP), in stare T4
(daca ciclul curent extrage informatii din MP).La preluarea administrarii magistralele MP
trece in totdeauna in starea T1 a urmatorului ciclu masina. In starea de oprire, starea
HALT, MP trece daca semnalul HALT ( format in ciclul M2 a instructiunii HLT) este egal
cu 1. In aceasta stare magistralele interne de date si adrese trec in starea de inalta
impedanta , semnalul de iesire WAIT=1, iar executarea programului este oprita. Reluarea
executarii programului dupa ce s-a intilnit instructiunea HLT, poate fi facuta doar de catre
o cerere de intrerupere INT=1 sau o reinitializare a MP comandat cu semnalul de
initializare RESET. Insructiunea HLT poate fi privita ca o operatie de asteptare pina cind
apare o intrerupere. Dupa reitoarcerea din subrutina de servire a intreruperii prin care s-a
fortat iesirea din starea HALT se reia executarea programului de la instructiuneaimediat
urmatoare instructiunii HLT. Daca intreruperile nu sunt autorizate prin instructiunea EI
inainte de a surveni HLT, MP nu va mai putea iesi din starea HALT decit printr-o
reinitializare a sistemului (semnal RESET cu pornire de la adresa 0000H). Din starea
HALT microprocesorul poate trece in starea HLDA daca semnalul HOLD este egal cu 1.
Daca HOLD=0 MP se reintoarce in starea de oprire HALT. Operatiile care au loc in stare
T3 sint determinate de tipul de ciclu masina in curs de executie. Intr-un ciclu de extragere
a instructiunii MP interpreteaza informatia de pe DB ca o instructiune; iar intr-un ciclu de
citire a memoriei sau a stivei, informatia de pe magistrala de date va fi interpretata ca o
data. MP plaseaza datele pe DB in starea T3 a ciclurilor masina de scriere a memoriei sau
a stivei. In fig. 4 sint figurate semnalele DBIN si WR care indica faptul ca informatia de
pe magistrala de date poate fi citita, respectiv inscrisa.
Moduri de adresare MP I8080
Performantele oricarui MP sunt puterni afectate de modul cum reuseste sa aduca
(citeasca) si sa duca (inscrie) datele in memorie. MP trebuie sa genereze un cuvant de 16
biti pentru adresarea locatiei de memorie in care este stocata data ce urmeaza a fi
procesata. Felul cum se construieste (determina) adresa locatiei de memorie este denumit
mod de adresare. Modul de adresare afecteaza pronuntat timpul necesar si memoria
consumata pentru realizarea unei instructiuni. Acestea sunt argumentele pentru faptul ca
MP-le sunt inzestraate cu tot mai multe posibilitati de implimentare a modurilor de
adresare. I8080 permite 6 moduri de adresare:
adresare imediata;
adresare directa;
adresare implicita;
adresare a registrelor;
adresare cu registru pereche (adresare indirecta prin registre);
adresare combinata.
La alte tipuri de MP se mai intilnesc adresare indexata, relativa, indirecta etc.
Adresare imediata - in adresarea imediata operandul necesar in procesare este situat
imediat dupa bytul ce reprezinta codul operatiei. Instructiunile cu adresare imediata sunt

cu operanzi de un byte sau 2 bytes, ocupind in memorie evident 2 respectiv 3 locatii.


(Fig.1)

Figura 1. Adresarea imediata


Exemplu: MVI A, 05H
Instructiunile cu adresare imediata sunt utilizate pentru introducerea constantelor
(simple sau duble) in calcul. In cazul cind constanta este dubla instructiunea se foloseste
pentru introducerea unei adrese intr-o pereche de registre, care apoi se va utiliza pentru
adresarea memoriei (adresare cu registru pereche). Adresare directa- este cel mai simplu
mod de adresare a memoriei. Fiecare instructiune cu adresare directa contine adresa
locatiei de memorie in care se afla operandul necesar procesarii. Instructiunile ocupa 3
locatii succesive in memoria de programe. In prima locatie de memorie este codul
operatiei, in a doua locatie este bytul cel mai putin semnificativ, iar in a 3 locatie bytul
cel mai semnificativ al adresei. Rezultaa ca o astfel de instructiune necesita 3 citiri la
memorie (cicluri-masina) pentru aducerea operandului. In consecinta o instructiune cu
adresare directa consuma multe stari ale MP.

Figura 2. Adresarea directa

Exemplu: LDA 8060H


Adresare implicita. Exista unele instructiuni care prin insasi formatul binar(codul
operatiei) indica implicit registrul ce ia parte la operatie. De exemplu instructiunea DAA
implicit se refera doar la acumulator. Toate instructiunile operatiilor logice si aritmetice
folosesc acest mod de adresare. Adresarea registrelor. Acest mod de adresare se foloseste
cind oprandul implicat in procesare se afla in unul din registrele interne (A, B, C, D, E, H,
L). Instructiunile care folosesc adresare la registru contin in formatul binar de un byte
codul instructiunii si codurile registrelor implicate. Ultimii 3 biti mai putin semnificativi
vor codifica registrul sursa (al operandului). Urmatorii 3 biti registrul destinatie, iar
primii 2 biti mai semnificativi codul operatiei. Fiecarui registru al MP i se impune un cod
unic.
Exemplu: MOV BC
Adresare cu registru pereche

Figura 3. Adresarea prin registru pereche


Adresa unei locatii de memorie in care se afla data necesara poate fi specificata prin
continutul unui registru pereche ca in fig. 3.
Exemplu: MOV A, M
Prin utilizarea adresei din registru pereche instructiunea nu mai necesita 2 bytes in
plus (ca sa indice adresa) ca la cea cu adresare directa, deaceea acest mod de adresare
micsoreaza sspatiul folosit in memoria de programe, iar viteza de aducere a datelor creste
deoarece scade numarul cipurilor de citire a memoriei. O utilizare obisnuita pentru
adresarea cu registrul pereche este in manipularea tabelelor de date in memorie. Aceasta
manipulare a tabelelor se bazeaza pe faptul ca adresa de inceput este incarcata intr-un
registru pereche, iar dupa ficare citire (sau inscriere) a memoriei continutul registrului
pereche este incrimentat sau decrementat, deci este posibila adresarea locatiei urmatoare.

De obicei registrul pereche H este cel mai utilizat pentru acest mod de adresare, dar sunt
instructiuni care permit si adresarea cu registrele B si D.
Exemplu:
STAX B;
LDAX B;
LDAX D;
STAX D;
Adresare combinata.
Unele instructiuni au un mod de adresare compus din modurile prezentate anterior.
De exemplu instructiunea MOV A, M, foloseste si modul de adresare implicit si modul de
adresare in registrul pereche sau insstructiunea de apelare a unui subprogram CALL
necesita o adresare directa urmata de o adresare cu registrul pereche, mai exact cu registrul
indicator de stiva.

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