You are on page 1of 80

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

CHNG 3 TP LNH CA 8051


I. M U:

Khung dng tng qut ca mt dng lnh: [LABEL:] MNEMONIC [OPERAND][,OPERAND] [;COMMENT] o Nhn (Label): biu th a ch ca dng lnh (hoc d liu) theo sau, c dng trong trng ton hng ca lnh nhy, lnh r nhnh (SJMP AAA; ACALL BBB; CJNE A, #35H, LOOP; JNB P3.1, TEST_1). Lu v nhn: Do ngi lp trnh t t (khng c trng vi t kho, m gi nh, ch dn, ton t hoc k hiu tin nh ngha). Bt u bng k t ch, du chm hi (?), du gch di (_). Di ti a 31 k t. Kt thc bng du hai chm (:). o M gi nh (Mnemonic): biu din cc m ca lnh hoc cc ch dn ca chng trnh dch hp ng (M gi nh: ADD, SUBB, INC, ; Ch dn: ORG, EQU, DB, ). o Ton hng (Operand): cha a ch hoc d liu m lnh s s dng. S lng ton hng trong mt dng lnh ph thuc vo tng dng lnh (RET khng ton hng, INC A mt ton hng, ADD A, R0 hai ton hng, CJNE A, #12H, ABC ba ton hng). Lu v ton hng: trong cc lnh c 2 ton hng th ton hng u tin cn c gi l ton hng ch (Destination), ton hng th hai cn c gi l ton hng ngun (Source). o Ch thch (Comment): lm cho r ngha cho chng trnh. Cc ch thch phi nm trn cng mt dng v bt u bng du chm phy (;). Cc ch thch nu nm trn nhiu dng th mi dng cng phi bt u bng du chm phy (;). Lu : Chi tit v phn ny xem thm ti Chng 7: Lp trnh hp ng trong sch H vi iu khin Tng Vn On.

Gio trnh Vi x l.

39

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. II. CC KIU NH A CH (ADDRESSING MODE):

Trng H Cng nghip Tp.HCM.

1. nh a ch thanh ghi (Register Addressing): c dng truy xut d liu trong cc thanh ghi t R0 n R7. S byte ca lnh: 1 byte. Cu trc lnh: V d: ADD A, R5 Lnh cng ni dung thanh ghi A vi ni dung thanh ghi R5. (Gi s: (A)=05H, (R5)=9AH). M lnh:

M t lnh: Ngoi ra, mt s trng hp c bit kiu nh a ch ny cng dng truy xut d liu trong cc thanh ghi nh: thanh ghi cha A, thanh ghi con tr d liu DPTR, thanh ghi b m chng trnh PC, c nh C v cp thanh ghi AB. V d: INC A INC DPTR Lnh tng ni dung thanh ghi A. Lnh tng ni dung thanh ghi DPTR.

2. nh a ch trc tip (Direct Addressing): c dng truy xut d liu trong cc nh (00H - FFH) hay trong cc thanh ghi (A, B, P0P3, DPH, DPL,) ca b nh bn trong chip. S byte ca lnh: 2 byte. Cu trc lnh:

Gio trnh Vi x l.

40

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d: ADD A, P1 ADD A, 90H Lnh cng ni dung thanh ghi A vi ni dung thanh ghi port 1 hay nh 90H. (Gi s: (A) = 05H, (P1) = (90H) = 9AH).

M lnh:

M t lnh: 3. nh a ch gin tip (Indirect Addressing): c dng truy xut d liu trong cc nh gin tip ca b nh bn trong chip. Cc thanh ghi R0 v R1 c dng cha a ch ca cc nh gin tip (00H - FFH) trong chip. Lu rng, trc cc thanh ghi R0, R1 cn phi c du @. S byte ca lnh: 1 byte. Cu trc lnh: V d: ADD A, @R0 Lnh cng ni dung thanh ghi A vi ni dung nh c a ch cha trong thanh ghi R0. (Gi s: (A) = 05H, (R0) = 3BH, (3BH) = 9AH).

M lnh:

M t lnh: 4. nh a ch tc thi (Immediate Addressing): c dng truy xut mt hng s (gi tr bit trc) thay v l mt bin (gi tr khng bit trc) nh cc kiu nh a ch trn. Lu rng, trc d liu tc thi cn phi c du #. Ch nh a ch tc thi c th dng np d liu vo mi nh v thanh ghi bt k (i vi thanh ghi 8 bit: #00H - #0FFH, i vi thanh ghi 16 bit: #0000H - #0FFFFH). S byte ca lnh: 2 byte. Cu trc lnh: V d: ADD A, #9AH Lnh cng ni dung thanh ghi A vi gi tr 9AH. (Gi s: (A) = 05H). M lnh:

M t lnh:

Gio trnh Vi x l.

41

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 5. nh a ch tng i (Relative Addressing): c s dng cho cc lnh nhy. a ch tng i (hay offset) l mt gi tr 8 bit c du.

Trng H Cng nghip Tp.HCM.

Tm nhy gii hn l: -128 byte 127 byte t v tr ca lnh tip theo sau lnh nhy. S byte ca lnh: 2 byte. Cu trc lnh: V d 1: SJMP AAA Lnh nhy n nhn AAA (Gi s: nhn AAA t trc lnh a ch 0107H, lnh SJMP nm trong b nh ti a ch 0100H v 0101H).

M lnh: M t lnh: xem hnh 3.5.2.1. V d 2: SJMP AAA Lnh nhy n nhn AAA (Gi s: nhn AAA t trc lnh a ch 203BH, lnh SJMP nm trong b nh ti a ch 2040H v 2041H).

M lnh: M t lnh: xem hnh 3.2.5.2.

6. nh a ch tuyt i (Absolute Addressing): c s dng cho cc lnh ACALL v AJMP. a ch tuyt i l mt gi tr 11 bit. Tm nhy gii hn l: trong cng trang 2K hin hnh (trang 2K cha lnh nhy). S byte ca lnh: 2 byte. Cu trc lnh:

Gio trnh Vi x l.

42

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d: AJMP AAA Lnh nhy n nhn AAA (Gi s: nhn AAA t trc lnh a ch 0F46H, lnh AJMP nm trong b nh ti a ch 0900H v 0901H).

M lnh: M t lnh:
FFFFH F800H F800H 1800H 17FFH 1000H 0FFFH 0800H 07FFH 0000H 2K trang 31 0FFFH

2K trang 2 2K trang 1 2K trang 0

32 x 2K (64K)

AAA 2K trang 1

0F46H

0901H 0900H

46H E1H

AJMP AAA

Ban o nh 64K c chia thanh 32 trang 2K


A15 A11A10

0800H
A0

Cach thanh lap a ch cua nhan se nhay ti

5 bit xac nh trang 2K T 5 bit (A15...A11) trong thanh ghi PC

11 bit xac nh a ch trong 1 trang 2K T 11 bit (A10...A0) trong lenh nhay

7. nh a ch di (Long Addressing): c s dng cho cc lnh LCALL v LJMP. a ch di l mt gi tr 16 bit. Tm nhy gii hn l: ton b khng gian nh 64K. S byte ca lnh: 3 byte. Cu trc lnh:

Gio trnh Vi x l.

43

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d: LJMP AAA Lnh nhy n nhn AAA (Gi s: nhn AAA t trc lnh a ch A209H, lnh LJMP nm trong b nh ti a ch 0100H, 0101H v 0102H). M lnh:

FFFFH

AAA 64K

A209H

0102H 0101H 0100H

09H A2H 12H

LJMP AAA

0000H

M t lnh: 8. nh a ch ch s (Indexed Addressing): c dng trong cc ng dng cn to cc bng nhy hay cc bng tm kim. Kiu nh a ch ny dng mt thanh ghi nn (PC hay DPTR) kt hp vi mt offset (A) to thnh dng a ch hiu dng cho lnh. S byte ca lnh: 1 byte. Cu trc lnh:

V d: JMP @A+DPTR Lnh nhy gin tip.

Gio trnh Vi x l.

44

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. III. TP LNH CA 8051 (8051 INSTRUCTION SET):

Trng H Cng nghip Tp.HCM.

Mt s k hiu dng trong lnh: Rn a ch thanh ghi s dng (R0 R7). direct a ch trc tip ca mt byte trong RAM ni (00H-FFH) @Ri a ch gin tip s dng (R0 hoc R1). source Ton hng ngun (Rn, direct hoc @Ri). dest Ton hng ch (Rn, direct hoc @Ri). #data Hng s 8 bit (#00H - #0FFH). #data16 Hng s 16 bit (#0000H - #0FFFFH). bit a ch trc tip ca mt bit (a ch bit). rel Offset 8 bit c du. addr11 a ch 11 bit. addr16 a ch 16 bit. c thay th bi () Ni dung ca (( )) Ni dung c cha bi rrr Thanh ghi ca dy thanh ghi (000 = R0, 001 = R1, , 111 = R7). i a ch gin tip s dng R0 (i = 0) hoc R1 (i = 1). dddddddd Cc bit d liu. aaaaaaaa Cc bit a ch. eeeeeeee a ch tng i. Mt s lu khi lp trnh b vi iu khin 8051: thng bo l mt gi tr tc thi th cn phi t thm k hiu # vo trc gi tr . Nu khng c k hiu # th gi tr c hiu l a ch ca nh. MOV A, #12H ;Np gi tr 12H vo thanh ghi A. MOV A, 12H ;Sao chp ni dung ca nh c a ;ch 12H vo thanh ghi A. y ta cng nn lu rng nu thiu k hiu # th lnh trn cng khng gy ra li trong qu trnh bin dch. V trnh dch hp ng cho l mt lnh hp l. Tuy nhin, kt qu lp trnh s khng ng nh mun ca ngi lp trnh. Cc gi tr tc thi nu c thnh phn ch (A, B, C, , F) ng u th cn phi thm s 0 vo trc thnh phn ch v sau k hiu #. Vic ny bo rng thnh phn ch l mt s HEX ch khng phi l mt k t. MOV A, #BH ;Thiu s 0 gy li khi bin dch. MOV A, #0BH ;Thm s 0 ng. MOV A, #F9H ;Thiu s 0 gy li khi bin dch. MOV A, #0F9H ;Thm s 0 ng.

Gio trnh Vi x l.

45

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

y ta cng nn lu rng vic thiu s 0 thm vo ny s gy li trong qu trnh bin dch i vi cc chng trnh bin dch c. Ngy nay, mt s phn mm bin dch h tr vic ny. iu ny c ngha l ta c th thm hay khng thm s 0 vo th u khng nh hng g n qu trnh bin dch (khng gy ra li khi bin dch). Trong lnh, cc gi tr tc thi hay a ch ca nh c th c biu din di bt k dng no BIN (nh phn), DEC (thp phn) hay HEX (thp lc phn). o a ch nh: cc cu lnh sau y l tng ng nhau: MOV A, 64H ;Sao chp ni dung ca nh c a ;ch 64H vo thanh ghi A. MOV A, 100 ;Sao chp ni dung ca nh c a ;ch 64H vo thanh ghi A. MOV A, 01100100B ;Sao chp ni dung ca nh c a ;ch 64H vo thanh ghi A. o Gi tr tc thi: cc cu lnh sau y l tng ng nhau: MOV A, #0C9H ;Np gi tr C9H vo thanh ghi A. MOV A, #201 ;Np gi tr C9H vo thanh ghi A. MOV A, #11001001B ;Np gi tr C9H vo thanh ghi A. Lu cc hu t i km tng ng cho tng dng: B dng BIN (nh phn), H dng HEX (thp lc phn), D hoc khng c hu t dng DEC (thp phn). Chuyn mt gi tr tc thi hay a ch ca nh ln hn kh nng cha ca mt thanh ghi th s gy ra li (00H-FFH: cho thanh ghi hoc nh 8 bit; 0000H-FFFFH: cho thanh ghi 16 bit DPTR). MOV A, #123H ;Khng hp l v 123H > FFH. MOV A, #214 ;Hp l v 214 (D6H) < FFH (255). MOV A, #0F2H ;Hp l v F2H < FFH. MOV A, 123H ;Khng hp l v 123H > FFH. MOV A, 200 ;Hp l v 200 (C8H) < FFH (255). MOV DPTR, #123H ;Hp l v 123H < FFFFH (16 bit). 1. Nhm lnh s hc: 1.1. Lnh ADD A, <src-byte>: Chc nng: Cng (Add). M t: ADD cng ni dung ca thanh ghi A (A) vi ni dung ca mt byte c a ch c ch ra trong lnh (src- byte) v t kt qu vo thanh ghi A. Cc c b nh hng. o C CY = 1 nu c s nh t bit 7. Ngc li CY = 0. o C AC = 1 nu c s nh t bit 3. Ngc li AC = 0. o C OV = 1 nu c s nh t bit 6 nhng khng c s nh t bit 7 hoc nu c s nh t bit 7 nhng khng c s nh t bit 6. Ngc li OV = 0. o Khi cng hai s nguyn khng du v c du: S khng du: CY = 1 Php ton c nh. S c du: CY = 1 S dng = S m + S m. S m = S dng + S dng.

Gio trnh Vi x l.

46

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Cc dng lnh: ADD A, Rn S byte S chu k M i tng Hot ng ADD A, direct S byte S chu k M i tng Hot ng ADD A, @Ri S byte S chu k M i tng Hot ng ADD A, #data S byte S chu k M i tng Hot ng

Trng H Cng nghip Tp.HCM.

1 1 00101rrr (A) (A) + (Rn) 2 1 00100101 aaaaaaaa (A) (A) + (direct) 1 1 0010011i (A) (A) + ((Ri)) 2 1 00100100 dddddddd (A) (A) + #data

V d: Cho bit trc (A)=C3H, (R0)=47H, (P1)=(90H)=AAH, (47H)=D2H. Sau khi thc thi lnh ADD A, R0 th: (A)=0AH, CY=1, AC=0, OV=0

Sau khi thc thi lnh ADD A, 90H hay ADD A, P1 th: (A)=6DH, CY=1, AC=0, OV=1

Sau khi thc thi lnh ADD A, @R0 th: (A)=95H, CY=1, AC=0, OV=0

A C3H R0 47H 47H D2H

ADD A, @R0

C3H + D2H = 95H

A 95H

Gio trnh Vi x l.

47

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

Sau khi thc thi lnh ADD A, #4EH th: (A)=11H, CY=1, AC=1, OV=0

1.2. ADDC A, <src-byte> Chc nng: Cng c c nh (Add with Carry). M t: ADDC cng ng thi ni dung ca thanh ghi A (A) vi ni dung ca byte c a ch c ch ra trong lnh (src-byte) v c nh (CY), t kt qu vo thanh ghi A. Cc c b nh hng. o C CY = 1 nu c s nh t bit 7. Ngc li CY = 0. o C AC = 1 nu c s nh t bit 3. Ngc li AC = 0. o C OV = 1 nu c s nh t bit 6 nhng khng c s nh t bit 7 hoc nu c s nh t bit 7 nhng khng c s nh t bit 6. Ngc li OV = 0. o Khi cng hai s nguyn khng du v c du: S khng du: CY = 1 Php ton c nh. S c du: CY = 1 S dng = S m + S m. S m = S dng + S dng. Cc dng lnh: ADDC A, Rn S byte S chu k M i tng Hot ng ADDC A, direct S byte S chu k M i tng Hot ng ADDC A,@Ri S byte S chu k M i tng Hot ng ADDC A, #data S byte S chu k M i tng Hot ng 1 1 00110rrr (A) (A) + (C) + (Rn) 2 1 00110101 aaaaaaaa (A) (A) + (C) + (direct) 1 1 0011011i (A) (A) + (C) + ((Ri)) 2 1 00110100 dddddddd (A) (A) + (C) + # data

Gio trnh Vi x l.

48

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d: Cho bit trc (A)=C3H, (R0)=47H, (P1)=(90H)=AAH, (47H)=D2H v c CY=1. Sau khi thc thi lnh ADDC A, R0 th: (A)=0BH, CY=1, AC=0, OV=0

A C3H R0 47H

CY C3H + 47H + 1H = 0BH

ADDC A, R0

A 0BH

Sau khi thc thi lnh ADDC A, 90H hay ADDC A, P1 th: (A)=6DH, CY=1, AC=0, OV=1

Sau khi thc thi lnh ADDC A, @R0 th: (A)=96H, CY=1, AC=0, OV=0

Sau khi thc thi lnh ADDC A, #4EH th: (A)=11H, CY=1, AC=1, OV=0

A C3H 4EH
1.3. SUBB A, <src-byte>

ADDC A, #4EH

C3H + 4EH + 1H = 12H

12H

Chc nng: Tr c s mn (Subtract with Borrow). M t: SUBB tr ni dung ca thanh ghi A (A) vi ni dung ca byte c a ch c ch ra trong lnh (src-byte) cng vi c nh v ct kt qu vo thanh ghi A. Cc c b nh hng. o C CY = 1 nu c s mn cho bit 7. Ngc li CY = 0. o C AC = 1 nu c s mn cho bit 3. Ngc li AC = 0. o C OV = 1 nu c s mn cho bit 6 nhng khng c s mn cho bit 7 hoc nu c s mn cho bit 7 nhng khng c s mn cho bit 6. Ngc li OV = 0. o Khi cng hai s nguyn khng du v c du: S khng du: CY = 1 Php ton c mn. S c du: CY = 1 S dng = S m - S dng. S m = S dng - S m.

Gio trnh Vi x l.

49

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Cc dng lnh: SUBB A, Rn S byte S chu k M i tng Hot ng SUBB A, direct S byte S chu k M i tng Hot ng SUBB A, @Ri S byte S chu k M i tng Hot ng SUBB A, #data S byte S chu k M i tng Hot ng

Trng H Cng nghip Tp.HCM.

1 1 10011rrr (A) (A) (C) (Rn) 2 1 10010101 aaaaaaaa (A) (A) (C) (direct) 1 1 1001011i (A) (A) (C) ((Ri)) 1 1 100110100 dddddddd (A) (A) (C) #data

V d: Cho bit trc (A)=83H, (R0)=78H, (P1)=(90H)=AAH, (78H)=C5H v c CY=1. Sau khi thc thi lnh SUBB A, R0 th: (A)=0AH, CY=0, AC=1, OV=1

Sau khi thc thi lnh SUBB A, 90H hay SUBB A, P1 th: (A)=D8H, CY=1, AC=1, OV=0

Sau khi thc thi lnh SUBB A, @R0 th: (A)=BDH, CY=1, AC=1, OV=0

Gio trnh Vi x l.

50

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

Sau khi thc thi lnh SUBB A, #D6H th: (A)=ACH, CY=1, AC=1, OV=0

1.4. INC byte Chc nng: Tng thm 1 (Increment). M t: Lu : Tng ni dung ca byte c a ch c ch ra trong lnh (byte) thm 1. Cc c khng b nh hng. Khi lnh ny c dng thay i gi tr ca mt port xut th gi tr c dng lm d liu ban u ca port c ly t b cht d liu xut, khng phi c ly t cc chn nhp. INC A S byte S chu k M i tng Hot ng INC Rn S byte S chu k M i tng Hot ng INC direct S byte S chu k M i tng Hot ng INC @Ri S byte S chu k M i tng Hot ng Sau khi thc thi lnh INC A th: (A)=C4H

Cc dng lnh: 1 1 00000100 (A) (A) + 1 1 1 00001rrr (Rn) (Rn) + 1 2 1 00000101 aaaaaaaa (direct) (direct) + 1 1 1 0000011i ((Ri)) ((Ri)) + 1

V d: Cho bit trc (A)=C3H, (R0)=69H, (P1)=(90H)=AAH, (69H)=7FH.

Sau khi thc thi lnh INC 90H hay INC P1 th: (P1)=(90H)=ABH

Gio trnh Vi x l.

51

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh INC @R0 th: (@R0)=(69H)=80H

Trng H Cng nghip Tp.HCM.

Sau khi thc thi lnh INC R0 th: R0=6AH

1.5. INC DPTR Chc nng: Tng con tr d liu (Increment Data Pointer). M t: Tng ni dung ca thanh ghi con tr d liu 16-bit thm 1. Cc c khng b nh hng. S byte S chu k M i tng Hot ng V d 1: Cho bit trc (DPTR)=1234H. Sau khi thc thi lnh INC DPTR th: (DPTR)=1235H vi (DPH)=12H v (DPL)=35H 1 2 10100011 (DPTR) (DPTR) + 1

V d 2: Cho bit trc (DPH)=12H v (DPL)=FFH. Sau khi thc thi lnh INC DPTR th: (DPTR)=1300H vi (DPH)=13H v (DPL)=00H

Lu :

Khng c lnh gim ni dung ca DPTR (DEC DPTR). Nu mun gim ni dung ca DPTR ta phi vit mt on chng trnh con thc hin iu ny. Chng trnh con c minh ha nh sau: DEC_DPTR: ;Chng trnh con gim DPTR. PUSH ACC ;Ct tm gi tr ACC. DEC DPL ;Gim byte thp ca DPTR. MOV A, DPL ;So snh byte thp ca DPTR CJNE A,#0FFH, SKIP ;vi FFH. DEC DPH ;Gim byte cao ca DPTR. SKIP: POP ACC ;Phc hi gi tr ACC. RET

Gio trnh Vi x l.

52

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 1.6. DEC byte Chc nng: Gim bt 1 (Decrement). M t: Lu :

Trng H Cng nghip Tp.HCM.

Gim ni dung ca byte c a ch c ch ra trong lnh (byte) bt 1. Cc c khng b nh hng. Khi lnh ny c dng thay i gi tr ca mt port xut th gi tr c dng lm d liu ban u ca port c ly t b cht d liu xut, khng phi c ly t cc chn nhp. DEC A S byte S chu k M i tng Hot ng DEC Rn S byte S chu k M i tng Hot ng DEC direct S byte S chu k M i tng Hot ng DEC @Ri S byte S chu k M i tng Hot ng 1 1 00011rrr (Rn) (Rn) 1 2 1 00010101 aaaaaaaa (direct) (direct) 1 1 1 0001011i ((Ri)) ((Ri)) 1 1 1 00010100 (A) (A) 1

Cc dng lnh:

V d: Cho bit trc (A)=C3H, (R0)=60H, (P1)=(90H)=AAH, (60H)=7AH. Sau khi thc thi lnh DEC A th: (A)=C2H

Sau khi thc thi lnh DEC 90H hay DEC P1 th: (P1)=(90H)=A9H

Sau khi thc thi lnh DEC @R0 th: (@R0)=(60H)=79H

Gio trnh Vi x l.

53

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh DEC R0 th: R0=5FH

Trng H Cng nghip Tp.HCM.

1.7. MUL AB Chc nng: Nhn (Multiply). M t: MUL AB nhn cc s nguyn khng du 8-bit cha trong thanh ghi A v thanh ghi B. Tch s l mt gi tr 16 bit, byte thp (8 bit thp) c ct trong thanh ghi A cn byte cao (8 bit cao) c ct trong thanh ghi B. Nu tch s ln hn 255 (0FFH) th c trn OV=1. C nh CY lun lun b xa. S byte S chu k M i tng Hot ng 1 4 10100100 (B) HIGH BYTE OF (A) (B) (A) LOW BYTE OF (A) (B)

V d 1: Cho bit trc (A)=02H, (B)=7CH. Sau khi thc thi lnh MUL AB th: (B)= 00H, (A)= F8H, CY=0, OV=0.

V d 2: Cho bit trc (A)=C3H, (B)=AAH. Sau khi thc thi lnh MUL AB th: (B)= 81H, (A)= 7EH, CY=0, OV=1.

1.8. DIV AB Chc nng: Chia (Divide). M t: DIV AB chia s nguyn khng du 8-bit cha trong thanh ghi A cho s nguyn khng du 8-bit cha trong thanh ghi B. Thng s c ct trong thanh ghi A cn s d c ct trong thanh ghi B. C CY v c OV b xo. Nu ban u B cha 00H, gi tr tr v trong thanh ghi A v thanh ghi B khng c xc nh v c OV=1. C CY c xa trong mi trng hp. S byte S chu k M i tng Hot ng 1 4 10000100 (A) QUOTIENT OF (A) / (B) (B) REMAINDER OF (A) / (B)

Gio trnh Vi x l.

54

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. V d 1: Cho bit trc (A)=C3H, (B)=0AH.

Trng H Cng nghip Tp.HCM.

Sau khi thc thi lnh DIV AB th: (B)= 05H, (A)= 13H, CY=0, OV=0.

V d 2: Cho bit trc (A)=00H, (B)=0AH. Sau khi thc thi lnh DIV AB th: (B)= 00H, (A)= 00H, CY=0, OV=0.

V d 3: Cho bit trc (A)=C3H, (B)=00H. Sau khi thc thi lnh DIV AB th: (B)= yyH, (A)= xxH, CY=0, OV=1.
DIV AB

A C3H B
1.9. DA A

00H

C3H / 00H = xxH d yyH

yyH

A xxH

Chc nng: Hiu chnh thp phn ni dung ca thanh ghi A i vi php cng (Decimal-adjust Accumulator for Addition) M t: DA A hiu chnh gi tr 8-bit trong thanh ghi A (gi tr ny l kt qu php cng hai ton hng c dng BCD - gi trc ) to ra hai digit 4 bit. Php cng c thc hin bi lnh ADD hoc ADDC, lnh DA A khng p dng cho php tr SUBB). Nu c AC = 1 hoc nu 4 bit thp ca thanh ghi A c gi tr > 9 (xxxx1010 xxxx1111), th 6c cng vi ni dung ca thanh ghi A to ra s BCD 4 bit thp. Sau khi cng, c CY = 1 nu c s nh t 4 bit thp chuyn n tt c 4 bit cao. Nu c CY = 1 hoc nu 4 bit cao ca thanh ghi A c gi tr > 9 (1010xxxx 1111xxxx), th 6c cng vi 4 bit cao to ra s BCD 4 bit cao. Sau khi cng c CY = 1 nu c s nh t 4 bit cao nhng c CY khng b xa. Vy th c CY ch ra rng tng ca 2 ton hng BCD ban u ln hn 99. C OV khng b nh hng. Tt c s kin trn ch xy ra trong mt chu k my. Lnh ny thc hin php bin i thp phn bng cch cng 00H, 06H, 60H hay 66H vi ni dung ca thanh ghi A ty thuc vo ni dung ban u ca thanh ghi A v cc iu kin ca t trng thi chng trnh PSW. DA A khng th n gin bin i s hex trong thanh ghi A thnh s dng BCD, DA A cng khng p dng cho php tr thp phn. S byte S chu k M i tng Gio trnh Vi x l. 1 1 11010100 55 Bin son: Phm Quang Tr

