Sunteți pe pagina 1din 42

LSDlab

Lucrare de laborator nr.1


Studierea complexului microprocesor de studiu

Schema structurală generală a microprocesorului

Microprocesorul (MP) constă din trei blocuri de bază: dispozitivul logico-aritmetic (DLA),
câteva registre şi dispozitivul de comandă (fig.1.1). Pentru transmiterea datelor între aceste
blocuri ale MP, se utilizează magistrala interioară a datelor.
Fig.1.1 Schema structurată a microprocesorului

Dispozitivul logico-aritmetic
DLA îndeplineşte una din funcţiile principale ale MP – procesarea datelor. DLA are două
canale de intrare (fig.1.1), notate ca “Intrare” şi un canal – “Ieşire”. Destinaţia canalului de
intrare – de a introduce cuvintele de date în DLA, iar a canalului de ieşire – retragerea unui atare
cuvânt. Ambele canale de intrare sunt asigurate cu tampon, rolul cărora îl îndeplinesc registrele
pentru păstrarea temporară a datelor (registrele  tampon). Fiecare canal este conectat cu
registrul său de tampon, capabil să păstreze pentru DLA un cuvânt de date. Două porturi de
intrare permit DLA să recepţioneze datele de pe magistrala interioară a datelor MP sau dintr-un
registru special, numit acumulator. Unicul canal de ieşire a DLA oferă ultimului posibilitatea de
a expedia cuvântul de date în acumulator.
Acumulatorul este menit pentru păstrarea cuvântului de date, expediat în el din portul de
ieşire al DLA sau extras din memorie. Când, de exemplu, DLA adună două cuvinte ale datelor,
unul din ele se află în acumulator. După completarea adunării – cuvântul de date – este expediat
în acumulator pentru păstrare.
DLA operează cu unul sau cu două cuvinte, în dependenţă de tipul operaţiei efectuate;
corespunzător el utilizează şi porturile de intrare. Aşa, de exemplu, deoarece pentru adunare se
cer două cuvinte ale datelor, atunci atare operaţie DLA o efectuează folosind ambele porturi de
intrare. Iar la inversiunea cuvântului de date, DLA se limitează la un port de intrare. Această
operaţie se limitează la substituirea în cuvântul de date a tuturor zerourilor cu unităţile binare, iar
a tuturor unităţilor binare  cu zerouri. Deoarece operaţia se efectuează asupra unui cuvânt, este
suficient de conectat la acumulator un port de intrare. DLA trebuie utilizat în acele cazuri, când
este necesar a schimba sau a verifica semnificaţia cuvântului de date. Operaţiile tipice, efectuate
de către DLA a majorităţii MP-lor sunt următoarele: ADUNAREA, SCĂDEREA, ŞI, SAU, SAU
EXCLUSIV, INVERSIUNEA, DEPLASAREA ÎN DREAPTA, DEPLASAREA ÎN STÂNGA,
INCREMENT POZITIV, INCREMENT NEGATIV.

Registrele microprocesorului
Registrele participă la realizarea principalelor funcţii logice. Fiecare registru al MP poate fi
utilizat pentru păstrarea temporară a unui cuvânt de date. Unele registre au destinaţie specială,
altele – multifuncţională (registre de destinaţie generală). Aproa pe toate MP au şase registre:
de stare, de tampon, de comandă, de adrese a memoriei, contorul de comenzi şi acumulatorul.

Acumulatorul
Acumulatorul – registrul principal al MP în diferite manipulări cu datele. Majoritatea
operaţiilor aritmetice şi logice se realizează prin utilizarea DLA şi acumulatorului. Oricare din
atare operaţii asupra a două cuvinte de date (operanzilor) presupune plasarea unuia din ele în
acumulator, iar altuia  în memorie sau în alt oarecare registru. Aşa, la adunarea a două cuvinte,
numite convenţional A şi B, plasate în acumulator şi memorie corespunzător, suma rezultantă C
este inserată în acumulator, înlocuind cuvântul A. Rezultatul operaţiei DLA, de regulă, este
plasat în acumulator. Trebuie de avut în vedere că, la aceasta, conţinutul ultimului, se pierde.
O operaţie de alt tip, ce utilizează acumulatorul, este transferul programat de date dintr-o
parte a MP în alta. Este vorba despre o expediere a datelor între portul inserare – extragere şi
regiunea memoriei, între două regiuni ale memoriei şi alte cazuri asemănătoare. Efectuarea
operaţiei şi transferul programat al datelor se realizează în două etape: întâi se efectuează
expedierea datelor din sursă în acumulator şi după aceea din acumulator în punctul de
destinaţie.
MP permite a utiliza DLA pentru integrarea datelor din acumulator cu alte date. Însă MP
poate efectua unele acţiuni asupra datelor direct în acumulator. De exemplu, acumulatorul poate
fi eliberat prin inserarea zerourilor în toate rangurile lui, fixat în starea unitară prin inserarea
unităţilor în toate rangurile sale.Conţinutul acumulatorului poate fi deplasat în stânga şi în dreap-
ta, se poate obţine valoarea sa inversată, precum şi efectua alte operaţii.
Acumulatorul este cel mai universal registru al MP. Pentru efectuarea oricărei operaţii
asupra datelor, mai întâi ele trebuie plasate în acumulator. Datele nimeresc în acumulator de pe
magistrala interioară a datelor MP (fig.1.1). La rândul său, acumulatorul poate expedia pe
această magistrală. Numărul rangurilor acumulatorului corespunde lungimii cuvântului MP,
adică 8 biţi.

Contorul comenzilor
Programul este o succesivitate de comenzi, păstrate în memoria calculatorului electronic şi
este menită a instrui calculatorul, cum se rezolvă problema. Pentru îndeplinirea corectă a ultimei,
comenzile trebuie să vină într-un ordin strict determinat. Asupra contorului comenzilor rămâne
responsabilitatea de a urmări cum se efectuează comanda dată, care urmează să fie supusă
efectuării. Unde nu ar fi plasate comenzile programului, ele urmează una după alta într-o ordine
anumită. Contorul comenzilor este conectat cu magistrala interioară a datelor MP-lui (fig.1.1).
Teoretic, acest contor va putea primi datele despre adresele programului din orice bloc al MP,
conectat la magistrala interioară. Însă, practic, datele de obicei nimeresc în contorul comenzilor
din memoria calculatorului electronic. Când MP începe să funcţioneze, la comanda stabilirii
iniţiale în contorul comenzilor se încarcă datele din regiunea memoriei, fixată de proiectantul
MP. Înainte de declanşarea programului, este necesar a plasa adresa iniţială a programului în
regiunea memoriei, indicată de proiectant. Când programul începe să se îndeplinească, prima
valoare a conţinutului contorului comenzilor este acea adresă dinainte determinată.
Spre deosebire de acumulator, contorul comenzilor nu poate îndeplini operaţii de diferit tip.
Numărul de comenzi, care-l utilizează, este foarte limitat, în comparaţie cu numărul analogic
pentru acumulator. Înainte de efectuarea programului, contorul comenzilor trebuie inserat cu
numărul – adresa regiunii memoriei, ce conţine prima comandă a programului. Adresa regiunii
memoriei, ce conţine prima comandă a programului, este expediată din contorul comenzilor în
registrul adresei memoriei, după ce conţinutul ambelor registre devine acelaşi. Lungimea
registrului adresei memoriei este egală cu 16 ranguri.
Adresa locului de plasare a primei comenzi a programului este expediată prin magistrala
adreselor către schemele de dirijare cu memoria, în consecinţă este citit conţinutul regiunii cu
adresa indicată. Acest conţinut, fără îndoială, trebuie să fie o comandă. Memoria expediază
această comandă într-un registru special al blocului MP, numit registrul comenzilor.
Contorul comenzilor poate să fie inserat cu conţinutul la îndeplinirea unei grupe speciale de
comenzi. Poate apărea necesitatea de a efectua o parte a programului, care “decade” din con-
secutivitatea comenzilor programului de bază sau a celui principal. De exemplu, aşa o parte a
programului, care trebuie multiplu repetat în procesul efectuării programului în ansamblu. În loc
să scriem această parte a programului de fiecare dată, când în el apare necesitatea, aşa o înscriere
se poate face numai o dată, şi ne întoarcem la efectuarea repetată, înlăturându-ne de la succesi-
vitatea indicată. O parte a programului, îndeplinit prin abaterea de la succesivitatea strictă a
comenzilor programului principal, se numeşte subprogram. După ce în contorul comenzilor este
înscrisă adresa iniţială a subprogramului, contorul primeşte incremente pe parcursul efectuării
comenzilor acestui subprogram. Aşa continuă până când nu se va întâlni comanda reîntoarcerii în
programul principal.

Registrul adresei memoriei


La fiecare adresare către memoria calculatorului electronic, registrul adresei memoriei
indică adresa regiunii memoriei, care va fi supusă utilizării în MP. Registrul adresei memoriei
conţine numărul binar al adresei regiunii de memorie. Ieşirea acestui registru se numeşte
magistrala de adrese şi se utilizează pentru selectarea regiunii memoriei sau în unele cazuri
pentru selectarea portului intrare – ieşire.
Pe parcursul subciclului selectării comenzii din memorie, registrele adresei memoriei şi ale
contorului comenzilor au acelaşi conţinut, i.e. registrul de adrese al memoriei indică locul
comenzii extrase din memorie. După decodarea comenzii, contorul comenzii obţine un
increment. Ceea ce se referă la registrul adresei memoriei, nu primeşte increment.
Pe parcursul subciclului efectuării comenzii, conţinutul registrului adresei memoriei depinde
de comanda ce se efectuează. Dacă în corespundere cu comanda,MP poate efectua încă o adre-
sare către memorie, atunci registrul adresei memoriei trebuie supus utilizării repetate în decursul
procesării acestei comenzi.
În majoritatea MP, registrele adresei memoriei şi ale contorului comenzilor au un număr
egal de ranguri. Ca şi contorul comenzilor, registrul adresei comenzilor trebuie să dispună de
numărul de ranguri, suficient pentru adresarea oricărei regiuni a memoriei calculatorului
electronic. Pentru majoritatea MP cu
8 ranguri, numărul rangurilor registrului adresei memoriei este egal cu 16. Aşa registru poate fi
divizat în două registre separate, fiecare din care posedă o conectare independentă la magistrala
datelor MP. Unul din aceste registre este numit registrul byte-ului superior (BS), altul – registrul
byte-ului inferior (BI).
Deoarece registrul adresei memoriei este conectat la magistrala interioară a datelor MP, el
poate fi inserat de la diferite surse. Majoritatea MP posedă comenzi, ce permit a insera acest
registru cu conţinutul contorului comenzilor, registrelor de destinaţie generală sau a oricărei
regiuni a memoriei. Unele comenzi acordă posibilitatea de a schimba conţinutul registrului
adresei memoriei prin efectuarea calculelor: valoarea nouă a conţinutului acestui registru se obţine
prin adunarea sau scăderea conţinutului contorului comenzilor cu numărul, indicat în comandă
însăşi. Adresarea de acest tip a primit denumirea adresării cu utilizarea deplasării.
Registrul comenzilor
Registrul comenzilor este destinat în exclusivitate pentru stocarea comenzii curente ce se
efectuează, această funcţie se realizează de către MP în mod automat cu începutul ciclului
selecţie  executare, numit la fel ciclu de maşină.
După cum a fost menţionat mai sus, ciclul de maşină constă din două subcicluri – selecţie şi
executare. Cu excepţia inserării comenzii în perioada subciclului de selecţie, programatorul nu
poate altfel utiliza registrul comenzilor. Conform schemei de pe fig.1.1, acest registru este
conectat cu magistrala internă a datelor, însă el numai recepţionează datele – să expedieze datele
pe magistrală el nu poate.
Deşi funcţiile registrului comenzilor sunt limitate, rolul lui în funcţionarea MP este mare,
deoarece ieşirea acestui registru este o parte a descifratorului comenzilor.

Registrul stărilor
Registrul stării este destinat pentru stocarea rezultatelor unor verificări, realizate în procesul
executării programului. Poziţiile binare ale stării iau o valoare sau alta la executarea operaţiilor,
ce utilizează DLA şi alte registre.
Memorizarea rezultatelor verificărilor pomenite permite a utiliza programe ce conţin tranziţii
(încălcări ale succesivităţii naturale a executării comenzilor).
La prezenţa în program a tranziţiei, executarea comenzii începe de la o oarecare regiune
nouă a memoriei, i.e. contorul comenzilor este încărcat cu un număr nou. În cazul tranziţiei con-
diţionate, aşa acţiune are loc, dacă rezultatele anumitor verificări coincid cu rezultatele aşteptate.
Rezultatele indicate se află în registrul stărilor.
Posibilităţile programării cu transmiterea dirijării (cu tranziţii) – este caracteristica specifică
a maşinii de calcul în comparaţie cu calculatorul. Registrul stării acordă posibilitatea de a
organiza funcţionarea MP astfel, ca în anumite condiţii să se schimbe ordinea executării
comenzilor. Se poate de spus, că MP ia decizia despre o continuare sau alta a mersului calculelor
în dependenţă de condiţiile indicate.

Structura setului microprocesor de studiu


Setul microprocesor de studiu (SMPS) reprezintă o maşină electronică de calcul completă şi
este destinat:
- pentru studierea bazelor proiectării şi deservirii maşinilor electronice de calcul construite
pe baza MP KP580BM80A;
- pentru instruirea bazelor programării MP KP580BM80A;
- pentru elaborarea şi construirea machetelor blocurilor de dirijare cu utilajul experimental.

1. Structura şi principiul de funcţionare ale părţilor componente ale SMPS


