You are on page 1of 11

!

"#$% '
Cc lenh so hoc v cc chuong trnh

6.1 Php cong v tr khong dau.
Cc so khong dau duoc dinh nghia nhu nhng d lieu m tat ca moi bit cua
chng deu duoc dng de bieu dien d lieu v kh c bit dnh cho dau am hoac
duong. ieu ny c nghia l ton hang c the nam gia 00 v FFH (0 den 255 he
thap phan) doi vi d lieu 8 bit.
6.1.1 Php cong cc so khong dau.
Trong 8051 de cong cc so vi nhau th thanh ghi tong (A) phai duoc dng
den. Dang lenh ADD l:
ADD A, nguon: A = A + nguon
Lenh ADD duoc dng de cong hai ton hang. Ton hang dch luon l thanh
ghi A trong khi d ton hang nguon c the l mot thanh ghi d lieu truc tiep hoac l
o trong bo nh. Hy nh rang cc php ton so hoc t bo nh den bo nh khong bao
gi duoc php trong hop ng. Lenh ny c the thay doi mot trong cc bit AF, CF
hoac PF cua thanh ghi c phu thuoc vo cc ton hang lien quan. Tc dong cua lenh
ADD len c trn s duoc trnh by o muc 6.3 v n chu yeu duoc su dung trong cc
php ton vi so c dau. Xt v du 6.1 dui day:
V du 6.1:
Hy bieu dien xem c lenh dui day tc dong den thanh ghi c nhu the no?

!"# $% & '()* + $ , ()*
!"# $% & '-* + $ , () . '- , ''

Li giai:

()* //// '/'/
. '-* . '''' /'//
/''* '''' ''''

Sau php cong, thanh ghi A (dch) cha 00 v cc c s nhu sau:
C = 1 v c php nh t D7
PF = 1 v so cc so 1 l 0 (mot so chan) c PF duoc dat len 1.
AC = 1 v c php nh t D3 sang D4
6.1.1.1 Php cong cc byte rieng re.
o chuong 2 d trnh by mot php cong 5 byte d lieu. Tong so d duoc cat
theo ch nho hon FFH l gi tri cuc dai mot thanh ghi 8 bit c the duoc gi. e
tnh tong so cua mot so bat ky cc ton hang th c nh phai duoc kiem tra sau moi
lan cong mot ton hang. V du 6.2 dng R7 de tch lu so lan nh moi khi cc ton
hang duoc cong vo A.
V du 6.2:
Gia su cc ngan nh 40 - 44 cua RAM c gi tri sau: 40 = (7D): 41 = (EB): 42
= (C5): 43 = (5B) v 44 = (30). Hy viet mot chuong trnh tnh tong cua cc gi tri
tren. Cuoi chuong trnh gi tri thanh ghi A cha byte thap v R7 cha byte cao (cc
gi tri tren duoc cho o dang Hex).
Li giai:

!"# 0'% &1'* + 234 567 89:
!"# 0;% &) + 234 <= >?@
AB0 $ + C6D 8EF7E GEH $
!"# 0I% $ + C6D 8EF7E GEH 0I
$J$K2L $MM $% N0' + A=7G <O8P 567 89: 5EQ >R7 8EP6 0'
S2A 2TCU + 2RV AW , ' XEY7G 8Z5E [V\ 5] 7E^
K2A 0I + -D@ 8EP6 _` [a7 7E^
2TCUL K2A 0' + Ub7G 567 89:
MS2c 0;% $J$K2 + Bd4 [3H 5E6 >R7 XEH 0' , '

Phan tch v du 6.2:
Ba lan lap lai cua vng lap duoc chi ra dui day. Phan d theo chuong trnh
dnh cho ngui doc tu thuc hien.
Trong lan lap lai dau tien cua vng lap th 7DH duoc cong vo A vi C = 0 v R7 =
00 v bo dem R2 = 04.
Trong lan lap lai th hai cua vng lap th EBH duoc cong vo A v ket qua
trong A l 68H vi C = 1. V c nh xuat hien, R7 duoc tang len. Lc ny bo dem
R2 = 03.
Trong lan lap lai th ba th C5H duoc cong vo A nen A = 2DH v c nh lai
ban. Do vay R7 lai duoc tang len v bo dem R2 = 02.
phan cuoi khi vng lap ket thc, tong so duoc gi boi thanh ghi A v R7,
trong d A gi byte thap v R7 cha byte cao.
6.1.1.2 Php cong v nho v php cong cc so 16 bit.
Khi cong hai ton hang d lieu 16 bit th ta can phai quan tam den php
truyen cua c nh t byte thap den byte cao. Lenh ADDC (cong c nh) duoc su
dung trong nhng trung hop nhu vay. V du, xt php cong hai so sau: 3CE7H +
3B8DH.

3C E7
+ 3B 8D
78 74
79
Khi byte th nhat duoc cong (E7 + 8D = 74, C = 1). C nh duoc truyen len
byte cao tao ra ket qua 3C + 3B + 1 = 78. Dui day l chuong trnh thuc hien cc
buc tren trong 8051.
V du 6.3:
Hy viet chuong trnh cong hai so 16 bit. Cc so d l 3CE7H v 3B8DH. Cat
tong so vo R7v R6 trong d R6 cha byte thap.
Li giai:

AB0 + C6D 5] AW , '
!"# $% &'TI* + 234 <O8P 8Ee4 fg6 $ $ , TI*
$MM $% &hM* + A=7G <O8P 8Ee4 fg6 $ F , I1* fg AW , /
!"# 0i% $ + BjV <O8P 8Ee4 5kF 8l7G fg6 0i
!"# $% &mA* + 234 <O8P 5F6 fg6 $ $ , mA*
$MMA $% &m-J + A=7G <O8P 5F6 5n 7E^ fg6 $ $ , Ih*
:
!"# 0I% $ + BjV <O8P 5F6 5kF 8l7G fg6 0I

6.1.1.3 He thong so BCD (so thap phan ma ho theo nhi phan).
So BCD l so thap phan duoc m ho theo nhi phan 9 m khong dng so thap
phan hay so thap luc (Hex). Bieu dien nhi phan cua cc so t 0 den 9 duoc goi l
BCD (xem hnh 6.1). Trong ti lieu my tnh ta thung gap hai khi niem doi vi cc
so BCD l: BCD duoc dng gi v BCD khong dng gi.

Digit BCD Digit BCD
'
/
;
m
1
''''
'''/
''/'
''//
'/''
)
i
I
h
o
'/'/
'//'
'///
/'''
/''/

Hnh 6.1: M BCD.
a- BCD khong dng gi.
Trong so BCD khong dng gi th 4 bt thap cua so bieu dien so BCD cn 4
bit cn lai l so 9. V du '00001001 v '0000 0101 l nhng so BCD khong dng
gi cua so 9 v so 5. So BCD khong dng gi di hoi mot byte bo nh hay mot thanh
ghi 8 bit de cha n.
b- BCD dng gi.
Trong so BCD dng gi th mot byte c 2 so BCD trong n mot trong 4 bit
thap v mot trong 4 bit cao. V du '0101 1001 l so BCD dng gi cho 59H. Chi
mat 1 byte bo nh de luu cc ton hang BCD. ay l l do de dng so BCD dng gi
v n hieu qua gap doi trong luu gi lieu.
C mot van de khi cong cc so BCD m can phai duoc khac phuc. Van de d
l sau khi cong cc so BCD dng gi th ket qua khong cn l so BCD. V du:

!"# $% &/I*
$MM $% &;h*