Lu :

Chng 3: Tp lnh ca 8051. Hot ng

Trng H Cng nghip Tp.HCM. Gi s ni dung ca thanh ghi A l BCD IF [[(A3 A0) > 9] OR [(AC) = 1]] THEN (A3 A0) (A3 A0) + 6 AND IF [[(A7 A4) > 9] OR [(C) = 1]] THEN (A7 A4) (A7 A4) + 6

V d 1: Cho bit trc (A)=56H biu din BCD ca s 56 (R3)=67H biu din BCD ca s 67 ADD A, R3 DA A th: c CY=1 v (A)=23 biu din BCD ca s 123 (56+67) Sau khi thc thi chui lnh:

V d 2: Cho bit trc (A)=59H biu din BCD ca s 59 (R3)=28H biu din BCD ca s 28 ADD A, R3 DA A th: c CY=0 v (A)=87 biu din BCD ca s 87 (59+28) Sau khi thc thi chui lnh:

V d 3: Cho bit trc (A)=86H biu din BCD ca s 86 (R3)=92H biu din BCD ca s 92 ADD A, R3 DA A th: c CY=1 v (A)=78 biu din BCD ca s 178 (86+92) Sau khi thc thi chui lnh:

Gio trnh Vi x l.

56

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 4: Cho bit trc (A)=56H biu din BCD ca s 56 (R3)=67H biu din BCD ca s 67 c CY=1 ADDC A, R3 DA A th: c CY=1 v (A)=24 biu din BCD ca s 124 (56+67+1) Sau khi thc thi chui lnh:

Lu :

Cc gi tr BCD c th c tng thm 1 n v hoc gim i 1 n v bng cch cng vi 01H (khi tng) hoc cng vi 99H (khi gim).

o V d 1: Gi s cho (A)=39H biu din BCD ca s 39. ADD A, #01H DA A th: c CY=0 v (A)=40H biu din BCD ca s 40. Sau khi thc thi chui lnh: o V d 2: Gi s cho (A)=30H biu din BCD ca s 30. ADD A, #99H DA A th: c CY=1 v (A)=29H biu din BCD ca s 29. Sau khi thc thi chui lnh: 2. Nhm lnh logic: Bng trng thi ca cc php ton logic AND OR XOR CPL A 0 0 1 1 B 0 1 0 1 A AND B 0 0 0 1 A OR B 0 1 1 1 A XOR B 0 1 1 0 CPL A 1 1 0 0

2.1. ANL <dest-byte>, <src-byte> Chc nng: AND hai ton hng (Logical-AND). M t: Lu : ANL thc hin php ton AND tng bit gia hai ton hng c ch ra trong lnh v lu kt qu vo ton hng ch (dest-byte). Cc c khng b nh hng. Khi lnh ny c dng sa i mt port xut, gi tr c dng lm d liu ban u ca port c c t b cht d liu xut, khng phi t cc chn port.

Gio trnh Vi x l.

57

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Cc dng lnh: ANL A, Rn S byte S chu k M i tng Hot ng ANL A, direct S byte S chu k M i tng Hot ng ANL A, @Ri S byte S chu k M i tng Hot ng ANL A, #data S byte S chu k M i tng Hot ng ANL direct, A S byte S chu k M i tng Hot ng ANL direct, #data S byte S chu k M i tng Hot ng Sau khi thc thi lnh ANL A, R0 th: (A)=02H
A C3H R0 2AH
ANL A, R0

Trng H Cng nghip Tp.HCM.

1 1 01011rrr (A) (A) AND (Rn) 2 1 01010101 aaaaaaaa (A) (A) AND (direct) 1 1 0101011i (A) (A) AND ((Ri)) 2 1 01010100 dddddddd (A) (A) AND #data 2 1 01010010 aaaaaaaa (direct) (direct) AND (A) 3 2 01010011 aaaaaaaa dddddddd (direct) (direct) AND #data

V d: Cho bit trc (A)=C3H, (R0)=2AH, (P3)=(B0H)=75H, (2AH)=55H.

C3H AND 2AH = 02H


AND

A 02H

11000011B 00101010B 00000010B

Gio trnh Vi x l.

58

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh ANL A, B0H hay ANL A, P3 th: (A)=41H