1.1. SMPS este alcătuit din următoarele parţi componente:
- maşină electronică de calcul;
- pupitru de operator;
- blocul de alimentare.
1.2. Maşina electronică de calcul (MEC) este partea componentă principală şi dirijează cu
funcţionarea întregului SMPS. MEC constă din dispozitivul operativ (DO), dispozitivul de
memorie constantă (DMC), dispozitivul de memorie operativă (DMO) şi dispozitivul de
executare a programelor pas cu pas.
DO efectuează toate operaţiile de procesare a informaţiei. Informaţia despre starea DO se
fixează în registrul stărilor la începutul fiecărui ciclu de maşină. În dependenţă de starea acestui
registru, sunt date stările posibile ale DO.
DO îndeplineşte operaţii aritmetice şi logice asupra datelor, ce vin fie din memorie, fie din
dispozitivul intrare/ieşire. DO include un microcircuit de integrare largă MP KP580BM80A, ge-
neratorul impulsurilor de tact, repetoarele tampon, necesare pentru micşorarea sarcinii la ieşirile
MP.
DMC păstrează programele şi datele şi este accesibil numai pentru citire. 1 kilobyte al DMC
îl ocupă programul “Monitor”, ce asigură introducerea informaţiei de pe tastatura pupitrului de
comandă a operatorului şi scoaterea ei pe display, şi are adresele 0000 – 03FF. Încă 1 kilobyte al
DMC cu adresele 0400 – 07FF este rezervat utilizatorului pentru lărgirea posibilităţilor SMPS.
DMO se utilizează pentru stocarea programelor şi datelor ce se schimbă. DMO are
capacitatea de 1 kilobyte cu adresele 0800 – 0BFF, din care ultimele 54 celule de memorie se
utilizează de către programul “Monitor” pentru “stivă.”
Dispozitivul de executare a programului pas cu pas transferă DO în starea de aşteptare
“stand by” fie în fiecare ciclu de maşină, fie după executarea fiecărei comenzi curente.
Executarea programului poate fi suspendată prin presarea tastei «ПР» (întrerupere).
1.1.3. Tastatura pupitrului de comandă constă din 30 taste, dintre ele 8 taste – de
directivă, 16 – informaţionale.
Tastele de directivă servesc pentru apelarea la directive şi au următoarele notaţii:
«П» – citirea şi schimbarea conţinutului memoriei;
«РГ» – citirea şi schimbarea conţinutului registrelor;
«СТ» – transferarea dirijării programului către utilizator;
«КС» – determinarea sumei de control a masivului în memorie;
«ЗК» – completarea masivului de memorie cu o constantă;
«ПМ»  deplasarea masivului în spaţiul de adrese;
«–» – tasta lacunei;
«ВП» – «executarea» înseamnă sfârşitul directivei.
Tastele informaţionale: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F servesc pentru inserarea
numerelor în codul hexazecimal. În acelaşi timp, tastele cu 4/РH până la F servesc pentru
apelarea la identificatorii registrelor MP A, B, C, D, E, H, L, F, byte-ului superior al contorului
comenzilor РH şi byte-ului inferior al contorului comenzilor PL, byte-ului superior al
indicatorului stack-ului SH şi byte-ului inferior al indicatorului stack-ului SL.
În cazul lucrului incorect cu tastatura, în poziţia externă din dreapta display-ului este indicat
semnul «?».
Tastele de dirijare a SMPS:
«~» – introducerea sursei de curent;
«СБ» – revenire la zero şi instalarea iniţială a SPMS;
«ПР» – întreruperea executării programului;
«РБ/ШГ» – apelare la regimul pas cu pas;
«КМ/ЦК» – selectarea mărimii pasului;
«ШГ» – pas succesiv.
Pupitrul de comandă conţine un display pe care se indică adresa celulei de memorie sau
identificatorul registrului MP şi conţinutul lor, precum şi LED-urile indicatoare ale magistralei
de adrese (MA) şi ale magistralei datelor (MD) şi registrelor stărilor. LED-urile adreselor şi cele
informaţionale sunt divizate în tetrade după gradul de superioritate de la dreapta la stânga.
Greutatea specifică a poziţiilor binare în fiecare tetradă 8-4-2-1. Adresele şi datele sunt scoase pe
LED-uri în sistemul binar de calcul. Indicarea prin LED-uri este utilizată la executarea progra-
mului utilizatorului în regimul pas cu pas.
Tema la lucrarea de laborator nr.1
Pregătirea SPMS pentru lucru:
1. A stabili tasta «~» în starea depresată.
2. A conecta SPMS în circuitul de curent alternativ 220 V (50 Hz).
3. A fixa tasta «РБ/ШГ» în starea «РБ».
4. A conecta SPMS, presând tasta «~».
5. Presaţi tasta de dirijare «СБ». În poziţia limită de stânga trebuie să apară semnul «–».
6. La executarea corectă a punctelor 1–5, SPMS este pregătit pentru lucru.
Exerciţii
1. Indicarea conţinutului memoriei şi schimbarea lui.
Pentru aceasta:
În mod succesiv presaţi următoarele taste:
«П» Х1 Х2 Х3 Х4 «–» D1 D2,
unde Х1 Х2 Х3 Х4 este adresa celulei de memorie dată cu ajutorul tastelor informaţionale (în
calitate de adresă se fixează ultimele 4 cifre hexazecimale inserate);
D1 D2 – datele, ce trebuie înscrise în celulele succesive de memorie, începând cu adresa
inserată.
După presarea tastelor «П» Х1 Х2 Х3 Х4 «–» pe vizualizator se iluminează adresa celulei
de memorie şi conţinutul ei în codul hexazecimal. Pentru schimbarea conţinutului celulei de
memorie indicată, alegeţi conţinutul său nou şi presaţi tasta «–». La aceasta se indică conţinutul
următoarei celule de memorie, care la fel poate fi schimbat ş.a.m.d. până la presarea tastei
sfârşitului directivei «ВП». Pentru trecerea la următoarea celulă de memorie fără schimbarea
conţinutului celei indicate, neculegând date noi, presaţi tasta «–».

Tema 1
1.1. Pe adresa 080А de inserat codul E5 (E5  (080A)), după aceea în celulele succesive de
memorie, începând cu adresa, de inserat corespunzător 10  (0801), 20  (0802), 30  (0803),
… F0  (080F), 0F  (0810) şi în sfârşit de inserat
C3  (0A00), 05  (0C01), 03  (0100).
1.2. De verificat conţinutul memoriei pe adresele 0800 – 0810, 0А00, 0С01, 0100 şi de
explicat rezultatul.
1.3. Pe adresele 0800 – 0810 de inserat succesiv codurile 00, 01, 02, 03, …, 0F, 10. În darea
de seamă de adus şi de explicat rezultatul verificării conţinutului memoriei pe aceste adrese,
precum şi de descris procedura verificării.
1.4. De citit conţinutul a zece celule ale DMC cu diferite coduri pe adresele 0000 – 0050.
Utilizând tabela codurilor comenzilor MP, de descifrat partea programului “Monitor” înscris pe
aceste adrese.

. Indicarea şi schimbarea conţinutului registrelor


Pentru aceasta:
Presaţi tasta «РГ», pe urmă identificatorul registrului. Răspunsul la introducerea
identificatorului este indicarea conţinutului registrului dat pe vizualizator. Pentru schimbarea
conţinutului registrului, formaţi valoarea nouă cu ajutorul tastelor informaţionale. În calitate de
conţinut nou se fixează ultimele două cifre inserate. După aceasta presaţi «–» şi poate fi introdus
identificatorul registrului următor. La necesitatea trecerii la registrul următor fără schimbarea
conţinutului celui indicat, fără a culege date noi, presaţi tasta «–». Pentru completarea directivei,
presaţi tasta «ВП».

Tema 2
2.1. Succesiv revedeţi şi înscrieţi conţinutul tuturor registrelor. Explicaţi rezultatul atrăgând
o atenţie deosebită conţinutului registrelor stack şi contorului comenzilor.
2.2. Înscrieţi în registre succesiv codurile: 00  (А), 01  (В), 02  (С), 03  (D), 04 
(E), 05  (F), 06  (PH),
07  (PL), 08  (SH), 09  (SL).
2.3. Verificaţi corectitudinea inserării datelor în registre. Explicaţi rezultatul.

3. Completarea masivului memoriei cu o constantă


Pentru aceasta:
Presaţi succesiv următoarele taste:
«ЗК» АDRESA1 «–» АDRESA2 «–» D «ВП»,
unde ADRESA1, ADRESA2 sunt corespunzător adresa iniţială şi cea finală ale masivului
memoriei, ce se completează; D – un byte de date, ce trebuie să fie supuse inserării în memorie.
Încercarea de a completa cu informaţie ultimele 54 celule de memorie a DMO duce la
deteriorarea stivei “Monitorului”.

Tema 3
3.1. Pornind de la descrierea SPMS, calculaţi analitic adresa începutului stivei
“Monitorului”. Comparaţi-l cu conţinutul registrului SP obţinut anterior.
3.2. Completaţi masivul cu adresele 0А00 – 0А10 cu constanta AA.
3.3. Utilizând directiva «П», verificaţi corectitudinea completării masivului memoriei.

4. Determinarea sumei de control a masivului memoriei


Suma de control (SC) a masivului reprezintă suma conţinutului tuturor celulelor de memorie
fără considerarea supracompletării. Pentru aceasta:
Presaţi succesiv următoarele taste:
«КС» АDRESA1 «–» АDRESA2 «ВП»,
unde ADRESA1, АDRESA2 sunt corespunzător adresa iniţială şi cea finală ale masivului de
memorie controlat.
După executarea directivei, pe ecranul vizualizatorului se indică suma de control a
masivului.

Tema 4
4.1. Completaţi masivul memoriei cu adresele 0800 – 0807 cu următoarele date:
0800 0801 0802 0803 0804 0805 0806 0807
01 03 05 07 09 0А 0С 0F
4.2. Utilizând directiva «КС», calculaţi suma de control a acestui masiv.
4.3. Calculaţi SC a acestui masiv analitic şi comparaţi rezultatul cu cel obţinut la executarea
directivei «КС».
4.4. În celula de memorie 0808 inseraţi codul suplimentar F0. Calculaţi SC a masivului
memoriei cu 0800 – 0808 şi comparaţi-o cu rezultatul analitic.

5. Deplasarea masivului memoriei în spaţiul adreselor


Pentru aceasta:
Presaţi succesiv următoarele taste:
«ПМ» ADRESA1 «–» ADRESA2 «–» ADRESA3 «ВП»,
unde ADRESA1, ADRESA2 sunt corespunzător adresa iniţială şi cea finală ale masivului ce se
deplasează; ADRESA3 – adresa iniţială a masivului deplasării.
După executarea directivei masivul datelor, limitat de adresele ADRESA1, ADRESA2
inclusiv, se deplasează în regiunea memoriei, începând cu adresa ADRESA3, masivul deplasării
şi plasării nu trebuie să se suprapună, în caz contrar are loc pierderea informaţiei.

Tema 5
5.1. Pe adresele 0800 – 0808 inseraţi masivul memoriei din tema anterioară.
5.2. Deplasaţi acest masiv în regiunea memoriei cu adresa iniţială 0А10, utilizând directiva
«ПМ».
5.3. Utilizând directiva «П», revedeţi conţinutul masivelor deplasării şi plasării. Explicaţi
rezultatul.

Ordinea deconectării SPMS


1. Depresaţi tasta «РБ/ШГ», dacă ea era presată.
2. Deconectaţi SPMS, depresând tasta «~».

Lucrare de laborator nr. 2


Programarea microprocesorului KP580BM80A..

Introducere în programare
Programarea este descrierea în succesiune a operaţiunilor care trebuie să le îndeplinească
calculatorul pentru soluţionarea problemei fixate. Microprocesorul (MP) îndeplineşte numai aceea,
ce îi prescrie lui programatorul. Descrierea procesului soluţionării problemei în aşa mod ca ea să
poată fi soluţionată de către calculator este partea de bază a programării. Rezultatul descrierii
soluţionării problemei îl numesc algoritm. Algoritmul alcătuit poate fi codat, adică reprezentat în
forma unei succesiuni a comenzilor de maşină, ce realizează soluţionarea problemei.
Înscrierea algoritmului cu ajutorul comenzilor se numeşte codare, iar comenzile utilizate
pentru aceasta - cod iniţial. Deoarece pentru funcţionarea calculatorului sunt necesare comenzile
binare, codul iniţial trebuie să fie supus translaţiei [traducerii] într-un cod obiectiv, ce constituie
o reprezentare binară a codului iniţial.

Alcătuirea schemei  bloc a algoritmilor


Schema  bloc a algoritmilor este alcătuită din blocuri separate. Se deosebesc 4 tipuri de
blocuri. Blocul în formă de dreptunghi simbolizează îndeplinirea oricăror operaţiuni pentru
procesarea datelor, textul din interiorul blocului este descrierea pe scurt a acestui proces de
procesare. Prin săgeţi este notată direcţia mersului calculelor. De exemplu, dacă blocul conţine
schema algoritmului, aceasta înseamnă, că la etapa dată a funcţionării calculatorului
acumulatorul trebuie să fie curăţat.
Blocul, ce are forma unui romb, se utilizează pentru notarea simbolică a verificării
îndeplinirii unei condiţii oarecare. În interiorul blocului, se descrie condiţia ce trebuie supusă
verificării. Rezultatele posibile ale verificării sunt indicate la ieşirile prin liniile ce ies din bloc.

Sunt posibile două rezultate ale verificării. Variabila A fie că este egală cu 20, fie că nu. În

primul caz, îndeplinirea algoritmului continuă în direcţia indicată de săgeată cu subscripţia “da”,
in cazul al doilea după săgeata cu subscripţia “nu”.
Blocul de formă ovală se utilizează pentru notarea începutului şi sfârşitului algoritmului.
Textul din interiorul blocului, de regulă, constă dintr-un cuvânt: “începutul” sau “sfârşitul”.
În acele cazuri, când este necesar de “întrerupt” linia fluxului de calcule, ce merge de la un
bloc la altul, se folosesc aşa-numitele conexiuni în formă de cerc cu cifra sau litera indicată în
interiorul lui. Prezenţa altei conexiuni identice [cu aceeaşi cifră sau literă] înseamnă, că linia
întreruptă în locul plasării primei conexiuni este continuată din acel loc, unde se află a doua
conexiune similară.

Subprogramele

Subprogramul  este o parte a programului, utilizată de regulă, de câteva ori în procesul


executării programului. Însă textul subprogramului se înscrie numai o singură dată. În caz de
necesitate, este suficient de indicat în program comanda corespunzătoare a chemării (adresarea
către subprogram), ce este adresată către regiunea memoriei, în care este situat subprogramul.
Majoritatea limbajelor de programare posedă pentru aceste scopuri comenzi speciale de chemare
a subprogramelor CALL, care nu numai iniţiază executarea subprogramelor, dar şi memorizează
starea programului în momentul adresării către subprogram. În urma chemării subprogramului ei
i se transmite dirijarea cu scopul executării de către el a operaţiunilor pas cu pas. Ultima
comandă a subprogramului ce se execută, de regulă, este comanda întoarcerii RETURN, ce
transmite dirijarea înapoi programului ce a chemat-o, impunând-o pe ultima să continue execu-
tarea de la acea comandă, care urmează nemijlocit după comanda chemării subprogramului.
Meritul principal al subprogramului este în aceea că, datorită posibilităţii utilizării lor
multiple, se reduce textul programului.

Limbajul de programare
Limbajul de programare este un şir de comenzi şi reguli de utilizare a lor pentru descrierea
algoritmului soluţionării problemei cu scopul alcătuirii programului de funcţionare a calculatoru-
lui electronic, ce execută această soluţionare. Diferite limbaje de programare au diferit grad de
asemănare cu limba vorbită. De pildă, cuvântul binar 0100 1111, înscris in limbajul maşinii înde-
plineşte rolul comenzii de curăţare a acumulatorului. În limbajul ASSEMBLER, această
comandă are forma CLAA. Aşa înscriere poate fi considerată ca abreviatura verbului din limba
engleză clear (a curăţa). În limbajul de nivel înalt BASIC, variabilei A i se poate atribui o valoare
nulă prin comanda LET A=0 (FIE A=0).
La utilizarea limbajelor de nivel înalt, în comparaţie cu limbajele de nivel inferior, este
necesar de mai multe comenzi de maşină pentru îndeplinirea aceluiaşi lucru. De pildă, pentru
realizarea comenzii LET A=0 a limbajului BASIC poate fi necesar a avea 100 şi mai multe
comenzi de maşină. În acelaşi timp numărul binar 0100 1111 este o comandă de maşină (unică)
ce realizează curăţarea acumulatorului. La lucrul cu comenzile limbajului de nivel superior, este
necesar un volum mai mare de memorie şi un timp mai îndelungat de executare. Utilizarea lim-
bajelor de nivel înalt este posibilă numai în lucrul cu sistemele de calcul de o arhitectură relativ
complexă.
Toate limbajele de programare trebuie supuse transformării în succesiune de comenzi de
maşină binare. Programând nemijlocit în limbajul de maşini, cifrele binare se pot introduce direct
în memorie. La utilizarea limbajului de nivel înalt, se cere o etapă intermediară (translaţia) de
transformare a operatorilor limbajului de nivel înalt în coduri de maşină.
Programarea în limbajul maşinii se foloseşte numai la alcătuirea programelor foarte scurte
ale MP. În lucrul cu MP, cel mai răspândit este limbajul ASSEMBLER, în care se utilizează scri-
erea prescurtată a cuvintelor englezeşti. Înscrierea programului are loc cu utilizarea adreselor
simbolice. ASSEMBLER este un program de serviciu, ce transformă numele simbolice
(cuvintele englezeşti prescurtate)şi adresele simbolice în comenzi în codul de maşină şi adresele
numerice. Translaţia textului programului din limbajul de nivel înalt în limbajul de comenzi de
maşină se realizează pe calea interpretării sau translaţiei.

Forma mnemonică de înscriere a comenzilor


