You are on page 1of 9

Smith Nguyen Studio.

chng 7 Cc lnh l - gc v cc chng trnh


7.1 Cc lnh l-gc v so snh. 7.1.1 Lnh V (AND). C php: ANL ch, ngun; ch = ch V ngun (k bng). Lnh ny s thc hin mt php V l-gc trn hai ton hng ch v ngun v t kt qu vo ch. ch thng l thanh ghi tng (tch lu). Ton hngngun c th l thanh ghi trong b nh hoc gi tr cho sn. Hy xem ph lc Appendix A1 bit thm v cc ch nh a ch dnh cho lnh ny. Lnh ANL i vi ton hng theo byte khng c tc ng ln cc c. N thng c dng che (t v 0) nhng bit nht nh ca mt ton hng. Xem v d 7.1. V d: Trnh by kt qu ca cc lnh sau:
MOV ANL A, #35H A, #0FH ; Gn A = 35H ; Thc hin V l-gc A v 0FH (By gi A = 05)

Li gii:
35H 0FH 05H 0 0 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1

35H v 0FH = 05H

7.1.2: Lnh Hoc (OR). C php ORL ch = ch Hoc ngun (k bng) Cc ton hng ch v ngun c Hoc vi nhau v kt qu c t vo ch. Php Hoc c th c dng thit lp nhng bit nht nh ca mt ton hng 1. ch thng l thanh ghi tng, ton hng ngun c th l mt thanh ghi trong b nh hoc gi tr cho sn. Hy tham kho ph lc Appendix A bit thm v cc ch nh a ch c h tr bi lnh ny. Lnh ORL i vi cc ton hng nh a ch theo byte s khng c tc ng n bt k c no. Xem v d 7.2. V d 7.2: Trnh by kt qu ca on m sau:
MOV MOV A, #04 ; A = 04 A, #68H ; A = 6C

Li gii:
04H 68H 6CH 0000 0100 0110 1000 0110 1100

04 OR 68 = 6CH

7.1.3 Lnh XOR (OR loi tr?). C php: XRL ch, ngun; ch = ch Hoc loi tr ngun (k bng).

Smith Nguyen Studio.


Lnh ny s thc hin php XOR trn hai ton hng v t kt qu vo ch. ch thng l thanh ghi tng. Ton hng ngun c th l mt thanh ghi trong b nh hoc gi tr cho sn. Xem ph lc Appendix A.1 bit thm v ch nh a ch ca lnh ny. Lnh XRL i vi cc ton hng nh a ch theo byte s khng c tc ng n bt k c no. Xt v d 7.3 v 7.4. V d 7.3: Trnh by kt qu ca on m sau:
MOV XRL A, #54H A, #78H

Li gii:
54H 78H 2CH 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1

54H XOR 78H = 2CH

V d 7.4: Lnh XRL c th c dng xo ni dung ca mt thanh ghi bng cch XOR n vi chnh n. Trnh by lnh XRL A, A xo ni dung ca A nh th no? gi thit AH = 45H. Li gii:
45H 45H 00 01000101 01000101 00000000

54H XOR 78H = 2CH

Lnh XRL cng c th c dng xem nu hai thanh ghi c gi tr ging nhau khng? Lnh XRL A, R1 s hoc loi tr vi thanh ghi R1 v t kt qu vo A. Nu c hai thanh ghi c cng gi tr th trong A s l 00. Sau c th dng lnh nh JZ thc hin theo kt qu. Xt v d 7.5. V d 7.5: c v kim tra cng P1 xem n c cha gi tr 45H khng? Nu c gi 99H n cng P2, nu khng xo n. Li gii:
MOV MOV MOV MOV XRL JNZ MOV EXIT: ... P2, #00 P1, #0FFH R3, #45H A, P1 A, R3 EXIT P2, #99H ; Xa P2 ; Ly P1 l cng u vo ; R3 = 45H ; c P1 ; Nhy nu A c gi tr khc 0

Trong chng trnh ca v d 7.5 lu vic s dng lnh nhy JNZ. Lnh JNZ v JZ kim tra cc ni dung ch ca thanh ghi tng. Hay ni cch khc l trong 8051khng c c 0.

Smith Nguyen Studio.


