Tải bản đầy đủ (.pdf) (9 trang)

Tài liệu Chương 7: Các lệnh lô - gic và các chương trình pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (107.42 KB, 9 trang )

ch"¬ng 7
!"#$%&'#$(#)#*+"#,-#"!"#"'./&*#012&'#

345# !"#$%&'#$()*+"#,-#67#6!&'4#
34545#8%&'#Vµ#9:;<=4#
!" #$%#& '() *+,$- ./01.2 *+,$ 3 *+,$ 45 ./01. 678 9:./;<
)=.$ .5> ?@ A$B, $C=. DEA #$F# 45 GHI/+, AJK. $LC AM%. $N./ *+,$ O5 ./01. O5
*PA 7QA R0: O5M *+,$< S+,$ A$TU./ G5 A$L.$ /$C AV./ 6A+,$ G0W;< XM%. $N././01. ,Y
A$Z G5 A$L.$ /$C AJM./ 9E .$[ $MP, /C% AJ\ ,$M ?].< ^_> `aD #$b Gb, '##a.cC` 'd *Z
9CQA A$KD Oe ,%, ,$Q *E *%.$ *\L ,$f c5.$ ,$M G=.$ .5>< )=.$ '() *gC O[C AM%.
$N./ A$aM 9>Aa 7$H./ ,Y A%, *E./ GK. ,%, ,U< (Y A$TU./ *Th, ci./ *Z ,$a 6*PA Oe j;
.$k./ 9CA .$lA *\.$ ,mL DEA AM%. $N./< naD O+ cb o<d<
>+#?@A#
XJp.$ 95> 7QA R0: ,mL ,%, G=.$ ?L0&

MOV A, #35H ; G¸n A = 35H
ANL A, #0FH ; Thùc hiÖn Vµ l«-gÝc A vµ 0FH (B©y giê A = 05)

8BC#*CDCA#

35H 0 0 1 1 0 1 0 1
0FH 0 0 0 0 1 1 1 1
05H 0 0 0 0 0 1 0 1 35H vµ 0FH = 05H

3454EA#8%&'#HoÆc 9FG=4#
!" #$%# qr) *+,$ 3 *+,$ ^MP, ./01. 678 9:./;
!%, AM%. $N./ *+,$ O5 ./01. *Th, ^MP, O[C .$L0 O5 7QA R0: *Th, *PA O5M
*+,$< s$F# ^MP, ,Y A$Z *Th, ci./ *Z A$CQA Gt# .$k./ 9CA .$lA *\.$ ,mL DEA AM%. $N./
d< S+,$ A$TU./ G5 A$L.$ /$C AV./- AM%. $N./ ./01. ,Y A$Z G5 DEA A$L.$ /$C AJM./ 9E
.$[ $MP, /C% AJ\ ,$M ?].< ^_> A$LD 7$:M #$b Gb, '##a.cC` ' *Z 9CQA A$KD Oe ,%,
,$Q *E *%.$ *\L ,$f *Th, $u AJh 9vC G=.$ .5>< )=.$ qr) *gC O[C ,%, AM%. $N./ *%.$


*\L ,$f A$aM 9>Aa ?@ 7$H./ ,Y A%, *E./ *Q. 9lA 7w ,U .5M< naD O+ cb o<x<
>+#?@#34EA#H12&'#I-J#KL0#MND#"OP#Q7R&#ST#6PNA#
#
MOV A, #04 ; A = 04
MOV A, #68H ; A = 6C

8BC#*CDCA#

04H 0000 0100
68H 0110 1000
6CH 0110 1100 04 OR 68 = 6CH

3454U#8%&'#VFG#9FG#$7RC#01WX=4#
!" #$%#& nr) *+,$- ./01.2 *+,$ 3 *+,$ ^MP, GMNC AJy ./01. 678 9:./;<
)=.$ .5> ?@ A$B, $C=. #$F# nqr AJK. $LC AM%. $N./ O5 *PA 7QA R0: O5M *+,$<
S+,$ A$TU./ G5 A$L.$ /$C AV./< XM%. $N./ ./01. ,Y A$Z G5 DEA A$L.$ /$C AJM./ 9E
.$[ $MP, /C% AJ\ ,$M ?].< naD #$b Gb, '##a.cC` '<d *Z 9CQA A$KD Oe ,$Q *E *%.$ *\L
,$f ,mL G=.$ .5>< )=.$ nr) *gC O[C ,%, AM%. $N./ *%.$ *\L ,$f A$aM 9>Aa ?@ 7$H./
,Y A%, *E./ *Q. 9lA 7w ,U .5M< nFA O+ cb o<z O5 o<{<
>+#?@#34UA#H12&'#I-J#KL0#MND#"OP#Q7R&#ST#6PNA#

MOV A, #54H
XRL A, #78H

8BC#*CDCA#

54H 0 1 0 1 0 1 0 0
78H 0 1 1 1 1 0 0 0
2CH 0 0 1 0 1 1 0 1 54H XOR 78H = 2CH


>+#?@#34YA
)=.$ nr) ,Y A$Z *Th, ci./ *Z `M% .EC c0./ ,mL DEA A$L.$ /$C 9|./ ,%,$
nqr .Y O[C ,$+.$ .Y< XJp.$ 95> G=.$ }nr) '- '~ `M% .EC c0./ ,mL ' .$T A$Q .5M?
/C: A$CQA '^ 3 {5^<
8BC#*CDCA#