Cong hai so ny cho ket qua l 0011 1111B (3FH) khong cn l so BCD! Mot
so BCD chi nam trong giai 0000 den 1001 (t so 0 den so 9). Hay ni cch khc
php cong hai so BCD phai cho ket qua l so BCD. Ket qua tren dng l phai l 17 +
28 = 45 (0100 0101). e giai quyet van de ny lap trnh vien phai cong 6 (0110) vo
so thap 3F + 06 = 45H. Van de tuong tu cng c the xay ra trong so cao (v du khi
cong hai so 52H + 87H = D94). e giai quyet van de ny ta lai phai cong 6 vo so
cao (D9H + 60H = 139). Van de ny pho bien den mc moi bo xu l nhu 8051 deu
c mot lenh de su l van de ny. Trong 8051 d l lenh 'DA A de giai quyet van de
cong cc so BCD.
6.1.1.4 Lenh DA.
Lenh DA (Decimal Adjust for addition dieu chinh thap phan doi vi php
cong) trong 8051 de dng hieu chinh su sai lech d ni tren day lien quan den php
cong cc so BCD. Lenh gia 'DA. Lenh DA s cong 6 vo 4 bit thap hoac 4 bit cao
neu can. Cn bnh thung n de nguyen ket qua tm duoc. V du sau s lm r cc
diem ny.

