Sunteți pe pagina 1din 9

MINISTERUL EDUCAŢIEI, CULTURII ȘI CERCETĂRII

AL REPUBLICII MOLDOVA
UNIVERSITATEA TEHNICĂ A MOLDOVEI
FACULTATEA ELECTRONICĂ ŞI TELECOMUNICAŢII
DEPARTAMENTUL TELECOMUNICAŢII

DARE DE SEAMĂ
La lucrarea de laborator Nr.5

Disciplina: Microprocesoare

Tema: Microprocesorul I8080

A efectuat

st. gr. TLC-151 Maria Popa

A verificat
Lec .sup. Kazak Artur

CHIŞINĂU 2017
1.Scopul lucrării: Elaborarea şi cercetarea programelor în limbajul Asembler al
microprocesorului I8080.

2. Noțiune de programare în limbaj de asamblare

Programarea MP în limbaj de asamblare (LA), sau Asembler, posedă unele particularități,


care o deosebesc de programarea în limbaje de nivel înalt (PASCAL, CI, FORTRAN, etc.):

- Limbajul de asamblare este un limbaj de nivel jos (limbaj – mașină), numai pentru
procesorul utilizat;
- Elaborarea programelor în LA necesită cunoașterea arhitecturii și principiilor de
funcționare a MP;
- Programele în LA nu sunt universale, ele se pot utiliza numai cu MP pentru care au fost
elaborate, sau cu MP compatibile.

3. Modelul programistic al MP

Modelul programistic al MP prezintă un model simplificat al arhitecturii MP și conține


numai elementele MP accesibile prin instrucțiunile LA. Pentru MP I8080 acest model este
reprezentat în figura 2.1.

Conţinuturilel acumulatorului și registrului de fanioane prezintă cuvântul de stare (PSW) al MP.

Modelul mai conține registrele de uz general (B, C, D, E, H, L) de 8 biţi, utilizate ca


memorie locală. Aceste registre se pot utiliza și în calitate de perechi de registre (3 perechi a câte
16 biţi) : B-C, D-E, H-L. Registrul PC – contorul de program, care conţine adresa instrucţiunii
următoare, SP – indicatorul memoriei stivă, care conţine adresa celulei de vârf a memoriei stivă.
Cu ajutorul SP se localizează memoria – stivă, amplasată în memoria operativă a sistemului.

Acumulator WZBCDEH
LPCSP
PSW

R-ru fanioane

memoria Memoria Porturi I/O


stivă

Figura 2.1. Modelul programistic al MP I8080


Destinația rubricilor:

- Rubrica Instrucţiunea – conține instrucţiunile programului în limbaj de asamblare;


- Rubrica Cod – mașină conține codul – mașină al instrucțiunii;
- Rubrica Adresa – conține adresa în memorie a elementelor instrucțiunii;
- Rubrica Eticheta – se utilizează pentru marcarea unor instrucţiuni, se completează opțional;
- Rubrica Comentarii – conţine lămuriri despre instrucţiune sau program și este destinată
programatorului.

Programele în Asembler conțin unele elemente, destinate simplificării, optimizării și lărgirii


posibilităților funcționale ale programelor. Din ele fac parte:

- Pseudoinstrucţiunea – prezintă o instrucţiune falsă, care nu există în setul de instrucţiuni. Ea nu


este executată de MP și conţine informaţie suplimentară despre anumite momente ale programului. Ca
exemplu de pseudoinstrucțiune standard, foarte des utilizată poate servi ORG 8000H , care conține
informație despre adresa de început a programului în memorie. Aici ORG – denumirea
pseudoinstrucțiunii, provine de la termenul origin, 8000H – adresa 8000 în cod hexazecimal.
- Macroinstrucţiunea – prezintă o instrucţiune inexistentă, care înlocuieşte o porțiune de program,
utilizată de obicei pentru executarea repetată a unei acțiuni în programul curent.

Macroinstrucţiunea are formatul instrucţiunii şi nu economisește memoria, deoarece înainte de


executarea programului se înlocuiește cu fragmentul de program respectiv. De exemplu,
macroinstrucţiunea MULT poate fi utilizată pentru desemnarea unui fragment de program pentru
efectuarea înmulțirii a două numere, operație repetată de mai multe ori în program.
- Subrutina – prezintă un program aparte, utilizat repetat în cadrul unui program de bază pentru
efectuarea unei operații repetate. Subrutina se plasează într-un loc aparte de programul de bază, iar
executarea ei se începe cu instrucțiunile de apel necondiționat CALL addr sau condiționat C(condiția)
addr, unde addr prezintă adresa de început a subrutinei (figura 2.3).

Programul de Subrutina
bază
CALL a RET
addrCALL
addr
b a
b

Figura 2.3. Modul de utilizare a subrutinei în program


Program de Subrutine
bază 1 2 3

CALL CALL CALL

Figura 2.4. Executarea subrutinelor incluse reciproc

Executarea subrutinei se termina cu reîntoarcerea în programul de bază la executarea instrucțiunii


de reîntoarcere necondiționată RET (return), sau condiționată R(condiția) din subrutină. Utilizarea
subrutinei aduce la economia memoriei. Este posibilă executarea subrutinelor incluse reciproc (figura
2.4).

Setul de instrucțiuni al MP I8080