Mt ng dng rng ri khc ca b x l l chn cc bit ca mt ton hng. V d chn 2 bit ca thnh ghi A ta c th s dng m sau. M ny p bit D2 ca thanh ghi A chuyn sang gi tr nghch o, cn cc bit khc khng thay i.
XRL A, #04H ; Ngha hoc loi tr thanh ghi A vi ; Gi tr 0000 0100

7.1.4 Lnh b thanh ghi tng CPL A. Lnh ny b ni dung ca thanh ghi tng A. Php b l php bin i cc s 0 thnh cc s 1 v i cc s 1 sang s 0. y cng cn c gi l php b 1.
MOV CPL A, #55H A ; By gi ni dung ca thanh ghi A l AAH ; V 0101 0101 (55H) 1010 1010 (AAH)

nhn c kt qu b 2 th tt c mi vic ta cn phi lm l cng 1 vo kt qu b 1. Trong 8051 th khng c lnh b 2 no c. Lu rng trong khi b mt byte th d liu phi trong thanh ghi A. Lnh CPL khng h tr mt ch nh a ch no c. Xem v d 7.6 di y. V d 7.6: Tm gi tr b 2 ca 85H. Li gii:
MOV MOV ADD A, #85H A A, #1 ; Np 85H vo A (85H = 1000 0101) ; Ly b 1 ca A (kt qu = 0111 1010) ; Cng 1 vo A thnh b 2 A = 0111 1011 (7BH)

V d 7.1.5 Lnh so snh. 8051 c mt lnh cho php so snh. N c c php nh sau: CJNE ch, ngun, a ch tng i. Trong 8051 th php so snh v nhy c kt hp thnh mt lnh c tn l CJNE (so snh v nhy nu kt qu khng bng nhau). Lnh CJNE so snh hai ton hng ngun v ch v nhy n a ch tng i nu hai ton hng khng bng nhau. Ngoi ra n thay i c nh CY bo nu ton hng ch ln hn hay nh hn. iu quan trng cn l cc ton hng vn khng gi nguyn khng thay thay i. V d, sau khi thc hin lnh CJNE A, #67H, NEXT th thanh ghi A vn c gi tr ban u ca n (gi tr trc lnh CJNE). Lnh ny so snh ni dung thanh ghi A vi gi tr 67H v nhy n gi tr ch NEXT ch khi thanh ghi A c gi tr khc 67H. V d 7.7: Xt on m di y sau tr li cu hi: a) N s nhy n NEXT khng? b) Trong A c gi tr bao nhiu sau lnh CJNE?
MOV CJNE ... NEXT: ... A, #55H A, #99H, NEXT

Smith Nguyen Studio.


Li gii: a) C v 55H v 99H khng bng nhau b) A = 55H y l gi tr trc khi thc hin CJNE. Trong lnh CJNE th ton hng ch c th trong thanh ghi tng hoc trong mt cc thanh ghi Rn. Ton hng ngun c th trong mt thanh ghi, trong b nh hoc gi tr cho sn. Hy xem ph lc Appendix A bit thm chi tit v cc ch nh a ch cho lnh ny. Lnh ny ch tc ng c nh CY. C ny c thay i nh ch ra trn bng 7.1. Di y trnh by php so snh hot ng nh th no i vi tt c cc iu kin c th:
CJNE ... JNC ... ... R5, #80, NOT-EQUAL NEXT ; Kim tra R5 c gi tr 80? ; R5 = 80 ; Nhy n R5 > 80

NOT-EQUAL: NEXT:

Bng 7.1: Thit k c CY cho lnh CJNE.


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

rng trong lnh CJNE th khng c thanh ghi Rn no c th c so snh vi gi tr cho sn. Do vy khng cn phi ni n thanh ghi A. Cng cn lu rng c nh CY lun c kim tra xem ln hn hay nh hn, nhng ch khi xc nh l n khng bng nhau. Xt v d 7.8 v 7.9 di y. V d 7.8: Hy vit m xc nh xem thanh ghi A c cha gi tr 99H khng? Nu c th hy to R1 = FFH cn nu khng to R1 = 0. Li gii:
MOV CJNE MOV NEXT: ... OVER: ... R1, #0 ; Xo R1 A, #99H ; Nu A khng bng 99H th nhy n NEXT R1, #0FFH ; Nu chng bng nhau, gn R1 = 0FFH ; Nu khng bng nhau, gn R1 = 0