Trng H Cng nghip Tp.HCM.

Sau khi thc thi lnh ANL A, @R0 th: (A)=41H

Sau khi thc thi lnh ANL A, #2AH th: (A)=02H

Sau khi thc thi lnh ANL B0H, A hay ANL P3, A th: (P3)=41H

Sau khi thc thi lnh ANL 2AH, #B0H th: (2AH)=10H

Gio trnh Vi x l.

59

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 2.2. ORL <dest-byte>, <src-byte> Chc nng: OR logic hai ton hng (Logical-OR). M t: Lu :

Trng H Cng nghip Tp.HCM.

ORL thc hin php ton OR tng bit gia hai ton hng c ch ra trong lnh v lu kt qu vo ton hng ch (dest-byte). Cc c khng b nh hng. Khi lnh ny c dng sa i mt port xut, gi tr c dng lm d liu ban u ca port c c t b cht d liu xut, khng phi t cc chn port. ORL A, Rn S byte S chu k M i tng Hot ng ORL A, direct S byte S chu k M i tng Hot ng ORL A, @Ri S byte S chu k M i tng Hot ng ORL A, #data S byte S chu k M i tng Hot ng ORL direct, A S byte S chu k M i tng Hot ng ORL direct, #data S byte S chu k M i tng Hot ng

Cc dng lnh: 1 1 01001rrr (A) (A) OR (Rn) 2 1 01000101 aaaaaaaa (A) (A) OR (direct) 1 1 0100011i (A) (A) OR ((Ri)) 2 1 01000100 dddddddd (A) (A) OR #data 2 1 01000010 aaaaaaaa (direct) (direct) OR (A) 3 2 01000011 aaaaaaaa dddddddd (direct) (direct) OR #data

Gio trnh Vi x l.

60

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d: Cho bit trc (A)=C3H, (R0)=2AH, (P3)=(B0)=75H, (2AH)=55H. Sau khi thc thi lnh ORL A, R0 th: (A)=EBH

Sau khi thc thi lnh ORL A, B0H hay ORL A, P3 th: (A)=F7H

Sau khi thc thi lnh ORL A, @R0 th: (A)=D7H

Sau khi thc thi lnh ORL A, #2AH th: (A)=EBH

A C3H 2AH

ORL A, #2AH

C3H OR 2AH = EBH


OR

A EBH

11000011B 00101010B 11101011B

Sau khi thc thi lnh ORL B0H, A hay ORL P3, A th: (P3)=F7H

Gio trnh Vi x l.

61

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh ORL 2AH, #B0H th: (2AH)=F5H
2AH 55H B0H
ORL 2AH, #B0H

Trng H Cng nghip Tp.HCM.

55H OR B0H = F5H


OR

2AH F5H

01010101B 10110000B 11110101B

2.3. XRL <dest-byte>, <src-byte> Chc nng: XOR logic hai ton hng (Logical Exclusive-OR). M t: Lu : XRL thc hin php ton XOR tng bit gia hai ton hng c ch ra trong lnh v lu kt qu vo ton hng ch (dest-byte). Cc c khng b nh hng. Khi lnh ny c dng sa i mt port xut, gi tr c dng lm d liu ban u ca port c c t b cht d liu xut, khng phi t cc chn port. XRL A, Rn S byte S chu k M i tng Hot ng XRL A, direct S byte S chu k M i tng Hot ng XRL A, @Ri S byte S chu k M i tng Hot ng XRL A, #data S byte S chu k M i tng Hot ng XRL direct, A S byte S chu k M i tng Hot ng

Cc dng lnh: 1 1 01101rrr (A) (A) (Rn) 2 1 01100101 aaaaaaaa (A) (A) (direct) 1 1 0110011i (A) (A) ((Ri)) 2 1 01100100 dddddddd (A) (A) #data 2 1 01100010 aaaaaaaa (direct) (direct) (A)

Gio trnh Vi x l.

62

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. XRL direct, #data S byte S chu k M i tng Hot ng Sau khi thc thi lnh XRL A, R0 th: (A)=E9H

Trng H Cng nghip Tp.HCM. 3 2 01100011 aaaaaaaa dddddddd (direct) (direct) #data

V d: Cho bit trc (A)=C3H, (R0)=2AH, (P3)=(B0)=75H, (2AH)=55H.

Sau khi thc thi lnh XRL A, B0H hay XRL A, P3 th: (A)=B6H

Sau khi thc thi lnh XRL A, @R0 th: (A)=96H

Sau khi thc thi lnh XRL A, #2AH th: (A)=E9H

Sau khi thc thi lnh XRL B0H, A hay XRL P3, A th: (P3)=B6H

Gio trnh Vi x l.

63

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh XRL 2AH, #B0H th: (2AH)=E5H
2AH 55H B0H
XRL 2AH, #B0H

Trng H Cng nghip Tp.HCM.

55H XOR B0H = E5H


XOR

2AH E5H

01010101B 10110000B 11100101B

2.4. CLR A Chc nng: Xa thanh ghi A (Clear Acc). M t: Thanh ghi A b xa (tt c cc bit u bng 0). Cc c khng b nh hng. S byte S chu k M i tng Hot ng V d: Cho bit trc (A)=5CH. Sau khi thc thi lnh CLR A th: (A)=00H 1 1 11100100 (A) 0 Cc dng lnh:

2.5. CPL A Chc nng: Ly b ni dung thanh ghi A (Complement Acc). M t: Mi mt bit ca thanh ghi A c ly b logic (b 1: cc bit 1 c th i thnh bit 0 v cc bit 0 c th i thnh bit 1). Cc c khng b nh hng. S byte S chu k M i tng Hot ng V d: Cho bit trc (A)=5CH. Sau khi thc thi lnh CPL A th: (A)=A3H
CPL A

1 1 11110100 (A) NOT(A)

A 5CH

A A3H

01011100B 10100011B

Gio trnh Vi x l.

64

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 2.6. RL A Chc nng: Quay tri thanh ghi A (Rotate Acc Left). M t:

Trng H Cng nghip Tp.HCM.

8 bit trong thanh ghi A c quay tri 1 bit. Bit 7 c quay n v tr ca bit 0. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 1 1 00100011 (An+1) (An), n = 0 6 (A0) A7

V d: Cho bit trc (A)=C5H. Sau khi thc thi lnh RL A th: (A)=8BH

2.7. RLC A Chc nng: Quay tri thanh ghi A cng vi c nh. M t: 8 bit trong thanh ghi A v c nh cng c quay tri 1 bit. Bit 7 c di chuyn n c CY v trng thi ban u ca c CY c a n v tr ca bit 0. Cc c khc khng b nh hng. S byte S chu k M i tng Hot ng 1 1 00110011 (An+1) (An), n = 0 6 (A0) (C), (C) A7

V d: Cho bit trc (A)=C5H v c CY=0. Sau khi thc thi lnh RLC A th: (A)=8AH v c CY=1

Gio trnh Vi x l.

65

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 2.8. RR A Chc nng: Quay phi thanh ghi A (Rotate Acc Right). M t:

Trng H Cng nghip Tp.HCM.

8 bit trong thanh ghi A c quay phi 1 bit. Bit 0 c quay n v tr ca bit 7. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 1 1 00000011 (An) (An+1), n = 0 6 (A7) A0

V d: Cho bit trc (A)=C5H. Sau khi thc thi lnh RR A th: (A)=E2H

2.9. RRC A Chc nng: Quay phi thanh ghi A cng vi c nh. M t: 8 bit trong thanh ghi A v c nh cng c quay phi 1 bit. Bit 0 c di chuyn n c nh v trng thi ban u ca c nh c a n v tr ca bit 7. Cc c khc khng b nh hng. S byte S chu k M i tng Hot ng 1 1 00010011 (An) (An+1), n = 0 6 (A7) (C) (B) A0

V d: Cho bit trc (A)=C5H v c CY=0. Sau khi thc thi lnh RRC A th: (A)=62H v c CY=1

Gio trnh Vi x l.

66

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 2.10. SWAP A

Trng H Cng nghip Tp.HCM.

Chc nng: Tro i ni dung hai na thp v cao ca thanh ghi A (Swap nibble). M t: SWAP A tro i ni dung hai na thp v cao ca thanh ghi A (cc bit t 3 n 0 cc bit t 7 n 4). Thao tc ny cn c th c hiu nh l quay thanh ghi A i 4 bit. Cc c khng b nh hng. S byte S chu k M i tng Hot ng V d: Cho bit trc (A)=C5H. Sau khi thc thi lnh SWAP A th: (A)=5CH 1 1 11000100 (A3 A0) (A7 A4)

Lu :

Lnh ny c th c dng chuyn i gi tr nh phn trong thanh ghi A (gi tr ny nh hn 100) thnh s BCD nh sau: MOV DIV SWAP ADD B, #10 AB A A, B ;Chia gi tr cho 10 tch ra ;(A)=digit chc (B)=digit n v. ;a digit chc ln na cao ca ACC. ;Thm digit n v vo na thp.

3. Nhm lnh di chuyn d liu: 3.1. MOV <dest-byte>, <src-byte> Chc nng: Di chuyn ni dung ca ton hng ngun (src-byte) n ton hng ch (destbyte). M t: Ni dung ca byte c ch ra bi ton hng th hai c sao chp vo v tr c xc nh bi ton hng th nht. Byte ngun khng b nh hng. Cc thanh ghi khc v cc c khng b nh hng. MOV A, Rn S byte S chu k M i tng Hot ng MOV A, direct S byte S chu k M i tng Hot ng Lu : Gio trnh Vi x l.

Cc dng lnh: 1 1 11101rrr (A) (Rn) 2 1 11100101 aaaaaaaa (A) (direct) MOV A, ACC l lnh khng hp l. 67 Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. MOV A, @Ri S byte S chu k M i tng Hot ng MOV A, #data S byte S chu k M i tng Hot ng MOV Rn, A S byte S chu k M i tng Hot ng MOV Rn, direct S byte S chu k M i tng Hot ng MOV Rn, #data S byte S chu k M i tng Hot ng MOV direct, A S byte S chu k M i tng Hot ng MOV direct, Rn S byte S chu k M i tng Hot ng MOV direct, direct S byte S chu k M i tng Hot ng 1 1 1110011i (A) ((Ri))

Trng H Cng nghip Tp.HCM.

2 1 01110100 dddddddd (A) #data 1 1 11111rrr (Rn) (A) 2 2 10101rrr (Rn) (direct) 2 1 01111rrr (Rn) #data

aaaaaaaa

dddddddd

2 1 11110101 aaaaaaaa (direct) (A) 2 2 10001rrr (direct) (Rn)

aaaaaaaa

3 2 10000101 aaaaaaaa aaaaaaaa (direct) (direct)

Lu : byte 2 cha a ch ngun, byte 3 cha a ch ch.

Gio trnh Vi x l.

68

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. MOV direct, @Ri S byte S chu k M i tng Hot ng MOV direct, #data S byte S chu k M i tng Hot ng MOV @Ri, A S byte S chu k M i tng Hot ng MOV @Ri, direct S byte S chu k M i tng Hot ng MOV @Ri, #data S byte S chu k M i tng Hot ng

Trng H Cng nghip Tp.HCM. 2 2 1000011i (direct) ((Ri))

aaaaaaaa

3 2 01110101 aaaaaaaa dddddddd (direct) #data 1 1 1111011i ((Ri)) (A) 2 2 1010011i aaaaaaaa ((Ri)) (direct) 2 1 0111011i dddddddd ((Ri)) #data

V d: Cho bit trc (A)=5FH, (R0)=30H, (30H)=40H, (P1)=CAH. Sau khi thc thi lnh MOV A, R0 th: (A)=30H, (R0)=30H

Sau khi thc thi lnh MOV A, 30H th: (A)=40H, (30H)=40H

Sau khi thc thi lnh MOV A, @R0 th: (A)=40H, (R0)=30H, (30H)=40H

Gio trnh Vi x l.

69

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh MOV A, #30H th: (A)=30H

Trng H Cng nghip Tp.HCM.

Sau khi thc thi lnh MOV R0, A th: (A)=5FH, (R0)=5FH

Sau khi thc thi lnh MOV R0, P1 th: (R0)=CAH, (P1)=CAH

Sau khi thc thi lnh MOV R0, #90H th: (R0)=90H

Sau khi thc thi lnh MOV P1, A th: (A)=5FH, (P1)=5FH

Sau khi thc thi lnh MOV P1, R0 th: (R0)=30H, (P1)=30H

Sau khi thc thi lnh MOV P1, 30H th: (30H)=40H, (P1)=40H

Sau khi thc thi lnh MOV P1, @R0 th: (R0)=30H, (30H)=40H, (P1)=40H

Gio trnh Vi x l.

70

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh MOV 30H, #30H th: (30H)=30H

Trng H Cng nghip Tp.HCM.

Sau khi thc thi lnh MOV @R0, A th: (A)=5FH, (30H)=5FH, (R0)=30H

Sau khi thc thi lnh MOV @R0, P1: (30H)=CAH, (P1)=CAH, (R0)=30H

Sau khi thc thi lnh MOV @R0, #90H th: (30H)=90H, (R0)=30H

3.2. MOVC A, @A+ <base-reg> Chc nng: Di chuyn byte m hoc byte hng s. M t: MOVC np cho thanh ghi A byte m hoc byte hng s t b nh chng trnh. a ch ca byte c tm np l tng ca gi tr 8 bit khng du ban u cha trong thanh ghi A vi ni dung ca thanh ghi nn 16 bit (thanh ghi nn c th l con tr d liu hoc PC). Trong trng hp sau, thanh ghi PC c tng ch n a ch ca lnh tip theo trc khi c cng vi ni dung ca thanh ghi A, cc thanh ghi nn khng b thay i. Php cng bit th 16 do s nh t 8 bit thp c th truyn qua cc bit cao. Cc c khng b nh hng. MOVC A, @A+DPTR S byte S chu k M i tng Hot ng MOVC A, @A+PC S byte S chu k M i tng Hot ng

Cc dng lnh: 1 2 10010011 (A) ((A)+(DPTR)) 1 2 10000011 (A) ((A)+(PC))

Gio trnh Vi x l.

71

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 1: Cho bit trc (A)=7BH, (PC)=345H, (DPTR)=1234H. nh ROM ni (3C0H)=AAH. nh ROM ngoi (12AFH)=BBH. Sau khi thc thi lnh MOVC A, @A+PC th: (A)=AAH

Sau khi thc thi lnh MOVC A, @A+DPTR th: (A)=BBH

V d 2: Cho chui lnh sau: MOVC A, @A+PC ;(@A+PC)=([A]+[PC]) SJMP $ ; di lnh l 2 byte. DULIEU: DB 66H,77H,88H DB 99H,0AAH DB 0BBH Sau khi thc thi chui lnh th: (A) = 66H nu trc khi thc thi lnh ta c (A) = 02H. (A) = 77H nu trc khi thc thi lnh ta c (A) = 03H. (A) = 88H nu trc khi thc thi lnh ta c (A) = 04H. (A) = 99H nu trc khi thc thi lnh ta c (A) = 05H. (A) = AAH nu trc khi thc thi lnh ta c (A) = 06H. (A) = BBH nu trc khi thc thi lnh ta c (A) = 07H. V d 3: Cho chui lnh sau: MOV DPTR, #CODEDISP MOVC A, @A+DPTR ;(@A+DPTR)=([A]+[DPTR]) SJMP $ ; di lnh l 2 byte. CODEDISP: DB 48H,5AH,6BH,0A9H,0F5H,90H Sau khi thc thi chui lnh th: (A) = 48H nu trc khi thc thi lnh ta c (A) = 00H. (A) = 5AH nu trc khi thc thi lnh ta c (A) = 01H. (A) = 6BH nu trc khi thc thi lnh ta c (A) = 02H. (A) = A9H nu trc khi thc thi lnh ta c (A) = 03H. (A) = F5H nu trc khi thc thi lnh ta c (A) = 04H. (A) = 90H nu trc khi thc thi lnh ta c (A) = 05H.