45H 01000101
45H 01000101
00 00000000 54H XOR 78H = 2CH

)=.$ nr) ,ũ./ ,Y A$Z *Th, ci./ *Z `aD .Q0 $LC A$L.$ /$C ,Y /C% AJ\ /Cg./
.$L0 7$H./? )=.$ }nr) '- rd~ ?@ $MP, GMNC AJy O[C A$L.$ /$C rd O5 *PA 7QA R0: O5M
'< (Q0 ,: $LC A$L.$ /$C ,Y ,i./ /C% AJ\ A$p AJM./ ' ?@ G5 jj< SL0 *Y ,Y A$Z ci./ G=.$
.$: JZ *Z A$B, $C=. A$aM 7QA R0:< nFA O+ cb o<5<
>+#?@#34ZA#
Sọ, O5 7CZD AJL ,V./ sd `aD .Y ,Y ,$ứL /C% AJ\ {5^ 7$H./? (Q0 ,Y /ửC 99^
*Q. ,V./ sx- .Q0 7$H./ `M% .Y<
8BC#*CDCA#

MOV P2, #00 ; Xóa P2
MOV P1, #0FFH ; Lấy P1 là cổng đầu vào
MOV R3, #45H ; R3 = 45H
MOV A, P1 ; Đọc P1
XRL A, R3
JNZ EXIT ; Nhảy nếu A có giá trị khác 0
MOV P2, #99H
EXIT:

XJM./ ,$Tơ./ AJp.$ ,mL O+ cb o<5 GT0 ý OC=, ?ử cb./ G=.$ .$:> J(Z< )=.$
J(Z O5 JZ 7CZD AJL ,%, .EC c0./ ,$f ,mL A$L.$ /$C AV./< ^L> .YC ,%,$ 7$%, G5 AJM./

8j5d7$H./ ,Y ,U j<
MEA ứ./ cb./ JE./ J_C 7$%, ,mL 9E `ử Gý G5 ,$ọ. ,%, 9CA ,mL DEA AM%. $N./<
4+ cb *Z ,$ọ. x 9CA ,mL A$.$ /$C ' AL ,Y A$Z ?ử cb./ D_ ?L0< M_ .5> F# 9CA Dx ,mL
A$L.$ /$C ' ,$0>Z. ?L./ /C% AJ\ ./$\,$ *:M- ,ò. ,%, 9CA 7$%, 7$H./ A$L> *VC<

XRL A, #04H ; Nghĩa hoặc loại trừ thanh ghi A với
; Giá trị 0000 0100

3454Y#8%&'#I[#0'P&'#*'C#0\&*# ]8#:4#
)=.$ .5> 9i .EC c0./ ,mL A$L.$ /$C AV./ '< s$F# 9i G5 #$F# 9CQ. *VC ,%, ?g
j A$5.$ ,%, ?g d O5 *VC ,%, ?g d ?L./ ?g j< Sâ> ,ũ./ ,ò. *Th, /ọC G5 #$F# 9i d<

MOV A, #55H
CPL A ; Bây giờ nội dung của thanh ghi A là AAH
; Vì 0101 0101 (55H) đ 1010 1010 (AAH)

SZ .$t. *Th, 7QA R0: 9i x A$p AlA ,: DọC OC=, AL ,ầ. #$:C G5D G5 ,E./ d O5M
7QA R0: 9i d< XJM./ 8j5d A$p 7$H./ ,Y G=.$ 9i x .5M ,:< )T0 ý J|./ AJM./ 7$C 9i DEA
9>Aa A$p ck GC=0 #$:C v AJM./ A$L.$ /$C '< )=.$ !s) 7$H./ $u AJh DEA ,$Q *E *%.$
*\L ,$f .5M ,:< naD O+ cb o<6 cT[C *â><
>+#?@#34^A#H2S#*C!#01_#I[#E#"OP#`Za4#
8BC#*CDCA#

MOV A, #85H ; Nạp 85H vào A (85H = 1000 0101)
MOV A ; Lấy bù 1 của A (kết quả = 0111 1010)
ADD A, #1 ; Cổng 1 vào A thành bù 2 A = 0111 1011 (7BH)
#
>+#?@#3454Z#8%&'#67#6!&'4#
8j5d ,Y DEA G=.$ ,$M #$F# ?M ?%.$< (Y ,Y ," #$%# .$T ?L0&
!J(E *+,$- ./01 *\L ,$f ATơ./ *gC<

XJM./ 8j5d A$p #$F# ?M ?%.$ O5 .$:> *Th, 7QA $h# A$5.$ DHA G=.$ ,Y AK. G5
!J(E 6?M ?%.$ O5 .$:> .Q0 7QA R0: 7$H./ 9|./ .$L0;< )=.$ !J(E ?M ?%.$ $LC AM%.
$N./ ./01. O5 *+,$ O5 .$:> *Q. *\L ,$f ATơ./ *gC .Q0 $LC AM%. $N./ 7$H./ 9|./
.$L0< (/M5C JL .Y A$L> *VC ,U .$[ !Y *Z 9%M .Q0 AM%. $N./ *+,$ G[. $ơ. $L> .$ỏ
$ơ.< SCe0 R0L. AJọ./ ,ầ. *Z G5 ,%, AM%. $N./ Oẫ. 7$H./ /Ck ./0>K. 7$H./ A$L>
A$L> *VC< 4+ cb- ?L0 7$C A$B, $C=. G=.$ }!J(E '- #6o^- (EnX~ A$p A$L.$ /$C ' Oẫ.
,Y /C% AJ\ 9L. *ầ0 ,mL .Y 6/C% AJ\ AJT[, G=.$ !J(E;< )=.$ .5> ?M ?%.$ .EC c0./ A$L.$
/$C ' O[C /C% AJ\ 6o^ O5 .$:> *Q. /C% AJ\ *+,$ (EnX ,$f 7$C A$L.$ /$C ' ,Y /C% AJ\
7$%, 6o^<
>+#?@#343A#
nFA *MN. D_ cT[C *â> ?L0 *Y AJ: GUC ,â0 $ỏC&
L; (Y ?@ .$:> *Q. (EnX 7$H./?
9; XJM./ ' ,Y /C% AJ\ 9LM .$CK0 ?L0 G=.$ !J(E?

MOV A, #55H
CJNE A, #99H, NEXT

NEXT:

8BC#*CDCA#
L; !Y Op 55^ O5 99^ 7$H./ 9|./ .$L0
9; ' 3 55^ *â> G5 /C% AJ\ AJT[, 7$C A$B, $C=. !J(E<
XJM./ G=.$ !J(E A$p AM%. $N./ *+,$ ,Y A$Z AJM./ A$L.$ /$C AV./ $MP, AJM./
DEA ,%, A$L.$ /$C r.< XM%. $N./ ./01. ,Y A$Z AJM./ DEA A$L.$ /$C- AJM./ 9E .$[
$MP, /C% AJ\ ,$M ?].< ^_> `aD #$b Gb, '##a.cC` ' *Z 9CQA A$KD ,$C ACQA Oe ,%, ,$Q
*E *%.$ *\L ,$f ,$M G=.$ .5>< )=.$ .5> ,$f A%, *E./ ,U .$[ !Y< !U .5> *Th, A$L>
*VC .$T ,$f JL AJK. 9:./ o<d< DT[C *â> AJp.$ 95> #$F# ?M ?%.$ $MNA *E./ .$T A$Q .5M
*gC O[C AlA ,: ,%, *Ce0 7C=. ,Y A$Z&

CJNE R5, #80, NOT-EQUAL ; Kiểm tra R5 có giá trị 80?

; R5 = 80
NOT-EQUAL: JNC NEXT ; Nhảy đến R5 > 80

NEXT:

bD&*#345A X$CQA 7Q ,U !Y ,$M G=.$ !J(E<

Compare Carry Flag
Destinatio > Source CY = 0
Destination < Source CY = 1

SZ ý J|./ AJM./ G=.$ !J(E A$p 7$H./ ,Y A$L.$ /$C r. .5M ,Y A$Z *Th, ?M
?%.$ O[C /C% AJ\ ,$M ?].< DM Ot> 7$H./ ,ầ. #$:C .YC *Q. A$L.$ /$C '< !ũ./ ,ầ. GT0 ý
J|./ ,U .$[ !Y G0H. *Th, 7CZD AJL *Z `aD G[. $ơ. $L> .$ỏ $ơ .$T./ ,$f 7$C *_
`%, *\.$ G5 .Y 7$H./ 9|./ .$L0< nFA O+ cb o<8 O5 o<9 cT[C *â><
>+#?@#34`A##
^_> OCQA D_ `%, *\.$ `aD A$L.$ /$C ' ,Y ,$ứL /C% AJ\ 99^ 7$H./? (Q0 ,Y A$p
$_> ANM rd 3 FF^ ,ò. .Q0 7$H./ ANM rd 3 j<
8BC#*CDCA#

MOV R1, #0 ; Xoá R1
CJNE A, #99H ; Nếu A không bằng 99H thì nhảy đến NEXT
MOV R1, #0FFH ; Nếu chúng bằng nhau, gán R1 = 0FFH
NEXT: ; Nếu không bằng nhau, gán R1 = 0
OVER:

>+#?@#34cA#
GC: ?ử sd G5 DEA ,V./ *ầ0 O5M *Th, .gC A[C DEA ,:D 9CQ. .$C=A< ^_> OCQA
,$Tơ./ AJp.$ *ọ, .$C=A *E O5 7CZD AJL .Y *gC O[C /C% AJ\ o5< X$aM 7QA R0: 7CZD AJL
$_> *PA /C% AJ\ .$C=A *E O5M ,%, A$L.$ /$C *Th, ,$f *\.$ .$T ?L0&


Nếu T = 75 thì A = 75
Nếu T < 75 thì R1 = T
Nếu T > 75 thì R2 = T

8BC#*CDCA#

MOV P1, 0FFH ; Tạo P1 làm cổng đầu vào
MOV A, P1 ; Đọc cổng P1, nhiệt độ
CJNE A, #75, OVER ; Nhảy đến OVER nếu A ạ 75
SJMP EXIT ; A = 75 thoát
OVER: JNC NEXT ; Nếu CY = 0 thì A > 75 nhảy đến NEXT
MOV R1, A ; Nếu CY = 1 thì A < 75 l#u vào R1
SJMP EXIT ; Và thoát
NEXT: MOV R2, A ; A > 75 l#u nó vào R2
EXIT:

)=.$ ?M ?%.$ A$B, ?B G5 DEA #$F# AJy- ./MNC AJy DEA *Ce0 G5 /C% AJ\ ,mL ,%,
AM%. $N./ 7$H./ A$L> *VC< !%, ,U *Th, A$L> *VC A0w A$aM OC=, A$B, $C=. G=.$ AJy
SUBB< !ầ. #$:C *Th, .$l. DN.$ GNC J|./- AJM./ G=.$ !J(E ,%, AM%. $N./ 7$H./ 9\
A%, *E./ 9lA 7Z 7QA R0: ?M ?%.$ G5 .$T A$Q .5M< !$f ,Y ,U !Y G5 9\ A%, *E./- *Ce0 .5>
9\ ,$C #$gC 9vC A$B, AQ G5 G=.$ !J(E ?ử cb./ #$F# AJy *Z 9tA O5 `M% ,U !Y<
>+#?@#345dA#
4CQA DEA ,$Tơ./ AJp.$ *Z $CZ. A$\ GCK. Ab, ,V./ sd *gC O[C /C% AJ\ 6z^< (Y ,$f
DlA $CZ. A$\ 7$C sd 3 6z^<
8BC#*CDCA#

MOV P1, #0FFH ; Chọn P1 làm cổng đầu vào
HERE: MOV A, P1 ; Lấy nội dung của P1
CJNE A, #63, HERE ; Duy trì hiển thị trừ khi P1 = 63H


>+#?@#3455A#
GC: ?ử ,%, ./ă. .$[ ,mL r'M AJM./ {j^ I {{^ ,$ứL .$C=A *E $5./ ./5> ,mL
5 ./5> .$T *Th, ,$f JL cT[C *â>< ^_> ApD *Z `aD ,Y /C% AJ\ .5M 9|./ 65 7$H./? (Q0
/C% AJ\ 65 ,Y AJM./ 9:./ $_> *PA ./ă. .$[ ,mL .Y O5M r{ .Q0 7$H./ A$p *PA r{ 3 j<
40H = (76); 41H = (79); 42H = (69); 43H = (65); 44H = (64)
8BC#*CDCA#

MOV R4, #0 ; Xoá R4 = 0
MOV R0, #40H ; Nạp con trỏ
MOV R2, #05 ; Nạp bộ đếm
MOV A, #65 ; Gán giá trị cần tìm vào A
BACK: CJNE A, @R0, NEXT ; So sánh dữ liệu RAM với 65
MOV R4, R0 ; Nếu là 65, l#u địa chỉ vào R4
SJMP EXIT ; Thoát
NEXT: INC R0 ; Nếu không tăng bộ đếm
DJNZ R2, BACK ; Tiếp tục kiểm tra cho đến khi bộ đếm bằng 0.
EXIT:

34E# !"#$%&'#MNPJ#,-7#01P7#Q\C4#
XJM./ JlA .$Ce0 ứ./ cb./ ,ầ. #$:C A$B, $C=. #$F# R0L> 9CA ,mL DEA AM%.
$N./< !%, G=.$ R0L> 8j5d G5 rd- rr- r)! O5 rr! *Th, A$CQA 7Q *P, 9C=A ,$M Db,
*+,$ .5>< !$"./ ,$M #$F# DEA ,$Tơ./ AJp.$ R0L> A$L.$ /$C AV./ ?L./ AJ%C $MP, #$:C<
XJM./ 8j5d *Z R0L> DEA 9>Aa A$p AM%. $N./ #$:C v AJM./ A$L.$ /$C AV./ '< !Y $LC
7CZ0 R0L> G5& Q0L> *ơ. /C:. ,%, 9CA ,mL A$L.$ /$C ' O5 R0L> R0L ,U .$[ 6$L> R0L>
,Y .$[;<
34E45#eNPJ#"!"#IC0#"OP#0'P&'#*'C#:#6P&*#01!C#'7f"#g'DC4#
L; Q0L> #$:C& rr ' 2 Q0L> ,%, 9CA A$L.$ /$C ' ?L./ #$:C<
XJM./ #$F# R0L> #$:C- 8 9CA ,mL A$L.$ /$C AV./ *Th, R0L> ?L./ #$:C DEA 9CA
O5 9CA Dj JUC Ay O\ AJ+ 9CA A$l# .$lA O5 ,$0>Z. ?L./ 9CA ,LM .$lA Do< naD *MN. D_

cT[C *©><


MOV A, #36H ; A = 0011 0110
RR A ; A = 0001 1011
RR A ; A = 1000 1101
RR A ; A = 1100 0110
RR A ; A = 0110 0011

9; Q0L> AJ%C&
!" #$%#& r) ' 2 Q0L> AJ%C ,%, 9CA ,mL A$L.$ /$C ' 6$p.$ O@;
XJM./ #$F# R0L> AJ%C A$p 8 9CA ,mL A$L.$ /$C ' *Th, R0L> ?L./ AJ%C d 9CA O5 9CA
Do JUC 7$áC O\ AJ+ 9CA ,LM .$lA ,$0>Z. ?L./ O\ AJ+ 9CA A$l# .$lA Dj< naD 9CZ0 *1 D_
cT[C *©><

MOV A, #72H ; A = 0111 0010
RL A ; A = 1110 0100
RL A ; A = 1100 1001

)T0 ý J|./ AJM./ ,%, G=.$ rr O5 r) A$p 7$H./ ,Y ,U .5M 9\ A%, *E./<
34E4E#eNPJ#"h#&'i4#
XJM./ 8j5d ,ß. ,Y x 7K.$ R0L> .kL G5 R0L> #$:C ,Y .$[ O5 R0L> AJ%C ,Y .$[<
!" #$%#& rr! ' O5 r)! '
L; Q0L> #$:C ,Y .$[& rr! '
XJM./ R0L> #$:C ,Y .$[ A$p ,%, 9CA ,mL A$L.$ /$C ' *Th, R0L> Ay AJ%C ?L./
#$:C d 9CA O5 9CA A$l# .$lA *Th, *TL O5M ,U .$[ !Y O5 ?L0 *Y ,U !Y *Th, *TL O5M O\
AJ+ 9CA ,LM .$lA< ^L> .YC ,%,$ 7$%,- AJM./ #$F# rr! ' A$p )SB *Th, ,$0>Z. O5M !Y
O5 !Y *Th, ,$0>Z. O5M MSB< XJM./ A$B, AQ A$p ,U .$[ !Y A%, *E./ .$T G5 DEA 9CA
9E #$t. ,mL A$L.$ /$C ' G5D .Y AJv A$5.$ A$L.$ /$C 9 9CA<


CLR C ; make CY = 0
MOV A #26H ; A = 0010 0110
RRC A ; A = 0001 0011 CY = 0
RRC A ; A = 0000 1001 CY = 1
RCC A ; A = 1000 0100 CY = 1

9; Q0L> AJ%C ,Y .$[ 6$p.$ O@;& r)! '<
XJM./ r)! ' A$p ,%, 9CA *Th, c\,$ #$:C DEA 9CA O5 *È> 9CA MSB O5M ,U .$[
!Y- ?L0 *Y !Y *Th, ,$0>Z. O5M 9CA )SB< ^L> .YC ,%,$ 7$%,- AJM./ r)! A$p 9CA MSB
*Th, ,$0>Z. O5M !Y O5 !Y *Th, ,$0>Z. O5M )SB< ^_> `aD *MN. D_ ?L0<

SETB C ; Make CY = 1
MOV A #15H ; A = 0001 0101
RRC A ; A = 0101 1011 CY = 0
RRC A ; A = 0101 0110 CY = 0
MSB

LSB

MSB

LSB

LSB

CY

MSB

MSB


LSB

CY

RCC A ; A = 1010 1100 CY = 0
RCC A ; A = 1000 1000 CY = 1

34E4U#8%&'#01P7#Q\C#0'P&'#*'C#:A#jk:]##:#
MEA G=.$ $k0 +,$ 7$%, .kL G5 G=.$ AJLM *VC SW's< (Y ,$f $MNA *E./ AJK.
A$L.$ /$C '- .Y AJLM *VC .ửL #$ầ. ,LM ,mL 9>Aa O5 .ửL #$ầ. A$l# ,mL 9>Aa O[C .$L0<
^L> .YC ,%,$ 7$%, { 9CA ,LM *Th, ,$0>Z. A$5.$ { 9CA A$l# O5 { 9CA A$l# A$5.$ { 9CA
,LM<









>+#?@#345EA#
L; ^_> ApD .EC c0./ ,mL A$L.$ /$C ' v *MN. D_ ?L0<
9; XJM./ AJTU./ $h# 7$H./ ,Y G=.$ SW's A$p ,ầ. #$:C G5D .$T A$Q .5M *Z AJLM
*VC .$k./ 9CA .5>? ^_> OCQA DEA D_ ,$Tơ./ AJp.$ *ơ. /C:. Oe R0% AJp.$ *Y<
8BC#*CDCA#
a)
MOV A, #72H ; A = 72H
SWAP A ; A = 27H

b)
MOV A, #72H ; A = 0111 0010
RL A ; A = 1110 0100
RL A ; A = 1100 1001
RL A ; A = 0010 0111

>+#?@#345UA#
4CQA DEA ,$Tơ./ AJp.$ *Z ApD ?g ,%, ?g d AJM./ DEA 9>Aa *_ ,$M<
8BC#*CDCA#

MOV R1, #0 ; Chọn R1 giữ số các số 1
MOV R7, #8 ; Đặt bộ đếm = 8 để quay 8 lần
MOV A, #97H ; Tim các số 1 trong byte 97H
AGAIN: RLC A ; Quay trái có nhớ một lần
JNC NEXT ; Kiểm tra cờ CY
INC R1 ; Nếu CY = 1 thì cộng 1 vào bộ đếm
NEXT: DJNZ R7, AGAIN ; Lặp lại quá trình 8 lần

SZ AJ0>e. d 9>Aa ck GC=0 .YC ACQ# A$p ck GC=0 ,Y A$Z *Th, ,$0>Z. *VC Ay ?M./
?M./ ?L./ .gC ACQ# 9|./ ,%, G=.$ R0L> .$T ?L0&

RRC A ; Bít thứ nhất đ#a vào cờ CY
MOV P1.3, C ; Xuất CY nh# một bit dữ liệu
RRC A ; Bit thứ hai đ#a vào CY
Do
I
D{

Dz
I

Dj

Dz
I
Dj

Do
I
Dj

LfAaJ&

9afMJa&

jddd

jjdj

jjd
j

jddd

LfAaJ&

9afMJa&

MOV P1.3, C ; Xuất CY ra nh# một bit dữ liệu
RRC A ;
MOV P1.3, C ;


SMN. D_ AJK. *â> G5 DEA #$Tơ./ #$%# *Th, ?ử cb./ JE./ J_C AJM./ AJ0>e. ck
GC=0 A[C ,%, 9E .$[ .gC ACQ# .$T ,%, EEsrqM .gC ACQ#<
34U# !"#"'./&*#012&'#l&*#?@&*#"OP#ST#b <#,-#:j mm4#
!%, ?g D_ B!D *_ *Th, AJp.$ v ,$Tơ./ 6< ($T *_ .YC v *Y J|./ AJM./ JlA
.$Ce0 9E OC *Ce0 7$CZ. D[C *e0 ,Y DEA *1./ $1 A$UC /CL. A$B, rX! 6raLG XCDa
!GM,7; *Z /Ck ,$M A$UC /CL. O5 ,: G\,$ ,$M ,: 7$C 9\ AắA ./01.< !%, 9E OC *Ce0 7$CZ.
.5> ,0./ ,l# A$UC /CL. O5 G\,$ cT[C cN./ B!D< X0> .$CK *Z $CZ. A$\ ,$"./ A$p
,$"./ #$:C *Th, ,$0>Z. Oe D_ 'S!II< XJM./ #$ầ. .5> AL AJp.$ 95> ứ./ cb./ ,mL ,%,
G=.$ R0L> O5 ,%, G=.$ GHI/+, AJM./ OC=, ,$0>Z. *VC D_ B!D O5 'S!II<
bD&*#34EA M_ 'S!II ,$M ,%, ,$k ?g Ay jI 9<

Phím Mã ASCII (Hex) Mã ASCII nhị phân Mã BCD (không đóng gói)
0
1
2
3
4
5
6
7
8
9
30
31
32
33
34
35
36

37
38
39
011 0000
011 0001
011 0010
011 0011
011 0100
011 0101
011 0110
011 0111
011 1000
011 1001
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
0000 1000
0000 1001

34U45# !"#6n#ST#:j mm4#
XJK. ,%, 95. #$+D 'S!II 7$C #$+D }j~ *Th, 7+,$ $MNA A$p }jdd jjjd~ 6zj^;
*Th, ,l# A[C D%> A+.$< XTơ./ AB .$T Ot> zd^ 6jdd jjjd; *Th, ,l# ,$M #$+D }d~
O<O<<< .$T ,>$f JL AJM./ 9:./ o<x<
!ầ. #$:C /$C .$[ J|./ DP, ci D_ 'S!II G5 ,$0ẩ. v DW 6O5 .$Ce0 R0g, /CL
7$%,; .$T./ ,%, ?g D_ B!D G5 AV./ R0%A< 4p 95. #$pD- D%> C. O5 D5. $p.$ *e0 ?ử

cb./ D_ 'S!II .K. ,ầ. #$:C A$B, $C=. *VC ,$0>Z. /CkL ,%, ?g D_ 'S!II Oe ?g D_
B!D O5 ./Th, GNC<
34U4E# 'NJo&#Q\C#ST#b <#Qh&*#*hC#,p#:j mm4#
!%, 9E OC *Ce0 7$CZ. DS5jjjX *e0 ,Y *1./ 9E A$UC /CL. A$B, rX!< (Y ,0./
,l# $CZ. A$\ GCK. Ab, A$UC /CL. AJM./ ./5> 6/CU- #$"A O5 /Câ>; O5 G\,$ 6.ăD- A$%./-
./5>; D5 7$H./ R0L. AâD *Q. ./01. AắA $L> 9tA< X0> .$CK. ck GC=0 .5> *Th, ,l# v
cN./ D_ B!D *Y./ /YC< SZ $CZ. A$\ ck GC=0 .5> AJK. DEA )!D $MP, C. JL AJK. D%> C.
A$p .Y #$:C *Th, ,$0>Z. Oe cN./ D_ 'S!II<
SZ ,$0>Z. *VC D_ B!D *Y./ /YC Oe D_ 'S!II A$p AJT[, $QA .Y #$:C *Th,
,$0>Z. *VC A$5.$ D_ B!D 7$H./ *Y./ /YC< SL0 *Y D_ B!D ,$TL *Y./ /YC *Th,
DY, O[C jdd jjjj 6zj^;< DT[C *â> DC.$ $MN OC=, ,$0>Z. *VC Ay D_ B!D *Y./ /YC
Oe D_ 'S!II< naD O+ cb o<d{<


Mã BCD đóng gói Mã BCD không đóng gói Mã ASCII
29H
0010 1001
02H & 09H
0000 0010 &
0000 1001
32H & 39H
0011 0010 &
0011 1001

34U4U# 'NJo&#Q\C#ST#:j mm#,p#ST#b <#Qh&*#*hC4#
SZ ,$0>Z. *VC D_ 'S!II Oe B!D *Y./ /YC AJT[, A$p AJT[, $QA .Y #$:C *Th,
,$0>Z. Oe D_ B!D 7$H./ *Y./ /YC 6*Z ,Y A$KD z ?g; O5 ?L0 *Y *Th, 7QA $h# *Z ANM
JL D_ S!D *Y./ /YC< 4+ cb ?g { O5 ?g o A$p 95. #$+D .$t. *Th, z{ O5 zo< Mb, ACK0
G5 ANM JL ?g {o^ $L> }jdjj jddd~ G5 D_ B!D *Y./ /YC< Q"L AJp.$ .5> .$T ?L0&


Phím Mã ASCII Mã BCD không đóng gói Mã BCD đóng gói
4
7
34
37
0000 0100
0000 0111

0100 0111 hay 47H

MOV A, # 4 ; Gán A = 34H mã ASCII của số 4
MOV R1, # 7 ; Gán R1 = 37H mã ASCII của số 4
ANL A, #0FH ; Che nửa byte cao A (A = 04)
ANL R1, #0FH ; Che nửa byte cao của R1 (R1 = 07)
SWAP A ; A = 40H
ORL A, R1 ; A = 47H, mã BCD đóng gói

SL0 #$F# ,$0>Z. *VC .5> ,%, ?g B!D *Y./ /YC *Th, `ử Gý O5 7QA R0: ?@ G5
cN./ B!D *Y./ /YC< ($T AL *_ 9CQA v ,$Tơ./ 6 ,Y DEA G=.$ *PA 9C=A G5 }D' '~ *òC
$ỏC ck GC=0 #$:C v cN./ B!D *Y./ /YC<
>+#?@#345YA#
GC: ?ử A$L.$ /$C ' ,Y ?g D_ B!D *Y./ /YC $_> OCQA DEA ,$Tơ./ AJp.$ *Z
,$0>Z. *VC D_ B!D Oe $LC ?g 'S!II O5 *PA ,$"./ O5M rx O5 r6<
8BC#*CDCA#

MOV A, #29H ; Gán A = 29, mã BCD đóng gói
MOV R2, A ; Giữ một bản sao của BCD trong R2
ANL A, #0FH ; Che phần nửa cao của A (A = 09)
ORL A, #30H ; Tạo nó thành mã ASCII A = 39H (số 9)
MOV R6, A ; L#u nó vào R6 (R6 = 39H ký tự của ASCII)

MOV A, R2 ; Lấy lại giá trị ban đầu của A (A = 29H)
ANL A, #0F0H ; Che nửa byte phần thấp của A (A = 20)
RR A ; Quay phải
RR A ; Quay phải
RR A ; Quay phải
RR A ; Quay phải (A = 02)
ORL A, #30H ; Tạo nó thành mã ASCII (A = 32H, số 2)
MOV R2, A ; L#u ký tự ASCII vào R2

XJM./ O+ cb AJK. AlA .$CK. G5 AL ,Y A$Z A$L> { G=.$ rr R0L> #$:C 9|./ DEA G=.$
AJLM *VC W's'<

×