V d 7.9: Gi s P1 l mt cng u vo c ni ti mt cm bin nhit. Hy vit chng trnh c nhit v kim tra n i vi gi tr 75. Theo kt qu kim tra hy t gi tr nhit vo cc thanh ghi c ch nh nh sau:
Nu T = 75 Nu T < 75 Nu T > 75 th A = 75 th R1 = T th R2 = T

Li gii:

Smith Nguyen Studio.


MOV MOV CJNE SJMP JNC MOV SJMP MOV ... P1, 0FFH A, P1 A, #75, OVER EXIT NEXT R1, A EXIT R2, A ; To P1 lm cng u vo ; c cng P1, nhit ; Nhy n OVER nu A 75 ; A = 75 thot ; Nu CY = 0 th A > 75 nhy n NEXT ; Nu CY = 1 th A < 75 lu vo R1 ; V thot ; A > 75 lu n vo R2

OVER: NEXT: EXIT:

Lnh so snh thc s l mt php tr, ngoi tr mt iu l gi tr ca cc ton hng khng thay i. Cc c c thay i tu theo vic thc hin lnh tr SUBB. Cn phi c nhn mnh li rng, trong lnh CJNE cc ton hng khng b tc ng bt k kt qu so snh l nh th no. Ch c c CY l b tc ng, iu ny b chi phi bi thc t l lnh CJNE s dng php tr bt v xo c CY. V d 7.10: Vit mt chng trnh hin th lin tc cng P1 i vi gi tr 63H. N ch mt hin th khi P1 = 63H. Li gii:
HERE: MOV MOV CJNE P1, #0FFH A, P1 A, #63, HERE ; Chn P1 lm cng u vo ; Ly ni dung ca P1 ; Duy tr hin th tr khi P1 = 63H

V d 7.11: Gi s cc ngn nh ca RAM trong 40H - 44H cha nhit hng ngy ca 5 ngy nh c ch ra di y. Hy tm xem c gi tr no bng 65 khng? Nu gi tr 65 c trong bng hy t ngn nh ca n vo R4 nu khng th t R4 = 0.
40H = (76); 41H = (79); 42H = (69); 43H = (65); 44H = (64)

Li gii:
MOV MOV MOV MOV CJNE MOV SJMP INC DJNZ ... R4, #0 R0, #40H R2, #05 A, #65 A, @R0, NEXT R4, R0 EXIT R0 R2, BACK ; Xo R4 = 0 ; Np con tr ; Np b m ; Gn gi tr cn tm vo A ; So snh d liu RAM vi 65 ; Nu l 65, lu a ch vo R4 ; Thot ; Nu khng tng b m ; Tip tc kim tra cho n khi b m bng 0.

BACK: NEXT: EXIT:

7.2 Cc lnh quay vo trao i. Trong rt nhiu ng dng cn phi thc hin php quay bit ca mt ton hng. Cc lnh quay 8051 l R1, RR, RLC v RRC c thit k c bit cho mc ch ny. Chng cho php mt chng trnh quay thanh ghi tng sang tri hoc phi. Trong 8051 quay mt byte th ton hng phi trong thanh ghi tng A. C hai kiu quay l: Quay n gin cc bit ca thanh ghi A v quay qua c nh (hay quay c nh).

Smith Nguyen Studio.


7.2.1 Quay cc bit ca thanh ghi A sang tri hoc phi. a) Quay phi: RR A ; Quay cc bit thanh ghi A sang phi. Trong php quay phi, 8 bit ca thanh ghi tng c quay sang phi mt bit v bit D0 ri t v tr bit thp nht v chuyn sang bit cao nht D7. Xem on m di y.
MOV RR RR RR RR A, #36H A A A A ; A = 0011 0110 ; A = 0001 1011 ; A = 1000 1101 ; A = 1100 0110 ; A = 0110 0011

MSB

LSB

b) Quay tri: C php: RL A ; Quay tri cc bit ca thanh ghi A (hnh v) Trong php quay tri th 8 bit ca thanh ghi A c quay sang tri 1 bit v bit D7 ri khi v tr bit cao nht chuyn sang v tr bit thp nht D0. Xem biu m di y.
MOV RL RL A, #72H A A ; A = 0111 0010 ; A = 1110 0100 ; A = 1100 1001 MSB LSB