!"# $% &1I* + $ , 1I* [g 86D7 E37G -AM >aV 8Hp7
!"# -% &;)* + - , ;)* [g 86D7 E37G -AM 8Eq EFH
$MM $% - + A=7G 5D5 _` EPr s7Et 4Eu7v $ , iA*
M$ $ + wHxV 5EQ7E 5E6 4Ey4 5=7G -AM s$ , I;*v

Sau khi chuong trnh duoc thuc hien thanh ghi A s cha 72h (47 + 25 = 72).
Lenh 'DA chi lm viec vi thanh ghi A. Hay ni cch khc trong thanh ghi nguon
c the l mot ton hang cua che do dnh dia chi bat ky th dch phai l thanh ghi A
de DA c the lm viec duoc. Cng can phai nhan manh rang lenh DA phai duoc su
dung sau php cong cc ton hang BCD v cc ton hang BCD khong bao gi c the
c so ln hon 9. Ni cch khc l khong cho php c cc so A - F. ieu quan trong
cng phai luu l DA chi lm viec sau php cong ADD, n s khong bao gi lm
viec theo lenh tang INC.
Tm tat ve hoat dong cua lenh DA.
Hoat dong sau lenh ADD hoac ADDC.
1. Neu 4 biDt thap ln hon 9 hoac neu AC = 1 th n cong 0110 vo 4 bt thap.
2. Neu 4 bit cao ln hon 9 hoac c C = 1 th n cong 0110 vo 4 bit cao.
Trong thuc te th c AC chi de dng phuc vu cho php cong cc so BCD v
hieu chinh n. V du, cong 29H v 18H s c ket qua l 41H sai vi thuc te khi d
cc so BCD v de sua lai th lenh DA s cong 6 vo 4 bit thap de c ket qua l dng
(v AC = 1) o dang BCD.

29H 0010 1001
+ 18H + 0001 1000
41H 0100 0001 AC = 1
+ 6 + 0110
47H 0100 0111

V du 6.4:
Gia su 5 d lieu BCD duoc luu trong RAM tai dia chi bat dau t 40H nhu sau:
40 = (71), 41 = (11), 42 = (65), 43 = (59) v 44 = (37). Hy viet chuong trnh tnh
tong cua tat ca 5 so tren v ket qua phai l dang BCD.
Li giai:
!"# 0'% &1'* + 234 567 89:
!"# 0;% &) + 234 <= >R@
AB0 $ + C6D 8EF7E GEH $
!"# 0I% $ + C6D 8EF7EG GEH 0I
$J$K2L $MM $% N0' + A=7G <O8P 567 89: 5EQ <zH 0'
M$ $ + wHxV 5EQ7E fx {37G -AM >|7G
S2A 2TCU + 2RV AW , ' XEY7G 8Z5E [V\ 5] 7E^
S2A 0I + Ub7G 0I <D@ 8EP6 _` [a7 7E^
2TCUL K2A 0' + Ub7G 0' {t5E 567 89: [p7 Y 7E^ XR 8HR4
MS2c 0;% $J$K2 + Bd4 [3H 5E6 >R7 XEH 0; , '

6.1.2 Php tr cc so khong dau.
C php: SUBB A, nguon: A = A - nguon - C.
Trong rat nhieu cc bo xu l c hai lenh khc nhau cho php tr d l SUB v
SUBB (tr c muon - Sub, tract with Borrow). Trong 8051 ta chi c mot lenh SUBB
duy nhat. e thuc hien SUB t SUBB, do vay c hai trung hop cho lenh SUBB l:
vi C = 0 v vi C = 1. Luu rang o day ta dng c C de muon.
6.1.2.1 Lenh SUBB voi CY = 0.
Trong php tr th cc bo vi xu l 8051 (thuc te l tat ca moi CPU hien dai)
deu su dung phuong php b 2. Mac d moi CPU deu c mach cong, n c the qu
cong kenh (v can nhieu bng bn dan) de thiet ke mach tr rieng biet. V ly do d
m 8051 su dung mach cong de thuc hien lenh tr. Gia su 8051 su dung mach cong
de thuc hien lenh tr v rang C - 0 truc khi thuc hien lenh th ta c the tm tat cc
buc m phan cng CPU thuc hien lenh SUBB doi vi cc so khong dau nhu sau:
1. Thuc hien lay b 2 cua so tr (ton hang nguon)
2. Cong n vo so bi tr (A)
3. ao nh
ay l 3 buc thuc hien boi phan cng ben trong cua CPU 8051 doi vi moi
lenh tr SUBB bat ke den nguon cua cc ton hang duoc cap c duoc ho tro che do
dnh dia chi hay khong? Sau ba buc ny th ket qua c duoc v cc c duoc bat. V
du 6.5 minh hoa 3 buc tren day:
V du 6.5:
Trnh by cc buc lien quan dui day:

AB0 A + U36 AW , '
!"# $% &m(* + 234 m(* fg6 $ s$ , m(*v
!"# 0m% &;m* + 234 ;m* fg6 0m s0m , ;m*v
}~-- $% 0m + U9 $ 5E6 0m >d8 XR8 V! fg6 $

Li giai:

A = 3F 0011 1111 0011 1111
- R3 = 23 0010 0011 + 1101 1101 b 2 cua R3 (buc 1)
1C 1 0001 1100 - 1C (buc 2)
0 CF = 0 (buc 3)

Cc c s duoc thiet lap nhu sau: C = 0, AC = 0 v lap trnh vien phai duoc
nhn den c nh de xc dinh xem ket qua l am hay duong.
Neu sau khi thuc hien SUBB m C = 0 th ket qua l duong. Neu C = 1 th
ket qua am v dch c gi tri b 2 cua ket qua. Thong thung ket qua duoc de o dang
b 2 nhung cc lenh b CPL v tang INC c the duoc su dung de thay doi n. Lenh
CPL thuc hien b 1 cua ton hang sau d ton hang duoc tang len 1 (INC) de tro
thnh dang b 2. Xem v du 6.6.
V du 6.6:
Phan tch chuong trnh sau:

AB0 A
!"# $% &1A* + 234 $ GHD 89t 1A* s$ , 1A*v
}~-- $% &iT* + U9 $ 5E6 iT*
S2A 2TCU + 2RV AW , ' 7E!O >R7 >Z5E 2TCU
A"B $ + 2RV AW , / 8E#5 EH?7 <$ /
K2A $ + Ub7G / >% 5n <$ ;
2TCUL !"# 0/% $ + BjV $ fg6 0/

Li giai:
Cc buc thuc hien lenh "SUBB A, 6EH" nhu sau:

1A '/'' //'' '/'' //''
& iT '//' ///' [eO <$ ; /''/ ''/' s<j^5 /v
& ;; ' //'/ ///' , s<j^5 ;v
>!6 AW , /s<j^5 mv

C C = 1, ket qua am o dang b 2.
6.1.2.2 Lenh SUBB khi CY = 1.
Lenh ny duoc dng doi vi cc so nhieu byte v s theo di viec muon cua
ton hang thap. Neu C = 1 truc khi xem thuc hien SUBB th n cng tr 1 t ket
qua. Xem v du 6.7.
V du 6.7:
Phan tch chuong trnh sau:

AB0 A + AW , '
!"# $% &i; + $ , i;*
}~-- $% &oi* + i;* & oi* , AA* 'H8E AW , /
!"# 0I% $ + }FfP 8EP 9P_V[8
!"# $% &;I* + $ , ;I*
}~-- $% &/;* + ;I* & /;* & / , /1*
!"# 0i% $ + }FfP 8EP 9P_V[8