Comanda MP este un număr binar, care fiind “citită” de către MP, îl impune pe ultimul să
îndeplinească anumite operaţii. Majoritatea comenzilor realizează transmiterea şi procesarea da-
telor plasate în memorie sau în unul din registrele MP. Pentru executare, comanda este trimisă în
registrul comenzilor în descifrator şi schemele de dirijare, unde ea este identificată, ca rezultat se
formează semnalele, ce sunt îndreptate în alte părţi ale MP. MP inserează comanda în registrul
comenzilor în decursul ciclului de selectare. În ciclul următor, MP decodifică comanda şi creează
semnale de dirijare a procesului executării operaţiunilor acestei comenzi. Comanda trebuie să
informeze MP ce are de făcut ( locul amplasării datelor ce se procesează). Comanda constă din
două părţi: codul operaţiei şi adresa. Codul operaţiei comunică MP ce trebuie să facă; adresa
indică locul datelor, ce participă în operaţie. Dacă lungimea comenzii constă din două sau trei
cuvinte, atunci primul este codul operaţiei, iar al doilea – adresa.
Deoarece numărul înscris în sistemul octal şi cel hexazecimal de calcul este greu de
memorizat, atunci se utilizează înscrierea prescurtată  notarea mnemonică (abreviatura cuvinte-
lor din limba engleză).
Metodele de adresare ale MP
Comanda MP constă din codul operaţiei şi din adresă. Dar sunt şi comenzi fără adresă.
Atare pildă este comanda ce abandonează funcţionarea MP. Lungimea comenzii depinde de
lungimea adresei ce se utilizează în ea. Tipul de adresare către date este numit metodă de
adresare.

Adresarea implicită
Comanda de un octet a MP de 8 ranguri este una dintre cele 256 combinaţii din 8 biţi, ce
formează un cuvânt de maşină. MP posedă 65 536 regiuni de memorie. De aceea, pentru
comenzile de un octet nu se adresează către datele situate în memorie. Comenzile operează cu
datele încărcate în registru, perechea de registre sau cu datele păstrate în regiunea memoriei, a
căror adresă se află în perechea de registre. Atare adresare se numeşte implicită. Comenzile de
un octet se execută mai repede decât altele, deoarece în aşa caz MP îi este necesar ciclul de
selecţie şi de executare.

Adresarea directă
Comenzile cu adresarea directă pot avea lungimea de 2 sau 3 octete. Primul octet este
destinat pentru codul operaţiei, al doilea şi, dacă există, al treilea  pentru adresă. Adresa indică
regiunea memoriei, în care se află datele ce trebuie supuse procesării. Folosirea comună a
octetelor al doilea şi al treilea ale comenzii permite a se adresa la oricare din 65 536 regiuni ale
memoriei. La adresarea implicită, locul datelor este “inserat” în comandă şi programatorul este
lipsit de posibilitatea de a se adresa de sine stătător către date pe adresa lor. La adresarea directă,
datele se indică direct în comandă, urmând îndată după codul operaţiei. În acest caz,
programatorul, la fel, nu se poate adresa către date. La adresarea directă aşa posibilitate există.
Adresarea indirectă
În afară de codul operaţiei, în asemenea comandă se indică numărul registrului, conţinutul
căruia este adresa locului datelor în memorie. Prin acest indiciu aşa comenzi diferă de comenzile
adresării nemijlocite, ce conţin în ele datele înseşi, sau de comenzile adresării directe, care includ
adresa acestor date. La utilizarea adresării indirecte, comanda corespunzătoare indică în care
pereche de registre este plasată adresa locului datelor în memorie. Aşa metodă de adresare este
cea mai comodă la înscrierea şi citirea regiunilor de memorie ce urmează una după alta.

Comenzile de transfer de date


Comenzile de transfer de date (permutare a datelor) servesc la transferul de date în diferite
dispozitive de stocare a informaţiei, pe care o posedă calculatorul electronic, precum şi pentru
transferul de date din aceste dispozitive. Informaţia se păstrează în locaţii şi registre. În
dependenţă de dispozitivele calculatorului electronic, se deosebesc comenzile: încărcarea,
transferul de date şi înregistrarea în memorie. Comenzile de transfer de date realizează practic
transferul duplicatelor de date.
Comanda de transfer de date constă din două părţi: codul operaţiei şi partea adresării. Codul
operaţiei în comanda transferului de date determină sursa de date şi metoda de adresare.
Adresarea poate fi una din cele trei tipuri: nemijlocită, directă şi indirectă.

Încărcarea nemijlocită a registrului


LDA R. Datele. După comanda “încărcare nemijlocită registrului”, în registrul R se încarcă
datele, ce se află în octetul al doilea al comenzii. De pildă, cu ajutorul comenzii LDA B se
efectuează încărcarea datelor în registrul B. Comanda are două octete şi se execută în decurs de
trei microcicluri.
Încărcarea directă a registrului
LDD R. Datele. Conform acestei comenzi, datele se reînscriu din regiunea de memorie la
care se adresează în registrul R. Al doilea şi al treilea octete ale comenzii indică adresa regiunii
de memorie, datele căreia se copie. De exemplu, după comanda LDD C,0F1C datele, ce se află
în regiunea memoriei 0F1C, se reînscriu în registrul C.

Încărcarea indirectă a acumulatorului


LDI A. Datele. Conform acestei comenzi, datele se reînscriu din regiunea de memorie în
acumulator. Conţinutul perechii de registre BC indică adresa regiunii memoriei-sursă de date. În
perechea de registre BC, anterior, se introduce adresa necesară.

Încărcarea nemijlocită a perechii de registre


LRP B. Datele. Conform acestei comenzi, în perechea de registre BC de rangul 16 se
încarcă datele ce le conţin al doilea şi al treilea octete ale comenzii. Aceasta este comandă din
trei octete pentru executarea cărora sunt necesare trei microcicluri.

Transferul de date din registru în registru


MOV R1,R2. Conform acestei comenzi, în registrul R1 se încarcă copia datelor, ce le
conţine registrul R2. Aceasta este o comandă de 1 octet, ce se realizează în două microcicluri.

Înscrierea directă a acumulatorului în memorie


STA A,Adresa. Datele din acumulator se înscriu în memorie. Al doilea şi al treilea octete
ale comenzii indică regiunea memoriei, în care se efectuează înscrierea datelor. Aceasta este
comandă de trei octete, realizarea căreia ocupă cinci microcicluri.

Înscrierea acumulatorului în memorie indirectă


STI A. Datele se reînscriu din acumulator în memorie. Conţinutul perechii de registre BC
indică adresa regiunii de memorie, în care se realizează înscrierea datelor.
Programarea microprocesorului KP580BM80A
1. Alcătuirea formularului programului. Programul pentru MP de seria 580 se alcătuieşte
folosind un formular special.

Comen-
Adresa Codul Eticheta Mnemonica Operandul
tariul
1 2 3 4 5 6
0800 3E01 începutul MVIA ,01H 1(A)

Formularul programului constă din 6 câmpuri. La scrierea programului se folosesc mai întâi
câmpurile 3-6.
În câmpul 4 se înscrie notarea mnemonică a comenzii ce se execută.
În câmpul 5 se înscrie operandul necesar Adresa saltului, Numărul canalului intrare-
ieşire. Operandul poate fi înscris nemijlocit în forma unui număr concret sau implicit, adică lui i
se poate atribui un nume simbolic, iar valoarea concretă, ce corespunde acestui nume, se
determină ulterior la transferarea textului programului în coduri interne. Când operandul este dat
în formă nemijlocită, atunci după el se pun literele D,H sau B, dacă numărul este corespunzător
zecimal, hexazecimal sau binar.
Câmpul 6 este rezervat pentru comentariu explicarea acţiunilor, ce se îndeplinesc de către
program. Prezenţa acestui câmp nu este obligatorie. Dacă doriţi ca programul D-voastră să fie
clar altora, precum în viitor şi D-voastră însuşi, comentariul trebuie să fie prezent. Câmpul 6 se
separă de alte câmpuri prin punct cu virgulă.
Câmpul 3 se completează în acel caz, dacă este necesar de a marca începutul fragmentelor
programului, la care se realizează saltul din alte părţi ale programului conform comenzilor de ra-
mificare (transfer de comandă) şi chemare a subprogramelor. Câmpurile 1 şi 2 se completează în
corespundere cu tabela de coduri a MP şi lungimea comenzilor. Aceste câmpuri se completează
în sistemul hexazecimal de calcul, la care litera H la sfârşit se omite. Dacă în program se
utilizează definirea implicită a operanzilor, atunci la începutul şi la sfârşitul textului programului
se determină, cu ce sunt egali într-adevăr aceşti operanzi. Pentru aceasta, în câmpul 3 se înscrie
numele simbolic al operandului, în câmpul 4  EQU prescurtat (egal), iar în câmpul 5  valoarea
reală a operandului.
În câmpul 5 se înscriu codurile şi operanzii comenzilor. La acestea numele simbolice le
înlocuiesc cu valorile lor reale. La înscrierea operanzilor şi adreselor de rangul 16 (de 2 octete),
în câmpul 5 se ţin de înscrierea naturală, adică din stânga se înscriu rangurile mai superioare, iar
din dreapta mai inferioare ale numărului. La înscrierea codurilor operanzilor în câmpul 2,
ordinea este inversă, adică în memoria calculatorului electronic se înscrie întâi octetul inferior, pe
urmă  octetul superior al operandului.
Prima valoare a adresei în câmpul 1 (adresa primei comenzi) se alege de către utilizator în
dependenţă de locul liber în memoria operativă a calculatorului. Câmpul se completează aşa, ca
valorile indicate în el să corespundă adreselor celulelor de memorie, ce conţin codurile (primele
octete) ale comenzilor programului.
Formatul câmpului 2 este determinat de lungimea comenzilor şi poate conţine 1, 2 sau 3
octete. Corespunzător în câmpul 1, în dependenţă de lungimea comenzii premergătoare, la
valoarea adresei premergătoare se adaugă 1, 2 sau 3 octete.
Codurile octetului 2 sau 3 în comenzile de transfer de comandă şi chemare a subprogramelor
în câmpul 2 sunt introduse în ultimul rând după completarea tuturor rândurilor câmpului 1.
Programul în coduri interne
După completarea formularului în câmpul 2, obţinem înscrierea programului în coduri
interne ale calculatorului. Dacă acum codurile din câmpul 2 le plasăm în memoria calculatorului
pe adresele, indicate în câmpul 1, atunci la demarajul calculatorului de la adresa iniţială a
programului, ea începe să execute algoritmul dat.
Dacă programul are stivă, atunci este necesar a efectua în program ajustarea indicatorului
stivei, adică în perechea de registre SP se plasează adresa memoriei ce nu conţine codurile
comenzilor programului.
Exemplu de completare a formularului programului.
Mnemo- Operan-
Adresa Codul Eticheta Comentariul
nica dul
1 2 3 4 5 6
0800 0636 Începutul: MVIB ,36D ;36(B)
0802 3E14 MVIA ,14D ;14(A)
0804 80 ADDB ;(A)+
(B)(A)
0805 27 DAA ;corecţia
zecimală
0806 320A08 STA 080AH Înscrierea
în DMO
0809 76 Sfârşitul: HLT ;oprirea;
080A DS 00H rezervarea
şi zerogra-
fierea
octetului

În aşa mod, programul obţinut este plasat în memoria calculatorului electronic pe adresele
0800-0809H. Rezultatul calculelor va fi plasat în celula de memorie rezervată pe adresa 080A.
Înaintea lansării programului la calcul, conţinutul lui trebuie zeroficat. Pentru calcul conform
programului, este necesară pornirea MP, începând cu adresa 0800, iniţial înscriind în memoria
calculatorului codurile comenzilor din câmpul 2 pe adresele câmpului 1.

Activarea CMPS
Pentru înscrierea şi lansarea programului la calcul este necesar:
- a introduce CMPS;
- a presa tasta “СБРОС”.
După aceasta, pe vizualizator va apărea simbolul “” şi calculatorul va trece în regimul
recepţionării directivelor utilizatorului.
Încărcarea programului în memoria microcalculatorului se realizează cu ajutorul directivei
“indicarea şi schimbarea conţinutului memoriei” (vezi lucrarea de laborator nr.1).
După încărcarea programului, ea este lansată la calcul, utilizând directiva “transferul de
comandă programului utilizatorului”: “СТ” “ADRESA1” - “ADRESA2”; unde ADRESA1
este adresa iniţială a programului; ADRESA2 – adresa finală a programului.
Adresele 1 şi 2 trebuie să se afle în limitele DMO ale MP 0800-0BFF (ultimele 54 celule ale
DMO sunt ocupate pentru stiva programului “MONITOR” şi nu trebuie să fie utilizate în pro-
gramul de lucru).
Rezultatul executării programului poate fi văzut, utilizând directivele CMPS.

Exemplu de înscriere şi executare a programelor


Executăm programul, alcătuit mai sus, de adunare a numerelor zecimale 36 şi 14 cu ajutorul
CMPS. Pentru aceasta este necesar a efectua următoarele operaţii:
 introducerea alimentării şi aducerea CMPS în starea iniţială, presând tasta “СБРОС”,
utilizând directiva “П” 0800 - “D1” - “D2”… “–” DN “ВП” de încărcat în DMO al CMPS
următoarea succesiune a codurilor:
0800 0801 0802 0803 0804 0805 0806 0807 0808 0809 080A
06 36 3E 14 80 27 32 0A 08 76 00
 executarea programului cu ajutorul directivei “СТ” 0800 “–” 0809 “ВП”;
 a se convinge, că după executarea programului conţinutul celulei de memorie 080A a
devenit egal cu 50;
 dacă nu se reuşeşte a executa corect programul, este necesar a se întoarce către partea
teoretică a lucrării de laborator #1, iar pe urmă a încerca din nou încărcarea şi executarea progra-
mului.
Noţiune de cicluri interne
Comenzile în MP se execută şi pe cicluri interne, a căror durată alcătuieşte 3-5 perioade ale
frecvenţei de tact a generatorului sincronizat. Timpul executării comenzii, în dependenţă de tipul
ei, face 1-5 cicluri interne. Numărul de cicluri interne în comandă de regulă este egal cu numărul
de adresări ale MP către memorie şi către porturile intrareieşire, necesare pentru selectarea şi
executarea comenzii date.
Fiinţează 10 tipuri de cicluri interne, ce sunt îndeplinite de către MP KP580BM80A:
1. Ciclul MP  selectarea codului comenzii în registrul comenzilor;
2. Ciclul citirii DM  citirea DM pe adresa dată;
3. Ciclul înscrierii în DM;
4. Ciclul citirii stivei  citirea DM pe adresa în SP;
5. Ciclul înscrierii în stivă  înscrierea în stivă pe adresa
în SP;
7. Ciclul intrareieşire a datelor din MP în canal;
8. Ciclul întreruperilor  recepţionarea codului comenzii RST sau CALL din controlorul
întreruperilor;
9. Ciclul oprire;
10. Ciclul întreruperii la oprire.
Fiecare ciclu intern este acompaniat de extragerea în primul tact pe magistrala datelor
octetului stării MP, ce informează dispozitivele exterioare despre tipul ciclului intern (CI) ce se
execută. Octetul stării se memorizează într-un registru extern special al calculatorului şi în
CMPS este reflectat de către LED-urile “СОСТОЯНИЕ”. Registrul stărilor se utilizează pentru
formarea semnalelor de dirijare cu dispozitivele exterioare, ce participă la executarea ciclului
intern dat.
Concordanţa dintre tipul ciclului şi conţinutul octetului stării este prezentat în tab.1.
Tabela 1
Rangurile registrului stărilor dispozitivului operativ (DO)
D0 D1 D2 D3 D4 D5 D6 D7
Starea DO INTA WO STACK HLTA OUT M1 INP MEMR
Selectarea
0 1 0 0 0 1 0 1
comenzilor
Citirea
0 1 0 0 0 0 0 1
memoriei
Înscrierea
0 0 0 0 0 0 0 0
în memorie
Citirea
0 1 1 0 0 0 0 1
stivei
Înscrierea
0 0 1 0 0 0 0 0
în stivă
Intrarea 0 1 0 0 0 0 1 0
Ieşirea 0 0 0 0 1 0 0 0
Întreruperea 1 1 0 0 0 1 0 0
Oprirea 0 1 0 1 0 0 0 1
Întrerupere 1 1 0 1 0 1 0 0
în oprire
INTA este semnalul de confirmare a interpelării întreruperii (se utilizează pentru
introducerea pe magistrala datelor a comenzii RST; WO) – în ciclul intern curent se execută în-
scrierea în memorie sau operaţia de ieşire.
Primul ciclu intern al oricărei comenzi este ciclul MP  selectarea codului comenzii.
Exemple: Comanda MOV A,B este executată într-un ciclu intern, în care se selectează codul
comenzii în registrul comenzilor. După descifrarea lui, dispozitivul de dirijare a MP determină
sensul comenzii şi corespunzător execută transferul (B)(A).
2. Comanda LOAD ADR este executată în două cicluri interne: 1) ciclul MP  selectarea
codului comenzii; 2) ciclul înscrierii în DMO pe adresa determinată de operandul comenzii.

