aplicatii asm 2014

68
ARHITECTURA SISTEMELOR CU MICROPROCESOR (Intel 8080,Zilog Z80) APLICAŢII Aplicaţii 2014: Facultatea E.T.T.I. Iaşi, specializarea E.A. Şef lucrări doctor inginer, Hriţcu Alioşa

Upload: iulian-alex

Post on 05-Nov-2015

25 views

Category:

Documents


6 download

DESCRIPTION

aplicatii pentru arhitectura sistemelor cu microprocesoare

TRANSCRIPT

  • ARHITECTURA SISTEMELOR CU MICROPROCESOR

    (Intel 8080,Zilog Z80) APLICAII

    Aplicaii 2014: Facultatea E.T.T.I. Iai, specializarea E.A.

    ef lucrri doctor inginer, Hricu Alioa

  • PREFA

    Apariia de circuite integrate pe scar larg (Large Scale Integration Circuits) i a microprocesoarelor, ca automate secveniale programabile prin instruciuni (automate programabile soft), a reprezentat o etap decisiv n dezvoltarea societii, etap reprezentat prin automatizarea tuturor activitilor (de la automatizarea activitilor de birou i de arhivare, pn la automatizarea activitilor industriale). Astfel, s-a obinut o cretere a bunstrii sociale, att prin mrirea calitii, ct i a randamentului tuturor activitilor.

    Sistemele programabile prin instruciuni, numite generic sisteme de prelucrare (procesare) a informaiei, sau sisteme de calcul, ce realizeaz efectuarea automat a operaiilor aritmetice, logice, de ramificare i de transfer, au ptruns n toate domeniile de activitate, dezvoltndu-se programe pentru aplicaii complexe.

    Acum folosirea sistemelor de calcul reprezint o parte foarte important n educaia i activitatea noastr, viaa fr calculator i telefon, ca mijloace de transmitere i prelucrare a informaiei, neputnd fi conceput. De menionat c telefonul mobil este foarte util, puterea sa de utilizare fiind ns dat de o unitate central de operare (unitate de calcul) ce permite implementarea pe telefon a numeroase aplicaii asociate unui sistem de calcul, un astfel de telefon mobil fiind numit Smartphone.

    Omul modern nu poate concepe viaa fr informaie i fr micare, ambele controlate i comandate eficient prin liantul reprezentat de sistemele de calcul.

    Simplificnd, putem afirma cu siguran c viaa nu poate fi conceput fr calculator, ca element de prelucrare a informaiei i fr automobil, simbol al micrii, ce ne asigur mobilitate.

    Elementele de informaie i de micare se regsesc n numeroase aplicaii i cu precdere n aplicaiile de frontier (la limita ntre domenii). Astfel, automobilul cu ardere intern este controlat, eficientizat i chiar condus de un sistem de calcul realizat cu microprocesor sau microcontrolor (microcontroller). Sistemul de calcul nsui este o simbioz ntre informaie i micare, prelucrarea informaiei fcndu-se cu circuite integrate pe scar larg, dar stocarea ei fcnd apel la o memorie de mare capacitate, numit memorie de mas, realizat pe band de casetofon sau microdrive, floppy disk ori pe hard disk, ce sunt elemente n micare.

    Importana domeniului electric n dezvoltarea societii a determinat apariia de faculti tehnice cu specializri pe telecomunicaii, electronic industrial, microelectronic, ingineria calculatoarelor, automatizri, informatic, electromecanic, electroenergetic ori mecatronic.

    Acest curs, intitulat Arhitectura sistemelor cu microprocesor este n programa specializrii de Electronic Aplicat a facultii de Electronic, Telecomunicaii i Tehnologia Informaiei din Universitatea Tehnic Gh. Asachi din Iai, fiind precedat de cursurile Circuite Integrate Digitale i Automate Programabile.

    n cadrul disciplinei, la curs se prezint bazele funcionrii microprocesoarelor, prin analiza microprocesoarelor pe 8 bii Intel 8080 i Zilog Z80, iar la aplicaii se analizez programul Monitor i structura unui sistem de dezvoltare cu microprocesor Zilog Z80. Astfel, un cursant dispune de toate cunotinele necesare realizrii unui sistem cu microprocesor i programrii de aplicaii n limbaj de asamblare.

    mi exprim ntreaga mea recunotin fa de toi cei care au contribuit la educarea i formarea mea profesional.

    ef lucrri doctor inginer, Hricu Alioa

  • 1-1

    LIMBAJE DE PROGRAMARE

    Fiecare sistem de calcul conine o unitate central de operare capabil s efectueze un numr finit de operaii elementare ce i-au fost implementate. Pentru ca o unitate central de operare s efectueze o operaie elementar ce i-a fost implementat, trebuie s i se indice, att operaia elementar de efectuat, ct i mrimile operanzilor implicai, sau locurile din sistem unde acetia se gsesc.

    Definiie Ansamblul informaiilor necesare unitii centrale de operare pentru a efectua o operaie

    elementar implementat se numete instruciune.

    Cu alte cuvinte, o instruciune reprezint o comand dat unitii centrale de operare. Fiecare unitate central de operare dispune de un grup de instruciuni, prin care poate fi comandat s efectueze operaiile elementare ce i-au fost implementate, numite instruciuni de comand.

    Rezolvarea unei probleme complexe ntr-un sistem de calcul, impune descompunerea problemei ntr-o succesiune de operaii elementare comandate unitii centrale de operare din sistemul de calcul prin instruciuni.

    Definiie Ansamblul instruciunilor sub a cror comand o unitate central de operare rezolv o

    problem impus se numete program.

    Un sistem de calcul opereaz n baza doi de numeraie, pe cuvinte binare formate dintr-un acelai numr de caractere binare numite bii, numr ce reprezint o caracteristic a sistemului, fiind sisteme de calcul ce opereaz pe cuvinte binare din 1, 2, 4, 8, 16, 32, 64 sau 128 de bii. Sistemul binar s-a impus n sistemele de calcul pentru c folosete doar dou simboluri ce pot fi reprezentate electric prin dou tensiuni mult diferite ntre ele, fapt ce ofer o mare imunitate la perturbaii.

    Rezult c pentru efectuarea unui program ntr-un sistem de calcul, instruciunile i datele din componena programului vor trebui codificate (reprezentate) prin cuvinte binare, adic n forma simbolic binar.

    Dificultatea de programe direct n forma simbolic binar, singura form simbolic acceptat ntr-un sistem de calcul, a condus spre alte forme simbolice de reprezentare a datelor i instruciunilor, forme simbolice mai accesibile unui programator.

    Definiii 1. Ansamblul instruciunilor de comand a unei uniti centrale de operare, reprezentate ntr-

    o form simbolic, se numete limbaj de programare. 2. Ansamblul instruciunilor de comand a unei uniti centrale de operare, reprezentate n

    form simbolic binar, se numeste limbaj main. 3. Un program realizat n limbaj main se numete program obiect. 4. Un program realizat ntr-un limbaj de programare a crui form simbolic e diferit de

    forma simbolic binar a limbajului main, se numete program surs. Observaie Un limbaj de programare este mijlocul de a comunica unui automat programabil sarcina de

    efectuat descris ca o succesiune de comenzi recunoscute de automat.

    Efectuarea ntr-un sistem de calcul a unui program obiect necesit depunerea cuvintelor binare din componena programului n locaiile memoriei sistemului.

    O cretere a eficienei programrii s-a obinut prin nlocuirea formei simbolice binare a limbajului main, cu forma simbolic octal sau forma simbolic hexazecimal, astfel prin reducerea numrului de caractere dintr-un cuvnt, simplificndu-se sarcina de programare a aplicaiilor. Efectuarea ntr-un sistem de calcul a unui program surs realizat n forma simbolic octal sau hexazecimal, impune conversia sa ntr-un program obiect ale crui cuvinte binare s se

  • 1-2

    depun n memoria sistemului n care se opereaz, sarcini ce se realizeaz automat cu un program special, rezident n memoria sistemului i numit n cazul conversiei din forma simbolic octal ncrctor octal, iar n cazul conversiei din forma simbolic hexazecimal ncrctor hexazecimal.

    Dificultatea programrii cu limbaje de programare n formele simbolice octal i hexazecimal a condus la un nou limbaj de programare, ntr-o nou form simbolic, numit form simbolic de asamblare, n care notaia fiecrei instruciuni de comand a unitii centrale de operare conine dou cmpuri, dintre care primul, numit mnemonic, indic sugestiv operaia efectuat n instruciune printr-un grup de litere din denumirea n limba englez a operaiei din instruciune, iar al doilea cmp, numit operand sau adres, indic mrimea operanzilor din instruciune, sau locaiile din sistem unde aceti operanzi se gsesc.

    Definiie Totalitatea instruciunilor de comand a unei uniti centrale de operare, exprimate n forma

    simbolic de asamblare se numete limbaj de asamblare.

    Pentru a efectua ntr-un sistem de calcul un program surs n limbaj de ansamblare, acest program trebuie convertit ntr-un program obiect ale crui cuvinte binare s fie depuse n locaiile sistemului, sarcini ce se realizeaz automat cu un program special, rezident n memoria sistemului i numit program de asamblare, ori simplu asamblor. Instruciunile limbajelor de programare ce corespund formelor simbolice binar, octal, hexazecimal i de ansamblare, fiind doar reprezentri simbolice ale instruciunilor de comand ale unitii centrale de operare, vor specifica i registrele folosite din unitatea central de operare, astfel c programarea cu asemenea limbaje impune programatorului s gestioneze registrele unitii centrale de operare ale crei arhitectur intern i funcionare trebuie s le cunoasc. Fiecare tip de unitate central de operare dispune de limbaje proprii de programare n formele simbolice binar, octal, hexazecimal i de ansamblare i ca urmare un program realizat ntr-un asemenea limbaj al unui tip de unitate central de operare, nu poate fi efectuat ntr-un sistem de calcul coninnd alt tip de unitate central de operare, spunndu-se c limbajele de programare n formele simbolice binar, octal, hexazecimal i de asamblare nu au portabilitate. Necesitea unor limbaje de programare ce s aib portabilitate i s fie mai accesibile unui utilizator, a condus la crearea de noi limbaje de programare formate din instruciuni complexe, diferite de cele de comand ale unitii centrale de operare i independente de arhitectura intern i funcionarea unitii centrale de operare, numite limbaje de progamare de nalt nivel. Astfel de limbaje de programare sunt: BASIC, FORTRAN, COBOL, C++, etc. Pentru efectuarea ntr-un sistem de calcul a unui program surs realizat ntr-un limbaj de programare de nalt nivel, se impune, att conversia programului surs ntr-un program obiect format din instrunciuni de comand ale unitii centrale de operare din sistemul de calcul n care se opereaz, ct i depunerea cuvintelor binare ale programului obiect n memoria sistemului. Aceste sarcini, de conversie i depozitare, sunt efectuate automat cu un program rezident n memoria sistemului numit compilator i despre care se spune c realizeaz o compilare. Realizarea conversiei instruciunilor unui limbaj de programare de nalt nivel, caracterizat prin portabilitate, n instruciuni de comand ale unitii centrale de operare din sistemul de calcul folosit, impune compilatorului s preia gestionarea registrelor interne ale unitii centrale de operare, programul compilator fiind astfel dependent de tipul unitii centrale de operare folosite. O instruciune a unui limbaj de programare de nalt nivel fiind mai complex dect o instruciune de comand a unitii centrale de operare, va fi convertit de compilator n mai multe instruciuni de comand a unitii centrale de operare, dintre care unele nu au nici un efect n sarcina de efectuat. De aceea, programul obiect obinut prin compilarea unui progam surs realizat cu un limbaj de programare de nalt nivel va fi mai mare dect n cazul realizrii programului cu un limbaj de programare format din instruciuni de comand a unitii centrale de operare, cum sunt limbajele de programare n formele simbolice binar, octal, hexazecimal i de asamblare. Din aceast cauz, ntr-un sistem de calcul timpul de efectuare a unei sarcini programat ntr-un limbaj de programare de nalt nivel va fi mai mare dect n cazul programrii sarcinii direct ntr-un limbaj

  • 1-3

    de programare ntr-una din formele simbolice binar, octal, hexazecimal, sau de asamblare, adic ntr-un limbaj de programare la nivelul unitii centrale de operare. Indiferent de limbajul de programare folosit, conversia unui program surs n program obiect se realizeaz cu un progam special de conversie corespunztor limbajului de programare folosit i care va ocupa o parte a memoriei sistemului, fapt ce reduce capacitatea de memorie aflat la dispoziia programatorului. n afara conversiei propriuzise, programelor de conversie li se pot implementa (prevedea) i efectuarea altor sarcini, ceea ce duce la creterea mrimii i complexitii acestor programe. Dintre programele de conversie amintite, un asamblor poate necesita, dup complexitatea sa, o zon de memorie de 2... 16 kilolocaii, n timp ce un compilator necesit peste 32 kilolocaii. Din considerentele prezentate mai sus, se recomand ca pogramarea n limbaj de asamblare s fie utilizat n sisteme de calcul de capacitate redus, pentru comenzi n timp real ce necesit rezolvri rapide, n aplicaii de serie mare (pentru economie de circuite de memorie) i n aplicaiile necesitnd multe operaii de transfer i puine calcule, n timp ce programarea n limbaje de nalt nivel se recomand n sistemele de mare capacitate, n aplicaiile cu multe calcule, n aplicaiile de serie mic unde preul de cost nu conteaz i cnd se dispune deja de programe performante de nalt nivel. Se tinde spre generalizarea limbajelor de nalt nivel prin creterea capacitii circuitelor de memorie i a vitezei de operare a unitilor centrale de operare integrate numite microprocesoare i prin apariia de limbaje de pogramare de nalt nivel, performante.

  • 2-1

    ASAMBLOARE

    TIPURI DE ASAMBLOARE Dup modul n care opereaz i dup sarcinile suplimentare pe care le execut un asamblor,

    se deosebesc urmatoarele tipuri de asambloare: Cross-asamblorul, este un program de asamblare prin care se realizeaz conversia unui

    program surs realizat n limbaj de asamblare al unui tip de unitate central de operare, ntr-un program obiect exprimat n limbajul main al tipului de unitate central de operare folosit n sistemul de calcul n care se opereaz. Cross-asamblorul realizeaz portabilitatea unui limbaj de asamblare.

    Auto-asamblorul, numit i asamblor rezident, este programul de asamblare care opereaz ntr-un sistem de calcul asupra programelor realizate in limbajul de asamblare al unitii centrale de operare din sistemul de calcul pe care se opereaz.

    Macro-asamblorul, este programul de asamblare care permite ca la programarea n limbaj de asamblare, programatorul s poat defini, n cadrul oricrui program, noi instruciuni n limbaj de asamblare, numite macro-instruciuni, pe care apoi s le foloseasc n realizarea programului.

    Meta-asamblorul, este un program de asamblare ce deservete mai multe tipuri de uniti centrale de operare i opernd deci cu mai multe limbaje de asamblare.

    Asamblorul cu o singur trecere, este programul de asamblare care opereaz printr-o singur explorare asupra unui program surs n limbaj de asamblare. Acest tip de asamblor trebuie s rezolve problema notaiilor din programul n limbaj de asamblare i a generrii programului obiect corect, printr-o singur explorare a programului surs n limbaj de asamblare.

    Asamblorul cu dubl trecere, este programul de asamblare care acioneaz asupra unui program surs n limbaj de asamblare, prin dou explorri succesive, la prima trecere identificndu-se i definindu-se notaiile simbolice folosite, iar la a doua trecere nlocuindu-se notaiile cu valorile pe care le definesc i generndu-se programul obiect corect.

    Micro-asamblorul, numit i asamblor de microprograme, este un program utilizat pentru redactarea microprogramelor, care, nscrise n memoria de comand a unei uniti centrale de operare, stabilesc modul de efectuare a instruciunilor de comand a unitii centrale de operare.

    CARACTERISTICILE UNUI ASAMBLOR Un asamblor impune ca instruciunile dintr-un limbaj de asamblare s fie divizate n

    urmtoarele zone, numite cmpuri: cmpul etichet, cmpul mnemonic, cmpul operand i cmpul comentariu. Delimitarea cmpurilor dintr-o instruciune n limbaj de asamblare se realizeaz cu urmtoarele semne separatoare:

    : = separ cmpurile etichet i mnemonic; (= spaiu alb) = separ cmpurile mnemonic i operand; , = separ doi operanzi din cmpul operand; ; = separ cmpurile operand i comentariu. Cmpul etichet este primul cmp dintr-o instruciune n limbaj de asamblare, completarea

    acestiu cmp nefiind ns obligatorie. Acest cmp poate conine o notaie simbolic, numit etichet, creia asamblorul i atribuie ca valoare adresa locaiei de memorie n care se afl primul cuvnt al instruciunii numit cuvnt instruciune.

    Deoarece, notaiile etichetelor contribuie la documentarea unui program, a crui rapid urmrire i nelegere o uureaz, se recomand folosirea de notaii sugestive pentru etichete. Astfel, prima instruciune dintr-un grup de instruciuni ce realizeaz o temporizare, va primi eticheta TIME .

    Pentru stabilirea notaiilor etichetelor se recomand: s nu se utilizeze ca etichete notaiile simbolice de instruciuni, deoarece aceste notaii fie

    creaz confuzie, fie nu sunt luate n consideratie de asamblor; s nu se utilizeze pentru etichete notaii cu un numr de caractere mai mare dect cel admis,

    deoarece asamblorul va elimina, de la nceputul etichetei, caracterele suplimentare, existnd

  • 2-2

    posibilitatea ca noua etichet rezultat prin eliminare de caractere, fie s coincid cu o alta, genernd eroare, fie s nceap cu un caracter nterzis de asamblor;

    s se evite utilizarea n notaiile etichetelor a caracterelor speciale numerice i alfanumerice ori a literelor mici, recomandndu-se doar folosirea majusculelor i a cifrelor;

    notaia fiecrei etichete s nceap cu o liter mare, dar diferit de I, O, Z. Folosirea de etichete la realizarea unui program n limbaj de asamblare ofer urmtoarele

    avantaje: o etichet atribuit unei instruciuni permite eeperarea uoar a instruciunii n cadrul

    programului; dac se atribuie alt valoare unei etichete, asamblorul va efectua automat modificarea n

    toate instruciunile din program, ce conin acea etichet; asamblorul poate translata un ntreg program ntr-o alt zon a memoriei, doar prin

    adugarea unei constante la fiecare etichet din program; etichetarea sugestiv a primei instruciuni dintr-un program, etichet reprezentnd titlul

    programului, permite o bun arhivare a programului ntr-o blibiotec de programe; folosirea etichetelor uureaz munca de programare, prin faptul c nu mai trebuie calculate

    adresele locaiilor de memorie n care urmeaz a se depune cuvintele programului. Cmpul mnemonic al unei instruciuni n limbaj de asamblare, indic operaia efectuat n

    nstruciune printr-un grup de litere provenit din denumirea operaiei n limba englez. Cmpul comentariu este admis de toate asambloarele, comentariile neavnd nici un efect n

    obinearea programului obiect. Rolul comentariilor este doar de a permite uoara nelegere a programelor.

    Pentru realizarea de comentarii eficiente se recomand: comentariile s fie scurte, precise i fr abrevieri; n comentariu se va arta funcia ndeplinit n aplicaie i nu modul cum unitatea central

    de operare execut instruciunile; se vor comenta punctele cheie ale programului i instruciunile a cror semnificaie nu este

    evident; comentariile se fac pe instruciuni i pe secvene de instruciuni; se vor comenta detaliile semnificative. Cmpul operand, numit i cmp adres, este cmpul al crui coninut este lsat la dispoziia

    programatorului, asamblorul impunnd n acest cmp urmtoarele: a) Registrele interne ale unitii centrale de operare s fie indicate printr-o notaie impus; b) Un numr ce reprezint un operand, sau o adres, poate fi indicat ntr-o instruciune n

    limbaj de asamblare n sistemele binar, octal, hexazecimal, indicate prin literele B, Q i respectiv H adugate la sfritul numrului, n timp ce un numr neurmat de o liter este interpretat de asamblor ca exprimat n baza zece. Deoarece asamblorul impune ca un numr s nceap obligatoriu cu o cifr, forma hexazecimal de exprimare a unui numr, al crui prim caracter este o liter, va fi obligatoriu precedat de cifra 0 (zero).

    Exemplu ADD 3 ; AA+ 103 =A+ 200000011 LD A,47H ; A 1647 = 2.00 00 1111 LD A,0F0H ; A 16F0 = 2.01 11 0001 LD A,147Q ; A 8147 = 21000 . .1111 SUB 01100000B ; AA - 201100000

    c) Un operand sau o adres pot fi expimate prin coduri ASCII (= American Standard Code for Interchange Information) ale unor caractere, fapt recunoscut de asamblor prin ncadrarea grupului de caractere ASCII ntre apostrofuri.

    Exemplu LD H,B ; Hcod ASCII al literei B

    d) Un operand sau o adres pot fi indicate printr-o notaie simbolic, asamblorul impunnd ca

  • 2-3

    notaia folosit s fie definit printr-o pseudoinstruciune specific, anterior instruciunii unde-i folosit.

    Exemplu NAME : EQU 5 ; Se definete NAME = 105 = 200000101

    LD B, NAME ; BNAME = 105 = 200000101 e) Un operand poate fi indicat prin adresa locaiei unde se afl, adres dat de rezultatul

    relaiei de adunare ntre un numr, numit deplasament, i coninutul, simbolizat prin $, al numrtorului de locaii al asamblorului, numrtor ce are o funcionare similar cu a registrului numrator de adrese PC (=Program Counter) al unitii centrale de operare. Deplasamentul ns, trebuie indicat ntr-o form acceptat de asamblor.

    Exemplu LD ($+0E1H), A ; cuvntul din registrul A e ncrcat n locaia a crei ; adres este rezultatul expresiei: $+ 16E1 f) Un operand sau o adres pot fi indicate ca rezultat al unei expresii ntre mrimi exprimate

    ntr-o form acceptat de asamblor, mrimile i rezultatul avnd n binar o reprezentare prin 16 caractere binare. ntr-o expresie n care intervin mai multe mrimi, asamblorul va efectua nti operaiile dintre paranteze, restul operaiilor fiind efectuate ntr-o ordine de prioritate impus de asamblor, operaiile cu aceiai prioritate fiind efectuate n ordinea n care apar de la stnga spre dreapta espresiei. Punerea unei ntregi expresii ntre paranteze semnific ns coninutul locaiei de memorie a crei adres este chiar rezultatul expresiei.

    Operaiile pe care asamblorul ZILOG Z80 le permite n cmpul operand i ordinea lor de prioritate, sunt date n tabelul urmtor:

    OPERAIE PRIORITATE DESCRIERE + -

    .NOT. .RES.

    1

    Incrementare Decrementare NU logic REZULTAT

    ** 2 Exponeniere *

    / .MOD. .SHR. .SHL.

    3

    nmulire mprire MODULO Decalaj logic la dreapta Decalaj logic la stnga

    + -

    4 Adunare Scdere .AND. 5 I logic .OR.

    .XOR. 6 SAU logic SAU EXCLUSIV logic

    =

    .GT. , .LT. .UGT. , .ULT.

    7 Egalitate > , < ntre numere fr semn > , < ntre numere cu semn

    Observaii 1) Operaia .RES. semnific suprimarea depirii n cazul numerelor cu semn n vederea

    pstrrii nealterate a semnului. 2) Operaiile .SHL. , .SHR. ce realizeaz decalarea logic la stnga, respectiv la dreapta vor

    fi indicate n forma

  • 2-4

    1 2.SHL. n ,n n care 1n este numrul decalrilor de efectuat, iar 2n este numarul ai crui bii sunt decalai. Aceste decalri sunt numite logice deoarece bitul de pondere maxim dintr-o decalare cu o poziie la dreapta i bitul de pondere minim dintr-o decalare cu o poziie la stnga, rmnnd liberi n urma decalrii, vor fi pui n 0 logic.

    3) Rezultatul generat ntr-o operaie de comparare va fi unul din calificative FALS, ori ADEVRAT, calificativul FALS fiind indicat printr-un rezultat cu toi biii n 0 logic, iar rezultatul ADEVRAT avnd toi biii n 1 logic.

  • 3-1

    PSEUDOINSTRUCIUNI

    Un limbaj de asamblare al unei uniti centrale de operare este format din instruciunile de comand a unitii centrale, i dintr-un grup special de instruciuni, numite pseudoinstruciuni, prin care se comanda asamblorului, i nu unitii centrale de operare, efectuarea unor operatii absolut necesare n obinerea programului obiect corect. O pseudoinstruciune nu are o codificare binar proprie i, spre deosebire de o instruciune de comand a unitii centrale de operare, nu este convertit n cuvinte binare.

    Limbajul de asamblare al microprocesorului Intel 8080, conine urmtoarele pseudoinstruciuni:

    a) Pseudoinstruciunea cu simbolizarea: ETICHET: ORG adres; comentariu ,

    comand asamblorului s atribuie notaiei din cmpul etichet, ca valoare, numrul de adres indicat n cmpul operand ntr-o form acceptat de asamblor, i s iniializeze numrtorul de locaii al asamblorului cu numrul de adres din cmpul operand, ce reprezint chiar adresa primei locaii a zonei de memorie n care se va depune programul ce urmeaz, operaie numit de iniializare, i indicat cu mnemonica ORG dup denumirea ORIGIN dat acestei operaii n limba englez.

    ntr-un asamblor, numrtorul de locaii, a crui funcionare e similar cu a registrului numrator de adrese PC (=Program Counter) al unitii centrale de operare, va indica adresa locaiei de memorie alocat depunerii fiecrui cuvnt al programului obiect.

    ntr-un program n limbaj de asamblare, acolo unde se impune trecerea la o nou zon de memorie a crei prima adres este diferit de cea coninut n numrtorul de locaii al asamblorului, se va introduce o nou pseudoinstruciune cu mnemonica ORG.

    b) Pseudoinsrtuciunea cu simbolizarea: ETCHET: EQU operand; comentariu ,

    comand asamblorului s atribuie notaiei din cmpul etichet valoarea indicat n cmpul operand ntr-o form acceptat de asamblor, operaie numit de echivalen i indicat cu mnemonica EQU stabilit dup denumirea EQUATE dat acestei operaii n limba englez.

    ntr-un program, unei etichete i se poate atribui o valoare printr-o pseudoistruciune de echivalent, doar o singur dat, orice redefinire ulterioar a notaiei etichetei nefiind luat n consideraie de asamblor.

    c) Pseudoinstruciunea cu simbolizarea: ETICHET: SET operand; comentarii ,

    comand asmblorului s atribuie notaiei din cmpul etichet valoarea indicat n cmpul operand ntr-o form acceptat de asamblor, operaie numit de setare i avnd mnemonica SET ce reprezint denumirea dat acestei operaii n limba englez. Pseudoinstruciunea de setare acioneaz ca i cea de echivalen, de care se deosebete ns prin aceea c ntr-un program o aceiai etichet poate fi redefinit ori de cte ori este nevoie.

    n limbajul de asamblare al microprocesorului Z80, operaia de setare este numit definire etichet, iar pseudoinstruciunea echivalent celei de setare are simbolizarea:

    ETICHET: DEFL operand; comentarii , n care mnemonica DEFL a fost stabilit dup denumirea DEFINE LABEL din limba englez a operaiei definire etichet.

    d) Pseudoinstruciunea cu simbolizarea: ETICHET: DS operand; comentarii ,

    comand asamblorului ca, ncepnd cu adresa aflat n numrtorul de locaii al asamblorului, s rezerve attea locaii succesive de memorie, cte specific numrul indicat n cmpul operand ntr-o form acceptat de asamblor, i s atribuie notaiei din cmpul etichet,ca valoare, adresa primei locaii rezervate, operaie numit difinire stocare i avnd mnemonica DS stabilit dup denumirea DEFINE STORAGE date acestei operaii n limba englez.

    n locaiile rezervate cu aceast pseudoinstruciune, se vor depune ulterior date.

  • 3-2

    e) Pseudoinstruciunea cu simbolizarea: ETICHET: DB operand; comentarii ,

    comand asamblorului s depun cei maxim 8 octei indicai n cmpul operand ntr-o form acceptat de asamblor, i n ordinea n care apar de la stnga spre dreapta cmpului operand, n locaii succesive de memorie, ncepnd cu adresa aflat n numrtorul de locaii al asamblorului, i s atribuie notaiei din cmpul etichet, ca valoare, adresa de depozitare a primului octet, operaie numit definire octet i avnd mnemonica DB stabilit dup denumirea DEFINE BYTE dat operaiei n limba englez.

    f) Pseudoinstruciunea cu simbolizarea: ETICHET: DW OPERAND; comentarii ,

    comand asamblorului s depun cele maxim 8 cuvinte din cmpul operand, fiecare cuvnt format din cte doi octei, indicai ntr-o form acceptat de asamblor, ncepnd cu octetul de pondere minim, n locaii succesive de memorie, pornind de la adresa aflat n numrtorul de locaii al asamblorului i n ordinea n care octeii apar de la stnga spre dreapta cmpului operand, i s atribuie notaiei din cmpul etichet, ca valoare, adresa de depozitare a primului octet, operaie numit definire cuvnt i avnd mnemonica DW, dup denumirea DEFINE WORD dat acestei operaii n limba englez.

    g) Pseudoinstruciunea cu simbolizarea: ETICHET: END operand; comentarii ,

    semnaleaz sfritul programului surs n limbaj de asamblare i comand asamblorului s atribuie notaia din cmpul etichet, ca valoare, adresa indicat n cmpul operand ntr-o form acceptat de asamblor i s ncarce aceast adres n registrul numarator de adrese PC al microprocesorului, astfel trecndu-se la executarea programului pornind de la aceast adres. Necompletarea cmpului operand semnific faptul c adresa de nceput a programului este zero.

    Observaii (1) Cnd n cmpul operand al unei pseudoinstruciuni, sau instruciuni, se folosete o notaie,

    aceast notaie trebuie definit anterior n program cu o pseudoinstruciune specific. (2) ntr-un program o adres neetichetat va fi indicat printr-o expresie de adunare ori

    scdere a unei constante dintr-o etichet din program, astfel reducnd numrul de etichete folosite ce pot fi sugestive.

    (3) Un program n limbaj de asamblare este cuprins ntre pseudoinstruciunile ORIGIN i END.

    (4) Orice limbaj de asamblare conine pseudoinstruciunile prezentate, eventual cu alte mnemonice. Astfel, pseudoinstruciunile limbajului de asamblare al microprocesorului ZILOG Z80 sunt:

    (a1) ETICHET : ORG adresa; comentariu (b1) ETICHET : EQU operand; comentariu (c1) ETICHET : DEFL operand; comentariu (d1) ETICHET : DEFS operand; comentariu

    Mnemonica DEFS (= DEFINE STORAGE) indic operaia definire stocare. (e1) ETICHET : DEFB operand; comentariu

    Mnemonica DEFB (=DEFINE BYTE) indic operaia definire octet, cmpul operand coninnd un singur octet.

    (f1) ETICHET : DEFW operand; comentariu Mnemonica DEFW (=DEFINE WORD) indic operaia definire cuvnt, cmpul operand coninnd un singur cuvnt indicat ncepnd cu octetul de pondere minim.

    (g1) ETICHET: END operand; comentariu Mnemonica END indic sfaritul programului surs n limbaj de asamblare.

    Modul de folosire a pseudoinstruciunilor la programarea n limbaj de asamblare este prezentat n urmtorul

  • 3-3

    Exemplu

    ETICHET: SIMBOLIZARE; (Mnemonic+Operand)

    COMENTARII

    CANRAS: ORG 1000H ; CANRAS=1000H = adresa primului cuvnt din program i titlul programului.

    CONST: EQU 0F0H; CONST=F0H= valoare ce nu poate fi redefinit NAME: SET B; NAME=Cod ASCII al literei B=valoare ce poate fi

    redefinit DB 10H ; CANRAS=(1000H) 10H DW 0010H ; (1001H) 00H ; (1002H)10H

    CLOCK: DS 1 ; rezervare locaie cu adresa 1003H=CLOCK MOV A,C ; AC i (1004H)MOV CALL 00,51H ; apel la adresa 5100H

    (1005H)CALL ; (1006H)00H ; (1007H)51H BLOK: ORG 5100H ; programul se continu la adresa 5100H

    ADI NAME ; AA+NAME = A+B (5100H)ADI ; (5101H)B=NAME

    .

    END 1004H ; PC1004H ; execuia programului ncepe de la adresa 1004H, iar programul surs s-a ncheiat.

    MACROINSTRUCIUNI

    ntr-un program n limbaj de asamblare, un acelai grup de instruciuni se poate repeta de mai multe ori, la fiecare repetare ns o parte dintre operanzi modificndu-i valorile. Pentru simplificarea programrii n limbaj de asamblare, asambloarele puternice, numite macro-asambloare, ofer programatorului posibilitate definirii ntr-un program a unui grup repetitiv de instruciuni, n care operanzii variabili numii parametri sunt reprezentai cu notaii simbolice, printr-o instruciune distinct, numit macroinstruciune, cu alt mnemonic i al crei cmp operand conine enumerarea notaiilor parametrilor.

    Grupul repetitiv de instruciuni, pentru a fi definit ca o macroinstruciune, se ncadreaz ntre dou pseudoinstruciuni prevzute limbajului de asamblare, una de nceput avnd simbolizarea:

    ETICHET: MACRO enumerare notaii parametri; comentarii , ce informeaz asamblorul c instruciunile ce urmeaz se definesc ca o macroinstruciune al crei mnemonic este dat de notaia din cmpul ETICHET i n al crei cmp operand se enumer notaiile parametrilor, i una de sfrit avnd simbolizarea:

    ETICHET: ENDM; comentarii , i indicnd asamblorului sfritul definirii macroinstruciunii. Se spune c s-a realizat definirea macroinstruciunii.

    Astfel, n program, n locul repetrii grupului de instruciuni pentru valori determinate ale parametrilor, se introduce macroinstruciunea cu mnemonica stabilit la definirea sa i n al crei cmp operand sunt enumerate valorile parametrilor exact n ordinea n care apar la definirea macroinstruciunii. Se spune c n program se realizeaz referirea la macroinstruciunea definit.

    n procesul asamblarii, pentru obinerea formei binare a programului obiect, fiecare macroinstruciune din program va fi nlocuit prin instruciunile din componena sa n care parametrii au valorile indicate n macroinstruciune. Se spune c la asamblare se realizeaz dezvoltarea macroinstruciunilor din programul surs.

    Programarea cu macroinstruciuni implic deci urmtoarele trei etape: definirea macroinstruciunilor, realizat la nceputul unui programsurs n limbaj de asamblare, referirea la macroinstruciunile definite n procesul de realizare a programuuil surs i dezvoltarea

  • 3-4

    macroinstruciunilor din programul surs, n procesul asamblrii. Programarea cu macroinstruciuni ofer urmtoarele avantaje: - programul surs cu macroinstruciuni este mai scurt; - macroinstruciunile reprezint noi instruciuni pentru un limbaj de asamblare; - definirea corect a macroinstruciunilor reduce considerabil probabilitatea comiterii unei

    erori la programare. La programarea cu macroinstruciuni, dei programele surs obinute sunt mai scurte,

    programele obiect rezultate n urma asamblrii au aceiai mrime ca n cazul progamrii fr macroinstruciuni.

    Observaie Spaiul de memorie ocupat de un program va fi mai mic dac macroinstruciunile ce definesc

    un grup mai mare de 15 instruciuni vor fi nlocuite prin subprograme.

    PROGRAM SURS CU MACROINSTRUCIUNI PROGRAM DEZVOLTAT TIME : MACRO NAME, FLY ; Instr. M1 ; definire macroinstruciune, cu Instr. M2 ; parametrii NAME i FLY Instr. M3 ; ENDM ; Instr. P1 ; Instr. P1 Instr. P2 ; Instr. P2

    TIME 10,20 ; referire la macroinstruciune, cu ; NAME=10, FLY=20, ce va ; fi dezvoltat n instruciunile ; componente, la asamblare

    Instr. M1 Instr. M2 Instr. M3

    Instr. P3 ; Instr. P3 Instr. P4 ; Instr. P4

    TIME 10H,20H ; referire la macroinstruciune, cu ; NAME=10H, FLY=20H, ce va ; fi dezvoltat n instruciunile ; componente, la asamblare

    Instr. M1 Instr. M2 Instr. M3

    Instr. P5 Instr. P5

  • 4-1

    ADUNAREA A DOU NUMERE DIN 16 CIFRE ZECIMALE

    Aplicaia const n adunarea a dou numere din cte 16 cifre zecimale, fiecare numr fiind situat n opt locaii succesive de memorie ncepnd cu cifra de pondere minim, iar fiecare locaie coninnd cte dou cifre zecimale. Microprocesorul Intel 8080 folosit, opernd cu date din opt bii, rezult c adunarea acestor numere necesit opt etape successive. n fiecare etap se vor aduna octeii de aceeai pondere ai numerelor i cifra de transport generat din etapa anterioar.

    Aceast sarcin va conine o faz de iniializare a registrelor folosite din microprocesor, registre ce sunt indicate mai jos cu precizarea destinaiei lor.

    Numrarea celor opt etape de adunare folosete registrul C ca numrtor prin decrementare a etapelor aplicaiei.

    Aceast sarcin, fiind descris ca un subprogram, va realiza cu primele instruciuni salvarea n stiv a registrelor afectate i care vor fi refcute din stiv cu ultimele instruciuni din program.

    Algoritmul descris prin organigram i programul sarcinii sunt prezentate mai jos.

    Adres ETICHET : SIMBOLIZARE ; COMENTARII Nr.cicluri ORG 1080H; Informare asamblor c adresa

    de nceput este 1080H: numrtor locaii 1080H.

    1080 H 1081 H

    SUM: PUSH PSW; PUSH B;

    Salvare n stiv a registrelor afectate.

    3c 3c

    1082 H 1084 H

    MVI C,8; XRA A;

    Numrare etape cu registrul C Anulare A i CY printr-o operaie SAU EXCLUSIV.

    2c 1c

    1085 H 1086 H

    REPEAT: LDAX D; ADC M;

    Adunarea n binar a octeilor de aceeai pondere.

    2c 2c

    1087 H DAA; Corecie rezultat. 1c 1088 H MOV M,A; Salvare rezultat n locul

    primului operand care astfel se distruge.

    2c

    1089 H 108A H

    INX H; INX D;

    Generare adrese n pregtirea etapei urmtoare.

    1c 1c

    108B H 108C H

    DCR C; JNZ REPEAT;

    Numrare etap ncheiat afectnd Z=0 dac sarcina nu s-a terminat, cnd se reia o nou etap de la eticheta REPEA .

    1c 3c

    108F H 1090 H

    POP B; POP PSW;

    La terminarea sarcinii, cnd Z=1, se refac din stiv registrele afectate BC i PSW.

    3c 3c

    H Adres octet din primul operand L

    D Adres octet din al 2-lea operand E

    B Numrtor de etape C

    A S Z - AC - P - CY F (=PSW)

  • 4-2

    Adres ETICHET : SIMBOLIZARE ; COMENTARII Nr.cicluri 1091 H RET; Revenire n programul

    apelant. 3c

    END 1080H; Informare asamblor c programul s-a sfrit i s se treac la execuia sa prin transferul: PC 1080H.

    Total: 122c

    Fig.1 Organigrama aplicaiei SUM

    Teme 1. S se completeze programul de la rubrica ADRES i pentru fiecare instruciune a

    programului s se indice att tipurile de adresare folosite, ct i descrierea sintetic. 2. S se determine timpul T de efectuare a programului tiind c frecvena tactului sistemului

    este f=2MHz i considernd c fiecare ciclu de maina este efectuat n trei stri. 3. Rolul memoriei stiv.

    START

    PUSH PSW,B C8 AA A; ( CY=0, A=0)

    A(DE) AA+(HL)+CY DAA (HL)A

    HLHL+1 DEDE+1

    CC-1

    Z=1?

    POP B, PSW RET

    STOP

    Iniializare registre microprocesor i salvarea registrelor afectate n stiv.

    Adunarea octeilor cu aceeai pondere i salvare rezultat n locul primului operand.

    Pregtirea urmtoarei etape.

    Numrare etap ncheiat.

    Sarcin terminat?

    Refacerea din stiv a registrelor afectate.

    Nu

    Da

    SUM:

    REPEAT:

  • 4-3

    4. Salvarea registrelor n memoria stiv la nceput de subrutin. 5. Registrele de date ale microprocesorului Intel 8080 : B, C, D, E, H, L, M = (HL), A; rolul

    registrului M=(HL) n codificarea unei instruciuni. 6. PSW (= Processor Status Word ), notat i AF. Rolul bistabilelor de condiie.

    S Z - AC - P - CY PSW 7 PSW6 PSW5 PSW4 PSW3 PSW2 PSW1 PSW 0

    Low Byte of PSW (=Processor Status Word) F (=Flag Flip-Flop Register)

    7. Ajustarea zecimal a unui rezultatului din registrul accumulator A. 8. Afectarea bistabilului de condiie de transport CY n instruciunile aritmetice i logice. 9. Operarea n complement fa de 2.

  • 5-1

    NMUIREA A DOU NUMERE DE 8 BII

    Programul de nmuire a dou numere de 8 bii va fi realizat dup organigrama oinut pe baza alocrii registrelor interne de date ale microprocesorului Intel 8080 i a algoritmului evideniat prin urmtorul exemplu de nmulire a dou numere din cte 3(trei) bii fiecare:

    Denmulit . 1 1 0 nmulitor .. 1 0 1 1 1 0 0 0 0 1 1 0 0 Rezutat. 1 1 1 1 0

    Pentru a evidenia etapele identice n algoritmul operaiei de nmulire i desfurarea fiecrei etape, exemplul prezentat se pune n urmtoarea form:

    1 1 0 ..Denmulit 1 0 1 ..nmulitor Etapa 1 : produs parial 1 (iniial nul)...0 0 0 + 1 1 0 rezultat parial 1.....................1 1 0 Etapa 2 : produs parial 2.....................1 1 0 + 0 0 0 0 rezultat parial 2..................... 0 1 1 0 Etapa 3 : produs parial 3......................0 1 1 0 + 1 1 0 0 rezultat parial 3...................... 1 1 1 1 0 = Rezultat Final

    Acest exemplu evideniaz c operaia de nmulire a dou numere binare are loc n attea etape identice ca desfurare, ci bii are nmuliorul. n fiecare etap se stabilete starea definitiv a cte unui bit al rezultatului cutat, ncepnd de la bitul de pondere minim, i doar n etapa final se stabilete starea definitiv pentru biii de pondere maxim al cror numr este egal cu numrul de bii ai denmulitului. ntr-o etap se formeaz un produs parial deplasnd cu o poziie la dreapta rezultatul din etapa precedent, la care adunnd, sau nu, denmuliul (dup cum bitul implicat din nmulitor este n starea logic 1, respectiv 0) se genereaz rezultatul parial al etapei.

    Se pornete de la un produs parial iniial nul n prima etap, iar rezultatul ultimei etape este chiar rezultatul cutat.

    n efectuarea acestei sarcini de nmulire se folosesc registrele microprocesorului Intel 8080 indicate n fig.1 cu precizarea destinaiei lor, modul lor de folosire fiind evideniat n organigrama aplicaiei, ce reprezint forma grafic a algoritmului de rezolvare sarcinii de nmulire.

    Sarcina de nmulire este descris ca subprogram, fapt ce impune s se salveze n stiv registrele microprocesorului afectate n subprogram, cu primele instruciuni din subprogram, iar cu ultimele instruciuni ale subprogramului s se refac din stiv aceste registre. Astfel se asigur funcionarea corect a programului apelant n momentul revenirii din subprogramul ncheiat, deoarece registrele microprocesorului au coninutul din momentul apelrii. Salvarea, att a registrelor de date, ct i a celor de adrese, se face n memoria stiv. Un transfer cu memoria stiv implic transferul a doi octei, acest mod de funcionare fiind datorat faptului c memoria stiv a fost conceput iniial doar pentru salvare de numere de adres.

    Coninutul registrului HL este stabilit n programul apelant, anterior apelrii subprogramului. n aceast aplicaie, etapa de inializare este numerotat ca a 9-a etap i de aceea

    numrtorul de etape este iniializat n 9.

  • 5-2

    Fig.1 Alocarea registrelor i organigrama aplicaiei

    START

    STOP

    EE-1

    AA+B

    (HL) B HLHL-1 (HL) C

    POP D,B,PSW RET

    AB

    AC 1RAR CA

    1RAR, BA

    PUSH PSW PUSH B,D B0 E9 C(HL) HL HL+1 D(HL)

    Salvare n stiv

    Iniializare registre P

    CYbitul implicat din nmulitor

    Numrare etap afectnd Z=1 la sfritul sarcinii .

    Sarcin ncheiat ?

    Aprodus parial

    Test bit nmulitor

    Rezultat parial

    Produs parial

    Salvare rezultat

    Refacere din stiv

    CY=1?

    Da Nu

    Z=1?

    Nu Da

    MUL :

    CYCLE :

    PASS :

    STOP : AC

    1RAR CA

    Definitivare rezultat.

    D Denmulit Numrtor de etape E

    B Rezultat parial nmulitor C

    A CY 7 6 .. 0

  • 5-3

    Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU

    Nr. cicluri

    ORG 1800H ; Nr. locaii 1800H (=adres de nceput a programului).

    1800 1801 1802

    MUL: PUSH PSW ; PUSH B ; PUSH D ;

    Salvare n stiv a registrelor PSW,B,D n aceast ordine.

    3c 3c 3c

    1803 1805 1807 1808 1809

    MVI B,0 ; MVI E,9; MOV C,M ; INX H ; MOV D,M ;

    B0 E9 CM=(HL)= nmulitor HHL+1 DM=(HL)=denmulit

    2c 2c 2c 1c 2c

    180A 180B

    CYCLE: DCR E ; JZ STOP ;

    Numrare etap cu Z=1 la sfrit sarcin.CYCLE=180AH

    1c 3c

    180E 180F 1810

    MOV A,C; RAR; MOV C,A ;

    Bitul de testat al nmulitorului se transfer n CY.

    1c 1c 1c

    1811 MOV A,B ; Aprodus parial 1c 1812 1815

    JNC PASS ; ADD B;

    Generare rezultat prin adunare dac bit nmulitor este 1.

    3c 1c

    1816 1817 1818

    PASS: RAR ; MOV B,A ; JMP CYCLE ;

    Pregtire etap urmtoare cu generare produs parial i salt la o nou etap.

    1c 1c 3c

    181B 181C 181D

    STOP: MOV A,C; RAR; MOV C,A ;

    Definitivare rezultat n registrul C.

    1c 1c 1c

    181E 181F 1820

    MOV M,B ; DCR H ; MOV M,C ;

    Salvare rezultat din registrul BC, n locul operanzilor.

    2c 1c 2c

    1821 1822 1823 1824

    POP D ; POP B ; POP PSW ; RET ;

    Refacere registre din stiv, dar n ordinea invers a salvrii lor.

    3c 3c 3c 3c

    END ; Sfrit program surs . Total: 55c

    Tem 1. S se completeze programul la rubricile Adres i Nr. cicluri, precum i cu descrierea

    sintetic a instruciunilor. 2. S se estimeze timpul minim de efectuare a programului, dac frecvena tactului

    sistemului este de 2MHz . 3. Rolul registrului M=(HL) n codificarea unei instruciuni. 4. Pentru fiecare instruciune, s se indice tipuri de adresri utilizate.

  • 6-1

    MPRIREA A DOU NUMERE DE OPT BII

    Pentru mprirea a dou numere binare de opt bii se va evidenia algoritmul pe baza analizei unui exemplu , apoi se va construi organigrama prin fixarea registrelor interne folosite din microprocesorul Intel 8080, n final scriindu-se programul de mprire n limbajul de asamblare al microprocesorului Intel 8080.

    Determinarea algoritmului de mprire n binar folosete exemplul de mprire a dou numere binare de patru bii, ce decurge ca n zecimal.

    Pentru exemplul prezentat se poate scrie:

    1110 : 0010 = 0111 + 0000 demprit : mpritor = ct + rest

    Exemplul de mprire pe patru bii poate fi pus n forma:

    1 1 1 0 : 0 0 1 0 = 0 1 1 1 Rest parial iniial .............................. 0 0 0 0 Primul demprit parial 0 0 0 1 - 0 0 0 0 Primul rest parial .................................. 0 0 0 1 Al doilea demprit parial 0 0 1 1 - 0 0 1 0 Al doilea rest parial ................................ 0 0 0 1 Al treilea demprit parial 0 0 1 1 - 0 0 1 0 Al treilea rest parial ................................... 0 0 0 1 Al patrulea demprit parial 0 0 1 0 - 0 0 1 0 Al patrulea rest parial ................................... 0 0 0 0 = Rest final

    Din exemplul prezentat rezult ca operaia de mprire se face ntr-un numr de etape identice ca desfurare, egal cu numrul de bii ai dempritului. n fiecare etap este implicat cte un bit al dempritului ncepnd de la cel de pondere maxim, i al crui rang este acelai cu al bitului ctului a crui stare definitiv se determin.

    Astfel, ntr-o etap intermediar se formeaz din restul parial al etapei anterioare, prin adugarea ca bit de pondere minim a bitului implicat din demprtit, un demprit parial, din care scznd, sau nu, mpritorul (dup cum dempritul parial obinut este mai mare, sau egal, respectiv mai mic dect mpritorul), se va genera restul parial al etapei. Remarcm c n prima etap dempritul parial se obine dintr-un rest parial iniial nul i c restul parial generat n ultima etap reprezint chiar restul final.

    La efectuarea mpririi, registrele folosite din microprocesorul Intel 8080 sunt indicate n fig.1 mpreun cu precizarea destinaiei lor.

    n aceast aplicaie, registrul numrtor de etape, n care la iniializare doar bitul de pondere

    1 1 1 0 : 1 0 = 1 1 1 1 0 = 1 1 1 0 = 1 0 1 0 = =

  • 6-2

    maxim este pus n starea logic 1, realizeaz numrarea unei etape efectuate prin deplasarea coninutului su cu o poziie la dreapta prin bistabilul de transport CY. Astfel, dup a opta etap, bascularea bistabilului de transport n starea CY=1 va indica sfritul operaiei de mprire.

    Se observ de asemenea c ntr-o etap, bitul n starea 1 din registrul numrtor n inel are acelai rang cu al bitului implicat din ct, care astfel poate fi adus n starea logic 1 printr-o operaie logic OR ntre registrul destinat ctului i cel numrtor n inel.

    Aceast operaie este descris prin organigrama i programul prezentate mai jos.

    Fig.1 Alocarea registrelor microprocesorului

    Adres ETICHET: SIMBOLIZARE ; COMENTARIU ORG 1000; Numrtor locaii asamblor 1000 DEMP: EQU 0A1H; DEMP= 0A1H MP: EQU 07H; MP= 07H; EQU= EQUATE= EQUAL

    1000 DIVIDE: XRA A ; AAA=0, DIVIDE= 1000 1001 MOV B,A; BA= 0 1002 MOV L,A; LA= 0 1003 MVI D,80H; D1000.0000B (=80H) 1005 MVI C,DEMP; C DEMP 1007 MVI E, MP; E MP 1009 1010 1011 1012 1013 1014

    LOOP: MOV A, C; RAL; MOV C, A; MOV A, B; RAL; MOV B,A;

    Formare a dempritului parial, rotind registrul BC cu o poziie la stnga ca dou rotiri successive pe opt bii folosind CY i rotind nti registrul C i apoi registrul B (L00P= 1009).

    1015 1016

    CMP E; JC PASS;

    Salt la adresa PASS (=1024) dac: demprit parial < mpritor.

    1019 1020 1021 1022 1023

    SUB E; MOV B, A; MOV A,D; ORA L; MOV L, A;

    Dac demprit parial > mpritor, genereaz rest prin scdere i pune n 1 bitul implicat din CT.

    1024 1025 1026 1027

    PASS: MOV A, D; RRC; MOV D, A; JNC LOOP;

    Numr etapa consumat realiznd CY= 1 la sfrit de sarcin, iar dac CY= 0 salt la adresa LOOP (= 1009)

    END DIVIDE; PCDIVIDE (= 1000)

    H Ct L

    D Numrtor n inel mpritor E

    B Rest Demprit C

    A S Z - AC - P - CY F

  • 6-3

    Fig.2 Organigrama sarcinii de mprire

    Tem 1. Care este timpul de execuie a programului la o frecven a tactului sistemului de 2MHz? 2. S se rescrie aplicaia pentru cazul cnd este tratat ca subprogram.

    START

    AC 1RAL CA AB 1RAL BA

    AAA= 0 B, L A D80H CDEMP EMP

    CMP E

    AA - E BA

    AD 1RRC DA

    AD AAL LA

    Iniializare registre microprocesor

    Formare demprit parial

    demprit - mpritor

    demprit < mpritor?

    Formare demprit parial

    Da

    Nu

    Operaie neterminat ?

    Numrare etap ncheiat.

    Bitul din CT, pus n starea 1.

    STOP

    Da Nu

    CY=1?

    CY=0?

    DIVIDE:

    LOOP:

    PASS:

  • 7-1

    TRANSFER HANDSHAKING

    Aplicaia const dintr-un subprogram de transfer n memoria sistemului cu microprocesor a unui bloc de date din 128 octei, furnizai de un periferic destinat achiziiei de date, subprogramul fiind efectuat printr-o cerere de ntrerupere lansat de periferic cnd toi cei 128 octei sunt gata de transfer. Fiind vorba de un transfer handshaking, canalul de comunicaie ntre periferic i sistemul cu microprocesor este constituit astfel:

    - semnalele de comand END i DA (=Data Acknowledge) sunt emise de microprocesor pe biii de rang 1 i respectiv de rang 0 ai portului de ieire cu adresa 2E hexa;

    - semnalul de control DR (=Data Ready) generat de periferic este transferat prin bitul de rang 0 al portului de intrare cu adresa 3F hexa;

    - transferul celor 128 octei se face prin portul de intrare cu adresa 3E hexa Aceste semnale de sincronizare, utilizate n transferul handshaking de date, a cror forme de

    und sunt reprezentate n fig.1, au urmtoarele semnificaii: - cnd perifericul dispune de toi cei 128 octei, va aplica microprocesorului semnalul INT=1,

    cruia astfel i solicit o ntrerupere temporar a programului n curs de execuie, n vederea efecturii subprogramului mai prioritar, de transfer al blocului de date din 128 octei;

    - la sfritul instruciunii n curs de execuie, microprocesorul, acceptnd cererea de ntrerupere, emite semnalul INTA =0, sub aciunea cruia blocul de control al perifericului transmite microprocesorului prin magistrala de date instruciunea de apel

    RST 4 prin a crei efectuare microprocesorul trece la executarea programului de ntrerupere, plasat de la adresa 39=0027 hexa, i care ncepe cu emiterea semnalului de comand END=0, ce informeaz perifericul c este pregtit pentru recepia unui octet, comanda END=0 fiind pstrat pe toat durata de transferare a celor 128 octei;

    - blocul logic de comanda al perifericului, sub aciunea semnalului INTA =0 i va anula cererea de ntrerupere, a crei deservire tocmai a nceput, prin emiterea semnalului INT=0, iar sub aciunea semnalului END=0, va aplica portului de intrare de date un octet, dup care va emite semnalul de control DR=1 pentru a informa microprocesorul c la portul de intrare de date cu adresa 3E hexa este disponibil o nou dat;

    - programul de ntrerupere supravegheaz permanent semnalul DR, prin citirea portului de intrare cu adresa 2E hexa, i imediat ce se identific semnalul DR=1 programul continu cu citirea datei din portul de intrare cu adresa 3E hexa, dup care se emite ctre logica de control a perifericului semnalul de comand DA=1, ce determin perifericul s emit semnalul DR=0 pn cnd se aplic portului de intrare de date cu adresa 3E hexa urmtorul octet de transferat;

    - fiecare octet transferat este numrat i dup transferarea celui de al 128-lea octet se ncheie aplicaia de ntrerupere prin emiterea ctre periferic a semnalului de comand END=1.

    Fig.1 Semnalele de sincronizare asociate transferului handshaking

    Aceast sarcin are alocate prin instruciunea de apel su simbolizarea RST 4

    t END

    DR (=Data Ready)

    DA (=Data Acknowledge)

  • 7-2

    doar 8 locaii de memorie, ncepnd cu adresa 32 (=48), spaiu total insuficient aplicaiei i din care se trece, prin ramificare de apel, n zona din memoria sistemului unde se continu programul.

    Aplicaia va ncepe cu validarea funcionrii n ntreruperi a microprocesorului i iniializarea registrelor folosite din microprocesor, registre ce sunt indicate n fig.3, cu precizarea destinaiei lor.

    Fig.2 Organigrama aplicaiei de transfer handshaking

    START START

    EI

    CALL RELOC

    RET

    Salvare n stiv: PSW, HL, BC

    Iniializare: END0 C128 HLADDR

    Numrare etap: CC-1

    Preluare octet: AInput Byte HLA

    Impuls DA: DA1 DA0

    STOP

    Nu. Da

    Sarcin ncheiat?

    Nu

    Da

    RELOC:

    LOOP:

    Pregtire etap: HLHL+1

    Z=1?

    Inhibare periferic END1

    Refacere registre BC, HL, PSW

    STOP

    SERV:

    RET

    STOP:

    Octet nou? (CY=1?)

  • 7-3

    Numrarea celor 128 etape de transfer de octei folosete registrul C ca numrtor prin decrementare, iar registrul HL, iniializat cu adresa de nceput a zonei de destinaie a transferului, va servi la formarea adresei de destinaie pentru fiecare din cei 128 octei preluai de la periferic.

    Aceast sarcin, va ncepe cu salvarea n stiv a registrelor afectate i se va ncheia cu instruciunile de refacere din stiv a registrelor folosite.

    Algoritmul aplicaiei este descris prin organigram din fig.2.

    Fig.3 Alocarea registrelor microprocesorului

    Adres ETICHET : SIMBOLIZARE ; COMENTARII Nr.cicluri ORG 0021H; numrtor asamblor 0021H

    0021 H SERV: EI CALL RELOC; RET; ORG 4E00H; ADDR:

    MASK: SET 1100H; EQU 1132H;

    Definire notaii.

    4E00 H RELOC: PUSH PSW; PUSH H; PUSH B;

    Salvare n stiv a registrelor afectate.

    LDA MASK; ANI 0FDH; MOV B,A;

    n octetul de la adresa MASK, ce conine toate semnalele de comand, se face END=0

    OUT 2EH; Se emite END=0. LXI H,ADDR; HLADDR=adresa zonei de

    destinaie a transferului

    MVI C,80H; C (=numrtor etape)128 LOOP: IN 3FH; A(3F)= semnale de control RAR; CY semnalul DR JNC LOOP; Se testeaz DR pn ce DR=1 IN 3EH; A(3E) dac CY=0

    MOV M,A; (HL)A=octet de intrare MOV A,B;

    ORI 01H; OUT 2EH; XRI 01H; OUT 2EH;

    Se emite un impuls DA=1 cu durata timpului de efectuare a ultimilor dou instruciuni.

    DCR C; Se numr transferal efectuat JZ STOP; Z=1? (sarcin ncheiat?) INX H; HLHL+1 (=adres nou)

    H Adres de destinaie a octetului de intrare L

    B Numrtor de etape C

    A CY 7 6 .. 0

  • 7-4

    Adres ETICHET : SIMBOLIZARE ; COMENTARII Nr.cicluri JMP LOOP; Salt pentru urmtorul transfer. STOP: LDA MASK;

    OUT 2EH; La final se emit semnalele de comand: END=1 i DA=0

    POP B; POP H; POP PSW;

    Se refac din stiv registrele afectate

    RET; Revenire n SERV END; Sfritul programului surs.

    Teme 1. S se completeze programul de la rubrica ADRES i pentru fiecare instruciune a

    programului s se indice att tipurile de adresare folosite, ct i descrierea sintetic. 2. S se determine timpul de efectuare a programului tiind c frecvena tactului sistemului

    este f=2Mhz i considernd c fiecare ciclu de maina este efectuat n trei stri. 3. S se rescrie programul n limbajul de asamblare al microprocesorului Zilog Z80. 4. S se corecteze programul pentru situaia n care trecerea de la secvena SERV, la secvena

    RELOC se face prin salt necondiionat.

  • 8-1

    CONVERTOR ANALOG-NUMERIC PE OPT BII, CU REGISTRU CU APROXIMAII SUCCESIVE (CANRAS)

    n asistarea numeric a unui proces controlat este necesar msurarea numeric a unor parametri prin convertoare analog-numerice. Convertoarele analog-numerice fiind elemente scumpe se impune ca acolo unde este posibil un acelai convertor s fie utilizat n conversia succesiv a mai multor mrimi analogice.

    ntre convertoarele analog-numerice cele mai rapide, dar scumpe, sunt convertoarele de tip paralel, iar cele mai ieftine, dar lente, sunt convertoarele cu reacie.

    Un compromis ntre pre i vitez de conversie l realizeaz convertoarele analog-numerice cu registru cu aproximaii succesive pe reacie. Astfel, o conversie pe k bii este realizat cu un convertor analog-numeric de tip paralel ntr-un tact al generatorului de sincronizare ce piloteaz convertorul, cu un convertor analog-numeric cu numrtor pe reacie n k2 tacte, iar cu un convertor analog-numeric cu registru cu aproximaii succesive pe reacie (CANRAS) n k tacte.

    n cazul unui CANRAS, ntr-o etap de conversie se stabilete starea final a cte unui bit din rezultatul cutat, ncepnd de la bitul de pondere maxim, iar numrul de etape de conversie este egal cu numrul de bii ai rezultatului. La nceputul unei etape se stabilete starea logica 1, pentru bitul de prelucrat, iar biii de pondere superioar avnd strile definitiv stabilite n etapele anterioare. Rezultatul parial astfel format, este convertit numeric-analogic i comparat cu mrimea analogic de msurat. Compararea va indica prin starea logica 0 c rezultatul parial este mai mic dect cel real. Rezultatul comparrii reprezint chiar starea definitiv a bitului prelucrat, astfel generndu-se rezultatul etapei.

    O conversie CANRAS pe opt bii va conine deci opt etape de conversie, identice ca desfurare.

    n aplicaia prezentat partea de registru cu aproximaii succesive a fost implementat pe un sistem cu microprocesor Intel 8080 folosind o interfa paralel PPI 8255.

    Fig.1 Realizare CANRAS

    Circuitul de interfa PPI 8255 este tratat ca un circuit de memorie prin conectarea terminalelor sale RD i WR la liniile MEMR i respectiv MEMW ale magistralei de comand i

    Clock

    Intel 8228

    CS , A0, A1

    PPI 8255

    CNA

    Intel 8224

    STSTB

    Uin

    +

    -

    COMP

    Intel 8080

    ADDRESS BUS

    DATA BUS

    Q

    D0..D7

    RD,WR DBIN HOLDA

    1,2 RESET READY

    SYNC

    DI0..DI7 DO0..DO7

    RDYIN RESIN

    MEMR MEMW

    RD WR

    D0..D7

    A0..A15

    IOR IOW INTA

    PC0 PA

  • 8-2

    control i ca urmare transferul de date cu locaiile interfeei PPI 8255 se poate face prin mai multe tipuri de instruciuni dect n cazul tratrii interfeei ca circuit de intrare-ieire. Registrele folosite sunt indicate n fig.3, cu precizarea destinaiei lor, iar algoritmul aplicaiei este evideniat prin organigrama din fig.2.

    Fig.2 Organigrama aplicaiei

    START

    PUSH PSW,B,D B,E A=A A=0

    CY 1 Programare PPI

    A A, RAR, E A

    A B , A A+E B A , PA A

    POP D,B,PSW RET

    C 1

    C C-1

    STOP

    A (PC) A A (01H)

    A B , A A-E B A

    CY=?

    Z=1?

    Z=0?

    =1 =0 STOP :

    CANRAS :

    STAGE :

    =0

    =1

    =0

    =1

    TIME :

  • 8-3

    Fig.3 Alocarea registrelor microprocesorului

    Numrarea celor 9 etape, dintre care prima este de iniializare i urmtoarele 8 etape sunt de conversie, se face prin deplasarea la dreapta a coninutului registrului pe 9 bii format din registrul numrtor de etape E i bistabilul de transport CY, n care un singur bit se afl n starea logic 1 i al crui rang coincide n fiecare etap de conversie cu rangul bitului prelucrat din rezultatul ce se determin. Astfel, bitul din rezultat, ce este prelucrat ntr-o etap, poate fi stabilit ntr-una din strile logice 0, sau 1, printr-o operaie aritmetic ntre rezultatul parial aflat n registrul B i coninutul registrului numrtor E, fr a se afecta restul biilor rezultatului.

    Adres ETICHET : SIMBOLIZARE ; COMENTARIU ORG 1800H; Informare asamblor.

    PPICOM : PPIPA : PPIPC :

    EQU 0003H; EQU 0000H; EQU 0002H;

    PPICOM=3 PPIPA=0 PPIPC=2

    1800H CANRAS : PUSH PSW; PUSH B; PUSH D;

    Salvare registre afectate n stiv.

    MVI A,81H; STA PPICOM;

    Programare PPI8255 in mod 0 : PA=>, PC

    0 3

  • 8-4

    Adres ETICHET : SIMBOLIZARE ; COMENTARIU MOV A,B;

    SUB E; MOV B,A;

    Dac PC0 =0, pune n 0 bitul prelucrat din rezultat.

    JP STAGE; ncheie etapa cu numrarea ei, de la eticheta (adresa) STAGE.

    STOP : POP D; POP B; POP PSW; RET;

    Refacere registre P din stiv i revenire n programul apelant.

    END 1800H; PC 1800H

    Teme 1. S se completeze programul la rubrica ADRES i pentru fiecare instruciune s se indice descrierea sintetic i tipurile de adresare folosite. 2. S se refac programul pentru cazul tratrii interfeei PPI 8255 ca circuit de intrare-ieire. 3. Pentru prgramul prezentat s se determine timpul de efectuare tiind c: f=2MHz,

    stareciclu T3T = . 4. S se refac programul pentru cazul numrrii n inel doar a celor 8 etape de conversie.

  • 9-1

    CONTOLUL UNEI TASTATURI

    Cel mai frecvent, comanda unui sistem cu microprocesor, n vederea efectuarii unei sarcini, este realizat de utilizator printr-o claviatur ce reprezint un ansamblu de comutatoare acionate manual. Comanda unui sistem cu microprocesor prin intermediul unei clavituri impune ns o supraveghere permanent a claviaturii pentru a se realiza, att identificarea tastei apsate cu generarea codului binar al tastei reprezentat prin numrul de ordine al tastei n cadrul claviaturii, ct i protecia mpotriva apsrii simultane a mai multor taste i a comutrilor multiple ce apar la acionarea unei taste datorit vibraiei mecanice a lamelor de contact ale comutatorului. Aceste probleme pot fi rezolvate fie pe cale hardware de ctre un circuit specializat prin care claviatura se conecteaz la sistem, fie printr-un subprogram al programului MONITOR ce realizeaz i gestioneaz sarcinile prevzute sistemului. Determinarea adresei subprogramului din MONITOR corespunztor sarcinii unei taste apsate se face pe baza codului binar al tastei apsate cu subprogramul din MONITOR destinat supravegherii claviaturii. La terminarea efecturii subprogramului sarcinii comandate de la claviatur, programul MONITOR va reveni automat la suprvegherea claviaturii n vederea detectrii unei tastei apsate. Obinuit claviatura se conecteaz la sistemul cu microprocesor prin intermediul unor registre de intrare-ieire, numite porturi , ale unui circuit de interfa cu transfer paralel de date. n cazul claviaturilor cu un numr redus de taste, fiecare tasta se conecteaz la cte un bit de intrare, situaie reprezentat n fig.1 pentru cazul obinuit al tastelor avnd comutatoarele normal deschise.

    Fig.1 Claviatur simpl

    Numrul biilor de intrare-ieire prin care o claviatur se conecteaz la sistemul cu microprocesor a fost redus prin conectarea tastelor claviaturii ntr-o matrice n care fiecare tast apsat realizeaz un scurtcircuit ntre linia i coloana la a cror intersecie se afl, matricea claviturii fiind conectat cu fiecare linie i coloan la cte un bit distinct de intrare-ieire. Astfel, ntr-o clavitur avnd nm taste aezate ntr-o matrice cu n linii i m coloane numrul biilor de intrare-ieire pentru supravegherea claviaturii s-a redus de la nm la n+m. ntr-o clavitur matriceal, numrul biilor de intrare-ieire pentru supravegherea claviaturii este minim dac matricea este ptrat. Conectarea la un sistem cu microprocesor a unei claviaturi cu 16 taste aezate ntr-o matrice cu 4 linii i 4 coloane i supravegheat prin baleere de linii este prezentat n fig.2.

    R1 R2 R3 SW1 SW2 SW3

    ADDRESS BUS

    CONTROL BUS

    PC2PC1PC0

    DATA BUS

    D0..D7 A0, A1, CS RESET, WR , RD

    +Vcc=+5V

    PPI 8255

  • 9-2

    Fig.2 Tehnica baleerii de linii

    Identificarea ntr-o clavitur matriceal a unei taste apsate se poate face prin dou tehninci: tehnica baleerii (de linii sau de coloane) i tehnica inversrii. Problema apsrii simultane accidental a mai multor taste se rezolv prin ignorarea tastelor pn n momentul cnd rmne apsat doar o singur tast.

    Fig.3 Oscilaiile mecanice ale unei lamele de contact

    Protecia mpotriva oscilaiilor parazite de tensiune produse de vibraiile mecanice ale contactelor ntreruptorului unei taste acionat i a cror standardizare este de 10 msec, este realizat prin citirea strii claviaturii cu o ntrziere de cel puin 10 msec din momentul acionrii tastei, aa cum se arat n fig.3.

    METODA BALEERII Aceast metod este exemplificat n fig.2 pentru o claviatur matriceal din 16 taste format din 4 linii i 4 coloane. ntr-o claviatur matriceal identificarea unei taste apsate prin metoda baleerii de linii se face prin citirea strilor coloanelor matricii, cnd doar o singur linie a matricei claviaturii se afl n starea logica 0, ntr-un ciclu de baleere fiecare linie fiind pus n starea logica 0 n cte o etap distinct. Deoarece o tast apasat realizeaz ntr-o claviatur matriceal un scurtcircuit ntre linia

    1 (=+5V)

    0 t

    Citire la presare

    Citire la depresare

    10 msec 10 msec

    R4

    R1

    R2

    R3

    0

    0

    0

    4

    3 (=cod tast)2 1 0

    0

    0

    0

    C

    B A 9 8

    7 6 5 1

    1

    1

    1

    1

    F E D

    PA

    PIO Z80

    CONTROL BUS

    ADDRESS BUS

    DATA BUS

    +Vcc=+5V

    1

    IEI, IEO, INT,RD,

    IORQ, M1

    CE,

    B / A,C / D

    D0..D7

    PB

    SW F tast apsat

    Cuv

    nt s

    tare

    co

    loan

    e Cu

    vn

    t sta

    re lin

    ii

    PA0

    PA3

    PB0

    PB3

  • 9-3

    i coloana la a cror intersecie se afl, rezult c prin metoda baleerii de linie, starea logic 0 va aprea doar pe coloana tastei apsate i numai n etapa n care pe linia tastei apsate se aplic starea logic 0. ntr-o etap, existena n starea logic 0 a unei linii i a unei coloane identific precis tasta apsat aflat la intersecia lor.

    Supravegherea unei claviaturi matriceale prin metoda baleerii impune deci ca un ciclu de baleere complet a claviaturii s conin un numr de etape egal cu numrul de linii al matricii dac se realizeaz baleerea de linii, ori cu numrul de coloane al matricii dac se realizeaz baleerea de coloane.

    Prin aceast metod liniile sau coloanele ce se baleeaz vor fi conectate la bii de ieire, n timp ce coloanele respectiv liniile ale cror stri se testeaz se vor conecta la bii de intrare.

    Se observ c determinarea doar a existenei unei taste apsate dintr-o claviatur matriceal se poate face ntr-o singur etap prin punerea n starea logic 0 a tuturor biilor de ieire alocai supravegherii claviaturii i citirea biilor de intrare ntre care doar bitul de intrare corespunztor tastei apsate se va afla n starea logic 0, indicnd existena unei taste apsate.

    n general, supravegherea unei claviaturi matriceale implic realizarea urmtoarelor sarcini: determinarea existenei unei taste apsate, identificarea tastei apsate i a codului su i determinarea adresei subrutinei asociat tastei apsate.

    Aceste sarcini, dintre care cea de determinare a existenei unei taste apsate poate lipsi, pot fi realizate ca subrutine distincte sau ca secvene distincte n cadrul programului din MONITOR destinat supravegherii claviturii.

    Exemplu Fie un sistem cu microprocesor avnd o claviatur matriceal supravegheat prin baleere de

    linii i format din 24 taste dispuse pe 3 linii i 8 coloane, 16 taste fiind taste cifrice hexazecimale, iar 8 taste fiind funcionale, reprezentat n fig.4.

    Fig.4 Tastatur cu 16 taste cifrice i 8 taste funcionale

    R8 R7 R6 R5 R4 R3 R2 R1

    PA6 PA7 PC4PC5 PC6 PA0 PA1 PA2 PA3 PA4 PA5

    7

    PA PC4-7

    F

    0 1 23 4 56

    STORE

    8 9 A B C D E

    RUN RETSETSTEPREAD WRITELOAD

    DATA BUS

    ADDRESS BUS

    +Vcc=+5V

    PPI 8255

    RESET, WR , RD CS , A0, A1 D0..D7

    CONTROL BUS

  • 9-4

    Fig.5 Organigrama aplicaiei de control a tastaturii

    START

    (PPICOM)92H (PA i PC4-7)

    E3=nr.linii B0=cod tast 0 CEFH=cod de baleaj prim linie

    AC (PPIPC)A A(PPIPA) AAFFH

    EE+1 RRA

    BB+1

    AB AA+8 BA AC RLC A CA

    DB

    CALL TIME (timer 9,1 msec) AD AA10H

    NUMBER SUBRUTINE

    AD AA+A AC B0

    HLTABEL HLHL+BC A(HL) HLHL+1 H(HL) LA PCHL

    STOP

    Z=0?

    Z=1?

    Z=1?

    CY=1?

    =1 =0

    =1

    =1

    =1

    =0

    =0

    =0

    KEY:

    SCAN:

    LOOP:

    COUNT:

    SAVE:

    NUMBER:

  • 9-5

    Organigrama aplicaiei de control al unei claviaturi din 16 taste cifrice i 8 taste funcionale este prezentat n fig.5.

    n aceast aplicaie, adresele subrutinelor funcionale se afl situate ntr-un tabel n care fiecare adres ocup cte dou locaii successive. Ca urmare, acest tabel va fi citit din dou n dou locaii, poziia n tabel a adresei unei subrutine funcionale determinndu-se cu relaia:

    TABEL+2cod tasta. Spaiul de adresare alocat acestui tabel este: TABEL + 216, , TABEL + 223 + 1,

    eticheta TABEL fiind o constant de identificare a adresei de nceput a tabelului.

    n limbajul de asamblare al microprocesorului Intel 8080 programul are urmtoarea form:

    Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU

    PPICOM : PPIPC : PPIPA :

    TABLE: NUMBER:

    ORG 1800H; EQU 03H; EQU 02H; EQU 00H; EQU 2000H; EQU 1900H;

    Pseudoinstruciuni de informare asamblor cu adresa de nceput a programului i cu valorile notaiilor folosite.

    1800

    KEY : MVI A,92H; OUT PPICOM;

    Programare PPI 8255 n mod 0 cu PA pe intrare i 4 7PC pe ieire.

    SCAN : MVI B,0; MVI E,3; MVI C,0EFH;

    Iniializare registre.

    LOOP : MOV A,C; OUT PPIPC;

    Baleerea liniei indicate n C.

    IN PPIPA; XRI 0FFH; JNZ COUNT;

    Citire cuvnt stare coloane i Z=0 la tast apsat.

    DCR E; JZ SCAN;

    Numrare etap i la sfrit ciclu reluare bleere.

    MOV A,B; ADI 8; MOV B,A;

    Pregtire etap urmtoare formnd n registrul B codul primei taste din linia urmtoare.

    MOV A,C; RLC ; MOV C,A;

    Pregtire etap urmtoare formnd n registrul C codul de baleere al liniei urmtoare.

    JMP LOOP; Salt la etapa urmtoare. COUNT :

    SAVE :

    RRA ; JC SAVE; INR B; JMP COUNT; MOV D,B;

    Formare a codului tastei apsate n registrul B prin incrementri repetate i salvare cod tast apsat n registrul D.

    CALL TIME; Temporizare 9,1 msec pt. vibraii. MOV A,D;

    ADI 10H; JZ NUMBER;

    Dac tasta apsat este cifric atunci salt la subrutina NUMBER de tratare cifric a tastei.

    MOV A,D; ADD A; MOV C,A; MVI B,0;

    Dac tasta apsat este funcional, se formeaz n registrul BC dublul codului tastei apsate.

  • 9-6

    Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU LXI H,TABLE;

    DAD B; Se formeaz n registrul HL adresa ce indic subrutina funcional.

    MOV A,M; INX H; MOV H,M; MOV L,A; PCHL;

    Se extrage din tabel, n registrul HL, adresa subrutinei funcionale care plasat n registrul PC determin declanarea efecturii subrutinei funcionale.

    TIME : CYCLE : LAP :

    MVI L,48H; MVI B,0CH; DCR B; JNZ LAP; DCR L; JNZ CYCLE;

    Subrutin de temporizare 9,1 msec

    RET; Revenire n programul apelant. END; Informare asamblor.

    Completare n limbajul de asamblare al microprocesorului Zilog Z80 programul are urmtoarea form:

    Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU

    PPICOM : PPIPC : PPIPA :

    TABLE: NUMBER:

    ORG 1800H; DEFL 03H; DEFL 02H; DEFL 00H; DEFL 2000H; DEFL 1900H;

    Pseudoinstruciuni de informare asamblor cu adresa de nceput a programului i cu valorile notaiilor folosite. DEFL (=Define Label) EQU (=Equate)

    1800

    KEY : LD A,92H; OUT (PPICOM),A ;

    Programare PPI 8255 n mod 0 cu PA pe intrare i 4 7PC pe ieire.

    SCAN : LD B,0; LD E,3; LD C,0EFH;

    Iniializare registre.

    LOOP : LD A,C; OUT (PPIPC),A;

    Baleerea liniei indicate n C.

    IN A,(PPIPA); XOR 0FFH; JP NZ,COUNT;

    Citire cuvnt stare coloane i Z=0 la tast apsat.

    DEC E; JP Z,SCAN;

    Numrare etap i la sfrit ciclu reluare bleere.

    LD A,B; ADD A,8; LD B,A;

    Pregtire etap urmtoare formnd n registrul B codul primei taste din linia urmtoare.

    LD A,C; RLC A; LD C,A;

    Pregtire etap urmtoare formnd n registrul C codul de baleere al liniei urmtoare.

    JP LOOP; Salt la etapa urmtoare. COUNT :

    SAVE :

    RR A; JP C,SAVE; INC B; JP COUNT; LD D,B;

    Formare a codului tastei apsate n registrul B prin incrementri repetate i salvare cod tast apsat n registrul D.

  • 9-7

    Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU CALL TIME; Temporizare 9,1 msec pt. vibraii. LD A,D;

    AND 10H; JP Z,NUMBER;

    Dac tasta apsat este cifric atunci salt la subrutina NUMBER de tratare cifric a tastei.

    LD A,D; ADD A,A; LD C,A; LD B,0;

    Dac tasta apsat este funcional, se formeaz n registrul BC dublul codului tastei apsate.

    LD HL,TABLE; ADD HL,BC;

    Se formeaz n registrul HL adresa ce indic subrutina funcional.

    LD A,(HL); INC HL; LD H,(HL); LD L,A; LD PC,HL;

    Se extrage din tabel, n registrul HL, adresa subrutinei funcionale care plasat n registrul PC determin declanarea efecturii subrutinei funcionale.

    TIME : CYCLE : LAP :

    LD L,48H; LD B,0CH; DEC B; JP NZ,LAP; DEC L; JP NZ,CYCLE;

    Subrutin de temporizare 9,1 msec

    RET; Revenire n programul apelant. END; Informare asamblor.

    Teme 1. S se completeze programele la rubrica ADRES. 2. S se determine frecvena tactului sistemului din subrutina de temporizare cu eticheta

    TIME, considernd c fiecare ciclu de maina are trei stri. 3. Cu frecvena tactului determinat la punctul 2. , s se determine timpul de execuie al

    programului.

  • 10-1

    CONTROLUL UNEI TASTATURI. METODA INVERSRII

    Prin metoda inversrii, identificarea tastei apsate dintr-o claviatur matricial se realizeaz n dou etape, indiferent de mrimea matricii claviaturii, linia i coloana la a cror intersecie se afl tasta apsat fiind identificat fiecare n cte o etap.

    Astfel, ntr-o etap, linia tastei apsate se identific prin starea logic 0 din cuvntul de stare linii, citit la biii de intrare la care-s conectate liniile, cnd coloanele matricii claviaturii sunt aduse n starea logic 0 prin biii de ieire la care sunt conectate. n urmtoarea etap, dup inversarea sensului de transfer pentru toi biii de supraveghere la care matricea claviaturii este conectat, se determin coloana tastei apsate prin starea logic 0 din cuvntul de stare coloane, citit la biii din intrare la care sunt conectate coloanele, cnd pe biii de ieire la care sunt conectate liniile, se aplic fie stri logice 0, fie cuvntul de stare al liniilor din etapa anterioar n care doar bitul liniei tastei apsate este n stare logic 0.

    Cele dou cuvinte, de stare linii i de stare coloane, identific precis tasta apsat prin linia i coloana la a cror intersecie se afl, fiind folosite n determinarea codului tastei apsate.

    Metoda inversrii este exemplificat n fig.1 pentru cazul unei claviaturi matriceale din 16 taste, dispuse pe 4 linii i 4 coloane.

    Fig.1 Etapele metodei inversrii

    Metoda inversrii necesit ns schimbarea sensului de transfer al tuturor biilor de supraveghere a claviaturii matriceale, prin reprogramarea interfeei cu transfer paralel de date, notat PIO, naintea fiecrei etape.

    TASTATURI CODATE Aceste claviaturi sunt prevzute cu un bloc logic ce asigur funcia de identificare a tastei

    apsate cu generarea codului tastei i se conecteaz la sistemul cu microprocesor printr-o interfa paralel, aa cum se arat n fig.2.

    R1 R2 R3 R4 R5 R6 R7 R8

    0 00 0 1 1 1

    PIO Z80

    CONTROL BUS

    ADDRESS BUS

    DATA BUS

    cuvnt stare coloane

    0

    +Vcc=+5V

    R1 R2 R3 R4 R5 R6 R7 R8

    0 00 0 1 0 1 1

    DATA BUS

    cuvnt stare linii PIO Z80

    CONTROL BUS

    ADDRESS BUS

    +Vcc=+5V

    PBPB PA PA

    1 1 1 0

    D0..D7 D0..D7 RD , M1 ,.. CE , A/ B , C/ D

    PA0 PA3 PB0 PB3

    CE , A/ B , C/ D RD , M1 ,..

  • 10-2

    Fig.2 Claviatur codat folosind o interfa paralel PIO Z80

    La apsarea unei taste, claviatura codat o identific i genereaz codul tastei pe care-l aplic la portul PA, unde-i memorat sub aciunea semnalului ASTB 0= aplicat interfeei de logic asociat claviaturii codate. Starea ASTB 0= , testat de microprocesor prin bitul de intrare PB0, cu rol de fanion al claviaturii, indic existena n portul PA a codului unei taste apsate pe care microprocesorul l citete. La citirea portului PA, interfaa emite automat semnalul ARDY=1 ce determin claviatura s emit ASTB 1= i s treac apoi la identificarea unei noi taste apsate.

    Prin folosirea unei claviaturi codate, programul de supraveghere a claviaturii se simplific, realiznd doar supravegherea fanionului claviaturii i determinarea adresei subrutinei tastei apsate.

    Programul de control a claviaturii codate din fig.2 s-a realizat, n limbajul de asamblare al microprocesorului Zilog Z80, dup organigrama din fig.3.

    Adres Etichet : Simbolizare ; Comentariu

    CPA : CPB :

    PA : PB :

    TASK:

    ORG 1800H; DEFL 10H; DEFL 11H; DEFL 00H; DEFL 01H; DEFL 0200H;

    Informare asamblor cu adresa de nceput a progra-mului i cu adresele notaiilor folosite. CPA,CPB=adresele registrelor de comand a portu-rilor interfeei; PA, PB=adresele porturilor PA, respectiv PB;

    1800H KEY : LD A,4FH; OUT (CPA),A;

    programare port PA pe intrare, KEY=1800H i numrtor locaii asamblor 1800H

    LD A,0BFH; OUT (CPB),A;

    programare port PB n mod control;

    LD A,0FFH; OUT (CPB),A;

    programare port PB cu toi biii pe intrare;

    TEST1 : IN A,(PB); BIT 0,A; JR Z,TEST1;

    detectare stare logic 1 pentru bitul PB0;

    TEST0 : IN A,(PB); BIT 0,A; JR NZ, TEST0;

    detectare satare logic 0 pentru bitul PB0;

    IN A,(PA); JP TASK;

    preluare cod tast n A i salt la subrutina de identificare a subrutinei sarcinii asociate tastei;

    END; informare asamblor

    B/ A C/ D CE

    PB7

    PB0

    D0..D7

    ...

    PB

    ASTB

    ARDY

    PA

    ADDRESS BUS

    CON

    TRO

    L B

    US

    DATA BUS Cod tast

    PIO Z80

    8R

    Vcc=+5V

    M1,

    RD, IORQINT

    8R

    R

    Vcc=+5V

  • 10-3

    Fig.3 Organigrama sarcinii de supraveghere a unei claviaturi codate

    Observaii 1. n metoda baleerii fiecare din biii de intrare prin care se supravegheaz claviatura

    matriceal se protejeaz la zgomote prin conectarea la sursa de alimentare Vcc=+5V cu un rezistor R, dimensionat pentru ncrcarea unui bit de ieire n starea logic 0 cu maxim o sarcin TTL standard (=1,6 mA), ce este capacitatea maxim de comand a unui bit de ieire n tehnologie MOS:

    TTL

    Vcc 5VR 3,3ki 1,6mA

    = = .

    2. n metoda inversrii fiecare din biii de supraveghere a claviaturii matriceale, lucrnd ntr-o etap ca bit de intrare, va trebui protejat la zgomote prin conectarea la sursa de alimentare Vcc=+5V cu un rezistor R, dimensionat pentru ca la ncrcarea unui bit de ieire n starea logic 0 cu dou rezistoare R n paralel s nu se depeasc o sarcin TTL standard (=1,6 mA), ce este capacitatea maxim de comand a unui bit de ieire n tehnologie MOS:

    TTL

    R Vcc 5V 3,3k2 i 1,6mA

    = = .

    Tem 1. S se scrie programul de supraveghere prin metoda inversrii a unei tastaturi matriceale

    START

    APB BIT 0,A

    APB BIT 0,A

    APA JP TASK

    STOP

    PA PB

    Citire port PB i ZPB0

    Programare interfa

    Citire port PB i ZPB0

    Preluarea cod tast n A i salt la identificarea subrutinei tastei

    Z=0? =0

    =1

    =1

    =0

    Z=1?

    KEY:

    TEST1:

    TEST0:

  • 10-4

    din 32 taste dispuse pe 8 coloane, cu identificarea tastei cu numrul de ordine cel mai mare, avnd ca exemplu programul de identificare a tastei apsate cu numrul de ordine cel mai mic ntr-o tastatur matriceal din 64 taste dispuse pe 8 linii, prezentat mai jos n limbajul de asamblare al microprocesorului Intel 8080 i urmtoarea alocare de registre:

    Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU

    PPICOM : PPIPB :

    PPIPA TABLE:

    ORG 1800H; EQU 03H; EQU 01H; EQU 00H; EQU 2000H;

    Pseudoinstruciuni de informare asamblor cu adresa de nceput i cu valorile notaiilor folosite.

    KEY : MVI A,83H; OUT PPICOM;

    Programare PPI 8255 n mod 0 cu PA pe ieire i PB pe intrare.

    MVI A,0; OUT PPIPA;

    Baleerea liniilor matricei tastaturii prin portul PA

    IN PPIPB; MOV D,A;

    D(PPIPB)=octet starea coloane

    MVI A,91H; OUT PPICOM;

    Programare PPI 8255 n mod 0 cu PB pe ieire i PA pe intrare.

    MVI A,0; OUT PPIPB;

    Baleerea coloanelor matricei tastaturii prin portul PB

    IN PPIPA; MOV E,A;

    E(PPIPA) =octet stare linii

    XRI 0FFH; JZ KEY;

    Reluarea unui nou ciclu de baleere dac nu exist tast apsat.

    CALL TIME; Temporizare 9,1 msec pentru protecie la vibraii ale contactelor tastei apsate.

    MVI C,000Q; C000Q (=codul primei taste) LOOPL : MOV A,E;

    RAR; MOV E,A; JNC LOOPC; MOV A,C; ADI 8; MOV C,A; JMP LOOPL

    Formarea n C a codului primei taste de pe linia tastei apsate.

    LOOPC :

    MOV A,D; RAR ;

    Formarea codului tastei apsate n registrul C, prin incrementare cu 1.

    B Timer 9,1 msec Cod tast apsat C

    D Octet stare coloane Octet stare linii E

    H L

    A CY 7 6 0

  • 10-5

    Adres (H) ETICHET : SIMBOLIZARE ; COMENTARIU

    MOV D,A; JNC LAST; INR C; JMP LOOPC;

    LAST: MOV A,C; ADD A; MOV C,A; MVI B,0;

    Se formeaz n registrul BC dublul codului tastei apsate.

    LXI H,TABLE; DAD B;

    Se formeaz n registrul HL adresa ce indic subrutina tastei apsate.

    MOV A,M; INX H; MOV H,M; MOV L,A; PCHL;

    Se extrage din tabel, n registrul HL, adresa subrutinei funcionale a crei execuie se declaneaz prin transferul ei n registrul PC.

    TIME : CYCLE : LAP :

    MVI L,90H; MVI B,0CH; DCR B; JNZ LAP; DCR L; JNZ CYCLE;

    Subrutin de temporizare 9,1 msec

    RET; Revenire n programul apelant. END; Informare asamblor.

    2. S se completeze programul prezentat la punctul 1., la rubrica ADRES. 3. S se determine, din programul prezentat la punctul 1., frecvena tactului sistemului din

    subrutina de temporizare cu eticheta TIME, considernd c fiecare ciclu de maina are trei stri. 4. Cu frecvena tactului determinat la punctul 3., s se determine timpul de execuie al

    programului prezentat la punctul 1.

  • 11-1

    AFIAREA PE CELULE CU APTE SEGMENTE

    O diod luminescent, notat LED, emite lumin la alimentare direct, intensitatea luminoas crescnd la creterea curentului prin diod. Aprinderea unei diode LED poate fi realizat fie conectndu-i anodul la Vcc=+5V i comandnd starea logic 0 n katodul nseriat cu o rezisten de limitare a curentului, conexiune numit anod comun, fie conectnd katodul la mas i comandnd starea logic 1 n anodul nseriat cu o rezisten de limitare a curentului, conexiune numit katod comun i fiind cea mai utilizat.

    O diod LED poate fi aprins i printr-o alimentare direct, n regim dinamic, cu impulsuri de curent n intervalul 2mA.50mA i frecven de sute de heri, datorit ineriei ochiului i a comutrii rapide a diodelor LED.

    Prin reunirea a apte diode LED ca segmente, se obine o celul de afiare cu apte segmente, iluminarea unui segment realizndu-se prin polarizarea direct a diodei din care-i format. Sunt celule de afiare n care reeaua de apte segmente este urmat de un punct, realizat tot cu o diod LED. Obinuit, o celul de afiare din apte segmente i punct se comand printr-un registru de 8 bii aa cum se arat n figura urmtoare.

    Fig.1 Organizarea i comanda unei celule de afiare

    Diodele din componena unei celule de afiare au conectai n comun fie anozii, fie katozii, cele mai utilizate fiind celulele de afiare cu katod comun.

    Celulele de afiare cu apte segmente sunt larg folosite deoarece, pe o diod LED, se pot afia un numr mare de caractere, aa cum este exemplificat n tabelul urmtor pentru celule de afiare cu anod comun.

    O celul de afiare cu apte segmente i punct, necesitnd comanda diodelor sale printr-un port de 8 bii, rezult c ntr-o alimentare n regim permanent numrul porturilor necesare controlului afirii este egal cu numrul celulelor de afiare utilizate.

    n cazul unei afiri dinamice, n care celulele de afiare i vizualizeaz caracterele n mod succesiv i nu simultan, prin baleere cu frecven ridicat, comanda tuturor celulelor de afiare se face printr-un singur port, n condiia ca fiecre celul s dispun de cte un bit sepa