intel8080

21
Grupul instrucţiunilor de transfer al datelor. Acest grup de instrucţiuni este utilizat pentru transferul informaţiei sub formă de cuvinte între registre, sau între registre şi memorie. Instrucţiunile de transfer nu afectează faioanele de condiţie. 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 locaţie 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 conţinutului acumulatorului la adresa indicată din memorie 9.LDA X, RP - încarcă acumulatorul cu conţinutul locaţiei de memorie indicat de registrul pereche RP, RP->{B, D} 10.STA X, RP - stocarea conţinutului acumulatorului în locaţia de memorie indicată de registru pereche RP, RP->{B, D} A->((B), (C)) 11.LHLD adresa - încarcă registrul pereche H cu conţinutul locaţiei de memorie de adresa indicată direct (L) -> ((octet 3) (octet 2)) (H) ->((octet3) (octet 2)+1) 12.SHLD adresa - stocarea conţinutului registrului pereche H în locaţia de memorie de adresa indicată Ex. SHLD 8312H (L) -> (8312) (H) -> (8313) 13. CHG - schimbul conţinutului registrelor pereche H, D. Grupul instrucţiunilor aritmetice

Upload: maxim-mirzenco

Post on 02-Feb-2016

11 views

Category:

Documents


0 download

DESCRIPTION

Intel

TRANSCRIPT

Page 1: Intel8080

Grupul instrucţiunilor de transfer al datelor.

Acest grup de instrucţiuni este utilizat pentru transferul informaţiei sub formă de cuvinte între registre, sau între registre şi memorie. Instrucţiunile de transfer nu afectează faioanele de condiţie.

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, L3.MOV R, M; (din memorie în registru) {H, L}->R4.MVI R, DATA 85.MVI M, DATA 8 - transferul imediat al unui octet într-o locaţie de memorie6.LXI RP, DATA 16 – transferul imediat al unui dublu octet în registru pereche RP ->{B, D, H, SP}Exemplu: LXI SP, 1236H

LXI H, 100D7.LDA adresă - încarcă acumulatorul de la adresa indicată din memorie (A) -> (( octet3), (octet2))8.STA adresa - stocarea conţinutului acumulatorului la adresa indicată din memorie 9.LDA X, RP - încarcă acumulatorul cu conţinutul locaţiei de memorie indicat de registrul pereche RP, RP->{B, D}10.STA X, RP - stocarea conţinutului acumulatorului în locaţia de memorie indicată de registru pereche RP, RP->{B, D} A->((B), (C)) 11.LHLD adresa - încarcă registrul pereche H cu conţinutul locaţiei de memorie de adresa indicată direct

(L) -> ((octet 3) (octet 2))(H) ->((octet3) (octet 2)+1)

12.SHLD adresa - stocarea conţinutului registrului pereche H în locaţia de memorie de adresa indicată

Ex. SHLD 8312H(L) -> (8312)(H) -> (8313)

13. CHG - schimbul conţinutului registrelor pereche H, D.

Grupul instrucţiunilor aritmetice

Acest grup de instrucţiuni realizează operaţii aritmetice cu cuvintele din registre sau memorie fără alte specificaţii, toate instrucţiunile acestui grup afectează fanioanele de condiţie respective. Toate operaţiile de scădere sunt realiate prin adunare în cod binar complimentar faţă de 2.

1.ADD R - adunarea la acumulator a conţinutului unui registru (A) <- (A) +(B)2.ADD M - adunarea la acumulator a conţinutului unei locaţii de memorie3.ADI DATA 8 - adunarea imediată la acumulator4.ADC R - adunarea la acumulator a conţinutului unui registru şi a transportului5.ADC M - adunarea la acumulator a conţinutului unei locaţii de memorie şi a transportului (A)<-(A) + ((H) (L))+CF

Page 2: Intel8080

6.ACI DATA 8 - adunare imediată la acumulator a unui octet şi a transferului (A)<-(A)+DATA8 +CF7.SUB R - scădarea din acumulator a conţinutului unui registru8.SUB M - scăderea din acumulator a conţinutului unei locaţii de memorie9.SUI DATA8 - scăderea din acumulator a conţinutului octetului 2 (scădere imediată)10.SBB R - scăderea din acumulator a conţinutului unui registru şi a împrumutului (A)<-(A)–(D)–(CY)11.SBB M - scăderea din acumulator a conţinutului unei locaţii de memorie şi a împrumutului12.SBI DATA8 - scăderea imediată a datei şi aîmprumutului din acumulator13.INR R - incrimentarea conţinutului unui registru14.INR M - incrimentarea conţinutului unei locaţii de memorie15.DCR R - decrementarea conţinutului unui registru16.DCR M - decremementarea conţinutului unei locaţii de memorie17.INX RP - incrimentarea unui registru pereche RP:{B, D, H, SP}18.DCX RP - decrementarea unui registru pereche19.DAD RP - adunarea la registru pereche H a conţinutului unui alt registru pereche RP:{B, D, H, SP}20.DAA - ajustare zecimală a acumulatorului.

 Grupul instrucţiunilor logice

Acest grup de instrucţiuni realizează operaţii logice cu cuvintele din registre sau memorie, unele instrucţiuni a acestui grup afectează fanioanele de condiţie respective.