Exerciţiu la lucrarea de laborator nr. 2


Pregătirea CMPS pentru lucru.
1. Fixaţi tasta “” în stare depresată.
2. Tasta “РБ/ШГ” de a o depresa în starea “РБ”.
3. Conectaţi CMPS în reţeaua de curent alternativ 220V (50Hz).
4. Introduceţi CMPS, presând tasta “”.
5. Presaţi tasta de dirijare “СБ”. În poziţia de limită în dreapta a vizualizatorului trebuie să
apară semnul “–”.
6. La executarea corectă a punctelor 1-5, CMPS este gata de lucru.
Exerciţii
Executarea celor mai simple programe
1. A înscrie programul de mai jos în memoria CMPS şi a-l îndeplini
0800 3E12 MVIA,12 ; înscrierea numărului în acumulator
0802 OEOC MVIC,OC ; înscrierea numărului în registrul C
0804 1OA11 LXID,110A ; înscrierea directă a operandului în DE
0807 21OD08 LXIH,ETIC. ; încărcarea adresei etichetei în HL
080A 42 MOVB,D ; (D)(B)
080B 75 MOV M,L ; (L)(M) cu adresa în HL
080C 76 HLT ; oprire
080D 00 ETICHETA:DB 00 ; rezervarea şi curăţarea celulei
de memorie
2. După executarea programului de a extrage pe vizualizator conţinutul registrelor şi
celulelor de memorie, utilizate în program, înscrieţi valorile şi explicaţi rezultatul.
3. De încărcat programul de mai jos în memoria CMPS şi
a-l executa
0800 014008 LXI B,0840 ; încărcarea BC cu adresa 0840
0803 0A LDAX B ; M(0840)(A)
0804 114108 LXI D,0841 ;
0807 12 STAX D ; A→M (0841)
0808 47 MOV B,A
0809 3A4208 LDA 0842 ; M(0842)→(A)
080C 324308 STA0843 ; (A)→M(0843)
080F 2A4408 LHLD 0844 ; M(0844-0845)→(HL)
0812 224608 SHLD 0846 ; (HL)→M(0846-0847)
0815 EB XCHG ; (HL)→(DE)
0816 76 HLT
0840 DB C5 ; înscrierea constantei
în memorie 0841
DB 00
0842 DB15
0843 DB 00
0844 DB 12
0845 DB 34
0846 DB 00
0847 DB 00
4. După executarea programului de a indica conţinutul registrelor şi celulelor de memorie,
utilizate în program pe vizualizator, înscrieţi şi explicaţi rezultatul.
5. A executa exerciţiile 1 şi 3 în regimele ciclurilor interne (CI) şi ciclurilor de comandă (CC).
Executând exerciţiul, analizaţi starea magistralelor de adrese şi informaţionale la fiecare pas.
Funcţionarea CMPS în regimul pas cu pas
În CMPS este prevăzută executarea programelor utilizatorului în regim pas cu pas, ce
permite a reflecta pe vizualizator şi pe indicatoare starea magistralelor de adrese şi
informaţionale, precum şi conţinutul registrului stării.
Există două tipuri de executare a programului pas cu pas: regimurile pe cicluri şi pe
comenzi. În regimul pe cicluri, dispozitivul operativ se transferă în starea de aşteptare la executa-
rea fiecărui CI, iar în regimul comandă după comandă  după executarea fiecărei comenzi la
rând.
Pentru chemarea regimului pas cu pas, este necesar:
- a presa tasta “РБ/ШГ” pentru fixarea regimului “ШГ” (pas cu pas);
- cu tasta “КМ/ЦК” a selecta regimul de comenzi interne (CI) sau pe cicluri (CC) de
executare a programului;
- utilizând directiva “СТ” ADRESA1-ADRESA2 “ВП”, transferaţi dirijarea programului
utilizatorului; pas cu pas executaţi programul, presând succesiv tasta “ШГ”.
După transferarea dirijării programului, ce se execută pe panoul de indicare luminoasă se va
reflecta adresa iniţială a programului, datele pe această adresă şi conţinutul registrului stării, ce
corespunde primei comenzi a programului.
Executarea programului poate fi întreruptă prin presarea tastei (“ПР”). În acest caz, dirijarea
se transferă subprogramului de prelucrare a întreruperii la comanda RST7. Subprogramul
întreruperii păstrează conţinutul registrelor MP, stabilit de programul utilizatorului.
După finisarea subprogramului întreruperii, se poate executa orice directivă a CMPS, în
particular, de a revedea conţinutul registrelor MP sau conţinutul celulelor de memorie, ce au luat
parte în programul utilizatorului.
6. Ordinea deconectării CMPS:
- depresaţi, dacă a fost presată tasta “РБ/ШГ”;
- deconectaţi CMPS, depresând tasta “~”.

Lucrare de laborator nr.3


Programarea MP KP580BM80A

Operaţiile aritmetice
1. Comanda ADUNAREA
MP în realitate pot îndeplini numai o singură comandă a procesării aritmetice  adunarea.
MP poate, de exemplu, aduna un număr binar cu codul suplimentar al altui număr binar. În aşa
mod, se realizează operaţia de scădere. Adunarea poate fi repetată de o mulţime de ori, iar
adaosul multiplu este operaţia înmulţirii. Scăderea repetată reprezintă operaţia împărţirii.
Să considerăm comenzile adunării. Singura diferenţă dintre ele constă în sursele din care se
iau datele pentru efectuarea lor.
Adunarea cu registrul
ADD r.A+rA. La comanda Adunarea cu registrul, conţinutul registrului r este adăugat la
conţinutul acumulatorului (registrul A). Rezultatul (suma) este inserată în acumulator. Conţinutul
iniţial al acumulatorului se pierde. Aceasta este comanda de un octet, ce se îndeplineşte în două
microcicluri ale microprocesorului.
Adunarea directă cu memoria
ADD M,Adresa+MA. La comanda Adunarea directă cu memoria, conţinutul regiunii
memoriei, adresa căreia este indicată în comandă, se adaugă la conţinutul registrului A. Al doilea
şi al treilea octete ale comenzii alcătuiesc adresa regiunii memoriei, în care se află unul din
termenii sumei. Suma este amplasată în acumulator. Conţinutul iniţial al acumulatorului se
pierde. Aceasta este o comandă din 3 octete, pentru care se consumă patru microcicluri ale
procesorului.
Adunarea indirectă cu memoria

ADI M. A+MA. La efectuarea comenzii Adunarea indirectă cu memoria, conţinutul


regiunii memoriei se adaugă la conţinutul acumulatorului. Regiunea, în care se află termenul
sumei, este indicată de către conţinutul perechii de registre BC. Pentru a putea utiliza comanda
dată, perechea de registre BC trebuie anterior încărcată. Suma este amplasată în acumulator.
Conţinutul iniţial al acumulatorului se pierde. Aceasta este o comandă de ! – octet, ce se
efectuează în trei microcicluri.

Adunarea cu datele directe


ADD I, Datele. La realizarea comenzii Adunarea cu datele directe, conţinutul celui de al
doilea octet al comenzii se adaugă la conţinutul acumulatorului. Aceasta este o comandă din 2-oc-
tete, a cărei executare consumă trei microcicluri.
Vom considera exemplul utilizării comenzii Adunarea. În fig.3.1 este prezentată schema 
bloc a programului, ce conţine această comandă. În program se utilizează comanda transferului
datelor Încărcarea directă. Ea serveşte pentru amplasarea în acumulator a numărului zecimal 12.
Cu ajutorul comenzii Adunarea cu datele directe, la acest număr 12 se adaogă numărul 41.
Rezultatul(53) rămâne în acumulator. La terminarea adunării are loc oprirea procesorului. MP în
realitate procesează numerele binare, indiferent de faptul că în fig. sunt indicate cifrele
hexazecimale (OC, 29, 35).

Fig.3.1. Adunarea a două numere cu ajutorul simplei comenzi Adunarea


În aşa mod se execută următoarea operaţie:
Numerele binare Numerele zecimale Numerele hexazecimale
0000 1100 12 0С
+ + +
0010 1001 41 29
----------------- -------- ---------
0011 0101 53 35
În fig.3.2 este indicată starea MP şi a dispozitivelor calculatorului electronic după selectarea
comenzii LDA. Aceasta e o comandă din 2 octete,a cărei realizare consumă trei microcicluri.

Fig.3.2. Selectarea comenzii ÎNCĂCAREA ACUMULATORULUI (LDA)

La începutul lucrului contorului de instrucţiuni îi este atribuită valoarea 0000, la aceasta el


indică asupra primei comenzi a programului. În procesul ciclului de selectare a comenzii,
conţinutul contorului de instrucţiuni se încarcă în registrul adresei memoriei. Decodificatorul de
adresă a memoriei decodifică datele, parvenite pe magistrala de adrese. După recepţionarea
semnalului de impuls, “Citirea memoriei” comanda LDA din regiunea de memorie 0000 este
amplasată pe magistrala datelor microcalculatorului electronic, iar de pe această magistrală este
înscrisă în registrul comenzilor microprocesorului.
În decursul ciclului executării (fig.3.2) de două ori se efectuează incrementarea conţinutului
contorului de instrucţiuni. Acum el indică asupra regiunii 0002  locul, unde se păstrează în me-
morie comanda următoare –Adunarea. Registrul adresei de memorie determină al doilea octet al
primei comenzi, ce conţine datele OC. Decodificatorul de adrese a memoriei decodifică adresa
octetului dat, şi la recepţionarea semnalului de impuls “Citirea memoriei”, numărul OC parvine
pe magistrala datelor microcalculatorului electronic. La executarea comenzii LDA datele (OC)
se încarcă în acumulator.
Se poate observa că în urma executării comenzii LDA, toate rangurile registrului stărilor se
stabilesc în 0. Aceasta înseamnă că valoarea datelor nu este egală cu 0, rangul lor superior nu
este egal cu 1, şi transferul din rangul superior la executarea operaţiei nu a avut loc.
Pe parcursul executării comenzii Adunarea, conţinutul contorului comenzilor se încarcă în
registrul de adresă a memoriei. Decodificatorul de adrese a memoriei decodifică adresa. La
recepţionarea semnalului “Citirea memoriei”, pe magistrala datelor se dă comanda Adunarea cu
datele directe. Această comandă se încarcă în registrul comenzilor microprocesorului.
Pe parcursul ciclului de executare a comenzii dată incrementarea conţinutului contorului de
instrucţiuni se realizează de două ori. El indică acum asupra regiunii cu adresa 0004, în care se
păstrează comanda Oprire. Conţinutul acumulatorului se transferă în registrul  tampon al
acumulatorului. În acelaşi timp, decodificatorul de adresă a memoriei indică asupra datelor, ce
se conţin în al doilea octet al comenzii. Decodificatorul de adresă a memoriei indică asupra
regiunii cu adresa 0003. După recepţionarea semnalului “Citirea memoriei” datele (numărul 29)
sunt transmise magistralei de date a microcalculatorului, de unde ele sunt încărcate în registrul 
tampon al DAL. Ulterior, DAL adună conţinutul registrului tampon al DAL şi acumulatorului.
Rezultatul (numărul 35) este amplasat în acumulator.
La recepţionarea semnalului “Citirea memoriei” la magistrala de date a microcalculatorului
electronic, a fost dată comanda Oprire. Ulterior, această comandă a fost încărcată în registrul co-
menzilor. Pe parcursul executării comenzii Oprire se efectuează incrementarea pozitivă a
contorului comenzilor, care indică asupra regiunii 0005, ce conţine comanda următoare. Însă
dispozitivul de dirijare decodifică comanda Oprire şi întrerupe lucrul microprocesorului.
Programul este executat în ansamblu. În acumulator se află datele (numărul 35)  rezultatul
adunării numerelor OC şi 29.
Executarea programului integru consumă şase microcicluri, ce alcătuiesc 6 mks la durata
fiecărui microciclu de 1 mks. Aceasta înseamnă, că într-o secundă microprocesorul poate executa
166667 atare programe.

Adunarea cu transfer
În afara celor patru comenzi considerate Adunarea, fiinţează încă patru varietăţi ale acestor
comenzi. Ele sunt foarte asemănătoare primelor patru tipuri de comenzi, însă se deosebesc prin
aceea, că la executarea lor în adunare participă conţinutul rangului de transfer al registrului
stărilor. În aşa mod, conţinutul regiunii memoriei se adaugă conţinutului acumulatorului, iar
după aceea la suma obţinută se adaugă valoarea rangului transferului din registrul stării.
Comanda Adunarea cu transfer reprezintă un mijloc unic, cu ajutorul căruia MP poate aduna
simultan trei numere. În toate alte cazuri, când trebuie de adunat trei numere, este necesar a
utiliza întâi o comandă Adunarea, pentru a aduna mai îintâi primele două numere, iar ulterior, cu
ajutorul încă a unei comenzi Adunarea, de adăugat al treilea număr la suma primelor două
numere.
Comanda Adunarea cu transfer dă posibilitate de a efectua adunarea a două numere
împreună cu transferul, obţinut în operaţia anterioară. Evident, la fiecare executare a comenzii
Adunarea cu transfer, în modul corespunzător, se stabilesc în registrul stărilor rangurile, ce
indică asupra egalităţii rezultatului cu zero, prezenţei la el a semnului minus şi prezenţa
transferului din rangul superior. De aceea, conţinutul iniţial şi al acumulatorului şi al registrului
stării, este ca şi la executarea altor comenzi Adunarea.
La comenzile Adunarea cu transfer se referă următoarele comenzi:
ADUNAREA CU REGISTRU ŞI CU TRANSFER
ACDR A+r+CA
ADUNAREA DIRECTĂ CU MEMORIA ŞI CU TRANSFER
ACD M,Adresa A+M+CA

ADUNAREA INDIRECTĂ CU MEMORIA ŞI CU


TRANSFER
ACI M M+A+CA
Cu ajutorul unui cuvânt al microprocesorului cu 8 ranguri, pot fi reprezentate numai
numerele ce se află în limitele de la 0 până la 255. Pentru reprezentarea numerelor mai mari după
valoare decât 255, este necesar a folosi mai mult decât un cuvânt de date. Noţiunea de aritmetică
de exactitate ridicată înseamnă folosirea pentru reprezentare a unui număr cu dimensiunea de
date mai mare decât un cuvânt.
În lucrul cu MP cu 8 ranguri, apelând la formatul dublu, adică folosind două cuvinte pentru
imaginea unui număr, pot fi reprezentate numerele de la 0 până la 65 535. Utilizând formatul
triplu, se dovedeşte a fi posibil de a reprezenta numerele de la 0 până la 167 772 215.
La adunarea numerelor de format dublu, mai întâi se adună octetele lor inferioare. Aceasta
se face cu ajutorul comenzii obişnuite Adunarea la a cărei executare nu se foloseşte valoarea
transferului. La aceasta, se înţelege, se poate forma transferul din rangul superior al octetului
inferior al sumei. După aceea, prin intermediul comenzii Adunarea cu transfer se efectuează
adunarea octetelor superioare ale numerelor. O aşa comandă se foloseşte în cazul, dacă la
adunarea octetelor inferioare este produs transferul. Dacă transferul are loc, atunci el participă la
executarea comenzii Adunarea cu transfer, dacă transferul din octetul inferior nu a fost format, la
intrarea transferului se va avansa 0.
Când numerele sunt reprezentate în formatul triplu, este necesar a realiza încă o comandă
Adunarea cu transfer. La executare acestei, a treia după ordine comenzi, se adună octetele
superioare ale două numere ale formatului triplu. Transferul, produs în urma executării ultimei
operaţii, ce intră în succesivitatea de operaţii pentru procesarea aritmetică de exactitate ridicată,
trebuie să lee păstrăm, sau să le înlăturăm. În majoritatea cazurilor se presupune că la executarea
ultimei operaţii, transferul nu se formează, adică este aplicat un format, suficient pentru
amplasarea celui mai mare rezultat posibil împreună cu octetul semnului.
Termenii sumei şi suma se împart în octete superioare şi inferioare. Pentru sumarea octeteor
inferioare ale termenilor sumei, se utilizează adunarea simplă binară. Cu acest scop se foloseşte
comanda Adunarea , în urma executării căreia se formează octetul inferior al sumei, precum şi
transferul. După terminarea acestei operaţii, rangul transferului în registrul stărilor se stabileşte
în 1. Pentru sumarea octetelor superioare a termenilor sumei e necesar de utilizat comanda
Adunarea cu transfer. La executarea ei, valoarea unitară a bitului transferului participă în calcul.
Comanda Înregistrarea în memorie serveşte pentru indicarea regiunii, destinată pentru
amplasarea sumei. Dacă pe parcursul executării programului apare transferul la adunarea
octetelor superioare, el va fi pierdut. Cu alte cuvinte, programul dat poate aduna numai numerele
binare fără semn, a căror sumă nu depăşeşte 65 535 sau numerele binare cu semn, a căror sumă
se află în limitele de la -32 768 până la +32 767.