Li giai:
Sau khi SUBB th A = 62H - 96H = CCH v c nh duoc lap bo rang c
muon. V C = 1 nen khi SUBB duoc thuc hien lan th 2 th a = 27H - 12H - 1 =
14H. Do vay, ta c 2762H - 1296H = 14CCH.
6.2 Nhan v chia cc so khong dau.
Khi nhan v chia hai so trong 8051 can phai su dung hai thanh ghi A v B v
cc lenh nhan v chia chi hoat dong vi nhng thanh ghi ny.
6.2.1 Nhan hai so khong dau.
Bo vi dieu khien chi ho tro php nhan byte vi byte. Cc byte duoc gia thiet l
d lieu khong dau. Cau trc lenh nhu sau:
MOV AB : L php nhan A B v ket qua 16 bit duoc dat trong A v B.
Khi nhan byte vi byte th mot trong cc ton hang phai trong thanh ghi A v
ton hang th hai phai o trong thanh ghi B. Sau khi nhan ket qua o trong cc thanh
ghi A v B. Phan tiep thap o trong A, cn phan cao o trong B. V du dui day trnh
by php nhan 25H vi 65H. Ket qua l d lieu 16 bit duoc dat trong A v B.

!"# $% &;)* + 234 fg6 $ GHD 89t ;)*
!"# -% i)* + 234 fg6 - GHD 89t i)*
!~B $- + ;)*(i)* , Too f^H - , 'T* fg $ , oo*

Bang 6.1: Tm tat php nhan hai so khong dau (MULAB)