Lu rng trong cc lnh RR v RL th khng c c no b tc ng. 7.2.2 Quay c nh. Trong 8051 cn c 2 knh quay na l quay phi c nh v quay tri c nh. C php: RRC A v RLC A a) Quay phi c nh: RRC A Trong quay phi c nh th cc bit ca thanh ghi A c quay t tri sang phi 1 bit v bit thp nht c a vo c nh CY v sau c CY c a vo v tr bit cao nht. Hay ni cch khc, trong php RRC A th LSB c chuyn vo CY v CY c chuyn vo MSB. Trong thc t th c nh CY tc ng nh l mt bit b phn ca thanh ghi A lm n tr thnh thanh ghi 9 bit.
CLR MOV RRC RRC RCC C A #26H A A A ; make CY = 0 ; A = 0010 0110 ; A = 0001 0011 CY = 0 ; A = 0000 1001 CY = 1 ; A = 1000 0100 CY = 1

MSB

LSB

CY

b) Quay tri c nh (hnh v): RLC A. Trong RLC A th cc bit c dch phi mt bit v y bit MSB vo c nh CY, sau CY c chuyn vo bit LSB. Hay ni cch khc, trong RLC th bit MSB c chuyn vo CY v CY c chuyn vo LSB. Hy xem on m sau.
SETB MOV RRC RRC C A #15H A A ; Make CY = 1 ; A = 0001 0101 ; A = 0101 1011 CY = 0 ; A = 0101 0110 CY = 0

CY

MSB

LSB

Smith Nguyen Studio.


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

7.2.3 Lnh trao i thanh ghi A: SWAP A Mt lnh hu ch khc na l lnh trao i SWAP. N ch hot ng trn thanh ghi A, n trao i na phn cao ca byte v na phn thp ca byte vi nhau. Hay ni cch khc 4 bit cao c chuyn thnh 4 bit thp v 4 bit thp thnh 4 bit cao.
before: D7 - D4 D3 - D0 after: D3 - D0 D7 - D0

before:

0111

0010

after:

0010

0111

V d 7.12: a) Hy tm ni dung ca thanh ghi A on m sau. b) Trong trng hp khng c lnh SWAP th cn phi lm nh th no trao i nhng bit ny? Hy vit mt m chng trnh n gin v qu trnh . Li gii:
a) MOV SWAP b) MOV RL RL RL A, #72H ; A = 0111 0010 A ; A = 1110 0100 A ; A = 1100 1001 A ; A = 0010 0111 A, #72H ; A = 72H A ; A = 27H

V d 7.13: Vit mt chng trnh tm s cc s 1 trong mt byte cho. Li gii:


MOV MOV MOV RLC JNC INC DJNZ R1, #0 R7, #8 A, #97H A NEXT R1 R7, AGAIN ; Chn R1 gi s cc s 1 ; t b m = 8 quay 8 ln ; Tim cc s 1 trong byte 97H ; Quay tri c nh mt ln ; Kim tra c CY ; Nu CY = 1 th cng 1 vo b m ; Lp li qu trnh 8 ln

AGAIN: NEXT:

truyn 1 byte d liu ni tip th d liu c th c chuyn i t song song sang ni tip bng cc lnh quay nh sau:
RRC MOV RRC A P1.3, C A ; Bt th nht a vo c CY ; Xut CY nh mt bit d liu ; Bit th hai a vo CY

Smith Nguyen Studio.


MOV RRC MOV ... P1.3, C A P1.3, C ; Xut CY ra nh mt bit d liu ; ;

on m trn y l mt phng php c s dng rng ri trong truyn d liu ti cc b nh ni tip nh cc EEPROM ni tip. 7.3 Cc chng trnh ng dng ca m BCD v ASCII. Cc s m BCD c trnh chng 6. Nh ni rng trong rt nhiu b vi iu khin mi u c mt ng h thi gian thc RTC (Real Time Clock) gi cho thi gian v c lch cho c khi b tt ngun. Cc b vi iu khin ny cung cp thi gian v lch di dng BCD. Tuy nhin, hin th chng th chng phi c chuyn v m ASCII. Trong phn ny ta trnh by ng dng ca cc lnh quay v cc lnh l-gc trong vic chuyn i m BCD v ASCII. Bng 7.2: M ASCII cho cc ch s t 0- 9. Phm 0 1 2 3 4 5 6 7 8 9 M ASCII (Hex) 30 31 32 33 34 35 36 37 38 39 M ASCII nh phn 011 0000 011 0001 011 0010 011 0011 011 0100 011 0101 011 0110 011 0111 011 1000 011 1001 M BCD (khng ng gi) 0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 0000 1000 0000 1001