Limbajul de asamblare al MP I8080 conţine următoarele grupe de instrucţiuni (Anexa 1):

- Instrucţiuni pentru transfer de date;


- Instrucţiuni pentru operaţii aritmetice şi logice;
- Instrucţiuni pentru salturi şi lucrul cu subrutina;
- Instrucțiuni pentru operații cu memoria – stivă;
- Instrucţiuni de comandă.

 Instrucţiuni pentru transfer de date


Această grupă de instrucțiuni este cea mai numeroasă și asigură transportul datelor între
elementele modelului programistic al MP. La explicarea executării instrucțiunii vor fi utilizate
următoarele abrevieri:

rs – registrul – sursă;

rd – registrul – destinație;

rps – perechea de registre sursă;

rpd – perechea de registre destinație,

M(rp) – celula de memorii cu adresa din rp;

byte – date nemijlocite;

(A) – date din elementul A.


Tabelul 2.5. Program transfer date din portul de intrare în cel de ieșire

Addr. Cod. Etichetă Instrucțiunea Comentarii

8000 3E Înscrierea în acumulator a


MVI A,81 codului de programare a
8001 81
interfeţei

8002 D3 Transmiterea codului de


OUT FB programare pe adresa
8003 FB
interfeţei

8004 DB START Citirea datelor din portul de


IN FA
8005 FA intrare în acumulator

8006 D3 Înscrierea datelor din


OUT F9 acumulator în portul de
8007 F9
ieşire

8008 C3

8009 04 JMP START Salt la începutul ciclului

800A 80

Tabelul 2.6. Program de control al bitului doi din portul de intrare

Addr. Co Etichet Instrucți-


Comentarii
d ă unea
8000 3E
MVI A,81
8001 81

8002 Programarea interfeţei


D3 OUT FB
8003 FB

8004 DB Citirea în acumulator

8005 FA START IN FA a datelor din portul de

intrare. Început ciclu


8006 06 Înscrierea în registrul B a
MVI B,04 cuvântului de mascare
8007 04
0000 0100

8008 A (A)&(B)→A
ANA B
D (evidenţierea bitului doi)

8009 CA
Salt condiționat la eticheta
800A 13 JZ OFF
OFF.
800B 80

800C 3E
ON MVI A,FF
800D FF Instalarea

800E D3 indicatoarelor în „1”


OUT F9
800F F9

8010 C3
Salt necondiționat la
8011 04 JMP START
START
8012 80

8013 3E OFF MVI A,00

8014 00 Instalarea

8015 D3 indicatoarelor în „0”


OUT F9
8016 F9

8017 C3
Salt necondiționat la
8018 04 JMP START
START
8019 80

Tabelul 2.7. Program pentru efectul „Deplasarea luminilor”


Co Etichet Instrucți-
Addr. Comentarii
d ă unea
8000 3E
MVI A,81
8001 81
Programarea interfeţei
8002 D3
OUT FB
8003 FB

8004 3E
SEQ MVI A,92 Aprinderea
8005 92
indicatoarelor 1,4,7.
8006 D3 Începutul ciclului de
OUT F9 deplasare a luminilor
8007 F9

8008 16
MVI D,01 01→ D
8009 01

800A CD
Apel necondiționat la
CALL
800B 22 subrutina de reținere în
DELAY
timp (eticheta DELAY)
800C 80

800D 3E
MOV A,49
800E 49 Aprinderea

800F D3 indicatoarelor 2,5,8


OUT F9
8010 F9

8011 16
MVI D,01 01→ D
8012 01

8013 CD
Apel necondiționat la
CALL
8014 22 subrutina de reținere în
DELAY
timp
8015 80

8016 3E
MOV A,24
8017 24 Aprinderea

8018 D3 indicatoarelor 3,6


OUT F9
8019 F9

801A 16 MVI D,01 01→ D


801B 01

801C CD
Apel necondiționat la
CALL
801D 22 subrutina de reținere în
DELAY
timp
801E 80

801F C3
Salt necondiționat la
8020 04 JMP SEQ începutul ciclului de
deplasare a luminilor
8021 80

8022 01 Începutul subrutinei de

8023 00 DELAY LXI B 2500 reţinere în timp. Încărcarea


în rp BC a duratei de
8024 25 reținere

Decrementarea rp BC.
Începutul buclei de
8025 0B LOOP DCX B
formare a timpului de
reținere

8026 78 MOV A,B (B) → A

8027 B1 ORA C (C) SAU (A) → A

8028 C2 Dacă f. Z = 0, salt la


începutul buclei de
8029 25 JNZ LOOP
formare a timpului de
802A 80 reținere

802B 15 DCR D Decrementarea D

802C C2
Dacă f. Z = 0, salt la
802D 22 JNZ DELAY începutul buclei de
reținere în timp
802E 80

802F C9 RET Reîntoarcere în program

Concluzie:
În lucrarea de laborator Nr.5 am sudiat limbajul de asamblare Assembler al
microprocesorului I8080.Scopul lucrarii a fost de studiat si de analizat
instructiunile din programa transfet de date din portul de intrare în cel de
ieşire şi program pentru efectul,,Deplasarea luminilor”.În programul de
contrul al bitului doi din portul de intrare,trebuia să completăm rubrica<cod>.

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