1.ANA R - înmulţirea logică a acumulatorului cu un registru (A)<-(R) AND (A)2.ANA M - înmulţirea logică a acumulatorului cu o celulă din memorie3.ANI DATA8 - înmulţirea logică a acumulatorului cu data imediată 4.XRA R - efectuarea operaţiei XOR cu un registru şi ctocarea rezultatului în acumulator (A)<-(R) XOR (A)5.XRA M - efectuarea operaţiei XOR cu o celulă de memorie şi ctocarea rezultatului în acumulator6.XRA DATA8 - efectuarea operaţiei XOR cu data imediată şi ctocarea rezultatului în acumulator7.ORA R - efectuarea operaţiei OR (sau) cu un registru şi ctocarea rezultatului în accumulator (A)<-(R) OR (A)8.ORA M - efectuarea operaţiei OR cu o celulă de memorie şi ctocarea rezultatului în acumulator9.ORA DATA8 - efectuarea operaţiei OR cu data imediată şi ctocarea rezultatului în acumulator10.CMP R - compararea unui registru cu acumulatorul. Aici se afectează fanianele S , Z , P , C , AC11.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.

Page 3: Intel8080

14.RLC - se efectuează rotirea acumulatorului în stînga , cu înscrierea bitului inferior în bitul de transfer. 15.RAR - se efectuează rotirea acumulatorului în drepta , incluzînd şi bitul transferului. 16.RAL - se efectuează rotirea acumulatorului în stînga , incluzînd şi bitul transferului. 17.CMA - invertarea conţinutului acumulatorului. 18.CMC - invertarea conţinutului registrului C.19.STC - setarea în "1" a conţinutului registrului C.

 Grupul instrucţiunilor de salt, control I/O,lucru cu stiva

Aceste instrucţiuni realizează operaţii de apelare la subrutină sau întoarcere din ea, transferul datelor la porturi de ieşire, lucru cu stiva, operatii de salt condiţionat sau necondiţionat .

1.CALL - chemarea unei subrutine, care se efectuiază astfel : conţinutul 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 următorii 2 octeţi. 2.PCHL - saltul la adresa indicată în regiştrii H , L3.RET - reîntoarcerea din subrutină trecerea la comanda adresa căreia este indicată în perechea de octeţi al stivei şi adunarea la SP , 2. 4.RST n - efectuarea resetării procesorului. Şi preluarea funcţionării de pe adresa 8 - NNN5.PUSH RP - înscrierea în stivă a conţinutului regiştrior pereche RP.6.POP RP - citirea din stivă a conţinutului regiştrior pereche RP.7.XTHL - efectuarea schimbului între regiştrii H , L şi 2 octeţi de sus a stivei.8.SPHL - efectuarea transferului conţinutului regiştrilor 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 efectuării operaţiilor de către procesor. 14.NOP - comanda fără operaţii efectuate , se intrebuinţează pentru obţinerea reţinerilor . 15.J"cc" - se efectuează saltul la comanda care este indicată în următorii 2 octeţi . 16.R"cc" - se efectuează intoarcerea din subrutină , efectuînduse comanda RET. 17.C"cc" - se efectuează chemarea subrutinei , efectuînduse comanda CALL.

Ultimele 3 instrucţiuni sînt condiţionate şi dacă condiţia nu se îndeplineşte programul se rulează mai departe , simbolul "cc" se descifrează în următorul tabel:                                                                                                   Tabelul 1.Mnemocod "cc" Condiţia Mnemocod "cc" CondiţiaNZ diferent de 0 Z egal cu 0NC transfer egal cu 0 C transfer egal cu 1PO impar PE paritateP semnul pozitiv M semnul negativ 

 

Page 4: Intel8080

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 sînt marcate : 1 – WR2 – DBIN3 – INTE4 – HLDA5 – WAIT6 – SYNC7 – HOLD8 – INT9 – READYA - Ф1B - Ф2C - RESET

Page 5: Intel8080

MP 8080 consta din urmatoarele unitaţi functionale:1) Zona registrelor de date si adrese;2) Unitate aritmetică logică (UAL);3) Registre de instrucţiuni;4) Unitatea de comanda si temporizare;5) Magistrala internă de date bidericţională.

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

Page 6: Intel8080

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 externeIn figura 2 sunt prezentate cele 40 de conexiuni exterioare ale MP I8080.

Page 7: Intel8080

Semnificatie si functiile acestora sunt descrise in continuare:  A0–A15 – 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 ciclu-masina (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

Page 8: Intel8080

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+T5CICLU 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. 

Page 9: Intel8080

Bit

mag

. dat

e

Adu

cere

a in

str.

Cit

irea

inst

r.

Scr

iere

a m

emor

iei

Cit

ire

stiv

a

Scr

iere

stv

a

Cit

ire

intr

are

Scr

iere

ieşi

re

Con

firm

are

într

erup

ere

Con

firm

are

HA

LT

Con

firm

are

intr

are

n H

AL

T

1 2 3 4 5 6 7 8 9 0

D0 INTA 0 0 0 0 0 0 1 1 0 1

D1 WO 1 1 0 1 0 0 1 1 1 1

D2 STACK 0 0 0 1 1 0 0 0 0 0

D3 HALTA 0 0 0 0 0 0 0 0 1 1

D4 OUT 0 0 0 0 0 1 0 0 0 0

D5 M1 1 0 0 0 0 0 1 1 0 1

D6 INP 0 0 0 0 0 0 0 0 0 0

D7 MEMR 1 1 0 1 0 0 0 0 1 0

INT

A

INT

A

INT

A

I/O

W

I/O

W

ME

M W

ME

M R

ME

M W

ME

M R

ME

M R

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.

Page 10: Intel8080

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 intr-un registru.  

Page 11: Intel8080

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

Page 12: Intel8080

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 in»1» 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

Page 13: Intel8080

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

Page 14: Intel8080

 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.

Page 15: Intel8080

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.