introducere in microprocesoare_part19
DESCRIPTION
17TRANSCRIPT
-
Se poate rni.ri timpul rre intirziere construind o bucr' cu un contqrpe un registru pereche^ca ir, """_piol ,rrmator:
0874HO875HOB76H08771I0878H0879H
OBTAHO87RHO87CFIOBTDH
t6B1C2730815
C27008c9
MOV A,BORA CJNZ INTZM
DCX D
JNZ rN'rZSRET
SE TESTEAZA DACAVAI-OAREA CO}{TOR].iLUIBUCLEI INTERIOARE:0SE DECREMENTEAZACONTORUL BUCI,EIEXTERIOARE.DACA N+O SALT LAINTZM.REINTOARCERE INPROGRA},{UL PRINCIPAL.
SUBRUTINA,TPIVIRU INTIRZIERE MEDIE.V A LO A RE A P A RA M E r NI rT i - N _PE I{ r R7; 67J NAr AIIVTIRZIERIT S-E AFii.ITI"NECTSTRUL PERECHE B(CARE ARE FuNCrrA b'i couronftrl{TZM: DCX B S}i n}ir-pnr/rn\r-rD ^
z ^ ^n \r,.^n---:E qF_qRENTENTEA2A coNroRUL,REG--ISTRUI- PERECHE B.Irov A,B ; sE rRAry1qlnRT'c6xTlfrurul REG. BIN .{CUMULATOR.ORA C ; INSTRUCTI-UNE; SAU 41. DACACONTO_R : o FANiCfqtf Z :'0.-"*T? INrz", 3*9$# f-gfiii*,^"ftqgEi" rNrzM.FPI-ryT_OARCERE rn pnocnauuiPRI},ICIPAL.
Pentru o anumitr valoare impusi a intirzierii AT, valorile varia-bilelor de contor l/ ;i P se pot deitermina clin reialia: "AT,[p,S] : {10 + lz4(p
-
r) + 351 (rv _ r) + z4{p _1) + 43} 0,s0
-
}.} DAA (Decirnal adjust accumwlator )AceastS. instrucliune are ca efect convertirea continutului acurnura-torului in formatul zecirnal codificat binar BCD.'Operaliile de sci-dere ;i adunare intre operanzi in BCD pot duce la reiultate eronatein BCD; corectarea rezultatelor se faie in funclie de valorile fani-oanelor CY;i AC. Modul cum se corecteazS, rezultatul pentru a seobline o valoare real5" in BCD este expus ln $ 1.5.
Fig. 5.30. Organigramd pentru. o subrutindce cuprinde o bucli, de tip _ irt, titnp ce
32 DAD rp ( Adcl register pair to H and L )(H)(L) ,- (H)(L) 1- (rh)(rt)confinutul legi-strului,pereche rf cstc acrdugat la continut::r regis-trului pereche_H, rezuriatur se ottine in ;"Ci;"] p;;;h; H. conri-nutul registrului perechg gare se'adund .?;i"" '"L.."rri-f"tld;;afectat doar fanioirul cy,;i indici {aptur ca in ,egisiJ perechu: 11"in urma adunlrii, a rezull,at o valoire
-.i ;;;;;;Jii zrr.i ol 0lR I pl i I 0 I 0l 1 i opcoDECi.l"t, .-:. 3Stdri : 10Adresare: la registruFanioane: C\-
Exemplu:DAD H ; SE DUBLEAZA CONTINUTUL REGISTRULLx; FERECHE H, CEEA CE ESTE ECHIVAiixT cuDEPLASAREA CU UN RANG SPRE ST]XCA.DAD SP ; CoNTINUTUL REGIsrnuruT SP SE iijiie ra; REG. PERECHE H.Dacd se consideri ci in reqlt-rul Sp este varoarea 6D 1DH, iar in registrurpereche fl valoarea B2AEH, instrucfiunea DArl Sp rearizeaza:
registrul pereche H BZAEH:10110010 1010 1110registrul pereche Sp 6D1DH:0110 1101 0001 110i
rezultat in reg. pereche
ol ol r I ol ol 1 | 1 lr I opcoDrtCicluri : 1Stiri ; 4Fanioane: Z,S,P,CY,AC
Exempltt:Fresupunem c5" (A) : 39 ;i (B) : 41 ;i c5. urmeazl un segment deprogram pentru reaLizarea adunirii in BCD a celor doub- numere:ADD B; SE ADUNA 39 cu 47 SI SE OBTINE 80 (BCD).DAA ; AJTISTAREA ZECIMALA SE OBTINE 86 (BCD)acumulator 39(BCD) :0011 1001registru B 47(BCD) : 0100 0111acurnulator 86(BCD) + 1000 0000 : 80(BCD).conlinutul acumulatorului in urma adunirii binare este 1000 0000
ce in BCD echivaleazi" cu 80, dar adunarea corecti trebuie s[ produci'.86(BCD) Pentru corectare (ajustare) se introduce totdeaunl dupiinstrucfiunea de adunare instiuc{iunea DAA.
Crnpul itostrwcliun'iloy aritmet'ice :ADD rADD NI
ADI data -ADC r
ADC MACI data
-
SUB rSUB 1\{
Adunarea la acumuiator a conlinutului unui registru,(Add.register ).Adunarea la acumulator a confinutului unei localii dememorie (Ad.d. urernory ).Adunare imediati la acumulator (Add. imnoed.iate).Adunare Ia acurnulator a conlinutului unui registru ;ia transport'tlui (Ad,d, reg,ister'with carry) 'Adunare la acumulator a conlinutului' unei localii dememorie
.;i a-.transportului (Add rnem,ory uith cirry).Adunare imediatd. Ia acumulator si a traniportul,ai lAiaimrnediate zuith carry )Sciderea din acumliator a conlinutului unui registru(Snbtract regi,ster ).Scf,derea din acumulator a continutului unei locatii dinmemorie (Subtract memory ).Instrucliunea DAD este
278
H IFCBH: OOO1CY:I Vutil5, la insumarea
1111 1100 1011
cuvintelor in dubli precizie.
AORTSA OT INCEPUT A TABELULUI,rtXnnfa lUtll,nrrtO RiJtUt 0E tOtATil
sr ncReuEnttlzlvALoAREA luNiRiro-
sr ncnrurtreaziAORESA OIN TABNT/- tUVINTUL
TiTIT OIN TABEL
RETURN
219
-
SUI dataStsts r
SBts M
SBI dataINR rINR N,IllCR rDCIT
INXDCR
I}AI)DAA
-
ScI"derea irnediatl din conlinutul acumulatorului (Sub*tract r'nmediale ).
-
Sclderea din Jcurnulator a confinutului unui ,"giJtr,*;ia.impru:nutu1ui('Subtrac/,registerzu,ithborrow
-
ScS.derea din acumulator a conlinutulrri unei tocitii ainnremorie fi a irnprumututrui . (Subtract rtem,ory witltborroa ). ' r
-
ScXderea ime
-
Exetnpl,u:ANI ABH; SI LOGIC INTRE ACUMULATOR SI CUVIXTUT IOIO; 101 1.^-
Modul de operare al unei porfi logice SI, cu dou' variabile, dintrecare una se consideri ca intrare^de valif,are a porlii, iu. ."ui"ita ca varia_biln de transfer, rezultl din tabelul- a" ua".re.. Daci. variabila de vali_dare este egald" cu zero, pentru orice valoare a variabilei de inirare, iesireaeste zero, adicd ooarta este blocatb. rur, ,"r"lrt;- i" ..n]-r, iace varia_bila de validare'este.r, iegirea "r" tora""una valoarea variabirei de in-trare. Aceastd proprietate cste utilizati in selectaiea ,,irrriito. inlrrria'te unui cuvint orin utilizarea unui grup de p"riil;g;;;iiguritre 3.9;3.12 si 3.13.
,.".,9ljj;l":*:?.,1.l"tiuniior. St logic se realizeazi. prin program ace_reasl lunctrr, ca gi in logica cabrali, adicd st. pot reseta "nu-"iti biti ;i1".::L1"P::." s,! ry! risa neschimbafi Daci intr_o--.""*tta pozi{iea unur cuvrnt este necesar ? se- pune 6itu1 pe valoarea ,"ro, lritil ai^aceea;i pozitie (bit rnasci).ar celjlart.u"inf imasc4 ir"rri"'ra fie zero"In schirnb, dacd intr-o pozigie uitui tieluie sri rdmini cu aceeasi varoare,in cuvintul mascii bitur coresp""ret-*t..buie si fi" i. ;; e-rernplu"instrucfiunea ANI FEH
'a ."r"i. uit"lai" pozilia zero aacumuratorului,lisind neschirnba{i pe ceilalli.
\1 XRA T (Excl,wsiae OR register )(-,{) * (A)v (r)Se realizeazS" opera,tia logic5" SAU exclusiv, bit cu bit, intre confi-nutul acumulatorului si conlinutul registrului r, reatltattl se obtinein acumulator. Confinutul registrului r nu se rnodific5.
I r i ol r I oi r I sl slsl opconnLtclurl i IStlri : 4Adresare: la registruFanioane Z,S,P, CY : 0, AC : 0
li remplu,:Rezultatul instructiunii SAU EXCLUSIV efectuatS. intre un cuvint
ciat ;i un alt cuvint masci- se poate deduce din tabehll de adevlr,figura i.3, c. Funcfia de mascare prin aceastl instrucfiune poate fi pri-vitl- ca o operalie de complementare (negare). Deci se poate dedircestructura cuvintului mascl: pentru bifii ce nu necesitl- modificare incuvintul dat trebuie s5- le corespundi in cuvintul masc5- bifii de valoare7919., i9r pentru bilii ce necesitS" complementare trebuie si le corespundibilii de rraloare 1.
*Considerind con{inutul acumulatorului 25H, iar al registrului B egalcu FAH prin instructiunea XRA B se obfine:
acumulator 25H : 0010 0101registru B FAH : 1111 1010
rezultir in acumulator 1101 ll 11In poziliiie subliniate au rezultat, in acumulator, bilii cu valori negate.XRA A; SE ANT-ILEAZA CONTINUTUL ACUMULATORULUI SE
; OBTIN FANIOANELE CY: 0, AC :0, Z -
0.38 XRA M (Exclusiue OR menoory )
acumulator XXXXbait2:FEH:1111 XXXX1110rezultS. in acumulator XXXX XXXO
urmitoarele dou[ instructiuni vor selecta din registrul B cloar bitii0-3, ceilalli bifi 4-7 vor fi pugi pe zero: ,MVI A,OFH; SE INCARCA ACUMLILATORUL CU CUVINTULAlrA B ; 8iY#tf$ftto,lhu"rrrRlr,- A 0000xxxx
In concluzier pfl operatia SI logic, pcnrru bitii care lrebuie pu;ir_::? Jr"seta!i). bilii corcspunzatorii" iruiniui;il irebuie sL fiezero; Lar pentru bilii care trebuie si rrmini. neschimbali, i; ;";;i;imascn Pjlii corespunzltori trebuie si fie 1. Fiitle i" ,."1i ."", o instruc_i::;;""'S"llogic
(ANA r, ANA M, ANr ctata) este o ;il.tt; mascil pentru. . .
I-nstrucfiunile SI logic pot fi utiiizate in testarea valorii anurnitorbifi dintr-un cuvint, p"""trit "r"ui1" se procedeazi in felururml.tor:tr- cuvintur respectiv-este adus in.acum,hat"il-t- f.irrt._,r' cuvintrnascS" potrivit se reseteazl- to{i bitii in afari. de cei cari trebuie testali;3
-
cu ajutorui instrucfiunr]g. a.l sc'dere 2t, r";t;odulo 2 39, saucomparatie 43 se poate'decide asupra valorii acestoi-blgi..)c)o
@%
(.,{) * (A)v (H)(L))Se realizeazl. opera\ia iogici SAU EXCLUSIV, bit cu bit, intrecontinutul acumulatorului ;i continutul loca{iei de memorie, aciirei adresS. este specificatl in registrul pereche ,F1.irlolrlolrlrlrlolCictruri : ZStart : /Adresare: cu registru perecheFanioane: Z,S,P, CY : 0, AC : 0.
OPCODE
ootzzJ
-
Exenoplu:
XRA },f ; SAU EXCIUSIV II.ITRE ACUMULATOR SI LOCATiA; DE ]ITEMORIE INDiCATA IN REGIST'NCi FbNECUTi rI"
(^4) * (A) v (batt z)Se realizeazi oneraria loqicl sAU EXCLUSIV, bit cu bit, intreconlinutul acudrul^ior"iri ;i rr"it"rT^ioilea a-r instructi'nii.
tltSIR: *.------; SECVENTA DE PROGRAM CARE; TRATEAV,A CAZIJL DE INEGAI-ITATtr A; CUVII{TtrLOR.
Fentru testarea egalitS,fii celor doi baili ai unui cuvint dublu sepoate proceda in felul urrnS.tor (se consideri cuvintul inscris in registrul1rt'reche D) :MO\T A,E
X[{A D17, rESrR
(Or itnmediale )
bit c,u bit, intre conlinutulal instrucliunii, rezultatul se
TRA}ISFERA BAITUL I},IFtrRIOII INACUMULATOR.(A)
-(A) v(tr).I}.]- CAZ DE EGAT-ITATE IESIRE DI}i PF.OGI{A},T.
39 XIttr data ( Exclusiae OR im,med.iate )
Cicluri : ZStdri : 7Adresare: imediatd.Fanioane: Z, S, P, Cy : 0, AC : 0
Exentplu:XRtr 25H
XRI FFH
IESIR: __i (A) * vAL, sE coNTINUA pRocRAI\{uL"
SI' COMPLEMENTEAZA BITII O, 2,5 DINACUMULATOR.SE COMPLEMENTEAZA CONTXbIUTULACU},IULATORULUI.
..Ins.truc{iunile sAU EXCLUSIV pot fi utilizate pentru testareaegalitdlii a doudL cur.inrc dc un bait: 'TEST ; PPV V4L ; SE FIXE AZA YALo,ARtrA DE TEST.LDA ADnS ; SE TNCARCA CUVrN-UI nn rb*srAT.xRI j_E!l ; @) * (r)v vAr_.JZ IESIR; (A) : VAT, saTT LA IESIRE.
OI{I data(A) * U) v (bait 2)Se realizeazL opera\ia logicS. SALI,acumulatorului ;i baitul al doiieaobline in acumuiaior.Ir l111lr lo lr 1 l lol OPC D
DATACicluri : 2Starl : IAdresare: imediatiFanioa:re: Z, S, F, CY : 0, AC : 0O instrucliune care realizeazil opera,tia logicl SAU poate fi privitii
ca o operatie de mascare. Biliior cd-rora trebuie si li se fixeze valoareala unu le corespund bifii (mascir) egali cu unu in cuvintul mascl, iarpentru bifii care nu trebuie s5.-;i schimbe valoarea le corespund biliimascir egali cu zero. Deci, cu bit masc5. egal cu 1 se fixeazl (seteaz5.) valoa-rea 1, iaf cubit mascL zero nu se schimbi valoarea, invers ca la operaliademascare SI (unde bitul masclegal cuzero reseteaz,E, iat' bitul mas-c5. unu nu schimbl valoarea.).Exemplu:OI{I Sl H;BITII 0 SI 7 REZULTATI IN ACUX{ULAI'OR AU
; \TALOAREA U]{U, CEILAI-TI RAI{I}T NESCHIMBATI.ORI OI{; NIJ SE SCI{IMBA VALOAREA ACUML]T-ATORULUI SI
; CY:0, AC:0.41 ORA r (Or register )(A)*(A)Y(r)
40
sau pentru cuvinte dubtu (multi) bait:LXI D,1234H; SE INCARCA VALOAREA DE TEST.r-DA ADRS ; SE ADUCE BATTUI- iutrnruCjn ElxRr E 1?8":\lylYJ,i"rESrArl:\z rESrR ; (a,i + (Ei SALT LA rESrRE.LDA ADRS+1 SE ADUCE BAITUT SCpnnIoR ALxRI D , ,?Y:X,VH{ ot rESrAr.nNZ IES ; A'+ D'SALT'LA IESIRE.
; IN CAZ DE EGALITA.I.E SE CONTINUA; PROGRAL{UL.224
225
-
Se realizcazb" ooeraria logici SAU, bit cu bit, intre continutulmulatorului si continutui ."giriioi"i
", ,"rurtarul se obtinc inmulator. Con(inutul registrului / uu se schimbd.
l-tToTlllloT s_L sl s f oi,ccDECicluri : IStbri : 4Adresare; la registrrrt,anioanc: Z, S, p, C\- : 0, AC :_ u
(din acumulator) funclia SAU logic (ORA ll)mascare (seiare, aducerc la valoarea l).
(Con'rpare immediate )3cu-acu-
I't:ntnl bilii sublinialir reahzat operalia de43 CPI data
A -
(ba'it z)continuttil baitului al doilea a1 instrucliunii se scade din conlinutulacumulatorului, rliferen{a rezultatS. nu este inscrisl nici unde, darsint afectate fanioanele corespunziitor rezultatului care ar fi tre-buit sl apari in acumulatof. Conlinutul acumulatorului nu seschimb[. Cei doi operanzi sint considerali numere binare, cu semn,reprezentate in coriplement fi![ de doi. Z : l dacl (,4) : (bait 2) ;CY : 1 dac5. (,4') < (bait 2).ggIliNUiLTL ACUi{uLAroRULUr Nu sESCHIIIBA C\ : O, .\C: O.
S AU I N RF, CON I'I \' UTUL .A.CUMULAI'ORULUISI AL iiEG. L.Testarea valorii zero a unui cuvint ciublubait se po:rte facc ca inultimul e-remolu cle program dc la instructlr,rirea 39, dar in linia a douain loc de XRI o ,"'""'ioi;:i;r".*iirinea oI{A D.
E xernplu:START: ORA A
ORA I-
42 ORA M
OPCODE
DATA
(A)*(A)vKH)(LDSe realizeazi ooera!ia.logic-i SA', bit cu bit, intre conlinutulacumrrlatorrrl,ri ii
",lnlinujuir*"ii.l i. *"*o.r" . cdrci adresin:ij,o"::tt,.atir i;r '"girf,:ui;";:;;; ;,*,.,,,tr"tur sc obti,e in acu_
J i 1 11 li 11 li 1 l iol1l
L:iernpln,:CPI A0H; SE SCADE DIN ACUMUI-ATOR ]'{UI'IARUL A0H'CPI ETH; SP SCENtr DIN ACUMULATOR NUMAITUL E7H.Pentru prima instrucliune se considerl ci in acumulator cste nurnlrulE3, in timpul executS.r'ii accsteia au loc urm5.toarele operalii:acumulator: E3- I tr31 l- I Ii0 001l+bait 2
-
A0 f= complernent fa1I de doi 60 I- 0ll0 0000CY: I +- 0100 0011
Deoarece scXderea a fost inlocuitL cu adunare, transpoitul se considerS"negat, deci CY : 0 (vezi explicalia de la
.instrucliunea 20, SUB r)'Pe]rtru a doua instrucfiune se considerS. c[ in acumulator este num|'rul85:
tss-l l_ l0ll 0l0l+doi l9 l- oool 100iCY:0 +- 1100 1110
Nu a ap5rut transfer, dt-ci se ia CY: 1 (adicl existi imprumut)'Fanioanele pot fi utitrizati: in intcrprc-tarea rela{iei de ordonare
dintre cei doi operanzi, in felu1 urmitor:-
ZERO. Dac5. {anior.ilI Z: 1, cei doi operanzi sint. egali; iardacl, ZI 0 bperanzii sint difer-iJi.
-
sIGI.l.^Fanionu.l de semn'S poate fi utilizai pentruinterpretareaI'alorilor*i6litive ale celor doi c,peranri 'ttturta'i dacI nu a rezultat transport(deci irnpiicl gi testarea fanionului cY)" Pentru S : 1, indici un rezultat
(OR mentorjt )
Cicluri :Stiiri :Adresare:Fanioane:
E xernpltt:
IrloIr,Tloll-f oj OPCO'Er-rgistr-it pcrech.,S, P, CY: O, AC: O
LXI Ii, 4sA2H; Slt?_RESCRIE Ili RTGISTRUL 'ERECHE_ ; ADRESA 48AZH.oRA t\{ ; s{u Lobic ^r-N^TRE, CONTiNUTUL LOCATTET; DE ADRESA 4sA2H Sr AL e.uliuiler:onurur.
DacS' continutul localiei de aclresi 48A,IJ este A3II, iar al acumulato_rului DOI{ atunci instrucliunea"OiiA llf ;. aiizeazd:
21
CLIZ,
acumulator :bait 2
Bs-lEl J- corr,nlement fa!I de
acumulatorconfinutul locatiei
DOH :A3H :
li01 00001010 0011
F3H :1i11 0011226
rezultS. din acumulator
227