Comanda SCĂDEREA
Singura comandă aritmetică, ce nu poate fi înlocuită este comanda Adunarea. MP poate
executa scăderea prin formarea codului invers celui scăzător, adăugând 1 al rangului inferior şi
adunării numărului obţinut în aşa mod cu cel de scăzut. 1 logic în rangul superior este criteriul
numărului negativ, iar 0 logic  criteriul numărului pozitiv. Codul suplimentar de 8 ranguri dă
posibilitatea de a reprezenta numerele în limitele de la +127 până la -128, incluzând 0.
Însă este mai rapid şi mai uşor de a nu crea un program special de scădere, ci de a pune
realizarea acestei operaţii direct pe seama MP. Multe MP posedă comenzi care nu sunt necesare,
însă facilitează considerabil lucrul programatorului. Comanda Scăderea tocmai se atribue la o
atare grupă de comenzi.
V-om considera comanda Scăderea. Rezultatul executării comenzii Scăderea este amplasat
în acumulator. Valoarea iniţială a descăzutului se pierde. La Scădere se stabilesc, în modul
corespunzător, trei ranguri ale registrului stărilor.
Toate comenzile considerate mai jos scad datele, asupra cărora este indicaţie în comandă,
din datele ce se află în acumulator. Cu alte cuvinte, în acumulator totdeauna este amplasat des-
căzutul. Adresa ce se află în componenţa comenzii Scăderea determină locul scăzătorului.
Pentru executarea scăderii servesc următoarele comenzi:
SCĂDEREA CU REGISTRUL
SUBr A-rA
Dacă rezultatul executării comenzii este negativ sau nul sau dacă apare semnalul
împrumutului în rangul superior al rezultatului, rangurile corespunzătoare ale registrului stărilor
se stabilesc în 1.
SCĂDEREA DIRECTĂ CU MEMORIA
SUB M,A A-MA
Al doilea şi al treilea octete ale comenzii indică asupra regiunii memoriei, în care se află
scăzătorul. Rezultatul (diferenţa) se amplasează în acumulator. Conţinutul iniţial al
acumulatorului se pierde.
SCĂDEREA INDIRECTĂ CU MEMORIA
SUI M, Adresa A-MA
Perechea de registru BC indică asupra regiunii memoriei, în care se află scăzătorul. (Pentru
ca comanda dată să poată fi utilizată, în perechea de registre BC trebuie să se conţină adresa
necesară).
SCĂDEREA CU DATELE DIRECTE
SUB I, Datele A-DateleA
La comanda Scăderea cu datele directe, conţinutul celui de al doilea octet al comenzii se
scade din conţinutul acumulatorului.
Analogic cu aceea că există patru comenzi Adunarea fără transfer şi patru comenzi
Adunarea cu transfer, există patru comenzi Scăderea, a cărei realizare nu presupune împrumut, şi
patru comenzi Scăderea cu âmprumut. Împrumutul are loc atunci, când scăzătorul se dovedeşte a
fi mai mare decât descăzutul. La aceasta se stabileşte în 1 rangul transferului (împrumutului).
Deşi la executarea acestor comenzi, de fapt are loc împrumutul, ele sunt numite Scăderea cu
transfer, deoarece în corespundere cu rezultatul executării lor se stabilesc, în modul
corespunzător, rangul transferului în registrul stării.
Cu ajutorul comenzii Scăderea cu transfer se poate executa scăderea cu exactitate ridicată.
Comenzile Scăderea cu împrumut sunt analogice comenzilor Scăderea , în care, după cum se
ştie, împrumutul nu se produce, şi se deosebesc numai prin aceea că la executarea lor participă
bitul curent al transferului registrului stării. Ca şi la realizarea altor comenzi
Scăderea, rezultatele se încarcă în acumulator. Rangurile rezultatului negativ al rezultatului nul
şi al transferului se stabilesc în 1, dacă rezultatul are corespunzător semnul minus, este egal cu
zero sau are loc împrumutul în rangul superior al rezultatului.
Mai jos se prezintă comenzile scăderii cu transfer:
SCĂDEREA CU REGISTRU ŞI CU TRANSFER
SCBr A-r-CA

SCĂDEREA DIRECTĂ CU MEMORIA ŞI CU TRANSFER


SCB M, Adresa A-M-CA

SCĂDEREA INDIRECTĂ CU MEMORIA ŞI CU


TRANSFER
SCI M,Adresa A-M-CA

SCĂDEREA CU DATELE DIRECTE ŞI CU TRANSFER


SCB I, Datele A- Datele-CA

2. Comenzile logice

2.1 Comenzile ŞI, SAU, SAU ELIMINATORIU şi INVERSIA.


Multe din utilizările dispozitivelor MP presupun procesarea nu aritmetică, ci logică a
informaţiei. Microcalculatorul electronic poate înlocui o mulţime de scheme logice. Asupra
datelor poate fi efectuată operaţia ŞI, SAU, datele, de asemenea, pot fi procesate cu ajutorul
operaţiilor logice SAU ELIMINATORIU şi NEGARE. Toate aceste operaţii pot fi executate cu
ajutorul microprocesorului considerat mai sus. Cert că la realizarea fiecărei funcţii logice, pot fi
utilizate diferite forme de adresare. În secţiunea dată, vom lua cunoştinţă de diversităţile posibile
ale funcţiilor logice.
Toate operaţiile logice sunt bit cu bit. La una din intrările ei, se aplică valoarea bitului
acumulatorului, iar la alta  valoarea bitului corespunzător al cuvântului amplasat în regiunea
memoriei sau în registru. În MP cu 8 ranguri sunt prevăzute opt scheme asemănătoare cu două
intrări  câte una pentru fiecare rang al cuvântului MP.
La terminarea operaţiei logice rezultatul se încarcă în acumulator. Dacă rezultatul este egal
cu 0 sau dacă rangul lui superior este egal cu 1, atunci se efectuează stabilirea în 1 a bitului
corespunzător al registrului stării. Valoarea bitului de transfer nu depinde de rezultatul executării
comenzilor logice ŞI,SAU şi SAU ELIMINATORIU. Aceasta înseamnă că se pierde conţinutul
iniţial al acumulatorului şi cel al bitului dat.
Comanda ŞI (AND) poate fi de următoarele patru tipuri:
ŞI asupra registrului şi acumulatorului
ANDr ArA

ŞI asupra memoriei adresate direct şi acumulatorului


AND M, Adresa
ŞI asupra memoriei adresate indirect şi acumulatorului
ANI M A MA

ŞI asupra datelor directe şi acumulatorului


AND I, Datele A DateleA

SAU asupra registrului şi acumulatorului


OR r A+rA

SAU asupra memoriei adresate direct şi acumulatorului


OR M,Adresa A+MA

SAU asupra memoriei adresate indirect şi acumulatorului


ORI M A+MA

SAU asupra datelor directe şi acumulatorului


OR I, Datele A+DateleA

SAU ELIMINATORIU asupra registrului şi acumulatorului


XOR R ArA

SAU ELIMINATORIU asupra memoriei adresate indirect şi acumulatorului


XOR M,Adresa AMA
SAU ELIMINATORIU asupra memoriei adresate indirect şi acumulatorului
XOI M AMA

SAU ELIMINATORIU asupra datelor directe şi acumulatorului


XOR I, Datele ADateleA

Operaţiile logice se execută rang cu rang

3. Comanda COMPARAREA
Apare frecvent situaţia, când trebuie să compari două numere binare. De regulă, fenomenul
este legat de necesitatea de a clarifica, sunt oare aceste numere egale? Uneori trebuie să
stabileşti, care din ele este mai mare sau mai mic.
Faptul egalităţii a două numere poate fi revelat cu ajutorul comenzii sau eliminatoriu. Se
poate, de exemplu, utiliza în acest scop comanda sau eliminatoriu asupra datelor directe şi
acumulatorului. Cu ajutorul acestei comenzi, se stabileşte sunt oare egale datele ce le conţine
acumulatorul şi al doilea octet al comenzii. Pentru realizarea acestei verificări asupra egalităţii,
cuvântul, egalitatea căruia faţă de alt cuvânt trebuie de verificat, este transferat în acumulator.
Ulterior se execută comanda sau eliminatoriu asupra datelor directe şi acumulatorului. Dacă
conţinutul iniţial al acumulatorului şi cuvântul direct al datelor sunt egale, rezultatul în
acumulator conţine zerouri în toate rangurile.
Metoda descrisă de comparare a două cuvinte are un neajuns considerabil. La executarea
comparării se pierde conţinutul acumulatorului. Dacă aceste date trebuie să fie folosite din nou,
este necesar, într-un mod oarecare, a le memoriza înaintea executării comenzii sau eliminatoriu.
Pentru acest scop, trebuie de introdus comenzi suplimentare.
O verificare analogică se poate realiza şi cu ajutorul comenzii scăderea. Datele  etalon se
scad din datele ce le conţine acumulatorul. Dacă aceste două cuvinte de date sunt egale, se
stabileşte în 1 rangul rezultatului nul în registrul stării. Dacă valoarea datelor în acumulator (A)
este mai mică decât valoarea datelor  etalon, atunci în 1 se stabileşte rangul transferului, deoa-
rece are loc împrumutul. Dacă valoarea datelor în acumulator este mai mare decât valoarea
datelor  etalon, atunci nici unul din rangurile registrului stării nu se stabileşte în 1.
Cu ajutorul comenzii scăderea se poate realiza nu numai verificarea la egalitate, ci şi
verificarea la mai mic şi mai mare. În aşa mod, comanda scăderea acordă mai multe
posibilităţi pentru efectuarea comparării. Însă comparării cu ajutorul comenzii scăderea îi este
inerent acelaşi neajuns, ca şi comparării cu ajutorul comenziisau eliminatoriu, adică pierderea
conţinutului iniţial al acumulatorului la executarea operaţiei.
De acest neajuns este lipsită comanda compararea. Executarea acestei comenzi este
analogică executării comenzii scăderea, însă rezultatul ei nu se încarcă în acumulator. Deşi la
terminarea operaţiei datele iniţiale în acumulator nu se schimbă, rangurilor zerografiate şi
negative ale rezultatului, precum şi rangului transferului I se atribuie valori, ce corespund
particularităţilor rezultatului obţinut.
În comanda compararease utilizează metodele obişnuite de adresare, adică cu ajutorul ei se
poate compara conţinutul oricărui registru şi acumulatorului, regiunii de memorie adresată direct
şi acumulatorului, regiunii de memorie adresată indirect şi acumulatorului, octetului de date
directe şi acumulatorului. Patru tipuri ale acestei comenzi sunt prezentate mai jos:
COMPARAREA registrului cu acumulatorul
CMP r A-r

COMPARAREA memoriei adresate direct cu acumulatorul


CMP M, Adresa A-M

COMPARAREA memoriei adresate indirect cu acumulatorul


CMI M A-M

COMPARAREA datelor directe cu acumulatorul


CMP I, Datele A- Datele

4. Comenzile deplasării simple şi a celei ciclice


Comenzile DEPLASAREA şi DEPLASAREA CICLICĂ sunt de un octet şi cu două
cicluri. Dacă rezultatul executării oricărei dintre ele conţine 1 în rangul superior sau este egal cu
zero, atunci se stabileşte în 1 rangul corespunzător al registrului stării. Rangul transferului
participă la executarea acestor operaţii, şi valoarea lui se schimbă pe mersul transmiterii datelor în
el şi din el.
DEPLASAREA CICLICĂ A ACUMULATORULUI ÎN STÂNGA
RAL

Prin comanda Deplasarea ciclică a cumulatorului în stânga, toate datele ce se află în


acumulator şi rangul transferului se deplasează cu o poziţie în stânga, i.e. conţinutul fiecărui rang
se deplasează în poziţia rangului vecin, ce are valoare (RSV). Conţinutul rangului superior al
acumulatorului se deplasează în rangul transferului (C) al registrului stării. Conţinutul rangului
transferului registrului stării se deplasează în rangul inferior ce are valoarea acumulatorului
(RIV).
DEPLASAREA CICLICĂ A ACUMULATORULUI ÎN DREAPTA
RAR

Prin comanda Deplasarea ciclică a acumulatorului în dreapta, datele se deplasează în


direcţie opusă. Conţinutul rangului inferior al acumulatorului se deplasează în rangul transferului
al registrului stării. Conţinutul rangului transferului este readresat în rangul superior al
acumulatorului. Conţinutul fiecărui rang al acumulatorului se deplasează în rangul inferior vecin.
La utilizarea comenzilor deplasării ciclice, nu au loc pierderi de date, deoarece datele se
deplasează pe un contur închis. Aşa, de exemplu, dacă se execută deplasarea ciclică în micro-
procesorul cu 8 ranguri de nouă ori, atunci conţinutul final al acumulatorului şi al rangului
transferului vor coincide pe deplin cu cel iniţial.
DEPLASAREA ACUMULATORULUI ÎN STÂNGA
SAL

Comanda Deplasarea acumulatorului în stânga este numită la fel şi comanda Deplasarea


aritmetică în stânga. Ea se utilizează des pentru realizarea operaţiei de înmulţite. După cum se
poate vedea din schema prezentată mai sus, la executarea acestei comenzi, conţinutul rangului
superior al acumulatorului este transmis în rangul transferului registrului stării. În rangul inferior
al acumulatorului, la aceasta se încarcă 0. Conţinutul fiecărui rang al acumulatorului se de-
plasează în rangul superior vecin, iar conţinutul rangului transferului (indiferent de valorile lui)
se pierde.
DEPLASAREA ACUMULATORULUI ÎN DREAPTA
SAR

Comanda Deplasarea acumulatorului în dreapta este analogicăcomenzii Deplasarea


