Documente Academic
Documente Profesional
Documente Cultură
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 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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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+rA. 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+MA. 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
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+CA
ADUNAREA DIRECTĂ CU MEMORIA ŞI CU TRANSFER
ACD M,Adresa A+M+CA
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-rA
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-MA
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-MA
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-DateleA
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-CA
2. Comenzile logice
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
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
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.
Î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
Igor JURMINSKI
Petru CHETRUŞ
______________