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'< . 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. 7$H./ /Ck ./0>K. 7$H./ A$L> A$L> *VC< 4+ cb- ?L0 7$C A$B, $C=. G=.$ }!J(E &apos ;- #6o ^- (EnX~ A$p A$L.$ /$C ' Oẫ. ,Y /C% AJ 9L. *ầ0 ,mL