acumulatorului în stânga. Conţinutul rangului inferior al acumulatorului este transmis în rangul
transferului registrului stării. Conţinutul tuturor altor ranguri ale acumulatorului se deplasează în
dreapta cu o poziţie.
O particularitate deosebită a comenzii Deplasarea acumulatorului în dreapta este aceea că
rangul superior al acumulatorului, în procesul executării comenzii, îşi păstrează valoarea sa. În loc
de a înscrie în rangul dat 0 logic, comanda duce în el aceeaşi valoare, care a avut loc până la de-
plasare. Păstrarea valorii rangului superior al acumulatorului este necesară la executarea unor
operaţii aritmetice în cod suplimentar. Fiinţează două circumstanţe, ce trebuie luate în consi-
deraţie, la lucrul cu comenzile deplasării ciclice şi a celei simple. În primul rând, oricare din
operaţiile executate astfel este echivalentă înmulţirii sau împărţirii numărului la 2.
A doua circumstanţă, care trebuie luată în consideraţie la utilizarea comenzilor deplasării
simple, constă în aceea că datele deplasate după limitele registrului se pierd. La executarea co-
menzilor deplasării ciclice, aceasta nu are loc, deoarece în atare caz datele circulă pe un contur
închis.
1. Completaţi formularul programului, introduceţi-l în memorie şi executaţi-l.
Operaţii aritmetice
Mnemonica Comentariul
MVI A, C2 H ; încărcaţi datele în (А)
LXI B, 6E12 H ; încărcaţi datele în (ВС)
ADD B ; (А) + (В)
ADC C ; (А) + (С) +indicator de condiţie  (А)
LXI H, 12F5 H ; încărcaţi datele pentru adunarea
LXI D, 20DE H ; hexazecimală
DAD D ; (HL) + (DE)  (HL)
DAD B ; (HL) + (BC)  (HL)
MVI A, 38 H ;
ADI 15 H ; (А) + (D8)  (A)
DAA ;
SUI, 24 ; scăderea hexazecimală (А) – D8  (A)
MOV A, L ;
SUB E ; scădem octetul inferior (A) – (E)  (A)
MOV L, A ;
MOV A, H ;
SBB D ; (A) – (D) – indicator de condiţie (А)
MOV H, A ;
HLT ; oprire
Explicaţi operaţiile executate de program.
1. Explicaţi programul în regimurile comandă cu comandă şi ciclu cu ciclu. Executând
exerciţiul, analizaţi starea magistralelor de adrese şi de informaţie la fiecare pas.
2. Completaţi formularul programului, încărcaţi-l în memorie şi executaţi-l.
Operaţii logice.
Mnemonica Comentariul
MVI A, 95 H ;
ORI, 20 H ;
XRI, 63 H ;
RAL ;
ANI, F0 H ;
RLC ;
XRI 42 H ;
RRC ;
CMA
RAR
MOV C, A
STC
XRA A
XRA C
HLT

Explicaţi operaţiile executate de program.


2. Executaţi programul în regimurile comandă cu comandă şi ciclu cu ciclu. Executând
exerciţiul, analizaţi starea magistralelor de adrese şi informaţie la fiecare pas.

Scoaterea din circuit a CMPS


 depresaţi, dacă este presată tasta «РБ/ШГ»;
 deconectaţi CMPS, depresând tasta «~».

Descrierea pe scurt a comenzilor de bază ale MP KP580BM80A


Notaţiile convenţionale:
R,R1, R2  registrul;
RP  perechea de registre
M  celula de memorie cu adresa în HL;
D8  octetul de date;
D16  cuvântul de date;
ADR  adresa în formă explicită

MOV R1, R2 ; transfer (R2)  (R1)


MVI R, D8 ; (D8)  (R)
LXI RP, D16 ; D16  (RP)
LDA ADR ; încărcarea acumulatorului din memorie
cu adresa ADR
STA ADR ; (A)  (M) сu adresa ADR
LDAX RP ; (M)  (A) pe adresa RP
STAX RP ; (A)  (M) pe adresa în RP
SHLD ADR ; (HL)  (M) pe ADR
PUSH RP ; (RP) în stivă
POP RP ; stiva în (RP)

ADD R ; (A) + (R)  (A) ANA R ; (R) ^ (A)  (A)


ADC R ; (A) + (R) + C  (A) ANI D8 ; (A) ^ D8  (A)
ADI D8 ; (A) + D8  (A) XRA R ; (R)  (A)  (A)
ACI D8 ; (A) + D8 + C  (A) XRI D8 ; (A)  D8  (A)
DAD RP ; (HL) + (RP)  (HL) ORA R ; (R)  (A)  (R)
SUB R ; (A) – (R)  (A) CMP R ; сompararea(R) şi (A)
SBB R ; (A) – (R) – C  (A) CPI D8 ; сompararea D8 şi (A)
SUI D8 ; (A) – D8  (A) RLC ; ciclul deplasării în
stânga
SBI D8 ; (A) – D8 – C  (A) RRC ; ciclul deplasării în
dreapta
INR R ; (R) + 1  (R) RAL ; deplas. stânga
prin transfer
DCR ; (R) - 1  (R) RAR ; deplas. dreapta
prin transfer
INX RP ; (RP) + 1  (RP) CMA ; inversia (А)
DCX RP ; (RP) – 1  (RP) DAA ; corecţia zecimală

JMP ADR ; salt necondiţionat pe ADR


JC, JNC, JZ, JNZ, JP,
JM, JPE, JPO ADR ; salturi în condiţiile: C – depăşire, – zero, P – plus, M – minus, PE 
paritate, PO – imparitate.
CALL ADR ; apel la subprogram
CC, CNC, CZ, CNZ, CP,
CM, CPE, CPO ADR ; apel la subprogram în condiţia
RET ; revenire din subprogram
RC, RNC, RZ, RNZ, RP,
RM, RPE, RPO ; revenire în condiţia
IN D8 ; introducere din canalul D8 în
acumulator
OUT D8 ; extragerea din acumulator în canal
EI ; permisiunea de întrerupere
DI ; interzicerea de întrerupere
NOP ; nu există operaţie
HLT ; оprire

Sistemul de comenzi ale microprocesorului KP580BM80A


Cod Mnemonica Cod Mnemonica Cod Mnemonica
00 NOP 30 - 60 MOV H, B
01 LXI B, D16 31 LXI SP, D16 61 MOV H, C
02 STAX B 32 STA ADR 62 MOV H, D
03 INX B 33 INX SP 63 MOV H, E
04 INR B 34 INR M 64 MOV H, H
05 DCR B 35 DCR M 65 MOV H, L
06 MVI B, D8 36 MVI M, D8 66 MOV H, M
07 RLC 37 STC 67 MOV H, A
08 - 38 - 68 MOV L, B
09 DAD B 39 DAD SP 69 MOV L, C
0A LDAX B 3A LDA ADR 6A MOV L, D
0B DCX B 3B DCX SP 6B MOV L, E
0C INR C 3C INR A 6C MOV L, H
0D DCR C 3D DCR A 6D MOV L, L
0E MVI C, D8 3E MVI A, D8 6E MOV L, M
0F RRC 3F CMC 6F MOV L, A
10 - 40 MOV B, B 70 MOV M, B
11 LXI D, D16 41 MOV B, C 71 MOV M, C
12 STAX D 42 MOV B, D 72 MOV M, D
13 INX D 43 MOV B, E 73 MOV M, E
14 INR D 44 MOV B, H 74 MOV M, H
15 DCR D 45 MOV B, L 75 MOV M, L
16 MVI D, D8 46 MOV B, M 76 HLT
17 RAL 47 MOV B, A 77 MOV M, A
18 - 48 MOV C, B 78 MOV A, B
19 DAD D 49 MOV C, C 79 MOV A, C
1A LDAX D 4A MOV C, D 7A MOV A, D
1B DCX D 4B MOV C, E 7B MOV A, E
1C INR E 4C MOV C, H 7C MOV A, H
1D DCR E 4D MOV C, L 7D MOV A, L
1E MVI E, D8 4E MOV C, M 7E MOV A, M
1F RAR 4F MOV C, A 7F MOV A, A
20 - 50 MOV D, B 80 ADD B
21 LXI H, D16 51 MOV D, C 81 ADD C
22 SHLD ADR 52 MOV D, D 82 ADD D
23 INX H 53 MOV D, E 83 ADD E
24 INR H 54 MOV D, H 84 ADD H
25 DCR H 55 MOV D, L 85 ADD L
26 MVI H, D8 56 MOV D, M 86 ADD M
27 DAA 57 MOV D, A 87 ADD A
28 - 58 MOV E, B 88 ADC B
29 DAD H 59 MOV E, C 89 ADC C
2A LHLD ADR 5A MOV E, D 8A ADC D
2B DCX H 5B MOV E, E 8B ADC E
2C INR L 5C MOV E, H 8C ADC H
2D DCR L 5D MOV E, L 8D ADC L
2E MVI L, D8 5E MOV E, M 8E ADC M
2F CMA 5F MOV E, A 8F ADC A

Код Мнемоника Код Мнемоника Код Мнемоника


90 SUB B C0 RNZ F0 RP
91 SUB C C1 POP B F1 POP PSW
92 SUB D C2 JNZ ADR F2 JP ADR
93 SUB E C3 JMP ADR F3 DI
94 SUB H C4 CNZ ADR F4 CP ADR
95 SUB L C5 PUSH B F5 PUSH PSW
96 SUB M C6 ADI D8 F6 ORI D8
97 SUB A C7 RST 0 F7 RST 6
98 SBB B C8 RZ F8 RM
99 SBB C C9 RET F9 SPHL
9A SBB D CA JZ ADR FA JM ADR
9B SBB E CB - FB EI
9C SBB H CC CZ ADR FC CM ADR
9D SBB L CD CALL ADR FD -
9E SBB M CE ACI D8 FE CPI D8
9F SBB A CF RST 1 FF RST 7
A0 ANA B D0 RNC
A1 ANA C D1 POP D
A2 ANA D D2 JNC ADR
A3 ANA E D3 OUT D8
A4 ANA H D4 CNC ADR
A5 ANA L D5 PUSH D
A6 ANA M D6 SUI D8
A7 ANA A D7 RST 2
A8 XRA B D8 RC
A9 XRA C D9 -
AA XRA D DA JC ADR
AB XRA E DB IN D8
AC XRA H DC CC ADR
AD XRA L DD -
AE XRA M DE SBI D8
AF XRA A DF RST 3
B0 ORA B E0 RPO
B1 ORA C E1 POP H
B2 ORA D E2 JPO ADR
B3 ORA E E3 XTHL
B4 ORA H E4 CPO ADR
B5 ORA L E5 PUSH H
B6 ORA M E6 ANI D8
B7 ORA A E7 RST 4
B8 CMP B E8 RPE
B9 CMP C E9 PCHL
BA CMP D EA JPE ADR
BB CMP E EB XCHG
BC CMP H EC CPE ADR
BD CMP L ED -
BE CMP M EE XRI D8
BF CMP A EF RST 5

Lucrare de laborator nr. 4


Alcătuirea celor mai simple programe în coduri interne

Comenzile de salt şi de apel al subprogramului


Comenzile de salt şi de apel al subprogramului permit a schimba succesivitatea executării
comenzilor programului. Există două procedee de schimbare a acestei succesivităţi. Primul din
ele este numit necondiţionat. Conform acestui procedeu, succesivitatea executării programului
este supusă schimbării de fiecare dată, când se realizează o comandă bine determinată. În cores-
pundere cu cel de al doilea procedeu, succesivitatea executării programului este determinată de
unele condiţii, i.e. se schimbă în acel caz şi numai acel ,în care valoarea condiţiei indicate
coincide cu cea dată.
Posibilităţile mari ale MP, în mare măsură sunt determinate de capacitatea lui de a lua
decizii. Comenzile de salt şi de apel la subprogram sunt una din părţile componente ale
procesului de luare a deciziilor. Ca rezultat al executării comenzilor de comparare, de procesare
aritmetică şi logică a datelor, se produc valorile rangurilor rezultatelor nule şi negative şi ale
rangului transferului. În registrul stării, la care deseori se află fixate în 1 mai mult decât unul din
aceste ranguri, comenzile de salt şi de apel la subprogram verifică valorile rangurilor registrului
stării şi determină mersul ulterior al executării programului în dependenţă de rezultatele
verificării.
Comenzile de salt, numite de asemenea comenzi de ramificare, permit a organiza în
program cicluri şi bifurcări. Comenzile de apel la subprogram dau posibilitate de a reduce
volumul programelor elaborate pe contul utilizării repetate a subprogamelor. Prezenţa în MP a
stivei cu indicatorul stivei face posibilă întoarcerea în programul de bază după executarea sub-
programului.
4.1. Comenzile de salt sau de ramificare
Comenzile de salt sau de ramificare lărgesc posibilităţile MP, permit de a lua decizii pe
parcursul executării programului. Ele determină direcţia ulterioară de executare a programului în
dependenţă de rezultatul verificării valorilor condiţiilor. Verificării trebuie să fie supuse valorile
rangurilor de transfer, rezultatelor nule şi negative. Aşa comenzi ale MP nostru ipotetic se
numesc comenzile de salt. Comenzi analogice, utilizate în unele tipuri de MP, pot fi numite
comenzi de ramificare. De regulă, între aceste clase de comenzi, diferenţele sunt nesemnificative
sau lipsesc în general. Însă, lucrând cu MP concret, este necesar de a se familiariza minuţios cu
materialele firmei producătoare, ce se referă la repertoriul de instrucţiuni, pentru a se clarifica, ce
se are în vedere în fiecare caz sub comanda de salt sau de ramificare.
Mai jos vor fi considerate comenzile de salt, utilizate în MP. Fiecare din ele are lungimea de
3 octeţi şi se execută în cinci microcicluri. În toate aceste comenzi se utilizează adresarea directă.
Comenzile de salt pentru majoritatea MP reale se reduc de asemeni la adresarea directă.
În comenzile de tipul SALT DIRECT 2 octete, ce urmează după codul operaţiei de salt şi
care reprezintă prin sine adresa, indică o regiune a memoriei. Regiunea indicată a memoriei
conţine comanda ce trebuie să fie executată următoarea.
Această regiune a memoriei se poate afla atât în imediata apropiere de regiunea curentă
utilizată, precum şi la o îndepărtare considerabilă de ea. Când se execută comanda de salt, atunci
nu rămâne nici un fel de informaţie despre aceea, în care punct a avut loc ieşirea din program.
Dacă ulterior este necesar a se întoarce în programul iniţial, este nevoe de a păstra într-un mod
oarecare informaţia despre punctul de ieşire. La realizarea comenzilor de alt tip, memorizarea
adresei de întoarcere are loc automat. Aşa comenzi se utilizează, când trebuie să te întorci în
programul iniţial după executarea subprogramului.
La utilizarea comenzii de salt, se schimbă conţinutul contorului comenzilor. Conţinutul
celui de al doilea şi treilea octete ale comenzii de salt este transferat în contorul de instrucţiuni în
timpul fazei de executare. Atunci la ciclul următor al selectării, MP extrage comanda din
regiunea memoriei, asupra căreia indică al doilea şi al treilea octete al comenzii de salt.
În aşa mod, are loc saltul în alt punct al programului. Acum se execută una după alta
comenzile unei noi succesivităţi. Aceasta se prelungeşte până când nu va fi din nou executată
comanda de salt.
Vom considera şapte comenzi tipice ale saltului:
SALT NECONDIŢIONAT
JMP, Adresa
Octetul superior al adresei  Octetul superior al Contorului de Comenzi  Octetul inferior
al adresei  octetul inferior al Contorului de Comenzi (CC).
Denumirea acestei comenzi vorbeşte despre aceea cum ea se execută. La ea nu se efectuează
nici un fel de verificări. În contorul comenzilor al MP automat se încarcă conţinutul octetelor al
doilea şi al treilea ai comenzii. Executarea programei continuă de la acest nou punct iniţial, când
începe ciclul de selecţie a comenzii pe adresa indicată în comandă
SALT, DACĂ ZERO
JZ Adresa
Dacă Z=1, atunci Octetul superior al adreseiOctetul superior al CCOctetul inferior al
adreseiOctetul inferior al CC.
SALT, DACĂ NU ZERO
JNZ,Adresa
Dacă Z=0, atunci Octetul superior al adresei  Octetul superior al CCOctetul inferior al
adreseiOctetul inferior al CC.
Comenzile Salt, dacă zero şi Salt, dacă nu zero verifică valoarea rangului rezultatului nul al
registrului de stare. La executarea comenzii Salt, dacă zero conţinutul contorului comenzilor se
schimbă în situaţia când valoarea registrului de stare indicat are valoarea 1, i.e. atunci când este 0
conţinutul tuturor rangurilor acumulatorului.
La executarea comenzii Salt, dacă nu zero, conţinutul contorului de instrucţiuni se schimbă,
dacă rangul rezultatului nul în registrul stării are valoarea 0. În aşa mod, în acest caz saltul are
loc, atunci când nu toate rangurile acumulatorului sunt egale cu 0 (după cum este cunoscut,
rangul rezultatului nul al registrului de stare are valoarea 0, dacă conţinutul a cel puţin unu din
rangurile acumulatorului este egal cu 1).
SALT, DACĂ TRANSFER
JC,Adresa
Dacă C=1, atunci Octetul superior al adreseiOctetul superior al CC Octetul inferior al
adresei Octetul inferior al CC.
SALT, D ACĂ NU TRANSFER
JNC, Adresa
Dacă C=0, atunci Octetul superior al adreseiOctetul superior al CC  Octetul inferior al
adresei  Octetul inferior al CC.
La executarea comenzilor de Salt, dacă transfer, şi Salt, dacă nu transfer se verifică
valoarea rangului transferului registrului de stare. Când se execută comanda de Salt, dacă
transfer,, atunci conţinutul la al doilea şi al treilea octete se încarcă în contorul de instrucţiuni,
dacă rangul transferului registrului de stare este fixat la 1.
În procesul realizării programului Salt, dacă nu transfer, conţinutul celui de al doilea şi al
treilea octete ale ei se încarcă în contorul de instrucţiuni, dacă rangul transferului registrului de
stare are valoarea egală cu 0. Ambele aceste comenzi se utilizează frecvent după executarea
comenzilor aritmetice.
SALT, DACĂ NEGATIV
JN,Adresa
Dacă N=1, atunci Octetul superior al adresei  Octetul superior al CC  Octetul inferior al
adresei  Octetul inferior al CC.
SALT, DACĂ NU NEGATIV
JNN, Adresa
Dacă N=0, atunci Octetul superior al adresei  Octetul superior al CC  Octetul inferior al
adresei  Octetul inferior al CC.
Comanda de Salt, dacă nu negativ verifică, de asemenea valoarea rangului rezultatului
negativ, ea realizează saltul, dacă rangul se află în starea 0. Această comandă poate fi numită la
fel Salt, dacă pozitiv. Evident, dacă rangul rezultatului negativ are valoarea 0, atunci conţinutul
acumulatorului este un număr pozitiv.