Nhn Ton hng 1 Ton hng 2 Kt qu
-O8P(-O8P $ - $ , <O8P 8Ee4% - , <O8P 5F6

6.2.2 Chia hai so khong dau.
8051 cng chi ho tro php chia hai so khong dau byte cho byte vi c php:
DIV AB : Chia A cho B
Khi chia mot byte cho mot byte th tu so (so bi chia) phai o trong thanh ghi A
v mau so (so chia) phai o trong thanh ghi B. Sau khi lenh chia DIV duoc thuc hien
th thuong so duoc dat trong A, cn so du duoc dat trong B. Xt v du dui day:

!"# $% &o) + 234 _` <t 5EHF fg6 $ , o)
!"# -% &/' + 234 _` 5EHF fg6 - , /'
MK# $- + $ , 'o s8Ej)7G _`v+ - , ') s_` {jv

Luu cc diem sau khi thuc hien 'DIV AB
Lenh ny luon bat C = 0 v OV = 0 neu tu so khong phai l so 0
Neu tu so l so 0 (B = 0) th OV =1 bo loi v C = 0. Thuc te chuan trong tat
ca moi bo vi xu l khi chia mot so cho 0 l bang cch no d bo c ket qua khong
xc dinh. Trong 8051 th c OV duoc thiet lap len 1.
Bang 6.2: Tm tat php chia khong dau (DIV AB).

Php chia T s Mu s Thng s S d
-O8P 5E6 -O8P $ - $ -

6.2.3 Mot ng dung cho cc lenh chia.
C nhng thi diem khi mot bo ADC duoc noi ti mot cong v ADC bieu
dien mot so du nhiet do hay p suat. Bo ADC cap d lieu 8 bit o dang Hex trong dai
00 - FFH. D lieu Hex ny phai duoc chuyen doi ve dang thap phan. Chng ta thuc
hien chia lap nhieu lan cho 10 v luu so du vo nhu o v du 6.8.
V du 6.8:
a- Viet mot chuong trnh de nhan d lieu dang Hex trong pham vi 00 - FFH t cong
1 v chuyen doi n ve dang thap phan. Luu cc so vo trong cc thanh ghi R7, R6 v
R5 trong d so c nghia nho nhat duoc cat trong R7.
b- Phan tch chuong trnh vi gia thiet P1 c gi tri FDH cho d lieu.
Li giai:
Fv
!"# $% &'((*
!"# "/% $ + U36 "/ [g 5l7G >aV fg6
!"# $% "/ + w*5 {+ [H?V 8 "/
!"# -% &/' + - , '$ *Pr s/' 8E,4 4Eu7v
MK# $- + AEHF 5E6 /'
!"# 0I% - + Ae8 _` 8Ee4
!"# -% &/' +
MK# $- + AEHF /' [a7 7+F
!"# 0i% - + Ae8 _` 8HR4 8EP6
!"# 0)% $ + Ae8 _` 5V`H 5$7G

b) e chuyen doi so nhi phan hay Hex ve so thap phan ta thuc hien chia lap cho 10
lien tuc cho den khi thuong so nho hon 10. Sau moi lan chia so du duoc luu cat.
Trong trung hop mot so nhi phan 8 bit nhu FDH chang han ta c 253 so thap phan
nhu sau (tat ca trong dang Hex)

Thng s S d
(M-'$ /o m s}` 8Ee4 & 5V`Hv
/o-'$ ; ) s}` GH+Fv
2 (So dau)

Do vay, ta c FDH = 253. e hien thi d lieu ny th n phai duoc chuyen doi
ve ASCII m s duoc mo ta o chuong sau.
6.3 Cc khi niem ve so c dau v cc php tnh so hoc.
Tat ca moi d lieu t truc den gi deu l cc so khong dau, c nghia l ton
bo ton hang 8 bit deu duoc dng cho bo ln. C nhieu ng dung yeu cau d lieu c
dau, phan ny s bn ve nhng lenh lien quan den cc so c dau.
6.3.1 Khi niem ve cc so c dau trong my tnh.
Trong cuoc song hng ngy cc so duoc dng c the l so am hoac duong. V
du 5 do dui 0
0
C duoc bieu dien l -5
0
C v 20 do tren 0
0
C duoc bieu dien l +20
0
C.
Cc my tnh cng phai c kha nang dp ng ph hop vi cc so ay. e lm duoc
dieu ay cc nh khoa hoc my tnh d pht minh ra su xap xep bieu dien cc so am
c dau v so duong c dau nhu sau: Bit cao nhat MSB duoc de dnh cho bit dau (+)
hoac (-), cn cc bit cn lai duoc dng bieu dien do ln. Dau duoc bieu dien boi 0
doi vi cc so duong v mot so doi vi cc so am (-). Bieu dien cua mot byte c dau
duoc trnh by tren hnh 6.2.








Hnh 6.2: Cc ton hang 8 bit c dau.
a- Cc ton hang 8 bit c dau: Trong cc ton hang A byte c dau th bit cao nhat
MSB l D7 duoc dng de bieu dien dau, cn 7 bit cn lai t D6 - D0 dng de bieu
dien do ln cua so d. Neu D7 = 0 th d l ton hang duong v neu D7 = 1 th n l
ton hang am.
b- Cc so duong: Dai cua cc so duong c the duoc bieu dien theo dang cho tren
hnh 6.2 l t 0 den +127 th phai su dung ton hang 16 bit. V 8051 khong ho tro d
lieu 16 bit nen ta khong bn luan den.
c- Cc so am: oi vi cc so am th D7 = 1, tuy nhien do ln duoc bieu dien o dang
so b 2 cua n. Mac d hop ng thuc hien viec chuyen doi song dieu quan trong l
hieu viec chuyen doi dien ra nhu the no. e chuyen doi ve dang bieu dien so am
(b 2) th tien hnh theo cc buc sau:
1. Viet do ln cua so o dang nhi phan 8 bit (khong dau).
2. ao nguoc tat ca cc bit
3. Cong 1 vo n.
V du 6.9: Hy trnh by cch 8051 bieu dien so - 5.
D7 D6 D5 D4 D3 D2 D1 D0
Sign Magnitu
Li giai:
Hy quan st cc buc sau:

'''' '/'/ -H%V {H.7 _` ) z {37G h <H8 7Et 4Eu7
//// /'/' w!6 5D5 <H8
//// /'// A=7G s8Eg7E _` (- z {37G *Prv

Do vay, so FBH l bieu dien so c dau dang b 2 cua so - 5.
V du 6.10: Trnh by cch 8051 bieu dien - 34H.
Li giai:
Hy quan st cc buc sau:

0011 0200 So 34 duoc cho o dang nhi phan
1100 1011 ao cc bit
1100 1100 Cong 1 (thnh so CC o dang Hex)

Vay so CCH l bieu dien dang b 2 c dau cua - 34H.
V du 6.11: Trnh by cch 8051 bieu dien - 128:
Li giai:
Quan st cc buc sau:

/''' '''' }` /;h z {37G 7Et 4Eu7 ;h <H8
'/// //// w!6 5D5 <H8
/''' '''' A=7G / s89z 8Eg7E _` h' {37G *Prv

Vay - 128 = 80H l bieu dien so c dau dang b 2 cua - 128.
T cc v du tren day ta thay r rng rang dai cua cc so am c dau 8 bit l - 1
den - 128. Dui day l liet ke cc so c dau 8 bit:

}` 8E,4 4Eu7 }` 7Et 4Eu7 }` *Pr
&/;h /''' '''' h'
&/;I /''' '''/ h/
&/;i /''' ''/' h;
/// ///////////////// ///
&; //// ///' (T
&/ //// //// ((
' '''' '''' ''
./ '''' '''/ '/
.; '''' ''/' ';
/// ////////////////// ///
&/;I '/// //// (T

6.3.2 Van de trn trong cc php ton voi so c dau.
Khi su dung cc so c dau xuat hien mot van de rat nghiem trong m phai
duoc su l. l van de trn, 8051 bo c loi bang cch thiet lap c trn OV nhung
trch nhiem cua lap trnh vien l phai can than vi ket qua sai. CPU chi hieu 0 v 1
v n lm ngo vi viec chuyen doi so am, so duong cua con ngui. Vay trn so l g?
Neu ket qua cua mot php ton tren cc so c dau m qu ln doi vi thanh ghi th
xuat hien su trn so v lap trnh vien phai duoc canh bo. Xt v du 6.12 dui day.
V du 6.12:
Khao st doan m sau v phan tch ket qua.

!"# $% & . oi + $ , '//' '''' s$ , i'*v
!"# 0/% & . I' + 0/ , '/'' '//' s0/ , 1i*v
$MM $% 0/ + $ , /'/' '//' , $i* , & o'
}FH 000

Li giai:

+ 96 0110 0000
+ + 70 0100 0110
- 166 1010 0110 v OV = 1

Theo CPU ket qua l -90 v d l ket qua sai nen CPU bat c OV = 1 de bo
trn so.
Trong v du 6.12 th + 96 duoc cong vi + 70 v ket qua theo CPU l - 90. Tai
sao vay? L do l ket qua cua + 96 + 70 = 172 ln hon so m thanh ghi A c the
cha duoc. Cng nhu tat ca moi thanh ghi 8 bit khc, thanh ghi A chi cha duoc den
so + 127. Cc nh thiet ke cua PCU tao ra c trn OV phuc vu rieng cho muc dch
bo cho lap trnh vien rang ket qua cua php ton so c dau l sai.
6.3.3 Khi no th c trn OV duoc thiet lap?
Trong cc php ton vi so c dau 8 bit th c OV duoc bat len 1 khi xuat
hien mot trong hai dieu kien sau:
1. C nh t D6 sang D7 nhung khong c nh ra t D7 (c C = 0)
2. C nh ra t D7 (c C = 1) nhung khong c nh t D6 sang D7
Hay ni cch khc l c trn OV duoc bat len 1 neu c nh t D6 sang D7
hoac t D7 nhung khong dong thi xay ra ca hai. ieu ny c nghia l neu c nh ca
t D6 sang D7 v t D7 ra th c OV = 0. Trong v du 6.12 v chi c nh t D7 ra nen
c OV = 1. Trong v du 6.13, v du 6.14 v 6.15 c minh hoa them ve su dung c
trn trong cc php so hoc vi so c dau.
V du 6.13:
Hy quan st doan m sau de den vai tr cua c OV.

!"# $% & &/;h + $ , /''' '''' s$, h'*v
!"# 01% & &; + 01 , //// s01 , (T*v
$MM $% 01 + $ , '/// ///' s$ , IT* , ./;i% H7fF[H{v

Li giai:

& /;h /''' ''''
. & ; //// ///'
&/m' '/// ///' fg "# , /

Theo CPU th ket qua + 126 l ket qua sai, nen c OV = 1.
V du 6.14:
Hy quan st doan m sau v luu c OV.

!"# $% & &; + $ , //// ///' s$ , (T*v
!"# 0/% & &) + 0/ , //// /'// s0/ , (-*v
$MM $% 0/ + $ , //// /''/ s$ , (o* , &I% 5699P58% "# , 'v

Li giai:

& ; //// ///'
. & ) //// /'//
& I //// /''/ fg "# , '

Theo CPU th ket qua - 7 l dng nen c OV = 0.
V du 6.15:
Theo di doan m sau, ch vai tr cua c OV.

!"# $% & .I + $ , '''' '/// s$ , 'I*v
!"# 0/% & ./h + 0/ , '''/ ''/' s0/ , /;*v
$MM $% 0/ + $ , //// /''/ s$ , /o* , &;)% 5699P58% "# , 'v

Li giai:

I '''' '///
& /h '''/ ''/'
;) '''/ /''/ fg "# , '

Theo CPU th ket qua - 25 l dng nen c OV = 0.
T cc v du tren day ta c the ket luan rang trong bat ky php cong so c dau
no, c OV deu bo ket qua l dng hay sai. Neu c OV = 1 th ket qua l sai, cn
neu OV = 0 th ket qua l dng. Chng ta c the nhan manh rang, trong php cong
cc so khong dau ta phai hien thi trang thi cua c C (c nh) v trong php cong
cc so c dau th c trn OV phai duoc theo di boi lap trnh vien. Trong 8051 th
cc lenh nhu JNC v JC cho php chuong trnh r nhnh ngay sau php cong cc so
khong dau nhu o phan 6.1. oi vi c trn OV th khong c nhu vay. Tuy nhien,
dieu ny c the dat duoc bang lenh 'JB PSW.2 hoac 'JNB PSW.2 v PSW thanh
ghi c c the dnh dia chi theo bit.

You might also like