Gio trnh Vi x l.

72

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 3.3. MOVX <dest-byte>, <src-byte> Chc nng: Di chuyn b nh ngoi (Move External). M t:

Trng H Cng nghip Tp.HCM.

MOVX chuyn d liu gia thanh ghi A vi ni dung ca mt byte trong b nh d liu ngoi (ta dng k hiu X ni tip vi MOV). Cc lnh ny c chia lm 2 loi, hai loi ny khc nhau ch chng cung cp a ch gin tip 8 bit hay 16 bit cho b nh d liu ngoi c dung lng 256 byte hay 64 KB. Vi loi th nht, s dng thanh ghi R0 hoc R1 lu gi a ch ca d liu cn truy xut thuc RAM ngoi. Loi ny dng trong trng hp b nh RAM c dung lng nh (ti a l 256 byte). Port 1 & Port 2 l port xut/nhp d liu. Vi loi th hai, s dng thanh ghi DPTR lu gi a ch ca d liu cn truy xut thuc RAM ngoi. Loi ny dng trong trng hp b nh RAM c dung lng ln (ti a l 64 KB). Port 1 l port xut/nhp d liu. Trong nhiu tnh hung ta c th trn hai loi trn ca lnh MOVX. Mt dy RAM ln vi cc ng a ch cao c iu khin bi P2 c th c nh a ch thng qua con tr d liu hoc vi m xut ra cc bit a ch cao n P2 c tip theo bi mt lnh MOVX s dng R0 hoc R1. MOVX A, @Ri S byte S chu k M i tng Hot ng MOVX A, @DPTR S byte S chu k M i tng Hot ng MOVX @Ri, A S byte S chu k M i tng Hot ng MOVX @DPTR, A S byte S chu k M i tng Hot ng

Cc dng lnh: 1 2 11100011i (A) ((Ri)) 1 2 11100000 (A) ((DPTR)) 1 2 11110011 ((Ri)) (A) 1 2 11110000 ((DPTR)) (A)

Gio trnh Vi x l.

73

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d: Cho bit trc (A)=AAH, (DPTR)=1234H, (R0)=34H. nh RAM ngoi 256 byte: (34H)=12H & 64 KB: (1234H)=7FH Sau khi thc thi lnh MOVX A, @R0 th: (A)=12H

Sau khi thc thi lnh MOVX @R0, A th: nh RAM ngoi (34H)=AAH

Sau khi thc thi lnh MOVX A, @DPTR th: (A)=7FH

Sau khi thc thi lnh MOVX @DPTR, A th: (1234H)=AAH

Gio trnh Vi x l.

74

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 3.4 MOV DPTR, #data16

Trng H Cng nghip Tp.HCM.

Chc nng: Np hng s 16-bit cho con tr d liu DPTR. M t: Con tr d liu c np bi hng s 16-bit ch ra trong lnh. Hng s 16-bit c t byte 2 v byte 3 ca lnh. Byte 2 l byte cao c np cho DPH cn byte 3 l byte thp c np cho DPL. Cc c khng b nh hng. S byte S chu k M i tng Hot ng V d: Sau khi thc thi lnh MOV DPTR, #1234H th: 3 2 10010000 dddddddd dddddddd (DPTR) #data16

3.5. PUSH direct Chc nng: Ct vo ngn xp (stack). M t: Con tr stack c tng bi 1. Ni dung ca ton hng c ch ra trong lnh sau c sao chp vo RAM ni ti a ch c tr n bi con tr stack. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 2 2 11000000 aaaaaaaa (SP) (SP) + 1 ((SP)) (direct)

V d: Ct tm thi ni dung ca thanh ghi A, B v R0 vo ngn xp. Cho bit trc (A)=AAH, (B)=BBH, (R0)=CCH, (SP)=5FH. PUSH A PUSH B PUSH 00H Th: (SP)=62H, (60H)=AAH, (61H)=BBH, (62H)=CCH Sau khi thc thi chui lnh:

Gio trnh Vi x l.

75

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

3.6. POP direct Chc nng: Ly ra t ngn xp (stack). M t: Ni dung ca vng RAM ni c nh a ch bi con tr stack SP c c v ni dung con tr stack c gim bi 1. Gi tr c c sau c chuyn n byte c nh a ch trc tip ch ra trong lnh. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 2 2 11010000 aaaaaaaa (direct) ((SP)) (SP) (SP) 1

V d: Ly li ni dung ca thanh ghi A, B v R0 ct vo ngn xp lc u (v d trn). POP 00H POP B POP A Th: (SP)=5FH, (R0)=CCH, (B)=BBH, (A)=AAH Sau khi thc thi chui lnh:

Gio trnh Vi x l.

76

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 3.7. XCH A, <byte>

Trng H Cng nghip Tp.HCM.

Chc nng: Tro i ni dung ca thanh ghi A vi ni dung ca mt byte M t: XCH np cho thanh ghi A ni dung ca byte ch ra trong lnh, ng thi ghi ni dung ban u ca thanh ghi A cho byte va nu trn. Ton hng ngun ng thi l ton hng ch v ngc li. XCH A, Rn S byte S chu k M i tng Hot ng XCH A, direct S byte S chu k M i tng Hot ng XCH A, @Ri S byte S chu k M i tng Hot ng

Cc dng lnh: 1 1 11001rrr (A) (Rn) 2 1 11000101 aaaaaaaa (A) (direct) 1 1 1100011i (A) ((Ri))

V d: Cho bit trc (A)=3FH, (R0)=20H, (20H)=75H. Sau khi thc thi lnh XCH A, R0 th: (A)=20H, (R0)=3FH

Sau khi thc thi lnh XCH A, 20H th: (A)=75H, (20H)=3FH

Sau khi thc thi lnh XCH A, @R0 th: (A)=75H, (20H)=3FH, (R0)=20H

Gio trnh Vi x l.

77

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 3.8. XCHD A, @Ri Chc nng: Tro i digit (Exchange Digit). M t:

Trng H Cng nghip Tp.HCM.

XCHD tro i ni dung na thp ca thanh ghi A (biu din mt digit s hex hoc BCD) vi ni dung na thp ca mt byte trong RAM ni, byte ny c nh a ch gin tip bi thanh ghi ch ra trong lnh. Na cao ca cc thanh ghi va nu trn khng b nh hng v cc c cng khng b nh hng. S byte S chu k M i tng Hot ng 1 1 110101i (A3 A0) (Ri3 Ri0)

V d: Cho bit trc (A)=36H, (R0)=20H, (20H)=75H. Sau khi thc thi lnh XCHD A, @R0 th: (A)=35H, (20H)=76H

4. Nhm lnh x l bit: 4.1. CLR bit Chc nng: Xa bit. M t: Bit c ch ra trong lnh c xa. Cc c khng b nh hng. CLR c th thao tc trn c nh v trn mt bit bt k c nh a ch bit. CLR C S byte S chu k M i tng Hot ng CLR bit S byte S chu k M i tng Hot ng Sau khi thc thi lnh CLR C th: c CY=0

Cc dng lnh: 1 1 11000011 (C) 0 2 1 11000010 (bit) 0

bbbbbbbb

V d: Cho bit trc c CY=1, (P1)=FFH.

Gio trnh Vi x l.

78

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh CLR P1.3 th: P1.3=0 tc lm (P1)=F7H

Trng H Cng nghip Tp.HCM.

4.2. CPL bit Chc nng: Ly b bit (Complex). M t: Bit c ch ra trong lnh c ly b. Mt bit c gi tr 1 c i thnh 0 v ngc li. Cc c khng b nh hng. CPL c th thao tc trn c nh v trn mt bit bt k c nh a ch bit. Khi lnh ny c dng lm thay i gi tr ca mt chn xut (bt k chn no ca mt port) th gi tr c dng lm d liu ban u ca chn c ly t b cht d liu xut, khng phi c ly t chn nhp. CPL C S byte S chu k M i tng Hot ng CPL bit S byte S chu k M i tng Hot ng Sau khi thc thi lnh CPL C th: c CY=0

Lu :

Cc dng lnh: 1 1 10110011 (C) NOT(C) 2 1 10110010 bbbbbbbb (bit) NOT(bit)

V d: Cho bit trc c CY=1, (P1)=FFH.

Sau khi thc thi lnh CPL P1.3 th: P1.3=0 tc lm (P1)=F7H

Gio trnh Vi x l.

79

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 4.3. SETB <bit> Chc nng: Set bit bng 1 (Set Bit). M t:

Trng H Cng nghip Tp.HCM.

SETB set bit c ch ra trong lnh bng 1. SETB c th thao tc trn c nh hoc cc bit bt k c nh a ch bit. Cc c khng b nh hng. SETB C S byte S chu k M i tng Hot ng SETB bit S byte S chu k M i tng Hot ng

Cc dng lnh: 1 1 11010011 (C) 1 2 1 11010010 (bit) 1

bbbbbbbb

V d: Cho bit trc c CY=0, (P1)=00H. Sau khi thc thi lnh SETB C th: c CY=1

Sau khi thc thi lnh SETB P1.3 th: P1.3=1 tc lm (P1)=08H

4.4. ANL C, <src-bit> Chc nng: AND logic hai bit. M t: Nu gi tr ca bit ngun l 0 th lnh ny s xa CY v ngc li nu gi tr ca bit ngun l 1 th lnh ny gi nguyn gi tr hin hnh ca c CY. Du gch cho (/) t trc ton hng trong chng trnh hp ng ch ra rng bit ngun c ly b trc khi AND vi CY nhng gi tr ca bit ngun khng b thay i bi thao tc ly b ny. Cc c khng b nh hng. ANL C, bit S byte S chu k M i tng Hot ng ANL C, /bit S byte S chu k M i tng Gio trnh Vi x l.

Cc dng lnh: 2 2 10000010 bbbbbbbb (C) (C) AND (bit) 2 2 10110000 80

bbbbbbbb Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Hot ng V d: Cho bit trc (A)=72H, c CY=1. Sau khi thc thi lnh ANL C, ACC.7 th: c CY=0, (A)=72H

Trng H Cng nghip Tp.HCM. (C) (C) AND NOT(bit)

Sau khi thc thi lnh ANL C, /ACC.7 th: c CY=1, (A)=72H

4.5. ORL C, <src-bit> Chc nng: OR logic hai bit. M t: Nu gi tr ca bit ngun l 1 th php ton s set c CY=1 v ngc li nu gi tr ca bit ngun l 0 th php ton gi nguyn gi tr hin hnh ca c CY. Du gch cho / t trc ton hng trong chng trnh hp ng ch ra rng bit ngun c ly b trc khi OR logic vi c nh nhng gi tr ca bit ngun khng b thay i bi thao tc ly b. Cc c khng b nh hng. ORL C, bit S byte S chu k M i tng Hot ng ORL C, /bit S byte S chu k M i tng Hot ng

Cc dng lnh: 2 2 01110010 bbbbbbbb (C) (C) OR (bit) 2 2 10100000 bbbbbbbb (C) (C) OR NOT(bit)

V d: Cho bit trc(A)=72H, c CY=0. Sau khi thc thi lnh ORL C, ACC.7 th: c CY=0, (A)=72H

Gio trnh Vi x l.

81

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh ORL C, /ACC.7 th: c CY=1, (A)=72H

Trng H Cng nghip Tp.HCM.

Lu :

Cc lnh trn bao gm lnh ANL v ORL nhng khng tn ti lnh XRL. Cho nn nu ta cn XOR hai bit , BIT1 v BIT2, v kt qu c ct vo trong c nh (CY) th ta s dng on lnh sau y: MOV C, BIT1 ;Np BIT1 vo c nh. JNB BIT2, SKIP ;BIT2=0 th C = BIT1. CPL C ;BIT2=1 th C\ = BIT1\. SKIP: ;BIT1 XOR BIT2

4.6. MOV <dest-bit>, <src-bit> Chc nng: Di chuyn bit ngun (src-bit) n bit ch (dest-bit). M t: Ni dung ca bit c ch ra bi ton hng th hai c sao chp vo v tr c xc nh bi ton hng th nht. Mt trong hai ton hng phi l c nh v ton hng cn li c th l bit bt k c nh a ch bit. Bit ngun khng b nh hng. Cc thanh ghi khc v cc c khng b nh hng. MOV C, bit S byte S chu k M i tng Hot ng MOV bit, C S byte S chu k M i tng Hot ng

Cc dng lnh: 2 1 10100010 bbbbbbbb (C) (bit) 2 2 10010010 bbbbbbbb (bit) (C)

V d: Cho bit trc c CY=1, (P1)=C5H. Sau khi thc thi lnh MOV C, P1.3 th: c CY=0, (P1)=C5H

Gio trnh Vi x l.

82

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Sau khi thc thi lnh MOV P1.3, C th: c CY=1, (P1)=CDH

Trng H Cng nghip Tp.HCM.

4.7. JB bit, rel Chc nng: Nhy nu bit bng 1. M t: Nu bit ch ra trong lnh bng 1 th nhy n a ch c ch ra trong lnh cn ngc li th tip tc vi lnh tip theo. Cc c khng b nh hng, bit c kim tra s khng b thay i. S byte S chu k M i tng Hot ng 3 2 00100000 bbbbbbbb eeeeeeee (PC) (PC) + 3 IF (bit) = 1 THEN (PC) (PC) + byte_2

Lu :

Lu :