4.2. Comenzile de apel la subprogram


Există o mulţime de situaţii, când este necesar de realizat ieşirea din programul de bază, însă
ulterior să te reîntorci din nou la ea. Reîntoarcerea trebuie să fie efectuată anume în acel loc din
care a avut loc saltul. Una din metodele de soluţionare a problemei constă în utilizarea celei de
a doua comenzi de salt. Cu ajutorul comenzii de salt necondiţionat sau condiţionat are loc saltul
la subprogram, iar la terminarea executării subprogramului prin intermediul altei comenzi de salt
se realizează reîntoarcerea în acel loc al programului de bază, din care a fost efectuat saltul. Însă
pentru aceasta este necesar de a cunoaşte dinainte, în care punct al programului de bază a avut
loc saltul.
Este mai uşor de atins acelaşi scop cu ajutorul comenzii de apel la subprogram.
Subprogramul reprezintă un fragment al programului, adresarea la care poate avea loc în orice
punct al programului de bază. Când are loc apelul la subprogram, iniţial executării sale, ea
realizează acţiuni de memorizare a conţinutului curent al contorului de instrucţiuni. Când exe-
cutarea subprogramului se termină, cu ajutorul a unei singure comenzi a MP se indică conţinutul
iniţial al contorului de instrucţiuni trebuie să fie extras din memorie. Această informaţie îi este
suficientă MP pentru a realiza reîntoarcerea în succesivitatea întreruptă a comenzilor
programului de bază.
Organizarea subprogramului permite de a se lipsi de scrierea repetată a unuia şi aceluiaşi
fragment al programului. Se înţelege, că în aşa mod se atinge economie de memorie. Partea generală
ce se repetă a programului se înscrie în memorie, de asemenea, numai o dată.
La lucrul cu subprogramele se utilizează stiva MP. Stiva- este o regiune a memoriei în care
temporar se păstrează informaţia necesară pentru realizarea reîntoarcerii în program după
executarea subprogramului. În unele MP stiva reprezintă un şir de registre interne, i.e. registre
plasate în însuşi MP. Însă stivele a celor mai multe MP sunt plasate în memorie. Starea stivei
este reflectată în unul din registre, după analogia cu perechea de registre BC şi este numit
indicatorul stivei.
În majoritatea MP, indicatorul stivei este performat în forma unui registru special. La
adresarea către subprogram conţinutul curent al contorului de instrucţiuni se încarcă în stivă. De
fiecare dată când în stivă se plasează ! octet de informaţie, se realizează incrementarea negativă a
indicatorului stivei. Stiva se completează în direcţia descreşterii valorilor de adrese ale memoriei.
Aşadar, la apelul la subprogramă conţinutul curent al contorului de instrucţiuni este memorizat în
stivă. Ulterior în contorul de instrucţiuni se încarcă adresa regiunii memoriei, de la care trebuie
să se înceapă executarea subprogramului. Această adresă se ia din al doilea şi al treilea octete al
apelului la subprogram. În acelaşi timp în stivă se păstrează cu grijă conţinutul vechi al
contorului de instrucţiuni. Când executarea subprogramului se termină, la comanda
Reîntoarcere, valoarea indicatorului stivei este incrementată cu 1. Din stivă se extrage conţinutul
contorului de instrucţiuni, ce se păstra acolo.
Înscrierea informaţiei în stiva microprocesorului se numeşte încărcarea datelor în stivă, iar
citirea ei din stivă – extragerea datelor din stivă.
Evident, că nivelul posibil de includere (etajare) a subprogramelor este determinat de
numărul de regiuni-celule , pe care le posedă stiva. Trebuie de ţinut cont, că spaţiul de memorie,
rezervat pentru stivă, nu poate fi simultan utilizată de alte părţi ale programului.
Indicatorul stivei unui MP cu 8-ranguri, de regulă, are lungimea de 16 biţi. Ca urmare, în caz
de necesitate, stiva poate ocupa până la 65 536 octete de memorie. Însă, practic, dacă volumul
stivei creşte peste măsură, atunci are loc suprapunerea lui cu regiunea de lucru a memoriei. La
deteriorarea informaţiei, ce se află în stivă, lucrul sistemului MP se încalcă, deoarece MP nu se
poate întoarce la executarea programului iniţial.
Când executarea subprogramului se termină, din stivă se extrage valoarea contorului de
instrucţiuni. La terminarea subprogramului de nivelul doi de includere, se înlătură din stivă
valoarea contorului de instrucţiuni de nivelul întâi de includere. Ea se încarcă în contorul de
instrucţiuni, după ce executarea subprogramului indicat poate fi reluată, începând cu comanda,
ce urma după comanda de Apel la subprogram. Când se termină executarea subprogramului de
nivelul întâi, din stivă din nou se extrage valoarea de rând a contorului de instrucţiuni. Acum se
reia executarea programului de bază, începând cu comanda, ce urmează după comanda de Apel
la subprogram în programul de bază.
Întoarcerea în punctul iniţial al programului sau subprogramului se realizează cu ajutorul
unei comenzi, care se află la sfârşitul subprogramului inclus. Această comandă se numeşte
Reîntoarcere din subprogram, şi este descrisă mai jos. Este o comandă de un octet cu patru
cicluri. MP considerat aici este asigurat numai cu comanda simplă Reîntoarcere din subprogram,
însă deseori MP posedă diferite comenzi de reîntoarcere la îndeplinirea oricărei condiţii.
Comenzile de Apel la subprogram a MP nostru ipotetic au lungimea de 3 octete şi se realizează
în decurs de cinci microcicluri. În toate aceste comenzi ,se utilizează adresarea directă.
Există următoarele comenzi de apel la subprogram.
APEL LA SUBPROGRAM NECONDIŢIONAT
CAL, Adresa CC  Stiva
Octetul superior al adresei  Octetul superior al contorului de instrucţiuni.
Octetul inferior al adresei  Octetul inferior al contorului de instrucţiuni.
La executarea acestei comenzi nici un fel de verificări nu se efectuează, i.e. apelul la
subprogram are loc în orice caz.
APEL LA SUBPROGRAM, DACĂ ZERO
CY, Adresa
Dacă Z=1, atunci CCStivă Octetul superior al adresei Octetul superior al contorului de
instrucţiuni. Octetul inferior al adresei  Octetul inferior al contorului de instrucţiuni.
APEL LA SUBPROGRAM, DACĂ NU ZERO
CNZ,Adresa
Dacă Z=0, atunci CCStivă Octetul superior al adresei  Octetul superior al contorului de
instrucţiuni. Octetul inferior al adresei  Octetul inferior al contorului de instrucţiuni.
La executarea comenzilor Apel la subprogram, dacă zero şi Apel la subprogram, dacă nu
zero se verifică valoarea rangului rezultatului nul al registrului de stare. După analogie cu
comenzile corespunzătoare ale saltului comenzile date pot fi numite Apel la subprogram, dacă
egal şi Apel la subprogram, dacă nu egal.
APEL LA SUBPROGRAM, DACĂ TRANSFER
CC, Adresa
Dacă C=1, atunci CC Stiva Octetul superior al adresei Octetul superior al contorului de
instrucţiuni. Octetul inferior al adresei  Octetul inferior al contorului de instrucţiuni.
APEL LA SUBPROGRAM, DACĂ NU-I TRANSFER
CNC, Adresa
Dacă C=0, atunci CC  Stiva Octetul superior al adresei  Octetul superior al contorului
de instrucţiuni. Octetul inferior al adresei  Octetul inferior al contorului de instrucţiuni.
La executarea comenzilor,Apel la subprogram, dacă transfer şi Apel la progran, dacă nu
transfer se verifică valoarea rangului de transfer al registrului de stare. De regulă, aceste comenzi
se execută după comenzile procesării aritmetice.
APEL LA SUBPROGRAM, DACĂ MINUS
CN, Adresa
Dacă N=1, atunci CC  Stiva Octetul superior al adresei  Octetul superiore al contorului
de instrucţiuni. Octetul inferior al adresei  Octetul inferior al contorului de instrucţiuni.
APELUL LA SUBPROGRAM, DACĂ NU MINUS
CM,Adresa
Dacă N=0, atunci CC  Stiva Octetul superior al adresei  Octetul superior al contorului
de instrucţiuni. Octetul inferior al adresei Octetul inferior al contorului de instrucţiuni.
REÎNTOARCEREA DIN SUBPROGRAM
RET, StivaCC
La executarea comenzii Reîntoarcerea din subprogram, MP extrage din stivă valoarea
contorului de instrucţiuni, la care a avut loc ieşirea din programului nivelului anterior, şi încarcă
această valoare în contorul de instrucţiuni. Comenzii Reîntoarcerea din subprogram nu i se
comunică nimic referitor , la ce nivel de includere se execută subprogramul şi de câte ori a avut
loc apelul la acest subprogram. În indicatorul stivei aşa fel de informaţie de asemenea nu se con-
ţine. Executând comandaReîntoarcerea din subprogram, MP pur şi simplu se întoarce la acea
valoare a contorului, ce a fost încărcată în stivă ultima.
În aşa mod, MP nu poate nicidecum să determine, nu sunt oare datele, ce se află în stivă şi în
indicatorul stivei, incorecte. Iată de ce deteriorarea întâmplătoare a conţinutului stivei duce la
funcţionarea improprie a sistemului MP.
Subprogramele servesc pentru realizarea oricărui şir de paşi ai programului, ce se repetă des.
Aşa, de exemplu, în procesul soluţionării unei probleme matematice complexe, pot avea loc adre-
sări multiple către pachetul de programe de procesare cu acurateţe ridicată a numerelor cu
virgula flotantă. Sunt reprezentate des în forma subprogramelor programului, ce servesc pentru
realizarea reţinerii, precum şi a programului extragerii datelor, analizei datelor ale tastaturilor şi
vizualizatoarelor şi altor dispozitive de procesare a informaţiei utilizate des.
Ordinea îndeplinirii lucrării:

I. Deplasarea masivului în memorie


1. Alcătuiţi programul deplasării masivului în memorie. Adresa iniţială a masivului ce se
deplasează-0A00H. Adresa iniţială a masivului de destinaţie se păstrează în celulele de memorie
0800-0801H. Lungimea masivului – în celula de memorie 0802H.
2. Utilizând directiva П definiţi masivul, ce se deplasează în forma (0A00)=00,
(0A01)=01, (0A02)=02,…, (0A0e)=0E, (0A0F)=0F, (0F10)=10.
3. Încărcaţi programul alcătuit în memoria CMPS şi cu ajutorul său deplasaţi masivul dat în
regiunea de memorie cu adresa iniţială în 0B00H.
4. Convingeţi-vă că în urma executării programului masivul iniţial într-adevăr se deplasează
în celulele de memorie 0B00-0B10H. Explicaţi rezultatele şi algoritmul programului.

II. Determinarea sumei de control a masivului


1. Alcătuiţi programa de calcul al sumei de control (SC) a unui masiv arbitrar. Adresa
iniţială a masivului se păstrează în celulele de memorie 0800-0801H. Lungimea masivului – în
celulele 0802-0803H.
2. Utilizând directiva П definiţi masivul, ce se controlează în forma prezentată în p.2
al exerciţiului anterior.
3. Încărcaţi programul în memoria CMPS şi calculaţi cu ajutorul acestuia SC a masivului
definit.
4. Comparaţi rezultatul calculelor cu calculul analitic al SC.

Lucrare de laborator nr. 5


Studierea interfeţei de intrare-ieşire pe baza CISL KP580BB55A

Organizarea schimbului de date cu microcalculatorul


în cod paralel
Procesul asincron de schimb de date dintre microcalculator şi dispozitivele de calcul (DC),
precum şi cerinţa distribuirii raţionale a timpului de funcţionare a microcalculatorului duc la
necesitatea dezvoltării dispozitivelor de interfaţă pentru organizarea schimbului de date. Sarcina
acestor dispozitive constă în recepţionarea datelor după semnalele de dirijare, formarea semna-
lelor, ce indică prezenţa datelor în dispozitive, furnizarea datelor după semnalele de dirijare,
precum şi formarea semnalelor, ce indică disponibilitatea dispozitivului de a primi date noi. Pro-
cesul schimbului de informaţie este organizat de către dispozitivul de interfaţă sub influenţa
semnalelor de dirijare, parvenite de la microcalculator şi DC.
Tehnologia CISL permite a crea dispozitive de interfaţă multifuncţionale universale de
intrare-ieşire a informaţiei paralele. Aşa dispozitive pot fi programabile şi utilizate pentru trans-
miterea bilaterală a datelor şi a semnalelor de dirijare. Micro-calculatorul este informat despre
disponibilitatea dispozitivului de schimb de date, de regulă, după semnalele de întrerupere.
Schimbul de date se realizează prin adresarea microcalculatorului către dispozitivul de intrare-
ieşire ca la adresa dememorie sau DC. În aşa mod, dispozitivele de interfaţă de intrare-ieşire a
informaţiei paralele permite de a coordona în timp procesul schimbului de date dintre
microcalculator şi DC la folosirea raţională a timpului de funcţionare a microcalculatorului.

Dispozitivul programabil de intrare-ieşire a informaţiei paralele de diferit format


(KP580BB55)
Circuitul integral KP580BB55 reprezintă un dispozitiv programabil, utilizat pentru intrarea-
ieşirea informaţiei paralele. Circuitul permite a realiza schimbul de date de 8 ranguri pe trei
canale A, B, şi C. Direcţia de schimb şi regimul de funcţionare pentru fiecare canal sunt date
programat. Canalele servesc pentru transmiterea precum a datelor aşa şi a semnalelor de coman-
dă.
În mod simplificat, circuitul constă din registrul de comandă şi trei registre, destinate pentru
intrarea-ieşirea datelor.
Structura circuitului KP580BB55 este prezentată în fig.5.1a, iar notaţia ei convenţională - în
fig.5.1b. Destinaţia bornelor de ieşire Do–D7 – magistrala bidirecţională a datelor pentru transmi-
terea datelor, cuvintelor de comandă şi informaţiei stării; KAo–KA7 – magistrala bidirecţională
de date a canalelor A, KBo– KB7 – magistrala bidirecţională de date a canalului B, KCo– KC 7–
magistrala bidirecţională de date a canalului C (magistralele canalelor de transmitere a datelor,
semnalelor de comandă şi interpelare la întrerupere de la DC şi MP CISL): DC– selectarea
dispozitivului; Ao– A7 – intrările necesare pentru selectarea unuia din canalele A,B,C sau
registrul de comandă, Ct.(citire)-intrarea la care se aplică semnalul la furnizarea datelor din
registrele interne ale circuitului la magistrala de date, R-intrarea utilizată pentru instalarea
circuitului. La aplicarea semnalului la această intrare, conţinutul tuturor registrelor interne se
stabileşte la zero. Vr(virgulă) – intrarea înscrierii datelor în circuit.
Pentru microcalculator circuitul poate fi reprezentat ca constând fie din patru DC, fie din
patru adrese ale memoriei. Pentru formarea semnalului de selectare a dispozitivului aplicat la
intrarea DC, se pot utiliza magistralele A2–A15 ale magistralei de adrese ale
microcalculatorului. La adresarea către circuit, ca la patru DC intrările Ct şi Vr trebuie să fie
conectate la magistralele CtBB şi VrBB ale magistralei de comandă a microcalculatorului .
Fig.5-1a.Structura interfeţei programabile paraleleKP580BB55A

