Upload
mesuzana-1
View
226
Download
0
Embed Size (px)
Citation preview
7/23/2019 Introducere in Microprocesoare_Part18
1/6
iiloo.
-
fflooo
CY
:
0
*-
y--7'
i
-"
Cy
:
I
*_6,
In
adunalea
urmltoarelor
cuvinte
de
3
trvtes
34AF8A
BzAF93
E7sFJD
se utilizeazd'
inst.rcliLrnea
ADD
pcntru
adunar.ea
g{-;93
si
instruc_
lirrnea
ADC
penlr"
a"ne.il"
ari:i1,,
34+Bz
l-
'-cl'-
I +
b"ifiy*etorul
program
realizeazd.
adunarea
a
doui
cuvinte
de
doi
START:
LDA
C1\{PSB1;
I
1
I
ol
ol
oi 1
i
r
I
r
loi
opcoDE
Cicluri
:
1
Stiri
: 4
Adresare:
cu
registru
pereche
Fanioane
: Z,S,P,CY,AC.
lJ
retnplw:
L{I $,ADRESA;
SE PRESCRIE
REGISTRUL
PERECHE
H.
ADC
l{
;
SE
ADUNA
LOCATTA
DE
aOnnSa_eDRESA-
i-A
ACUMULATOR
PLUS
CY.
{9
dCI
data
(Add.
imrned.iate
w.ith carry)
(A)
-
@)
+
(ba,it
z)
+
Cy
confinutul
baitutrni
al
doilea al
instrucliunii
si
valoarea
fanionului
de
transport
se adunl
ia
confinutul
ac'm'latorului;
iezultatul
se
obline
in
acumulator
I r
I
r
I
ol
oi
I
I
r
j
rlol
opcoDE
I
I
I
i
I
i
I
IDArA
Cicluri
;
2
St5.ri
:
'7
Adresarc:
imediatd"
Fanioane
:
Z,S,P,CY,AC.
4ql
191111118;
OFERANDUL
ESTtr
ExpRh'rAT
rr{
BTNAR.
ACI
43
;
OPERANDUL
IN
ZECIMAL.
.ACI
43H
;
OPERANDUL
IN
FIEX.
ACI
,M,
;
OPtrRAND
ESTE
LITERA
M
II{
CoD
ASCII.
Prima instructiune
din
aceste
exemple,
claci
conlinutul
acumula_
torului
este
1000
foto,
iar
,"riy
i
i;;;;"",
Cy:t
,
,Litii"ira,
Acumulator
:
1000i0i0
|
CarrY:
t
Data
:
iolltlii
J
Sign
:0
cY
:
_-l==i
3:'o
:0
Acumutator:
otoololo
l^r"
1"1#=
?
Dac5.
Carry a fost
zero,
CY
:
0
se
realizeazd":
"1)^""
1D
MOV
B,A
LDA
CMPSB2;
ADD
B
STA
REZ
LDA
C},{SB1
N4OV
B,A
LDA
CMSBz
ADC
B
sTA
F.F'Z]-L
;
qP
lrygARCA
cEL
MAi
PUrrN
lPlqlllrcArrv
BAri.
li^i,nruurul
CUVINT
CI{PSB1.
9P
IBANSFERA
CMPSB1
IN
REGISTRUL
B.
sP
INCAIiCA
CIIPSBZ
AL
CU_VINTULUI
AL DOILEA.
4P_q{AREA
BArrrr-on
ilrpsnr
sr
CPMSB2.
:P lLocHE
AZA
LEZULTATUL.
SE-INCARCA
CEL
T{AI
SEMNiPiCEITT'
F4rr_Ar-
PRTMUT-Ui
cuvl-Nil
^"'"^
9q
ITAIiSFERA
chrsBl
N
^'
REGISTRUL
B.
qP rygARCA
CMSBZ
AL
CUVINTULLTI
AL
DOILEA.
9E* 4DUNA
TI{rND
CONT
Dtr
TRA-}JSPORTUL
ENTTNION.
*
SE
STOCI{EAZA
RE:zuii'iUr.
18
ADC
M
(Add,
m,emor3t
ait/2.
carry)
(A)*(A)
+
(
(H
)
(L)
)+
(cY
)
confinutul
iocatiei
de
memorie,
a
cirei
adres*
estc
specificat5.
in
egistrul
pcrcche
ll,
se
aduni
.,i
*"tir"t;if;;rt"il"
irtrrp"r,
i,,l,ji"il
con inutrrt
acumutator"rui
;
rer"it;tur
;;;ftt;J'i;
"ro-
t
0
0
1
0
204
Acumulator
:
1000 I
010
/
Carrv
:
Data
:
l0;ll11l
I
q,;--'-
cY
o
*1
Z'&;
:
I
Paritr':
Acumulator
-
Ct00i001
\A.rx
.atry
:
205
7/23/2019 Introducere in Microprocesoare_Part18
2/6
(i.t
20
Algoritmul
de
verific-ar,ea
corectitudinii
adundrii
numerelor
cu
semn
complement
fali
de
doi)
este
expus
i"
iig"i"
i.t6:';."'"^"'
SUB
r
(Swbstract
reg,ister)
(A)*(A)-(r)
conlinutul
registrului
z
este
scizut
din confinutul
acumuratorului;
rezultatul
se
obtine
in
acumulato..
co",ti""t"i';;d;;;ir'rro
.*
modificd.
-
Pentru
ultima
instrucliune
SUB
A (se presupune cL
in acumulator
t'ste
valoarea
3EH)
se obline:
3EH
:0011
1110
+(-3EH)
:
1100
0001 complement
fati
de
1
1 complement
fali
deL
CY
:
1+0000
0000
v
-
Pentru
scl"derea
35-12
cu
instructiunea
S se obtine:
Cicluri
:
1
Stiri
:
4
Adresare:
la
registru
Fanioane
:
Z,S,
p",
C
y,AC
Exemplw:
SUB
B;
SE
SCADE
DIN
CONT.
-
CONTINUTUL
LUI
B.
SUB
A;
SE
SCADE
DIN
ACUM.
ACUMULATORULUI.
ACUMULATORULUI
VALOAREA
CONTINUTULUI
35-
:
1Z
23
:
1
7/23/2019 Introducere in Microprocesoare_Part18
3/6
Exemplu:
LXI
H,4OOOH
SUB
M
27
SUI
data
SE
IMCERCE
REGISTRUI-
PERECHtr
CU
ADRESA
4OOOH.
SE
SCADE
DIN
ACU]\{ULATOR
CO],{TINUTUI-
LOCATIEI
DE
ADRESA
4OOOH.
'l
t
I
ol ol
1
|
1
I
sl
slsl
opcoDE
Cicluri
:
I
St5"ri
:
4
Adresare:
la registru
Fanioane:
Z,S,P,CY,AC
Exern'jtl,u:
SBB
B; SE
SCADE
DIN
ACUI\{ULATOR
CONTI\IUTUL
;
REGISTRULUI
B SI
VALOAREA
FANIONULUI
CY.
Pentru
aceasti
instrucliune,
considerind
c5.
CY:
1, conlinutul
lui
B
este
2,
iar
cel
al
acumulatorului 4,
se
obline
(se
noteazl
compiementul
fali
de
doi
cu 2'):
Acumulator
4H
:0000
0100
Reg.
B
in
2'
(-2I{)
:
1111 i110
CY:
1
in
2'
(-1H)
:
tr1ll 1111
.a-
I +_
0000 0001
:
lH/ I
-
\_
24 SBB M
(.Subtract
(1)
*
(A)
-
((H)(r))
-
(cY)
Con{inutul
localiei
de
memorie, a
c5"rei
adresl
registrul
pereche
-Fl
si
valoarea fanionului
CY
conlinutul
acumulatorului; rezultatul
se
obtine
in
I
rl ol
ol
il
r
|
1
I
r
lol
opcoDE
(
Subtract
,intintdtote
)
(A)
*
(A)
-
(ba,it
?.)
conlinutui
baitului
al doilea
al instrucliunii
se
scade
din
continut'I
acurnulatorului;
rezultatur
se
obfine'
io
n..i*"i*io..'"
-""'t'
I
r
I
r
I
o
l
1l--l-ll-1lo
OPCODE
DATA
Cicluri
: 1
Stiri
:
7
Adresare: imediatl.
Fanioaie:
Z,S,p,Cy,AC
Exempl,u:
START:
SUI
lH;
SE
SCADE
DIN
ACU}fULATOR
1H.
SUI
,T,;
SE
SCADE
DIN
ACUIIULATOR
ASCII
AL
LITEREI
T.
Prima
din
aceste
instruc{iuni
sul
lH
rearizeazL
urmStoarea
(se
considerd.
cb.
acumulatorul
confine
""i""i"r'
OHl;-""*"
I
C"tty
:
I
I
Sign
:0
(
Zero
-0
I
Parity
:
o
\Auxcarry
:
l-
,,nenxary
uith
borrow
)
NUMARUL
CODUL
opera ie
0
0
0
0
1
este indicat5.
in
sint
scizute din
acumulator.
lonfinutul acumulatorului
0000
1001
:
EH
Dataincomplementfatd
de
Z
lttt f iii: _lI{
1
Carry
:
I
Sisn
i
l-ero
:
I
Parit5':
lAux
calry
:
Cicluri
:
St5.ri
:
Adresare:
Fanioane:
Exempl,u:
LXI }I,4783H
SBB
1\,{
2
cu registru
pereche
Z,S,P,CY,AC
$i
L5
instrucfiunea
SUI
SBts
r
(A)
*
@)
--
(r)
-
CY:
1
+-
0000
1000:
8I1
\-/
data
complementeazl"
Cy.
(Swbtract
register
w.itl,t
(_,ott.ow
)
(cv)
SE INCARCA REG.
PERECHE
I{
CU ADRESA
4783}{.
SE
SCADE DIN
ACUMUI-ATOR COI{TINUTUL
LOCATIEI
DE ADRESA
4783H
SI VAI-OAREA
LUI
CY.
25 SEI data (Subtract immediote uith
borrow
)
(A)
*
(A)
-
(bai,t
z)
-
(cY)
Conlinutul baitului al doilea
ai
instrucliurdi
;i
vatroarea
fanionului
CY
se scad
din conlinutul
acumulatorului;
rezultatul
se obline
in
acumulator.
Confin-utul
registrului
r
gi
valoarea
fanionului
acumuiator
;
rezuitatul
se'
obline
in
acumulatoi..
Iui
z
nu
se
modifici
CY
sint
scS"zute
dire
Con inutul
registru-
208
209
7/23/2019 Introducere in Microprocesoare_Part18
4/6
**:,l4lt
l?p;,.pup,#,,s,Br
data
:int
respectiv
identice
cu
::'"*:i'.1:l;,:i,
l :,
:
u
+'
ni,"fi
i
; L?'
oXi
f
iir
I
;*il:i
::::::[Hl
",1,\,
f"l;
s
u
e'
ilt'r
i''a
i#^
a]l
;i
iir
T
;*il:il
J.t
llf;
: :
X
cuvintelor
m,rliinr,,
l:1u?
imprumut
cy
sint-util#;#ir
scederea
H#tit$:f;T,3J;.,Stjiiriii:itilie1l:LiiH,if
,HilT,i.'hTI;1
ffi',l'f
Jitu;:'3::n"".li:ii:*l*:Filg:_i:lg,'*"',:1i:f
i.:T#x;
*rrTf
:l,i:#.:TTr,,"{,'ri'##[I'i,llu""lffi
't":,";)#"H?Ji.il
ambelc
cu
lungimeu
A"
io
ni1i.
START:
LDA
C},IPSG
;
SE
INCARCA
CEL
},{AI
PUTIN
$_o,
u,^,._
;
ii-
t_?t#ti^JnAzl...
s.
DA
clrpsr
i
;n
irvdiibe cpr
MAr
purrN
sLrB
B
,$ruf, .,^&":"lf^tllt+;
IMPRUMU
I.
srA
REzUL
r
tP_:fo_Q"iezl
cEL
nrAr
purrN
: s
^Bn_4_\rlFr
cATrv
eerr
etDrr.irir
wrrr
DA
cMSG
;
srrxdlnce
bbi'liar
sEMNrFrcATrv
CY:1e01011000
ul
x carry
-
I
BAIT
AL
LUI
G
MOV
B,A
:
SE
-DEPLASN;Z;
CMSG
IN
B.
LDA
CIIST
.
qp
tnirap.^ /-Dr rr
E_INCARCA
cEL
uar
silrxIF"ICATIv
BAIT
AL
LUI
T.
sBB
B
;
lcjpgnb
clr
fbxsrDERAREA
STA
REZUL+T;
;
;
INR
r
(r)
7/23/2019 Introducere in Microprocesoare_Part18
5/6
lololnW
OPCODE
Cicluri
: l
StXri
: 5
Adresare:
la
registru
Fanioane:
Z,S,p",AC
Exentplu:
DCR
A;
SE
scADp
qg,NfrNurul-
AqqylfrAToRur_Ur
cu
1.
CR
C;
SE
SCADE
CONfiNUiir"
iiECTSTNULUI
C
CU
1.
Z9
DCR
M
(Decrement
mewot,y)
Exewplw:
START:
INX
H
AICI
:
INX SP
;
SE
CRESTE
CU Ol
REG.
PERECHE
H.
;
SE
CRESTE
CU
O
STACK POINTER.
UNITATE
CONTINUTUL
UNITATtr REGISTRUL
(Decrement
reg'ister
pair
)
Conlinutul
registrului
pereche
rp
este
raicsorat
cu
o
unitate. Nu
este
afectat
nici un
fanion.
I
o
t
o
I
n
j
p
i
r
I
o
I
r
I
r
I
OPCODE
Cicluri : I
St6ri
:
5
Adresare:
Ia
registru
Fanioane:
-
Exemplu:
START:
DCX SP;
CONTINUTUL
REGISTRULUI
]\.IICSOREAZA
CU
I.
ACOLO: DCX
D
;
CONTINUTUL
REGISTRULUI
SE
MICSOR.EAZA CU
1.
loloit,rlorrjolll
OPCODE
Cicluri
:
3
Stiri
:
10
Adresarc:
cu
registru
pereche
Fanioane:
Z,S,plAC
,Exernplu:
SE_I-}I_CARCA
ADRESA
48A3H
PERECHE
H.
qgryuNuruL
LocArrEr
DE
SE
MICSOREAZA
CU
UIqU.
*
30
nNX rp
(
Increment
register
pair
)
(rh)(rt)
+-
(rh)(rt)
|
l
C,ontinutul
registrulrri
pcreche
rp
este
mdrit
cu
o
unitate.
Nu
este
tectat
nici
un
fanron.
OPCODE
Cicluri
:
1
Stiri
: .5
Adrcsare:
la
registru
ranloane:
_
31
DCX
rp
(rh)(rl)
7/23/2019 Introducere in Microprocesoare_Part18
6/6
SE
PRESTRIT
C0NT0R
=1
5E
PORNESTE
O
ALIi PoMi,A,
SE
AOAUGA
UNU
LA
STOCHEAZA
DATA
SE
CITESTE
OATA
DE
LA
CITITORUL
OE
CAiTELE
DATEI
CI-IITE
\ESTE< 999?
SUERUIINA
]NlIRZIERI
SCURII
SE
OECREIlENTEAZ
I
O
NTORUT
t0NT0R
=0?
RETURN
SUgRUTINA
]
NT IR
TIERE LUN6i
lrlTlRZiERt
0,786 sec
ISUBR,
INTIRZ IERT
HEDIE
)
OE(RiMEN-TEAZA
IONTORUL
fCNJi?Q:O?
RETURN
.o)
Fis.
5.2B.
Tipuri
b)
'
de bucle
in program:
a
_,bucii
(tjp)
pind
cind;
b
_
bucib
(tip)
in
timp
ce
realizeaze
nici
o
operatie,
pe cind
la
bucra
-
ptn,d
ctnd
-
se rearizeazi
procesarea
sa
o
singurS.
datl.
rnstructiunile
INR r, INR
M,
DcR r,
DCR
M
pot
fi
utilizate
foarte
simplu
in
incrementarea
buclei
(de
tip)
ptnd
c6nd.ci
erement
fizic
pentru
contor
se
poate
arege
oricare
registru
intern
sau
o
localie
de
memorie.
Testul
condifiei
de
ie;ire
din
bucrd"
este
indeplinit
cind
contorul
are
valoarea
zero,
adic5. fanionul
Z
:
1,; contorul
u""
o
."p".itate
modulo
ze
:256.
Pentru
un
numi"r
de
iteratii
mai
mic
decit
256
se prescrie
inilial
in
contor
(cu
instrucliunile
MVI
r,
data,
MVI
M,
data)
numirur
'de
iteralii
dorit
(Ia
decrementare),
sau
complementul
fa d"
de'256
:
28
al
nums.rului
de iteralii
dorit,
la incrementare.
Instrucliunile
INX
rp;i
DCX
rp
pot
fi
de
asemenea
forosite
in
bucr'
9:^
,tn
pinS-
cind
pentru
rearizarci
iontorurui
de
capacitate maximi.
zt6:65.536.
Aceste_
doui"
instrucliuni
au
fost
concepute
in
scopul
incrementS"rii
sarl
decrementi-rii
adreselor
inscrise
intr-un
registru
pereche
(cu
LXI
rp,
data
16)
fdrn
afectarea
fanioaneror
de condifi.
rn
aceastS.
intenfie
este
normar
ca
fanioanele
de condilii
de
la
ultima
ope_
ralie
s5"
se
p5-streze
in
timp
ce
se
prepari.
o
noud.
adresi
prin
incrementare
sau
decrementare.
Rezurti
cd-
pentru
testarea
condiliei
ie ie;ire
din
bucrd",
la
utilizarea
instrucfiunilor
INX
rp,
DCX
rp,
nu
pot fi
forosite
fanioanele,
deci
trebuie
sL
se
introducd"
si
alte
instrucfiuni
care
sL permitd.
testarea
terminirii
contoriz5rii.
Se
va
exemplifica
in
continuare
utirizarea
instructiunilor
de
decre_
mentare
in
bucli
de
tip
pin6
cind.
'274
Fig.
5.29.
Organigrame
pentru
subrutine
de
intirziere:
a
-
subru-
tind,
de intirziere
cu un contor
realizat pe
un registru
de
8 bi i;
b
-
subrutina
pentru
intirzieri
lungi cu
bucle
suprapuse
(irnbricate)
Organigrama
pentru
o
subrutinS.
de
intirzier-e este
prezentatS.
in
figura
5.29, a,
iar prograrnul corespunzitor in
limbaj
de asamblare
este:
SUBRUTII{A
DE
INTIRZIERE
SCURT'A.
VALOAREA
PARAMETRULUI
N PE^"TRU D(IRATA
II{TIRZIERII
SE
AFLA
IN
ACUMULATOR
(CARE
AI?E
FUI{CTIA DE
cot{ToR)
INTZS: DCR
A
SE DECREMENTEAZA
CONTORUL.
CONSUI{A 4
STARI.
DACA (A)
+
o
(Z
:0)
SALT LA
ETICHETA INTZS.
CONSUMA 7/10 STARI
(POSIBTL
LA
pP 8085).
REINTOARCERE
IN
PROGRAII
JNZ
INTZS
RET
;
PRINCIPAL.
CONSUX{A
10
STARI.
Cu numS.rul
de
stiri
specificate pentru fiecare
instrucliune
la fiecare.
trecere prin
bucl5.
se
consumd- 4
+
10:
14
stiri.
Cind
acumulatorul
ajunge
Ia zero, instrucliunea
JNZ
nu mai
executl-
saltul
la INTZS,
deci
consumi
numai 7 st5.ri.
Ultima parcurgere a
programului
consumS.
4
+
1
f
10
st5"ri. Valoarea
intirzierii
A7"
introdusS.
prin
subrutinS"
considerind pentru o perioadS"
(state)
de
tact 0,5
us
este:
Ar,:
t(l/
-
1)
i4
+
z1)0,s:
(rV
-
I)
7ss
f
10,5
ps.
Cea
mai
lungd
intirziere se
obfine pentru
N
:
0,
cind
dupi prima
execulie
a
instructiunii
DCR A,
in
acumulator va fi
valoarea 255
si
are
rraloarea
(256
-
1)
7
+
10,5
:
1795
ps; ly'
se prescrie
in programul
principal,
determinat in
prealabil
din relalia
anterioari
pentru
AT"
lmpus.
215