Tm nhy ca lnh JB bit, rel b gii hn khong cch nhy t -128 byte (nhy lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin ny.

V d 1: Cho bit trc (A)=56H, (P1)=CAH. Sau khi thc thi chui lnh: JB P1.2, AAA JB ACC.2, BBB th chng trnh c tip tc vi lnh ti nhn BBB, (P1)=CAH v (A)=56H. V d 2: Cho chui lnh: MOV A, #0FFH MOV P0, #9CH ; 9CH = 10011100B JB P0.7, AAA MOV A, #00H AAA: Sau khi thc thi chui lnh th (A)=FFH, (P0)=9CH (chng trnh thc hin lnh nhy JB P0.7, AAA). Gio trnh Vi x l. 83 Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 3: Cho chui lnh: MOV A, #0FFH MOV P0, #9CH ; 9CH = 10011100B JB P0.5, AAA MOV A, #00H AAA: Sau khi thc thi chui lnh th (A)=00H, (P0)=9CH (chng trnh khng thc hin lnh nhy JB P0.5, AAA). 4.8. JNB bit, rel Chc nng: Nhy nu bit bng 0. M t: Nu bit ch ra trong lnh bng 0 th nhy n a ch c ch ra trong lnh cn ngc li th tip tc vi lnh tip theo. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 3 2 00110000 bbbbbbbb eeeeeeee (PC) (PC) + 3 IF (bit) = 0 THEN (PC) (PC) + byte_2

Lu :

Lu :

Tm nhy ca lnh JNB bit, rel b gii hn khong cch nhy t -128 byte (nhy lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin ny.

V d 1: Cho bit trc (A)=56H, (P1)=CAH. Sau khi thc thi chui lnh: JNB P1.3, AAA JNB ACC.3, BBB th chng trnh c tip tc vi lnh ti nhn BBB, (A)=56H v (P1)=CAH.

Gio trnh Vi x l.

84

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 2: Cho chui lnh: MOV P1, #10H MOV A, #6BH ; 6BH = 01101011B JNB ACC.5, AAA MOV P1, #01H AAA: Sau khi thc thi chui lnh th (A)=6BH, (P1)=01H (chng trnh khng thc hin lnh nhy JNB ACC.5, AAA). V d 3: Cho chui lnh: MOV P1, #10H MOV E0H, #6BH ; 6BH = 01101011B JNB E2H, AAA MOV P1, #01H AAA: Sau khi thc thi chui lnh th (A)=(E0H)=6BH, (P1)=10H (chng trnh thc hin lnh nhy JNB E2H, AAA). 4.9. JBC bit, rel Chc nng: Nhy nu bit bng 1 v xa bit (lm cho bit = 0). M t: Nu bit c ch ra trong lnh bng 1 th xa bit ny v r nhnh n a ch cho trong lnh cn ngc li th tip tc vi lnh tip theo. Bit s khng c xa nu bit ny l 0. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 3 2 00010000 bbbbbbbb eeeeeeee (PC) (PC) + 3 IF (bit) = 1 THEN (bit) 0 (PC) (PC) + byte_2

Lu :

Gio trnh Vi x l.

85

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Lu :

Trng H Cng nghip Tp.HCM.

Tm nhy ca lnh JBC bit, rel b gii hn khong cch nhy t -128 byte (nhy lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin ny. Khi lnh ny c dng lm thay i gi tr ca mt port xut th gi tr c dng lm d liu ban u ca port c ly t b cht d liu xut, khng phi c ly t cc chn nhp.

V d 1: Cho bit trc (A)=56H. Sau khi thc thi chui lnh: JBC ACC.3, AAA JBC ACC.2, BBB th chng trnh c tip tc vi lnh ti nhn BBB v (A)=52H. V d 2: Cho chui lnh: MOV A, #76H MOV P3, #9CH ; 9CH = 10011100B JBC P3.2, AAA MOV A, #67H AAA: Sau khi thc thi chui lnh th (A)=76H, (P3)=98H (chng trnh thc hin lnh nhy JBC P3.2, AAA). V d 3: Cho chui lnh: MOV A, #76H MOV B0H, #9CH ; 9CH = 10011100B JBC B1H, AAA MOV A, #67H AAA: Sau khi thc thi chui lnh th (A)=67H, (P3)=(B0H)=9CH (chng trnh khng thc hin lnh nhy JBC B1H, AAA). 4.10. JC rel Chc nng: Nhy nu c CY = 1. M t: Nu c CY = 1 th nhy n a ch cho trong lnh cn ngc li th tip tc vi lnh tip theo. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 2 2 01000000 eeeeeeee (PC) (PC) + 2 IF (C) = 1 THEN (PC) (PC) + byte_2

Gio trnh Vi x l.

86

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Lu :

Trng H Cng nghip Tp.HCM.

Lu :

Tm nhy ca lnh JC rel b gii hn khong cch nhy t -128 byte (nhy lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin ny.

V d 1: Cho bit trc (A)=7FH, c CY=0. Sau khi thc thi chui lnh: JC AAA ADD A,#0F7H JC BBB th chng trnh c tip tc vi lnh ti nhn BBB, (A)=76H, c CY=1. V d 2: Cho chui lnh: MOV A, #9AH MOV R0, #76H ADD A, R0 JC AAA MOV R0, #67H AAA: Sau khi thc thi chui lnh th (A)=10H, (R0)=76H v c CY=1 (chng trnh thc hin lnh nhy JC AAA). 4.11. JNC rel Chc nng: Nhy nu c CY = 0. M t: Nu c CY = 0 th nhy n a ch cho trong lnh cn ngc li th tip tc vi lnh tip theo. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 2 2 01010000 eeeeeeee (PC) (PC) + 2 IF (C) = 0 THEN (PC) (PC) + byte_2

Gio trnh Vi x l.

87

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Lu :

Trng H Cng nghip Tp.HCM.

Lu :

Tm nhy ca lnh JNC rel b gii hn khong cch nhy t -128 byte (nhy lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin ny.

V d 1: Cho bit trc (A)=7FH, c CY=1. Sau khi thc thi chui lnh: JNC AAA ADD A,#26H JNC BBB th chng trnh c tip tc vi lnh ti nhn BBB, (A)=A5H, c CY=0. V d 2: Cho chui lnh: MOV A, #0B9H MOV R1, #52H ADD A, R1 JNC AAA MOV R1, #25H AAA: Sau khi thc thi chui lnh th (A)=0BH, (R1)=25H v c CY=1 (chng trnh khng thc hin lnh nhy JNC AAA).

Gio trnh Vi x l.

88

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 5. Nhm lnh r nhnh: 5.1. ACALL addr11 Chc nng: Gi n a ch tuyt i (Absolute Call) M t:

Trng H Cng nghip Tp.HCM.

ACALL gi khng iu kin mt chng trnh con t ti a ch c ch ra trong lnh (xem thm gii thch v chng trnh con phn 5.3). Ch rng, chng trnh con c gi phi c bt u trong cng khi 2K ca b nh chng trnh vi byte u tin ca lnh theo sau lnh ACALL. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 2 2 aaa1001

aaaaaaaa

Lu : aaa = A10A8 v aaaaaaaa = A7A0 (PC) (PC) + 2 (SP) (SP) + 1 ((SP)) (PC7PC0) (SP) (SP) + 1 ((SP)) (PC15PC8) (PC10PC0) a ch trang

M t:

Gio trnh Vi x l.

89

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

Lu : Do khng gian b nh chng trnh ti a l 64KB cho nn ta c 32 trang (khi) v mi trang bt u a ch l bin ca 2KB (nh l: 0000H, 0800H, 1000H, 1800H, , F800H).
FFFFH F800H F800H 1800H 17FFH 1000H 0FFFH 0800H 07FFH 0000H 2K trang 31 1000H 0FFFH Trang 2
A

2K trang 2 2K trang 1 2K trang 0

32 x 2K (64K)

2K trang 1

Ban o nh 64K c chia thanh 32 trang 2K

0800H 07FFH

Trang 0

V d 1: Cho bit trc (SP)=07H, lnh ACALL v tr 0123H v nhn AAA v tr 0345H ca b nh chng trnh. Lnh k tip lnh ACALL v tr 0125H. Sau khi thc thi lnh ACALL AAA th: (SP)=09H, (PC)=0345H v 2 nh ca RAM ni (08H)=23H, (09H)=01H. V d 2: Cho bit trc (SP)=07H, lnh ACALL v tr 0800H v nhn AAA v tr 0700H ca b nh chng trnh. Khng th thc thi lnh ACALL AAA (li lp trnh) v lnh ACALL v nhn AAA khng nm trong cng mt trang (lnh ACALL thuc trang 1, nhn AAA thuc trang 0).

Gio trnh Vi x l.

90

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 5.2. LCALL addr16 Chc nng: Gi mt chng trnh con (Long Call). M t:

Trng H Cng nghip Tp.HCM.

LCALL gi mt chng trnh con vi a ch bt u chng trnh con c ch ra trong lnh (xem thm gii thch v chng trnh con phn 5.3). Ch rng, chng trnh con c th bt u bt c ni no trong khng gian b nh chng trnh 64KB. Cc c khng b nh hng. S byte S chu k M i tng Lu : 3 2 00010010 aaaaaaaa aaaaaaaa

byte 2 cha cc bit a ch t A15 A8 byte 3 cha cc bit a ch t A7 A0. Hot ng (PC) (PC) + 3 (SP) (SP) + 1 (SP) (PC7 PC0) (SP) (SP) + 1 (SP) (PC15 PC8) (PC) addr15 addr0

M t:

LCALL AAA

64 KB AAA:
2 3

RET

V d: Cho bit trc (SP)=07H, lnh LCALL v tr 0123H v nhn AAA v tr 1234H ca b nh chng trnh. Lnh k tip lnh ACALL v tr 0126H. Sau khi thc thi lnh LCALL AAA th: (SP)=09H, (PC)=1234H v 2 nh ca RAM ni (08H)=26H, (09H)=01H.

Gio trnh Vi x l.

91

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 5.3. RET Chc nng: Tr v t chng trnh con (Return). M t:

Trng H Cng nghip Tp.HCM.

RET ly li cc byte cao v byte thp ca PC t stack, gim con tr stack bi 2. Vic thc thi chng trnh tip tc vi lnh a ch cha trong PC, trong trng hp tng qut l lnh ngay sau lnh ACALL hoc LCALL. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 1 2 00100010 (PC15 PC8) ((SP)) (SP) (SP) 1 (PC7 PC0) ((SP)) (SP) (SP) 1

Lu : Chng trnh con c mt s qui nh sau: o L mt chui gm nhiu lnh c kt hp li vi nhau thc hin mt cng vic no . o Bt u bng mt NHN, do ngi lp trnh t t ra (nhn ny chnh l tn ca chng trnh con). o Kt thc bng lnh RET. o c t cui chng trnh, pha trn ch dn kt thc chng trnh END. o Gia chng trnh con v chng trnh chnh phi c cch ly bng lnh: SJMP $. SJMP MAIN (MAIN: l nhn bt k thuc chng trnh chnh). o Chng trnh con c th c gi ra nhiu ln ti bt k thi im no, ty thuc vo ngi lp trnh yu cu (thng qua cc lnh gi ACALL, LCALL v cc tn hiu ngt). o Trong mt chng trnh c th c mt hoc nhiu chng trnh con.

Gio trnh Vi x l.

92

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 1: Da vo V d 1 ca phn 5.1. Cho bit trc (SP)=09H; nh RAM ni (08H)=25H v (09H)=01H . Sau khi thc thi lnh RET th: (SP)=07H v chng trnh c tip tc vi lnh ti a ch 0125H (v tr ca lnh k tip lnh ACALL). V d 2: Da vo V d ca phn 5.2. Cho bit trc (SP)=09H; nh RAM ni (08H)=26H v (09H)=01H . Sau khi thc thi lnh RET th: (SP)=07H v chng trnh c tip tc vi lnh ti a ch 0126H (v tr ca lnh k tip lnh LCALL). 5.4. RETI Chc nng: Tr v t chng trnh con phc v ngt. M t: RETI ly li cc byte cao v byte thp ca PC t stack, phc hi logic ngt c th nhn cc ngt khc c cng u tin ngt vi ngt va x l. Con tr stack c gim bi 2. Khng c thanh ghi no khc b nh hng; PSW khng c t ng phc hi tr li trng thi trc khi x l ngt. Vic thc thi chng trnh tip tc vi lnh a ch cha trong PC, trong trng hp tng qut l lnh ngay sau im m yu cu ngt c pht hin. Nu c mt ngt c u tin ngt thp hn hoc cng u tin ngt c treo khi lnh RETI c thc thi, mt lnh c thc thi trc khi ngt ang treo c x l. S byte S chu k M i tng Hot ng 1 2 00110010 (PC15 PC8) ((SP)) (SP) (SP) 1 (PC7 PC0) ((SP)) (SP) (SP) 1

Lu :

Lnh RETI tr iu khin v chng trnh gi t mt ISR (ISR: Interrupt Service Routine: chng trnh con phc v ngt). im khc nhau gia RETI v RET l RETI c bo hiu cho h thng iu khin ngt rng qu trnh x l ngt xong. Nu trng hp khng c mt ngt no c duy tr trong thi gian RETI thc thi th lnh RETI s hot ng nh lnh RET.

V d: Cho bit trc (SP)=0BH; nh RAM ni (0AH)=23H v (0BH)=01H. mt tn hiu ngt c pht hin trong lnh a ch 0123H ang thc thi. Sau khi thc thi lnh RETI th: (SP)=09H v chng trnh c tip tc vi lnh ti a ch 0123H.

Gio trnh Vi x l.

93

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 5.5. AJMP addr11 Chc nng: Nhy n a ch tuyt i (Absolute Jump). M t:

Trng H Cng nghip Tp.HCM.

AJMP chuyn vic thc thi chng trnh n a ch c ch ra trong lnh. Ch rng, ch nhy n phi trong cng khi 2K ca b nh chng trnh vi byte u tin ca lnh theo sau lnh AJMP. S byte S chu k M i tng 2 2 aaa00001

aaaaaaaa

Ghi ch: aaa = A10 A8 v aaaaaaaa = A7 A0 Hot ng (PC) (PC) + 2 (PC10 PC0) a ch trang M t:

V d: Cho bit trc lnh AJMP v tr 0345H v nhn AAA v tr 0123H ca b nh chng trnh. Sau khi thc thi lnh AJMP AAA th: (PC)=0123H.

Gio trnh Vi x l.

94

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 5.6. LJMP addr16 Chc nng: Nhy di (Long Jump). M t:

Trng H Cng nghip Tp.HCM.

LJMP to ra mt r nhnh khng iu kin n a ch c ch ra trong lnh. Ch rng, a ch ch c th bt c ni no trong khng gian a ch ca b nh chng trnh 64KB. Cc c khng b nh hng. S byte S chu k M i tng Lu : Hot ng 3 2 00010010 aaaaaaaa aaaaaaaa byte 2 cha cc bit a ch t A15A8 byte 3 cha cc bit a ch t A7A0 (PC) addr15 addr0

M t:

V d: Cho bit trc lnh LJMP v tr 0123H v nhn AAA v tr 1234H ca b nh chng trnh. Sau khi thc thi lnh LJMP AAA th: (PC)=1234H.

Gio trnh Vi x l.

95

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 5.7. SJMP rel Chc nng: Nhy ngn (Short Jump). M t:

Trng H Cng nghip Tp.HCM.

iu khin chng trnh r nhnh khng iu kin n a ch c ch ra trong lnh. Ch rng, tm nhy cho php l 128 byte trc lnh v 127 byte sau lnh. S byte S chu k M i tng Hot ng 2 2 10000000 eeeeeeee (PC) (PC) + 2 (PC) (PC) + byte_2

M t:

Lu :

Lnh SJMP $ l mt lnh vng lp v tn (lnh nhy ti ch), thng c s dng khi cn kt thc mt chng trnh iu khin ca chip 8051 (lu rng cc tn hiu ngt vn hot ng bnh thng, v th y chnh l phng php duy nht thot khi vng lp v tn ny).

V d: Cho bit trc lnh SJMP nm ti a ch 0100H v nhn AAA nm ti a ch 0123H trong b nh chng trnh. Sau khi thc thi lnh SJMP AAA th: (PC)=0123H.

Gio trnh Vi x l.

96

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 5.8. JMP @A+DPTR Chc nng: Nhy gin tip. M t:

Trng H Cng nghip Tp.HCM.

Cng gi tr 8-bit khng du cha trong thanh ghi A vi con tr 16-bit v np kt qu tng cho b m chng trnh PC. y chnh l a ch ca lnh k tip c tm np. C hai, thanh ghi A v con tr d liu u khng b thay i. Cc c khng b nh hng. S byte S chu k M i tng Hot ng 1 2 01110011 (PC) (PC) + (A) + (DPTR)

V d: Cho bit trc (A)=00H, 02H, 04H, 06H. Sau khi thc thi chui lnh: MOV DPTR, #JMP_TBL JMP @A+DPTR JMP_TBL: AJMP AAA ; di lnh l 2 byte. AJMP BBB ; di lnh l 2 byte. AJMP CCC ; di lnh l 2 byte. AJMP DDD ; di lnh l 2 byte. nu (A)=00H, chng trnh c tip tc vi lnh ti nhn AAA. nu (A)=02H, chng trnh c tip tc vi lnh ti nhn BBB. nu (A)=04H, chng trnh c tip tc vi lnh ti nhn CCC. nu (A)=06H, chng trnh c tip tc vi lnh ti nhn DDD. 5.9. JZ rel Chc nng: Nhy nu ni dung thanh ghi A bng 0. M t: Nu tt c cc bit ca thanh ghi A u bng 0 th nhy n a ch cho trong lnh cn ngc li tip tc vi lnh tip theo. Cc c khng b nh hng. Ni dung thanh ghi A khng b thay i. S byte S chu k M i tng Hot ng 2 2 01100000 eeeeeeee (PC) (PC) + 2 IF (A) = 0 THEN (PC) (PC) + byte_2

th:

Lu :

Gio trnh Vi x l.

97

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Lu :

Trng H Cng nghip Tp.HCM.

Tm nhy ca lnh JZ rel b gii hn khong cch nhy t -128 byte (nhy lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin ny.

V d: Cho bit trc (A)=01H. Sau khi thc thi chui lnh: JZ AAA DEC A JZ BBB th chng trnh c tip tc vi lnh ti nhn BBB. 5.10. JNZ rel Chc nng: Nhy nu ni dung thanh ghi A khc 0. M t: Nu thanh ghi A c mt bit bt k bng 1 th nhy n a ch cho trong lnh cn ngc li tip tc vi lnh tip theo. Cc c khng b nh hng. Ni dung thanh ghi A khng b thay i. S byte S chu k M i tng Hot ng 2 2 01110000 eeeeeeee (PC) (PC) + 2 IF (A) < > 0 THEN (PC) (PC) + byte_2

Lu :

Lu :

Tm nhy ca lnh JNZ rel b gii hn khong cch nhy t -128 byte (nhy lui) n +127 byte (nhy ti) k t lnh k tip theo sau lnh nhy c iu kin ny.

V d: Cho bit trc (A)=00H. Sau khi thc thi chui lnh: JNZ AAA INC A JNZ BBB th chng trnh c tip tc vi lnh ti nhn BBB.

Gio trnh Vi x l.

98

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. 5.11. CJNE <dest-byte>, <src-byte>, rel Chc nng: So snh v nhy nu khng bng. M t:

Trng H Cng nghip Tp.HCM.

CJNE so snh gi tr ca 2 ton hng (src-byte) v (dest-byte) ri r nhnh n a ch c ch ra trong lnh nu cc gi tr ca 2 ton hng ny khng bng nhau. C CY = 1 nu gi tr nguyn khng du ca (dest- byte) nh hn gi tr nguyn khng du ca (src-byte) v ngc li CY = 0. Khng c ton hng no trong 2 ton hng b nh hng. CJNE A, direct, rel S byte S chu k M i tng Hot ng

Cc dng lnh: 3 2 10110101 aaaaaaaa eeeeeeee (PC) (PC) + 3 IF (A) < > (direct) THEN (PC) (PC) + a ch tng i IF (A) < (direct) THEN (C) 1 ELSE (C) 0 3 2 10110100 dddddddd eeeeeeee (PC) (PC) + 3 IF (A) < > #data THEN (PC) (PC) + a ch tng i IF (A) < #data THEN (C) 1 ELSE (C) 0 3 2 10111rrr dddddddd eeeeeeee (PC) (PC) + 3 IF (Rn) < > #data THEN (PC) (PC) + a ch tng i IF (Rn) < #data THEN (C) 1 ELSE (C) 0

CJNE A, #data, rel S byte S chu k M i tng Hot ng

CJNE Rn, #data, rel S byte S chu k M i tng Hot ng

Gio trnh Vi x l.

99

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. CJNE @Ri, #data, rel S byte S chu k M i tng Hot ng

Trng H Cng nghip Tp.HCM. 3 2 1011011i dddddddd eeeeeeee (PC) (PC) + 3 IF ((Ri)) < > #data THEN (PC) (PC) + a ch tng i IF ((Ri)) < #data THEN (C) 1 ELSE (C) 0

Lu :

V d 1: Cho bit trc (A)=34H, (01H)=(R1)=34H, (34H)=B9H. Sau khi thc thi chui lnh: CJNE A, 01H, AAA CJNE @R1, #9BH, BBB th chng trnh c tip tc vi lnh ti nhn BBB v c C=0. V d 2: Cho chui lnh: CLR C MOV A, #40H MOV 40H, #0B1H CJNE A, 40H, AAA MOV 40H, #1BH AAA: ADDC A, 40H Sau khi thc thi chui lnh th (A)=F2H, (40H)=B1H, CY=0.

Gio trnh Vi x l.

100

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 3: ng dng cho php so snh ln hn hay nh hn. Gi s: o Khi ta mun nhy n nhn BIG nu (A) #20H, th cc lnh sau c s dng: CJNE A, #20H, $+3 ;So snh (A) vi con s 20H. JNC BIG ;Nhy n BIG nu (A) #20H. o Khi ta mun nhy n nhn SMALL nu (A) < #20H, th cc lnh sau c s dng: CJNE A, #20H, $+3 ;So snh (A) vi con s 20H. JC SMALL ;Nhy n SMALL nu (A) < #20H. Lu : K hiu $ l mt k hiu ca trnh dch hp ng, biu th a ch ca lnh hin hnh (v CJNE c di lnh l 3 byte nn $+3 s l a ch ca lnh tip theo CJNE, tc l lnh JC/JNC). 5.12. DJNZ <byte>, <rel-addr> Chc nng: Gim v nhy nu byte khc 0. M t: DJNZ gim byte ch ra bi ton hng u trong lnh v r nhnh n a ch c ch ra bi ton hng th hai trong lnh nu kt qu sau khi gim khc 0. Nu gi tr ban u ca byte l 00H ta s c trn sang 0FFH. Cc c khng b nh hng. DJNZ Rn, rel S byte S chu k M i tng Hot ng

Cc dng lnh: 2 2 11011rrr eeeeeeee (PC) (PC) + 2 (Rn) (Rn) 1 IF (Rn) < > 0 THEN (PC) (PC) + byte_2 3 2 11010101 aaaaaaaa eeeeeeee (PC) (PC) + 2 (direct) (direct) 1 IF (direct) < > 0 THEN (PC) (PC) + byte_2

DJNZ direct, rel S byte S chu k M i tng Hot ng

Lu :

Khi lnh ny c dng lm thay i gi tr ca mt port xut th gi tr c dng lm d liu ban u ca port c ly t b cht d liu xut, khng phi c ly t cc chn nhp.

Gio trnh Vi x l.

101

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051. Lu :

Trng H Cng nghip Tp.HCM.

Lu :

Khi lnh DJNZ c thc hin th gi tr trong thanh ghi Rn c gim (-1) trc khi em ra so snh vi gi tr 0.

V d 1: Cho chui lnh sau: MOV A, #50 MOV R2, #8 AAA: ADD A, #1 DJNZ R2, AAA Sau khi thc thi chui lnh th (A)=58, (R2)=0. V d 2: Cho chui lnh sau: MOV A, #50 MOV R3, #56 AAA: ADD A, #1 DJNZ R3, AAA Sau khi thc thi chui lnh th (A)=106, (R1)=0. V d 3: Cho chui lnh sau: MOV A, #50 MOV R1, #0 AAA: ADD A, #1 DJNZ R1, AAA Sau khi thc thi chui lnh th (A)=50, (R1)=0. Lu rng: Qua ba v d v lnh DJNZ trn cho ta mt nhn xt nh sau: o Nu (Rn)=8 Lnh ADD c thc hin 8 ln. o Nu (Rn)=56 Lnh ADD c thc hin 56 ln. o Nu (Rn)=0 Lnh ADD c thc hin 256 ln. 5.13. NOP Chc nng: Khng lm g (No Operation). M t: Vic thc thi chng trnh tip tc vi lnh tip theo. Khng c thanh ghi hay c no b nh hng. S byte S chu k M i tng Hot ng Gio trnh Vi x l. 1 1 00000000 (PC) (PC) + 1 102 Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

Danh sch cc lnh lm nh hng ti cc c CY, AC v OV

Ghi ch:

X l c tng ng b nh hng. 0 l c tng ng bng 0. 1 l c tng ng bng 1.

IV. CC V D NG DNG V TP LNH: V d 1: Vit on lnh xa thanh ghi A v sau cng 9 vo thanh ghi A 10 ln. Sau khi hon tt th ct gi tr trong thanh ghi A vo thanh ghi R7. Gii MOV A, #0 ;Xo ACC, A = 0. MOV R0, #10 ;Np s ln lp, R0 = 10. BACK: ADD A, #9 ;Cng thm 9 vo ACC. DJNZ R0, BACK ;Kim tra s ln lp li, 10 ln. MOV R7, A ;Ct ACC vo thanh ghi R7. V d 2: Vit on lnh np vo thanh ghi A vi gi tr FFH v sau ly b thanh ghi A 500 ln. Gii MOV A, #0FFH ;Np A = FFH. MOV R0, #10 ;Np s ln lp 1, R0 = 10. LOOP: MOV R1, #50 ;Np s ln lp 2, R1 = 50. BACK: CPL A ;Ly b ACC. DJNZ R1, BACK ;Kim tra s ln lp 2 (vng trong), 50 ln. DJNZ R0, LOOP ;Kim tra s ln lp 1(vng ngoi), 10 ln.

Gio trnh Vi x l.

103

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 3: Vit on lnh xc nh xem R0 c cha gi tr 0 hay khng? Nu khng th np vo R0 gi tr FFH. Gii MOV A, R0 ;Chuyn ni dung R5 vo A. JNZ NEXT ;Nhy n NEXT nu A ? 0 (thot ra). MOV R0, #0FFH ;Np R0 = FFH nu A = 0. NEXT: V d 4: Vit on lnh tm tng ca 79H, F5H v E2H. Ghi byte thp ca tng vo R0 v byte cao ca tng vo R1. Gii MOV A, #0 ;Xo ACC, A = 0. MOV R1, #0 ;Xo R1, R1 = 0. ADD A, #79H ;Cng thm 79H (A = 79H, CY = 0). JNC NO_CY1 ;Nhy nu CY = 0. INC R1 ;Nu CY = 1 th tng R1. NO_CY1: ADD A, #0F5H ;Cng thm F5H (A = 6EH, CY =1). JNC NO_CY2 ;Nhy nu CY = 0. INC R1 ;Nu CY = 1 th tng R1. NO_CY2: ADD A, #0E2H ;Cng thm E2H (A = 50H, CY = 1). JNC NO_CY3 ;Nhy nu CY = 0. INC R1 ;Nu CY = 1 th tng R1. NO_CY3: MOV R0, A ;R0 = 50H (byte thp), R1 = 02H (byte cao). V d 5: H thng s dng 8051 c tn s dao ng ca thch anh l 11,0592MHz. Hy xc nh thi gian cn thit thc hin cc lnh sau: MOV R3, #55H DEC R3 DJNZ R2, AAA LJMP AAA SJMP AAA NOP MUL AB Gii Chu k my: 12 12 TMachine = = = 1,085(s ) f OSC 11,0592MHz Lnh: MOV R3, #55H DEC R3 DJNZ R2, AAA LJMP AAA SJMP AAA NOP MUL AB S chu k my: 1 1 2 2 2 1 4 Thi gian thc hin: t = 1 x 1,085 (s) = 1,085 (s) t = 1 x 1,085 (s) = 1,085 (s) t = 2 x 1,085 (s) = 2,17 (s) t = 2 x 1,085 (s) = 2,17 (s) t = 2 x 1,085 (s) = 2,17 (s) t = 1 x 1,085 (s) = 1,085 (s) t = 4 x 1,085 (s) = 4,34 (s)

Gio trnh Vi x l.

104

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 6: H thng s dng 8051 c tn s dao ng ca thch anh l 11,0592MHz. Hy xc nh thi gian cn thit thc hin hon tt on lnh sau: MOV A, #55H MOV P1, A CPL A END Gii Chu k my: 12 12 TMachine = = = 1,085(s ) f OSC 11,0592MHz S chu k my: on lnh: MOV A, #55H 1 MOV P1, A 1 CPL A 1 END Tng thi gian thc hin on lnh trn l: t = (1 + 1 + 1) x 1,085 (s) = 3,255 (s) V d 7: H thng s dng 8051 c tn s dao ng ca thch anh l 11,0592MHz. Hy xc nh thi gian cn thit thc hin hon tt on lnh sau: DELAY: MOV R3, #200 DJNZ R3, $ RET Gii Chu k my: 12 12 TMachine = = = 1,085(s ) f OSC 11,0592MHz on lnh: S chu k my: DELAY: MOV R3, #200 1 DJNZ R3, $ 2 RET 1 Tng thi gian thc hin on lnh trn l: t = [1 + (2 x 200) + 1] x 1,085 (s) = 436,17 (s)

Gio trnh Vi x l.

105

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 8: H thng s dng 8051 c tn s dao ng ca thch anh l 11,0592 MHz. Hy xc nh thi gian cn thit thc hin hon tt on lnh sau: Gii Chu k my:

TMachine =
on lnh:

12 12 = = 1,085(s ) f OSC 11,0592MHz


S chu k my:

DELAY: MOV R3, #250 1 HERE: NOP 1 NOP 1 NOP 1 NOP 1 DJNZ R3, HERE 2 RET 1 Tng thi gian thc hin on lnh trn l: t = [1 + ((1 + 1 + 1 + 1 + 2) x 250) + 1] x 1,085 (s) = 1629,67 (s) V d 9: Vit on lnh c?t gi tr ca thanh ghi R5, R6 v A vo ngn xp. Sau ly ra v cho ln lt vo cc thanh ghi R2, R3 v B tng ng. Gii PUSH 05H ;Ct R5 vo ngn xp. PUSH 06H ;Ct R6 vo ngn xp. PUSH 0E0H ;Ct ACC vo ngn xp. POP 0F0H ;Ly t ngn xp cho vo B, (B) = (A). POP 03H ;Ly t ngn xp cho vo R3, (R3) = (R6). POP 02H ;Ly t ngn xp cho vo R2, (R2) = (R5). V d 10: Vit on lnh chuyn gi tr trong nh c a ch 55H vo cc nh RAM ti a ch t 40H 44H, s dng: o Ch nh a ch trc tip. o Ch nh a ch gin tip (khng dng vng lp). o Ch nh a ch gin tip (dng vng lp). Gii Ch nh a ch trc tip: MOV A, #55H MOV 40H, A MOV 41H, A MOV 42H, A MOV 43H, A MOV 44H, A ;Np gi tr 55H vo thanh ghi A. ;Sao ni dung ca A vo nh 40H. ;Sao ni dung ca A vo nh 41H. ;Sao ni dung ca A vo nh 42H. ;Sao ni dung ca A vo nh 43H. ;Sao ni dung ca A vo nh 44H.

Gio trnh Vi x l.

106

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

Ch nh a ch gin tip (khng dng vng lp): MOV A, #55H ;Np gi tr 55H vo thanh ghi A. MOV R0, #40H ;Np a ch bt u, R0 = 40H. MOV @R0, A ;Sao ni dung A vo nh do R0 tr n. INC R0 ;Tng con tr, R0 = 41H. MOV @R0, A ;Sao ni dung A vo nh do R0 tr n. INC R0 ;Tng con tr, R0 = 42H. MOV @R0, A ;Sao ni dung A vo nh do R0 tr n. INC R0 ;Tng con tr, R0 = 43H. MOV @R0, A ;Sao ni dung A vo nh do R0 tr n. INC R0 ;Tng con tr, R0 = 44H. MOV @R0, A ;Sao ni dung A vo nh do R0 tr n. Ch nh a ch gin tip (dng vng lp): MOV A, #55H ;Np gi tr 55H vo thanh ghi A. MOV R0, #40H ;Np a ch bt u, R0 = 40H. MOV R1, #5 ;Np s ln lp li, R1 = 5. LOOP: MOV @R0, A ;Sao ni dung A vo nh do R0 tr n. INC R0 ;Tng con tr. DJNZ R1, LOOP ;Kim tra s ln lp cho n khi s ln = 0. V d 11: Vit on lnh xa 16 nh RAM ni c a ch bt u t 60H. Gii CLR A ;Xo ACC, A = 0. MOV R0, #60H ;Np a ch bt u, R0 = 60H. MOV R1, #16 ;Np s ln lp li, R1 = 16. LOOP: MOV @R0, A ;Sao ni dung A vo nh do R0 tr n. INC R0 ;Tng con tr. DJNZ R1, LOOP ;Kim tra s ln lp cho n khi s ln = 0. V d 12: Vit on lnh chuyn mt khi d liu gm 10 byte t v tr nh RAM ni bt u ti a ch 35H n cc v tr nh RAM ni bt u ti a ch 60H. Gii MOV R0, #35H ;Np a ch bt u (ngun), R0 = 35H. MOV R1, #60H ;Np a ch bt u (ch), R1 = 60H. MOV R2, #10 ;Np s ln lp li, R2 = 5. LOOP: MOV A, @R0 ;Sao ni dung nh do R0 tr n vo A. MOV @R1, A ;Sao ni dung A vo nh do R1 tr n. INC R0 ;Tng con tr (ngun). INC R1 ;Tng con tr (ch). DJNZ R2, LOOP ;Kim tra s ln lp cho n khi s ln = 0.

Gio trnh Vi x l.

107

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 13: Gi s ch DHCN c lu trong ROM ni ti vng nh c a ch bt u l 200H. Hy phn tch cch chng trnh sau y hot ng v xc nh xem ch DHCN s c lu vo u sau khi chng trnh hon tt? ORG 0000H ;a ch lu chng trnh trong ROM. MOV DPTR, #200H ;Np con tr vng d liu, DPTR=200H. CLR A ;Xo ACC, A = 0. MOVC A, @A+DPTR ;Ly d liu ti nh ROM do ;(A+DPTR) = 200H tr n a vo A. MOV R0, A ;Ct d liu vo R0. INC DPTR ;Tng con tr, DPTR=201H. CLR A ;Xo ACC, A = 0. MOVC A, @A+DPTR ;Ly d liu ti nh ROM do ;(A+DPTR) = 201H tr n a vo A. MOV R1, A ;Ct d liu vo R1. INC DPTR ;Tng con tr, DPTR=202H. CLR A ;Xo ACC, A = 0. MOVC A, @A+DPTR ;Ly d liu ti nh ROM do ;(A+DPTR) = 202H tr n a vo A. MOV R2, A ;Ct d liu vo R2. INC DPTR ;Tng con tr, DPTR=203H. CLR A ;Xo ACC, A = 0. MOVC A, @A+DPTR ;Ly d liu ti nh ROM do ;(A+DPTR) = 203H tr n a vo A. MOV R3, A ;Ct d liu vo R3. SJMP $ ;Dng chng trnh. ORG 200H ;a ch lu chng trnh trong ROM. MYDATA: DB DHCN ;Khai bo d liu. END ;Kt thc chng trnh. Gii Theo chng trnh trn, cc nh ca b nh chng trnh (ROM) c a ch 200H - 203H cha cc ni dung sau: (200H) = 44H = D, (201H) = 48H = H, (202H) = 43H = C, (203H) = 4EH = N. u tin vi (DPTR) = 200H v (A) = 0. Lnh MOVC A, @A+DPTR chuyn ni dung ca nh c a ch 200H (A + DPTR = 0 + 200H) trong ROM vo A. Thanh ghi A lc ny s cha gi tr 44H l m ASCII ca k t D. K t ny c ct vo thanh ghi R0. Tip theo, DPTR c tng ln (DPTR = 201H) v A c xo (A = 0) ly ni dung ca v tr nh k tip trong ROM c a ch l 201H (A + DPTR = 0 + 200H) vo A. Thanh ghi A lc ny s cha gi tr 48H l m ASCII ca k t H. K t ny c ct vo thanh ghi R1. Qu trnh din ra tng t nh vy, sau khi hon tt chng trnh ta c (R0) = 44H, (R1) = 48H, (R2) = 43H, (R3) = 4EH l m ASCII ca cc k t D, H, C v N.

Gio trnh Vi x l.

108

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 14: Gi s ch TP.HCM c lu trong ROM ni ti vng nh c a ch bt u l 200H. Hy vit chng trnh chuyn cc byte d liu ny vo cc nh RAM ni bt u t a ch 40H. Gii Phng php s dng b m d liu: ORG 0000H ;a ch lu chng trnh trong ROM. MOV DPTR, #MYDATA ;Np con tr vng d liu. MOV R0, #40H ;Np a ch bt u cha trong RAM. MOV R1, #6 ;Np gi tr b m (s lng k t). LOOP: CLR A ;Xo ACC, A = 0 MOVC A, @A+DPTR ;Ly d liu ti nh ROM do ;(A+DPTR) tr n a vo A. MOV @R0, A ;Ct vo nh RAM do R0 tr n. INC DPTR ;Tng con tr d liu. INC R0 ;Tng a ch vng RAM. DJNZ R1, LOOP ;Lp li cho n khi b m = 0. SJMP $ ;Dng chng trnh. ORG 200H ;a ch lu chng trnh trong ROM. MYDATA: DB TP.HCM ;Khai bo d liu. END ;Kt thc chng trnh. Phng php s dng k t NULL kt thc chui: ORG 0000H ;a ch lu chng trnh trong ROM. MOV DPTR, #MYDATA ;Np con tr vng d liu. MOV R0, #40H ;Np a ch bt u cha trong RAM. LOOP: CLR A ;Xo ACC, A = 0 MOVC A, @A+DPTR ;Ly d liu ti nh ROM do ;(A+DPTR) tr n a vo A. JZ EXIT ;Thot ra nu c k t NULL. MOV @R0, A ;Ct vo nh RAM do R0 tr n. INC DPTR ;Tng con tr d liu. INC R0 ;Tng a ch vng RAM. SJMP LOOP ;Lp li. EXIT: SJMP $ ;Dng chng trnh. ORG 200H ;a ch lu chng trnh trong ROM. MYDATA: DB TP.HCM, 0 ;Khai bo d liu, c k t NULL. END ;Kt thc chng trnh.

Gio trnh Vi x l.

109

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 15: Vit chng trnh ly gi tr x t P1 v lin tc gi gi tr x2 n P2. Gii ORG 0000H ;a ch lu chng trnh trong ROM. MOV DPTR, #MYDATA ;Np con tr vng d liu. MOV P1, #0FFH ;Cu hnh P1 l port nhp. LOOP: MOV A, P1 ;Ly s liu x t P1. MOVC A, @A+DPTR ;Ly gi tr x2 t vng d liu. MOV P2, A ;Xut gi tr x2 ra P2. SJMP LOOP ;Lp li. ORG 200H ;a ch lu chng trnh trong ROM. MYDATA: ;Vng d liu tng ng t 02 - 92. DB 0,1,4,9,16,25,36,49,64,81 END V d 16: Vit on lnh tnh tng cc gi tr ca cc nh RAM ni c a ch 40H 44H. Kt qu byte thp ct vo thanh ghi A v byte cao ct vo thanh ghi B. Gii MOV R0, #40H ;Np a ch bt u cha trong RAM. MOV R1, #5 ;Np gi tr b m (s lng nh). CLR A ;Xo ACC, A = 0. MOV B, A ;Xo thanh ghi B, B = 0 LOOP: ADD A, @R0 ;Cng ni dung nh do R0 tr n vo A. JNC NO_CY ;Nhy nu khng c nh, CY = 0. INC B ;Tng thanh ghi B nu c nh, CY = 1. NO_CY: INC R0 ;Tng con tr n nh k tip. DJNZ R1, LOOP ;Lp li cho n khi b m = 0. V d 17: Vit on lnh tnh tng hai s 16 bit l 3CE7H v 3B8DH. Ct kt qu vo R7 (byte cao) v R6 (byte thp). Gii CLR C ;Xo c nh, CY = 0. MOV A, #0E7H ;Np byte thp 1 vo A, A = E7H. ADD A, #8DH ;Cng byte thp 2 vo A, A = 74H, CY = 1. MOV R6, A ;Lu byte thp ca tng vo R6. MOV A, #3CH ;Np byte cao 1 vo A, A = 3CH. ADDC A, #3BH ;Cng c nh byte cao 2 vo A, A = 78H. MOV R7, A ;Lu byte cao ca tng vo R7.

Gio trnh Vi x l.

110

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 18: Vit on lnh tnh tng ca 5 d liu BCD c lu trong RAM ni ti a ch bt u t 40H nh sau: (40H) = 71H, (41H) = 11H, (42H) = 65H, (43H) = 59H, (44H) = 37H. Kt qu c lu vo thanh ghi R7 (byte cao) v thanh ghi A (byte thp) di dng s BCD. Gii MOV R0, #40H ;Np a ch bt u cha trong RAM. MOV R1, #5 ;Np gi tr b m (s lng nh). CLR A ;Xo ACC, A = 0. MOV R7, A ;Xo thanh ghi R7, R7 = 0 LOOP: ADD A, @R0 ;Cng ni dung nh do R0 tr n vo A. DA A ;Hiu chnh thnh s BCD. JNC NO_CY ;Nhy nu khng c nh, CY = 0. INC R7 ;Tng thanh ghi R7 nu c nh, CY = 1. NO_CY: INC R0 ;Tng con tr n nh k tip. DJNZ R1, LOOP ;Lp li cho n khi b m = 0. V d 19: Vit on lnh nhn d liu di dng s HEX trong phm vi 00H FFH t Port 1 v chuyn i v dng thp phn. Lu cc s vo cc thanh ghi R7 (LSB), R6 v R5 (MSB). Gii MOV P1, #0FFH ;Cu hnh P1 l port nhp. MOV A, P1 ;c d liu t P1. MOV B, #10 ;Np B = 10. DIV AB ;Chia cho 10, tch ly s cao/s thp. MOV R7, B ;Lu gi tr hng n v vo R7. MOV B, #10 ;Np B = 10. DIV AB ;Chia cho 10, tch ly s cao/s thp. MOV R6, B ;Lu gi tr hng chc vo R6. MOV R5, A ;Lu gi tr hng trm vo R5. V d 20: Vit on lnh c v kim tra Port 1 xem c cha gi tr 45H hay khng? Nu (P1) = 45H th xut gi tr 99H ra Port 2, ngc li th thot khi on lnh. Gii MOV P2, #00H ;Xo P2, P2 = 0. MOV P1, #0FFH ;Cu hnh P1 l port nhp. MOV R0, #45H ;Np R0 = 45H, gi tr cn kim tra. MOV A, P1 ;c d liu t P1. XRL A, R0 ;Kim tra d liu c bng 45H, nu bng th JNZ EXIT ;A = 0, khng bng th A ? 0. MOV P2, #99H ;Np P2 = 99H nu P1 = 45H (A = 0). EXIT: V d 21: Vit on lnh ly b 2 gi tr cha trong thanh ghi R0. Gii MOV A, R0 ;Np d liu cn ly b vo A. CPL A ;Ly b 1. ADD A, #1 ;Cng thm 1 c b 2.

Gio trnh Vi x l.

111

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 22: Vit on lnh kim tra thanh ghi A xem c cha gi tr 99H hay khng? Nu (A) = 99H th np gi tr FFH vo thanh ghi R1, ngc li th np gi tr 00H vo thanh ghi R1. Gii MOV R1, #0 ;Np R0 = 00H. CJNE A, #99H, NEXT ;So snh A vi gi tr 99H, nu khng ;bng th nhy n NEXT. MOV R1, #0FFH ;Np R0 = FFH nu A = 99H. NEXT: V d 23: Gi s mt cm bin nhit c ni ti ng vo P1. Hy vit on lnh c nhit v so snh vi gi tr 75. Da vo kt qu kim tra t gi tr nhit vo cc thanh ghi nh sau: Nu t = 75OC th (A) = 75. Nu t < 75OC th (R1) = t. Nu t > 75OC th (R2) = t. Gii MOV P1, #0FFH ;Cu hnh P1 l port nhp. MOV A, P1 ;c d liu (t) t P1. CJNE A, #75, OVER ;So snh d liu (t) vi gi tr 75, nu ;khng bng th nhy n OVER. SJMP EXIT ;Nu A = 75 th thot chng trnh. OVER: ;Trng hp khi d liu (t) khc 75. JNC NEXT ;Nhy n NEXT nu d liu (t) > 75, C=0. MOV R1, A ;Nu d liu (t) < 75 th np d liu vo SJMP EXIT ;R1 (R1 = A = t) v thot chng trnh. NEXT: ;Trng hp khi d liu (t) > 75. MOV R2, A ;Np d liu vo R2 (R2 = A = t). EXIT: V d 24: Vit on lnh lin tc kim tra gi tr ti Port 1 nu gi tr ny khc 63H. Nu (P1) = 63H th thot on lnh khng kim tra na. Gii MOV P1, #0FFH ;Cu hnh P1 l port nhp. HERE: MOV A, P1 ;c d liu t P1. CJNE A, #63H, HERE ;Duy tr kim tra n khi P1 = 63H.

Gio trnh Vi x l.

112

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 25: Gi s cc nh trong RAM ni c a ch t 40H 44H cha nhit ca cc ngy c ch ra di y. Hy vit on lnh kim tra xem c gi tr no bng 65 khng? Nu c th t a ch ca nh vo R4, ngc li th t R4 = 0. (40H) = 76, (41H) = 79, (42H) = 69, (43H) = 65, (44H) = 64 Gii MOV R4, #0 ;Xo R4 = 0. MOV R0, #40H ;Np a ch bt u cha trong RAM. MOV R1, #5 ;Np gi tr b m (s lng nh). MOV A, #65 ;Np gi tr cn tm vo A, A = 65. BACK: CJNE A, @R0, NEXT ;So snh d liu do R0 tr n vi 65. MOV R4, R0 ;Nu bng th lu a ch nh vo R4. SJMP EXIT ;Thot chng trnh. NEXT: ;Trng hp d liu do R0 tr n khc 65. INC R0 ;Tng con tr n nh k tip. DJNZ R2, BACK ;Lp li cho n khi b m bng 0. EXIT: V d 26: Vit on lnh tm tng cc ch s 1 trong thanh ghi R0. Gii MOV R1, #0 ;Xo R1 = 0, lu s ch s 1. MOV R2, #8 ;Np gi tr b m (s bit kim tra). MOV A, R0 ;Np d liu cn kim tra t R0 vo A. LOOP: RLC A ;Xoay tri, a bit cn kim tra vo c CY. JNC NEXT ;Kim tra c CY. INC R1 ;Tng gi tr ca R1 nu c CY = 1. NEXT: DJNZ R2, LOOP ;Lp li cho n khi b m bng 0. V d 27: Vit on lnh chuyn i s BCD nn cha trong thanh ghi A thnh hai s ASCII v cha hai s ny trong thanh ghi R2 v R3. Gii MOV A, #29H ;Np A = 29H, m BCD nn ca s 29. MOV R2, A ;Lu li s BCD cn chyn i trong R2. ANL A, #0FH ;Xo (che) 4 bit cao ca s BCD (A = 09H). ORL A, #30H ;Chuyn thnh m ASCII (A = 39H). MOV R3, A ;Ct vo R3 (R3 = 39H m ASCII ca 9). MOV A, R2 ;Ly li s BCD lc ban u (A = 29H). ANL A, #0F0H ;Xo (che) 4 bit thp ca s BCD (A=20H). SWAP A ;Hon chyn v tr 4 bit cao vp bit thp. ORL A, #30H ;Chuyn thnh m ASCII (A = 32H). MOV R2, A ;Ct vo R2 (R2 = 32H m ASCII ca 2).

Gio trnh Vi x l.

113

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

V d 28: Gi s bit P2.3 l mt u vo v biu din nhit ca mt l sy. Nu P2.3 = 1 c ngha l l qu nng. Hy lin tc kim tra bit ny, nu nhit qu cao th hy gi mt xung mc cao n P1.5 bt ci bo hiu. Gii JNB P2.3, $ ;Duy tr kim tra u vo. SETB P1.5 ;Khi P2.3 = 1, to mc cao cho P1.5 ri CLR P1.5 ;to mc thp cho P1.5, pht mt xung. V d 29: Vit on lnh kim tra xem thanh ghi A c cha mt s chn hay khng? Nu c th chia cho 2, nu khng th tng ln 1 chn ho s ri chia n cho 2. Gii MOV B, #2 ;Gn s chia, B = 2. JNB ACC.0, OK ;Kim tra nu l s chn th nhy n OK. INC A ;Chn ho nu l s l. OK: DIV AB ;Chia A cho 2. V. PHN BI TP: Truy xut RAM ni (theo 2 cch: nh a ch nh trc tip v gin tip): Bi 1: Vit on lnh ghi (chuyn) gi tr 40H vo nh 30H ca RAM ni. Bi 2: Vit on lnh xa ni dung nh 31H ca RAM ni. Bi 3: Vit on lnh ghi (chuyn) ni dung thanh ghi A vo nh 32H ca RAM ni. Bi 4: Vit on lnh ghi (chuyn) ni dung nh 33H ca RAM ni vo thanh ghi A. Bi 5: Vit on lnh ghi (chuyn) ni dung nh 34H ca RAM ni vo nh 35H ca RAM ni. Bi 6: Vit on lnh ghi (chuyn) ni dung thanh ghi R4 vo nh 36H ca RAM ni. Bi 7: Vit on lnh ghi (chuyn) ni dung nh 37H ca RAM ni vo thanh ghi R5. Bi 8: Vit on lnh ghi (chuyn) ni dung thanh ghi A vo thanh ghi R1. Bi 9: Vit on lnh ghi (chuyn) ni dung thanh ghi R2 vo thanh ghi A. Bi 10: Vit on lnh ghi (chuyn) gi tr ABH vo thanh ghi A. Bi 11: Vit on lnh ghi (chuyn) gi tr CDH vo thanh ghi R3. Truy xut RAM ngoi: Bi 1: Vit on lnh ghi (chuyn) gi tr 40H vo nh 30H ca RAM ngoi (RAM ngoi c dung lng 256 byte). Bi 2: Vit on lnh xa nh 31H ca RAM ngoi (RAM ngoi c dung lng 256 byte). Bi 3: Vit on lnh ghi (chuyn) ni dung nh 32H ca RAM ngoi vo thanh ghi A (RAM ngoi c dung lng 256 byte). Bi 4: Vit on lnh ghi (chuyn) ni dung thanh ghi A vo nh 33H ca RAM ngoi (RAM ngoi c dung lng 256 byte). Bi 5: Vit on lnh chuyn d liu nh 34H ca RAM ngoi vo nh 35H ca RAM ngoi (RAM ngoi c dung lng 256 byte). Gio trnh Vi x l. 114 Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

Bi 6: Vit on lnh ghi (chuyn) gi tr 40H vo nh 1230H ca RAM ngoi (RAM ngoi c dung lng > 256 byte). Bi 7: Vit on lnh xa nh 1231H ca RAM ngoi (RAM ngoi c dung lng > 256 byte). Bi 8: Vit on lnh ghi (chuyn) ni dung nh 1232H ca RAM ngoi vo thanh ghi A (RAM ngoi c dung lng > 256 byte). Bi 9: Vit on lnh ghi (chuyn) ni dung thanh ghi A vo nh 1233H ca RAM ngoi (RAM ngoi c dung lng > 256 byte). Bi 10: Vit on lnh chuyn d liu nh 1234H ca RAM ngoi vo nh 1235H ca RAM ngoi (RAM ngoi c dung lng > 256 byte). Truy xut Port: Bi 1: Vit on lnh xut (ghi) gi tr 0FH ra Port 1. Bi 2: Vit on lnh xut (ghi) gi tr F0H ra Port 2. Bi 3: Vit on lnh xut (ghi) ni dung thanh ghi A ra Port 1. Bi 4: Vit on lnh nhp (c) t Port 1 vo thanh ghi A. Bi 5: Vit on lnh nhp (c) t Port 1 v xut ra Port 2. Bi 6: Vit on lnh xut (ghi) ni dung nh 37H ca RAM ni ra Port 3. Bi 7: Vit on lnh nhp (c) t Port 2 vo nh 38H ca RAM ni. Bi 8: Vit on lnh xut mc 1 (mc logic cao) ra chn P1.0 Bi 9: Vit on lnh xut mc 0 (mc logic thp) ra chn P1.1 Truy xut RAM ni, RAM ngoi v Port: Bi 1: Vit on lnh chuyn nh 40H (RAM ni) vo nh 2000H (RAM ngoi). Bi 2: Vit on lnh chuyn ni dung nh 2001H (RAM ngoi) vo nh 41H (RAM ni). Bi 3: Vit on lnh nhp (c) t Port 1 vo nh 42H (RAM ni). Bi 4: Vit on lnh nhp (c) t Port 1 vo nh 2002H (RAM ngoi). Bi 5: Vit on lnh xut (ghi) ni dung nh 43H (RAM ni) ra Port 1. Bi 6: Vit on lnh xut (ghi) ni dung nh 2003H (RAM ngoi) ra Port 1. S dng vng lp: Bi 1: Vit on lnh xa 20 nh RAM ni c a ch bt u l 30H. Bi 2: Vit on lnh xa cc nh RAM ni t a ch 20H n 7FH. Bi 3: Vit on lnh xa 250 nh RAM ngoi c a ch bt u l 4000H. Bi 4: Vit on lnh xa 2500 nh RAM ngoi c a ch bt u l 4000H. Bi 5: Vit on lnh xa cc nh RAM ngoi t a ch 2000H n 205FH. Bi 6: Vit on lnh xa cc nh RAM ngoi t a ch 2000H n 3FFFH. Bi 7: Vit on lnh xa ton b RAM ngoi c dung lng 8KB, bit rng a ch u l 2000H. Gio trnh Vi x l. 115 Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

Bi 8: Vit on lnh chuyn mt chui d liu gm 10 byte trong RAM ni c a ch u l 30H n vng RAM ni c a ch u l 40H. Bi 9: Vit on lnh chuyn mt chui d liu gm 100 byte trong RAM ngoi c a ch u l 2000H n vng RAM ngoi c a ch u l 4000H. Bi 10: Vit on lnh chuyn mt chui d liu gm 1000 byte trong RAM ngoi c a ch u l 2000H n vng RAM ngoi c a ch u l 4000H. Bi 11: Vit on lnh chuyn mt chui d liu gm 10 byte trong RAM ni c a ch u l 30H n vng RAM ngoi c a ch u l 4000H. Bi 12: Vit on lnh chuyn mt chui d liu gm 10 byte trong RAM ngoi c a ch u l 5F00H n vng RAM ni c a ch u l 40H. Bi 13: Cho mt chui d liu gm 20 byte lin tip trong RAM ni, bt u t a ch 20H. Hy vit on lnh ln lt xut cc d liu ny ra Port 1. Bi 14: Gi s Port 1 c ni n mt thit b pht d liu (v d nh 8 nt nhn). Hy vit on lnh nhn lin tip 10 byte d liu t thit b pht ny v ghi vo 10 nh (RAM ni) lin tip bt u t nh 50H. To tr: Bi 1: Vit chng trnh con delay 100s, bit rng fOSC dng trong h thng l: a. 6 MHz. b. 11,0592 MHz. c. 12 MHz. d. 24 MHz Bi 2: Vit chng trnh con delay 100ms, bit rng fOSC dng trong h thng l: a. 6 MHz. b. 11,0592 MHz. c. 12 MHz. d. 24 MHz Bi 3: Vit chng trnh con delay 1s, bit rng fOSC dng trong h thng l: a. 6 MHz. b. 11,0592 MHz. c. 12 MHz. d. 24 MHz To xung: ) ti chn P1.0 vi rng xung 1ms, bit Bi 1: Vit on lnh to mt xung dng ( rng fOSC =12 MHz. Bi 2: Vit on lnh to chui xung vung c f = 100 KHz ti chn P1.1 (fOSC =12 MHz). Bi 3: Vit on lnh to chui xung vung c f = 100 KHz v c chu k lm vic D = 40% ti chn P1.2 (fOSC =12 MHz). Bi 4: Vit on lnh to chui xung vung c f = 10 KHz ti chn P1.3 (fOSC =24 MHz). Bi 5: Vit on lnh to chui xung vung c f = 10 KHz v c chu k lm vic D = 30% ti chn P1.3 (fOSC =24 MHz). Bi 6: Vit on lnh to chui xung vung c f = 10 Hz ti chn P1.4 (fOSC =12 MHz). Bi 7: Vit on lnh to chui xung vung c f = 10 Hz v c chu k lm vic D = 25% ti chn P1.5 (fOSC =11,0592 MHz). Cc php ton: Gio trnh Vi x l. 116 Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

Bi 1: Cho mt chui s 8 bit khng du trong RAM ni gm 10 s bt u t nh 30H. Hy vit chng trnh con cng chui s ny v ghi kt qu vo nh 2FH trong RAM ni (gi s kt qu nh hn hoc bng 255). Bi 2: Cho mt chui s 8 bit khng du trong RAM ni gm 10 s bt u t nh 30H. Hy vit chng trnh con cng chui s ny v ghi kt qu vo hai nh 2EH:2FH trong RAM ni ( nh 2EH cha byte cao ca kt qu v nh 2FH cha byte thp ca kt qu). Bi 3: Cho mt chui s 16 bit khng du trong RAM ni gm 10 s bt u t nh 30H theo nguyn tc nh c a ch nh hn cha byte cao v nh c a ch ln hn cha byte thp. (V d: byte cao ca s 16 bit u tin c ct ti nh 30H v byte thp ca s 16 bit u tin c ct ti nh 31H; byte cao ca s 16 bit th hai c ct ti nh 32H v byte thp ca s 16 bit th hai c ct ti nh 33H). Hy vit chng trnh con cng chui s ny v ct kt qu vo hai nh 2EH:2FH trong RAM ni. Bi 4: Tng t nh cc bi 1, 2, 3 nhng thc hin i vi php tr. Bi 5: Vit chng trnh con ly b 2 s 16 bit cha trong hai thanh ghi R2:R3. So snh: Bi 1: Cho hai s 8 bit, s th nht cha trong nh 30H, s th hai cha trong nh 31H. Vit chng trnh con so snh hai s ny. Nu s th nht ln hn hoc bng s th hai th set c F0, nu ngc li th xa c F0. Bi 2: Cho hai s 16 bit, s th nht cha trong hai nh 30H:31H, s th hai cha trong hai nh 32H:33H. Vit chng trnh con so snh hai s ny. Nu s th nht ln hn hoc bng s th hai th set c F0, nu ngc li th xa c F0. Bi 3: Cho mt chui k t di dng m ASCII trong RAM ni, di 20 byte, bt u t a ch 50H. Vit on lnh xut cc k t in hoa c trong chui ny ra Port 1. Bit rng m ASCII ca k t in hoa l t 65H (ch A) n 90H (ch Z). Bi 4: Vit on lnh nhp mt chui k t t Port 1 di dng m ASCII v ghi vo RAM ngoi, bt u t a ch 0000H. Bit rng chui ny kt thc bng k t CR (c m ASCII l 0DH) v ghi c k t ny vo RAM. Bi 5: Vit on lnh nhp mt chui k t t Port 1 di dng m ASCII v ghi vo RAM ngoi, bt u t a ch 0000H. Bit rng chui ny kt thc bng k t CR (c m ASCII l 0DH) v khng ghi k t ny vo RAM. Bi 6: Vit on lnh nhp mt chui k t t Port 1 di dng m ASCII v ghi vo RAM ngoi, bt u t a ch 0000H. Bit rng chui ny kt thc bng k t CR (c m ASCII l 0DH) v khng ghi k t ny vo RAM m thay bng k t NULL (c m ASCII l 00H). Bi 7: Cho mt chui k t di dng m ASCII trong RAM ni, di 20 byte, bt u t a ch 50H. Vit on lnh i cc k t in hoa c trong chui ny thnh k t thng. Bit rng m ASCII ca k t thng bng m ASCII ca k t in hoa cng thm 32H. Bi 8: Cho mt chui k t s di dng m ASCII trong RAM ni, di 20 byte, bt u t a ch 50H. Vit on lnh i cc k t s ny thnh m BCD. Bit rng m ASCII ca cc k t s l t 30H (s 0) n 39H (s 9). S dng lnh nhy c iu kin: Bi 1: Cho mt chui d liu di dng s c du trong RAM ngoi, di 100 byte, bt u t a ch 0100H. Vit on lnh ln lt xut cc d liu trong chui ra Port 1 nu l s dng (xem s 0 l dng) v xut ra Port 2 nu l s m. Bi 2: Cho mt chui d liu di dng s c du trong RAM ngoi, bt u t a ch 0100H v kt thc bng s 0. Vit on lnh ln lt xut cc d liu trong chui ra Port 1 nu l s dng v xut ra Port 2 nu l s m.

Gio trnh Vi x l.

117

Bin son: Phm Quang Tr

Chng 3: Tp lnh ca 8051.

Trng H Cng nghip Tp.HCM.

Bi 3: Cho mt chui d liu di dng s khng du trong RAM ngoi, bt u t a ch 0100H v di chui l ni dung nh 00FFH. Vit on lnh m s s chn (chia ht cho 2) c trong chui v ct vo nh 00FEH. Bi 4: Cho mt chui d liu di dng s khng du trong RAM ngoi, bt u t a ch 0100H v di chui l ni dung nh 00FFH. Vit on lnh ghi cc s chn (xem s 0 l s chn) c trong chui vo RAM ni bt u t a ch 30H cho n khi gp s l th dng. Bi 5: Vit chng trnh con c nhim v ly mt byte t mt chui data gm 20 byte ct trong RAM ngoi bt u t a ch 2000H v xut ra Port1. Mi ln gi chng trnh con ch xut mt byte, ln gi k th xut byte k tip, ln gi th 21 th li xut byte u, ...

Gio trnh Vi x l.

118

Bin son: Phm Quang Tr

You might also like