La adresarea către circuit ca la patru adrese ale memoriei intrările ei Ct şi Vr trebuie fie
corespunzător conectate la magistralele Ct.MEMORIE şi Vr.MEMORIE ale magistralei de
comandă a microcalculatorului.
Circuitul poate îndeplini următoarele funcţii: tamponarea
(la regimul asincron de schimb de date); transformarea formatului datelor, racordarea
microcalculatorului cu DC în regim de întrerpere.
Regimurile de lucru ale circuitului integral K580BB55 se actualizează la instalarea lui
iniţială. Patru registre subadrese ale circuitului includ în sine trei registre ale canalelor de intrare-
ieşire a datelor (A; B; C) şi registrul de comandă. Registrul canalului C poate fi subdivizat în
două registre a câte patru ranguri de intrare-ieşire a datelor, la care se realizează accesul ca la
registre separate independente (fig,5.1a). Este posibilitatea subdivizării a trei canale în două
grupe (fig-5.1b). În aceste grupe, canalele A şi B se utilizează pentru schimbul de date cu micro-
calculatorul, iar unele din magistralele canalului C – pentru înscrierea semnalelor de comandă.
Regimurile de lucru ale canalelor se actualizează prin înscrierea cuvântului de comandă în
registrul de comandă. Fiinţează trei tipuri de funcţionare a circuitului
Tipul 0 – aceasta este intrarea-ieşirea simplă a datelor pe trei canale cu 8 ranguri, la aceasta
canalul C poate fi subdivizat în două canale a câte 4 ranguri. Fiecare din canale poate fi utilizat
separat pentru intrarea şi ieşirea informaţiei. La funcţionarea circuitului în acest regim nu sunt
necesare nici un fel de semnale de comandă suplimentare
Tipul 1. Permite a realiza schimbul de date pe canalele A şi B cu ajutorul semnalelor de
comandă, transmise pe canalul C.
Pentru canalele A şi B fiinţează patru combinaţii de direcţii reciproce de transmitere a
datelor: a) canalele A şi B funcţionează în regimul de ieşire a datelor; b) canalele A şi B
funcţionează în regimul de intrare a datelor; c) canalul A funcţionează în regimul de intrare, iar B
– în regim de ieşire a datelor; d) canalul A funcţionează în regim de ieşire, iar B – în regim de
intrare a datelor.
Fig.5.1b.Notaţia convenţională a interfeţei programabile paralele KP580BB55A

Magistralele canalului C neantrenate pentru semnalele de comandă pot fi utilizate pentru


intrarea-ieşirea informaţiei. Direcţia de transmitere a informaţiei, pe aceste magistrale, este
determinată de către cuvântul de comandă, înscris în registrul de comandă.
Semnalele de comandă, transmise pe magistralele canalului C la funcţionarea canalelor A şi
B în regimul de intrare a datelor
sunt prezentate în fig.5.2a. La semnalul CTБ (СТРОБ) rus informaţia se înscrie în tamponul de
intrare a datelor circuitului (fig.5.1a). Semnalul de ieşire BBБФ «Ввод в буфер») rus se stabileşte
în 1 şi este menţinut în decursul întregului interval de timp de la înscrierea datelor până la
momentul citirii lor de către microcalculator. Semnalele СТБ şi ВВБФ nu pot fi utilizate pentru
informarea MP despre gătinţa datelor referitor la intrare, deoarece intrarea poate fi realizată
numai la terminarea
semnalului СТБ.
Fig.5.2a. Diagramele de timp ale funcţionării microcalculatorului conform tipului 1 la utilizarea
canalelor A şi B pentru introducerea datelor în microcalculator.

Pentru informarea MP despre gătinţa datelor referitoare la intrare, se foloseşte semnalul de


ieşire З Пр (запрос прерывания), ce apare pe KCo, KC3 în dependenţă de canalul selectat.
Permisiunea la furnizarea semnalului З Пр. o dă bistabilul interior al permisiunii de întrerupere
din circuit (Р Пр). Starea bistabilului se stabileşte numai programabil şi nu vine la bornele exteri-
oare ale circuitului. Magistralele KC6, KC7 pot fi utilizate pentru intrare-ieşire a datelor în
dependenţă de cuvântul de comandă.
Semnalele de comandă, transmise pe magistralele canalului C la funcţionarea canalelor A
şi B în regimul de intrare a datelor, sunt prezentate în fig.5.1b. Datele în circuit se înscriu cu ajuto-
rul impulsului de înscriere, furnizat la intrarea ЗП (fig.5.1b). La momentul terminării înscrierii
datelor, se formează semnalul de comandă de ieşire ВБФ (ввод в буфер) ce arată, că datele sunt
înscrise în tamponul de intrare a datelor şi sunt gata pentru furnizarea lor în DC.
Datele în DC se extrag conform semnalului ПРИЕМ, furnizat de pe DC. Semnalul la ieşire З
Пр.(«запрос прерывания») se foloseşte pentru informarea microcalculatorului despre gătinţa
canalului referitor la intrarea datelor noi. Pe intervalul extragerii de date în DC semnalul З Пр.
este stabilit în  0 şi va fi transferat în 1 în prezenţa 1 la semnalele ПРИЕМ,

ВБФ şi la bistabilul permisiunii de întrerupere (Р Пр). La fel ca şi în cazul intrării de date,


dirijarea cu starea bistabilului se efectuează prin înscrierea 0 sau 1 în rangul corespun-
zător al registrului canalului C. Aceasta dă posibilitatea programului de a dirija cu regimul de
extragere a datelor din microcalculator.
Canalele KC4 –KC5, neantrenate sub semnalele de comandă pot fi utilizate pentru intrarea-
ieşirea informaţiei. Accesul la ele se realizează cu ajutorul operaţiei de citire a datelor din
registrul canalului C sau folosirea cuvântului de comandă pentru schimbarea anumitor ranguri
ale registrului canalului C. Semnalele ВВБФ, ВБФ şi З Пр ale canalului C pot fi schimbate în
mod arbitrar, programabil la stabilirea unor anumite ranguri ale sale sau la stabilirea iniţială a
circuitului, deoarece ele reflectă starea bistabililor interiori la permisiunea întreruperii circuitului

Fig.5.2b. Diagramele de timp ale funcţionării microcalculatorului conform tipului 1 la utilizarea


canalelor A şi B pentru extragerea datelor din microcalculator.

Tipul 2. La funcţionarea conform acestui tip canalul A se utilizează pentru transmiterea


bidirecţională a datelor, canalul C – pentru înscrierea semnalelor de comandă, ce asigură transmi-
terea datelor pe canalul A. Semnalele de comandă reprezintă combinaţii ale semnalelor necesare la
funcţionarea canalului A conform tipului 1.
Combinaţiile regimurilor se definesc prin înscrierea cuvântului de comandă pe adresa
registrului de comandă a circuitului. În registrul de comandă se pot înscrie numai cuvinte de co-
mandă. Citirea informaţiei din registrul de comandă este inadmisibilă.

Fig.5.3. Formatul cuvântului de comandă *-0 sau1

Deoarece circuitul KP580BB55 nu are registru intern, ce indică asupra stării circuitului,
pentru determinarea lui se citeşţe conţinutul registrului canalului C şi se interpretează anumite
ranguri ale lui. La funcţionarea circuitului după tipul 1 sau 2 se poate schimba conţinutul
anumitor ranguri ale canalului C cu ajutorul cuvântului de comandă, înscris în registrul de
comandă.
La furnizarea nivelului 1 la intrarea R se nulifică registrul de comandă, bistabilii
permisiunii de întrerupere, iar toate canalele se stabilesc în regimul de intrare a datelor.
La racordarea microcalculatorului cu dispozitivele exterioare, se utilizează CISL al interfeţei
paralele programabile (IPP) de tip KP580BB55A.
Circuitul conţine canalul informaţional A cu 8 ranguri A7 –A0), canalul informaţional B (B7–
B0), canalul informaţional C (C7–C0), canalul datelor (D7–D0), rangurile inferioare de adrese
pentru selectarea canalelor şi registrul cuvântului de comandă (PУC) A0, A1, intrările de
comandă; RD – citirea informaţiei; CS – selectarea circuitului integrat, WR – înscrierea în cir-
cuitul integrat; RES – poziţionarea iniţială.
Schimbul de informaţie dintre magistrala de date şi circuitul integrat IPP se realizează prin
canalul tristabil bidirecţional cu 8 ranguri ale datelor D.Pentru legătura cu dispozitivele
periferice, se folosesc trei canale cu 8 ranguri A,B,C. Regimurile de lucru ale acestor canale şi
direcţia de transmitere a informaţiei sunt determinate prin metode de programare.

Fig.5.4. Schema structurată a plăcii de machet.

Circuitul integrat poate funcţiona în trei regimuri de bază:


 în regimul 0 este asigurată transmiterea sincronă, dirijată de program prin 2 canale
independente cu 8 ranguri A,B şi două canale cu 4 ranguri C (C3 – C0 şi C7 – C4). Circuitul
integrat în acest regim poate fi considerat ca dispozitiv, ce constă din 4 canale, ajustate
independent la intrare sau la ieşire. Ieşirea informaţiei se realizează la comanda OUT cu fixarea
informaţiei în registrele interioare ale canalelor A,B,C. Intrarea informaţiei – la comanda IN fără
memorizarea informaţiei.
 în regimul 1 este asigurată intrarea sau ieşirea informaţiei în/sau din dispozitivul
intrare/ieşire (DII) prin două canale independente A,B. La aceasta liniile canalului C se folosesc
pentru recepţionarea şi furnizarea semnalelor de comandă prin schimb;
 în regimul 2 este asigurat schimbul de informaţie cu DII prin canalul bidirecţional cu 8
ranguri A cu ajutorul semnalelor de comandă transmise pe canalul C.

Fig.5.5.Schema conexiunilor pe placa de machet.

În lucrarea de laborator se foloseşte regimul 0.


Regimul de funcţionare a fiecărui canal A, B, C este determinat de conţinutul registrului
cuvântului de comandă. Formatul cuvântului de comandă este prezentat în fig.5.3
De exemplu, dacă este necesar de adjustat canalele A,B la intrare, iar canalul C la ieşirea
informaţiei în regimul 0, atunci trebuie de definit:

D0=0-ieşirea informaţiei prin canalul C3-C0;


- D1=1 – intrarea informaţiei prin canalul B;
- D0=0 – regimul 0 al canalelor B şi C3-C0;
- D3=0 – ieşirea prin canalul C7-C4;
- D6=0, D5=0 – regimul 0 al canalelor A şi C7-C4;
Ca urmare, cuvântul de comandă are forma 10010010=92H.
La aplicarea semnalului RES РУС se stabileşte starea, la care toate canalele se ajustează la
funcţionarea în regimul 0 pentru ieşirea informaţiei.
Regimul de funcţionare a canalelor poate fi schimbat precum la începutul, aşa şi în procesul
executării programului, ceea ce permite a deservi diferite DII într-o ordine anumită, utilizând un
singur circuit integrat IPP.
Semnalele de funcţionare a IPP sunt aplicate la intrarea circuitului integrat şi împreună cu
intrările de adrese A0, A1 definesc forma operaţiei, executată de către CISL în corespundere cu
următoarea tabelă a concordanţei:
Ca urmare cuvântul de comandă are forma 10010010 = 92Н.
Operaţia CS RD WR A1 A0 Note
Defineşte
Înscrierea
0 1 0 1 1 regimul de
în PYC
funcţion.
Înscrierea în 0 1 0 0 0
canalul A
Înscrierea în
0 1 0 0 1
canalul B
Înscrierea în
0 1 0 1 0
canalul C
Citirea din
0 0 1 0 0
canalul A
Citirea din
0 0 1 0 1
canalul B
Citirea din
0 0 1 1 0
canalul C
Deconectarea *-stare
1 * * * *
IPP indiferentă

În aşa mod, pentru exemplul considerat mai sus înscrierea cuvântului de comandă în IPP şi
operaţia de înscriere-citire în canalele B,C se efectuează în modul următor:
MVI A,92H; – cuvântul de comandă
OUT ADR+3 ADR – adresa de bază a IPP, determinată de decodificatorul de adrese şi
furnizată la intrarea CS a IPP
MVI A, 57H; – datele pentru ieşire
OUT ADR+2 – ieşirea în canalul С
IN ADR+1 – citirea din canalul B
Schema structurală a interfeţei utilizată în lucrarea de laborator împreună cu schema
utilizatorului este prezentată în fig.3. Conform acestei scheme, informaţia înscrisă în canalul C
poate fi extrasă din canalul C prin canalul B. Seria de impulsuri, ce comutează contorul CT2,
este formată prin instalarea programată-revenire la poziţia iniţială a bitului C1 al canalului C în
ciclu. Este necesar ca C0=0. Revenirea la poziţia iniţială a contorului se efectuează prin
instalarea bitului C0 (C0=1).Conţinutul contorului se citeşte prin tetrada inferioară a canalului A.
Notă: răsturnarea contorului binar K155ИЕ5 în starea următoare are loc pe frontul negativ al
impulsului la intrarea de tact a contorului.
Schema conexiunilor pe plata  machetă este prezentată în fig.5.5

Exerciţiu la lucrarea de laborator


Scopul lucrării este studierea IPP KP580BB55 şi utilizarea ei pentru dirijarea celui mai
simplu dispozitiv K155 ИЕ5.
1. Studiaţi schema simplificată a interfeţei platei  machetă. Explicaţi destinaţia fiecărui
element al schemei şi determinaţi după schemă adresele canalelor A,B;C şi a registrului
cuvântului de comandă al IPP.
2. Alcătuiţi programul cu al cărui ajutor un octet de date din celula de memorie 0800H se
înscrie în canalul C. Programul după aceea verifică corectitudinea înscrierii prin canalul B. Îîn
cazul ieşirii corecte în celula de memorie 0601H apare codul 11H, iar în cazul erorii  codul
AAH.
3. Introduceţi programul în CMPS şi explicaţi rezultatul executării lui
. 4. Alcătuiţi un program, ce execută revenirea la poziţia iniţială a contorului CT2 şi avansarea
pe el a 10 impulsuri.Corectitudinea instalării contorului verificaţi-o programabil, citind
conţinutul contorului pe canalul A.
5. În darea de seamă daţi descrierea funcţionării interfeţei, ordinea adjustării IPP cu ajutorul
РУС, descrierea programului şi executării lui.
CONŢINUT

1. Lucrare de laborator nr.1 Studierea complexului microprocesor de studiu (CMPS)


…………………………3.
2. Lucrare de laborator nr.2 Programarea microprocesorului MP
KP580BM80A……………………………………….15
3. Lucrare de laborator nr.3 Programarea microprocesorului MP
KP580BM80A……………………………………….32
4. Lucrare de laborator nr.4 Alcătuirea celor mai simple programe în coduri
interne………………………………..56
5. Lucrare de laborator nr.5 Studierea interfeţei intrare-ieşire pe baza CISL
KP580BM80A………………………67

Igor JURMINSKI
Petru CHETRUŞ

Bazele fizice ale tehnicii de calcul


Practicum

Redactor literar – Antonina Dembiţchi


Asistenţă computerizată – Ruslan Puşcaşu

______________

Bun de tipar 15.10.2001. Formatul 60  84 1/16.


Coli de tipar 5,0. Coli editoriale 4,0.
Comanda 67. Tirajul 50.

Centrul Editorial al USM.


str. A.Mateevici, 60, Chişinău, MD 2009.

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