7.3.1 Cc s m ASCII. Trn cc bn phm ASCII khi phm 0 c kch hot th 011 0001 (30H) c cp ti my tnh. Tng t nh vy 31H (011 0001) c cp cho phm 1 v.v... nh cyh ra trong bng 7.2. Cn phi ghi nh rng mc d m ASCII l chun m (v nhiu quc gia khc) nhng cc s m BCD l tng qut. V bn phm, my in v mn hnh u s dng m ASCII nn cn phi thc hin i chuyn gia cc s m ASCII v s m BCD v ngc li. 7.3.2 Chuyn i m BCD ng gi v ASCII. Cc b vi iu khin DS5000T u c ng b thi gian thc RTC. N cung cp hin th lin tc thi gian trong ngy (gi, pht v giy) v lch (nm, thng, ngy) m khng quan tm n ngun tt hay bt. Tuy nhin d liu ny c cp dng m BCD ng gi. hin th d liu ny trn mt LCD hoc in ra trn my in th n phi c chuyn v dng m ASCII. chuyn i m BCD ng gi v m ASCII th trc ht n phi c chuyn i thnh m BCD khng ng gi. Sau m BCD cha ng gi c mc vi 011 0000 (30H). Di y minh ho vic chuyn i t m BCD ng gi v m ASCII. Xem v d 7.14.

Smith Nguyen Studio.


M BCD ng gi 29H 0010 1001 M BCD khng ng gi 02H & 09H 0000 0010 & 0000 1001 M ASCII 32H & 39H 0011 0010 & 0011 1001

7.3.3 Chuyn i m ASCII v m BCD ng gi. chuyn i m ASCII v BCD ng gi trc th trc ht n phi c chuyn v m BCD khng ng gi ( c thm 3 s) v sau c kt hp to ra m SCD ng gi. V d s 4 v s 7 th bn phm nhn c 34 v 37. Mc tiu l to ra s 47H hay 0100 0111 l m BCD ng gi. Qa trnh ny nh sau:
Phm 4 7 MOV MOV ANL ANL SWAP ORL M ASCII 34 37 A, # 4 R1, # 7 A, #0FH R1, #0FH A A, R1 M BCD khng ng gi 0000 0100 0000 0111 ; Gn A = 34H m ASCII ca s 4 ; Gn R1 = 37H m ASCII ca s 4 ; Che na byte cao A (A = 04) ; Che na byte cao ca R1 (R1 = 07) ; A = 40H ; A = 47H, m BCD ng gi M BCD ng gi 0100 0111 hay 47H

Sau php chuyn i ny cc s BCD ng gi c x l v kt qu s l dng BCD ng gi. Nh ta bit chng 6 c mt lnh t bit l DA A i hi d liu phi dng BCD ng gi. V d 7.14: Gi s thanh ghi A c s m BCD ng gi hy vit mt chng trnh chuyn i m BCD v hai s ASCII v t chng vo R2 v R6. Li gii:
MOV MOV ANL ORL MOV MOV ANL RR RR RR RR ORL MOV A, #29H R2, A A, #0FH A, #30H R6, A A, R2 A, #0F0H A A A A A, #30H R2, A ; Gn A = 29, m BCD ng gi ; Gi mt bn sao ca BCD trong R2 ; Che phn na cao ca A (A = 09) ; To n thnh m ASCII A = 39H (s 9) ; Lu n vo R6 (R6 = 39H k t ca ASCII) ; Ly li gi tr ban u ca A (A = 29H) ; Che na byte phn thp ca A (A = 20) ; Quay phi ; Quay phi ; Quay phi ; Quay phi (A = 02) ; To n thnh m ASCII (A = 32H, s 2) ; Lu k t ASCII vo R2

Trong v d trn tt nhin l ta c th thay 4 lnh RR quay phi bng mt lnh trao i WAPA.

You might also like