intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Vi xử lý - Chương 3

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:80

137
lượt xem
47
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo giáo trình Vi xử lý, trường ĐH Công nghiệp Tp.HCM gồm 6 chương - Chương 3 Tập lệnh của 8051

Chủ đề:
Lưu

Nội dung Text: Vi xử lý - Chương 3

  1. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. CHƯƠNG 3 T P L NH C A 8051 I. M ð U: Khuông d ng t ng quát c a m t dòng l nh: [LABEL:] MNEMONIC [OPERAND][,OPERAND]… [;COMMENT] o Nhãn (Label): bi u th ñ a ch c a dòng l nh (ho c d li u) theo sau, ñư c dùng trong trư ng toán h ng c a l nh nh y, l nh r nhánh (SJMP AAA; ACALL BBB; CJNE A, #35H, LOOP; JNB P3.1, TEST_1…). Lưu ý v nhãn: Do ngư i l p trình t ñ t (không ñư c trùng v i t khoá, mã g i nh , ch d n, toán t ho c ký hi u ti n ñ nh nghĩa). B t ñ u b ng ký t ch , d u ch m h i (?), d u g ch dư i (_). Dài t i ña 31 ký t . K t thúc b ng d u hai ch m (:). o Mã g i nh (Mnemonic): bi u di n các mã c a l nh ho c các ch d n c a chương trình d ch h p ng (Mã g i nh : ADD, SUBB, INC, …; Ch d n: ORG, EQU, DB, …). o Toán h ng (Operand): ch a ñ a ch ho c d li u mà l nh s s d ng. S lư ng toán h ng trong m t dòng l nh ph thu c vào t ng dòng l nh (RET – không toán h ng, INC A – m t toán h ng, ADD A, R0 – hai toán h ng, CJNE A, #12H, ABC – ba toán h ng). Lưu ý v toán h ng: trong các l nh có 2 toán h ng thì toán h ng ñ u tiên còn ñư c g i là toán h ng ñích (Destination), toán h ng th hai còn ñư c g i là toán h ng ngu n (Source). o Chú thích (Comment): làm cho rõ nghĩa cho chương trình. Các chú thích ph i n m trên cùng m t dòng và b t ñ u b ng d u ch m ph y (;). Các chú thích n u n m trên nhi u dòng thì m i dòng cũng ph i b t ñ u b ng d u ch m ph y (;). Lưu ý: Chi ti t v ph n này xem thêm t i “Chương 7: L p trình h p ng ” trong sách “H vi ñi u khi n – T ng Văn On”. Giáo trình Vi x lý. 39 Biên so n: Ph m Quang Trí
  2. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. II. CÁC KI U ð NH ð A CH (ADDRESSING MODE): 1. ð nh ñ a ch thanh ghi (Register Addressing): • ðư c dùng ñ truy xu t d li u trong các thanh ghi t R0 ñ n R7. • S byte c a l nh: 1 byte. • C u trúc l nh: • Ví d : ADD A, R5 ⇒ L nh c ng n i dung thanh ghi A v i n i dung thanh ghi R5. (Gi s : (A)=05H, (R5)=9AH). ⇒ Mã l nh: ⇒ Mô t l nh: • Ngoài ra, m t s trư ng h p ñ c bi t ki u ñ nh ñ a ch này cũng dùng ñ truy xu t d li u trong các thanh ghi như: thanh ghi ch a A, thanh ghi con tr d li u DPTR, thanh ghi b ñ m chương trình PC, c nh C và c p thanh ghi AB. INC A L nh tăng n i dung thanh ghi A. • Ví d : INC DPTR L nh tăng n i dung thanh ghi DPTR. 2. ð nh ñ a ch tr c ti p (Direct Addressing): • ðư c dùng ñ truy xu t d li u trong các ô nh (00H - FFH) hay trong các thanh ghi (A, B, P0–P3, DPH, DPL,…) c a b nh bên trong chip. • S byte c a l nh: 2 byte. • C u trúc l nh: Giáo trình Vi x lý. 40 Biên so n: Ph m Quang Trí
  3. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. • Ví d : ADD A, P1 ⇔ ADD A, 90H ⇒ L nh c ng n i dung thanh ghi A v i n i dung thanh ghi port 1 hay ô nh 90H. (Gi s : (A) = 05H, (P1) = (90H) = 9AH). ⇒ Mã l nh: ⇒ Mô t l nh: 3. ð nh ñ a ch gián ti p (Indirect Addressing): • ðư c dùng ñ truy xu t d li u trong các ô nh “gián ti p” c a b nh bên trong chip. Các thanh ghi R0 và R1 ñư c dùng ñ ch a ñ a ch c a các ô nh gián ti p (00H - FFH) trong chip. Lưu ý r ng, trư c các thanh ghi R0, R1 c n ph i có d u “@”. • S byte c a l nh: 1 byte. • C u trúc l nh: • Ví d : ADD A, @R0 ⇒ L nh c ng n i dung thanh ghi A v i n i dung ô nh có ñ a ch ch a trong thanh ghi R0. (Gi s : (A) = 05H, (R0) = 3BH, (3BH) = 9AH). ⇒ Mã l nh: ⇒ Mô t l nh: 4. ð nh ñ a ch t c th i (Immediate Addressing): • ðư c dùng ñ truy xu t m t h ng s (giá tr bi t trư c) thay vì là m t bi n (giá tr không bi t trư c) như các ki u ñ nh ñ a ch trên. Lưu ý r ng, trư c d li u t c th i c n ph i có d u “#”. Ch ñ ñ nh ñ a ch t c th i có th dùng ñ n p d li u vào m i ô nh và thanh ghi b t kỳ (ñ i v i thanh ghi 8 bit: #00H - #0FFH, ñ i v i thanh ghi 16 bit: #0000H - #0FFFFH). • S byte c a l nh: 2 byte. • C u trúc l nh: • Ví d : ADD A, #9AH ⇒ L nh c ng n i dung thanh ghi A v i giá tr 9AH. (Gi s : (A) = 05H). ⇒ Mã l nh: ⇒ Mô t l nh: Giáo trình Vi x lý. 41 Biên so n: Ph m Quang Trí
  4. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. 5. ð nh ñ a ch tương ñ i (Relative Addressing): • ðư c s d ng cho các l nh nh y. • ð a ch tương ñ i (hay offset) là m t giá tr 8 bit có d u. • T m nh y gi i h n là: -128 byte … 127 byte t v trí c a l nh ti p theo sau l nh nh y. • S byte c a l nh: 2 byte. • C u trúc l nh: • Ví d 1: SJMP AAA ⇒ L nh nh y ñ n nhãn AAA (Gi s : nhãn AAA ñ t trư c l nh ñ a ch 0107H, l nh SJMP n m trong b nh t i ñ a ch 0100H và 0101H). ⇒ Mã l nh: ⇒ Mô t l nh: xem hình 3.5.2.1. • Ví d 2: SJMP AAA ⇒ L nh nh y ñ n nhãn AAA (Gi s : nhãn AAA ñ t trư c l nh ñ a ch 203BH, l nh SJMP n m trong b nh t i ñ a ch 2040H và 2041H). ⇒ Mã l nh: ⇒ Mô t l nh: xem hình 3.2.5.2. 6. ð nh ñ a ch tuy t ñ i (Absolute Addressing): • ðư c s d ng cho các l nh ACALL và AJMP. • ð a ch tuy t ñ i là m t giá tr 11 bit. • T m nh y gi i h n là: trong cùng trang 2K hi n hành (trang 2K ch a l nh nh y). • S byte c a l nh: 2 byte. • C u trúc l nh: Giáo trình Vi x lý. 42 Biên so n: Ph m Quang Trí
  5. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. • Ví d : AJMP AAA ⇒ L nh nh y ñ n nhãn AAA (Gi s : nhãn AAA ñ t trư c l nh ñ a ch 0F46H, l nh AJMP n m trong b nh t i ñ a ch 0900H và 0901H). ⇒ Mã l nh: ⇒ Mô t l nh: FFFFH 0FFFH 2K trang 31 F800H F800H 0F46H AAA 32 x 2K 1800H 17FFH (64K) 2K trang 1 2K trang 2 1000H 0FFFH 0901H 46H AJMP AAA 2K trang 1 0900H E1H 0800H 07FFH 2K trang 0 0000H 0800H Baûn ñoà nhôù 64K ñöôïc chia thaønh 32 trang 2K A15 A11A10 A0 Caùch thaønh laäp 5 bit xaùc ñònh 11 bit xaùc ñònh ñòa chæ trong ñòa chæ cuûa trang 2K 1 trang 2K nhaõn seõ nhaûy tôùi Töø 5 bit (A15...A11) Töø 11 bit (A10...A0) trong trong thanh ghi PC leänh nhaûy 7. ð nh ñ a ch dài (Long Addressing): • ðư c s d ng cho các l nh LCALL và LJMP. • ð a ch dài là m t giá tr 16 bit. • T m nh y gi i h n là: toàn b không gian nh 64K. • S byte c a l nh: 3 byte. • C u trúc l nh: Giáo trình Vi x lý. 43 Biên so n: Ph m Quang Trí
  6. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. • Ví d : LJMP AAA ⇒ L nh nh y ñ n nhãn AAA (Gi s : nhãn AAA ñ t trư c l nh ñ a ch A209H, l nh LJMP n m trong b nh t i ñ a ch 0100H, 0101H và 0102H). ⇒ Mã l nh: FFFFH A209H AAA 64K 0102H 09H LJMP AAA 0101H A2H 0100H 12H 0000H ⇒ Mô t l nh: 8. ð nh ñ a ch ch s (Indexed Addressing): • ðư c dùng trong các ng d ng c n t o các b ng nh y hay các b ng tìm ki m. Ki u ñ nh ñ a ch này dùng m t thanh ghi n n (PC hay DPTR) k t h p v i m t offset (A) ñ t o thành d ng ñ a ch hi u d ng cho l nh. • S byte c a l nh: 1 byte. • C u trúc l nh: • Ví d : JMP @A+DPTR ⇒ L nh nh y gián ti p. Giáo trình Vi x lý. 44 Biên so n: Ph m Quang Trí
  7. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. III. T P L NH C A 8051 (8051 INSTRUCTION SET): M t s ký hi u dùng trong l nh: Rn ð a ch thanh ghi s d ng (R0 – R7). direct ð a ch tr c ti p c a m t byte trong RAM n i (00H-FFH) @Ri ð a ch gián ti p s d ng (R0 ho c R1). source Toán h ng ngu n (Rn, direct ho c @Ri). dest Toán h ng ñích (Rn, direct ho c @Ri). #data H ng s 8 bit (#00H - #0FFH). #data16 H ng s 16 bit (#0000H - #0FFFFH). bit ð a ch tr c ti p c a m t bit (ñ a ch bit). rel Offset 8 bit có d u. addr11 ð a ch 11 bit. addr16 ð a ch 16 bit. ðư c thay th b i … ← () N i dung c a … (( )) N i dung ñư c ch a b i … rrr Thanh ghi c a dãy thanh ghi (000 = R0, 001 = R1, …, 111 = R7). i ð a ch gián ti p s d ng R0 (i = 0) ho c R1 (i = 1). dddddddd Các bit d li u. aaaaaaaa Các bit ñ a ch . eeeeeeee ð a ch tương ñ i. M t s lưu ý khi l p trình b vi ñi u khi n 8051: • ð thông báo ñó là m t giá tr t c th i thì c n ph i ñ t thêm ký hi u “#” vào trư c giá tr ñó. N u không có ký hi u “#” thì giá tr ñó ñư c hi u là ñ a ch c a ô nh . MOV A, #12H ;N p giá tr 12H vào thanh ghi A. MOV A, 12H ;Sao chép n i dung c a ô nh có ñ a ;ch 12H vào thanh ghi A. ñây ta cũng nên lưu ý r ng n u thi u ký hi u “#” thì l nh trên cũng không gây ra l i trong quá trình biên d ch. Vì trình d ch h p ng cho ñó là m t l nh h p l . Tuy nhiên, k t qu l p trình s không ñúng như ý mu n c a ngư i l p trình. • Các giá tr t c th i n u có thành ph n ch (A, B, C, …, F) ñ ng ñ u thì c n ph i thêm s 0 vào trư c thành ph n ch và sau ký hi u “#”. Vi c này ñ báo r ng thành ph n ch ñó là m t s HEX ch không ph i là m t ký t . MOV A, #BH ;Thi u s 0 → gây l i khi biên d ch. MOV A, #0BH ;Thêm s 0 → ñúng. MOV A, #F9H ;Thi u s 0 → gây l i khi biên d ch. MOV A, #0F9H ;Thêm s 0 → ñúng. Giáo trình Vi x lý. 45 Biên so n: Ph m Quang Trí
  8. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. ñây ta cũng nên lưu ý r ng vi c thi u s 0 thêm vào này s gây l i trong quá trình biên d ch ñ i v i các chương trình biên d ch cũ. Ngày nay, m t s ph n m m biên d ch ñã h tr vi c này. ði u này có nghĩa là ta có th thêm hay không thêm s 0 vào thì ñ u không nh hư ng gì ñ n quá trình biên d ch (không gây ra l i khi biên d ch). • Trong l nh, các giá tr t c th i hay ñ a ch c a ô nh có th ñư c bi u di n dư i b t kỳ d ng nào BIN (nh phân), DEC (th p phân) hay HEX (th p l c phân). o ð a ch ô nh : các câu l nh sau ñây là tương ñương nhau: MOV A, 64H ;Sao chép n i dung c a ô nh có ñ a ;ch 64H vào thanh ghi A. MOV A, 100 ;Sao chép n i dung c a ô nh có ñ a ;ch 64H vào thanh ghi A. MOV A, 01100100B ;Sao chép n i dung c a ô nh có ñ a ;ch 64H vào thanh ghi A. o Giá tr t c th i: các câu l nh sau ñây là tương ñương nhau: MOV A, #0C9H ;N p giá tr C9H vào thanh ghi A. MOV A, #201 ;N p giá tr C9H vào thanh ghi A. MOV A, #11001001B ;N p giá tr C9H vào thanh ghi A. Lưu ý các h u t ñi kèm tương ng cho t ng d ng: B – d ng BIN (nh phân), H – d ng HEX (th p l c phân), D ho c không có h u t – d ng DEC (th p phân). • Chuy n m t giá tr t c th i hay ñ a ch c a ô nh l n hơn kh năng ch a c a m t thanh ghi thì s gây ra l i (00H-FFH: cho thanh ghi ho c ô nh 8 bit; 0000H-FFFFH: cho thanh ghi 16 bit - DPTR). MOV A, #123H ;Không h p l vì 123H > FFH. MOV A, #214 ;H p l vì 214 (D6H) < FFH (255). MOV A, #0F2H ;H p l vì F2H < FFH. MOV A, 123H ;Không h p l vì 123H > FFH. MOV A, 200 ;H p l vì 200 (C8H) < FFH (255). MOV DPTR, #123H ;H p l vì 123H < FFFFH (16 bit). 1. Nhóm l nh s h c: 1.1. L nh ADD A, : • Ch c năng: C ng (Add). ADD c ng n i dung c a thanh ghi A (A) v i n i dung c a m t byte có ñ a ch • Mô t : ñư c ch ra trong l nh (src- byte) và ñ t k t qu vào thanh ghi A. Các c b nh hư ng. o C CY = 1 n u có s nh t bit 7. Ngư c l i CY = 0. o C AC = 1 n u có s nh t bit 3. Ngư c l i AC = 0. o C OV = 1 n u có s nh t bit 6 nhưng không có s nh t bit 7 ho c n u có s nh t bit 7 nhưng không có s nh t bit 6. Ngư c l i OV = 0. o Khi c ng hai s nguyên không d u và có d u: S không d u: CY = 1 Phép toán có nh . S có d u: CY = 1 S dương = S âm + S âm. S âm = S dương + S dương. Giáo trình Vi x lý. 46 Biên so n: Ph m Quang Trí
  9. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. • Các d ng l nh: ADD A, Rn 1 S byte 1 S chu kỳ 00101rrr Mã ñ i tư ng (A) ← (A) + (Rn) Ho t ñ ng ADD A, direct 2 S byte 1 S chu kỳ 00100101 aaaaaaaa Mã ñ i tư ng (A) ← (A) + (direct) Ho t ñ ng ADD A, @Ri 1 S byte 1 S chu kỳ 0010011i Mã ñ i tư ng (A) ← (A) + ((Ri)) Ho t ñ ng ADD A, #data 2 S byte 1 S chu kỳ 00100100 dddddddd Mã ñ i tư ng (A) ← (A) + #data Ho t ñ ng • Ví d : Cho bi t trư c (A)=C3H, (R0)=47H, (P1)=(90H)=AAH, (47H)=D2H. Sau khi th c thi l nh ADD A, R0 thì: (A)=0AH, CY=1, AC=0, OV=0 Sau khi th c thi l nh ADD A, 90H hay ADD A, P1 thì: (A)=6DH, CY=1, AC=0, OV=1 Sau khi th c thi l nh ADD A, @R0 thì: (A)=95H, CY=1, AC=0, OV=0 ADD A, @R0 A C3H C3H + D2H = 95H A 95H R0 47H D2H 47H Giáo trình Vi x lý. 47 Biên so n: Ph m Quang Trí
  10. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. Sau khi th c thi l nh ADD A, #4EH thì: (A)=11H, CY=1, AC=1, OV=0 1.2. ADDC A, • Ch c năng: C ng có c nh (Add with Carry). ADDC c ng ñ ng th i n i dung c a thanh ghi A (A) v i n i dung c a byte có ñ a • Mô t : ch ñư c ch ra trong l nh (src-byte) và c nh (CY), ñ t k t qu vào thanh ghi A. Các c b nh hư ng. o C CY = 1 n u có s nh t bit 7. Ngư c l i CY = 0. o C AC = 1 n u có s nh t bit 3. Ngư c l i AC = 0. o C OV = 1 n u có s nh t bit 6 nhưng không có s nh t bit 7 ho c n u có s nh t bit 7 nhưng không có s nh t bit 6. Ngư c l i OV = 0. o Khi c ng hai s nguyên không d u và có d u: S không d u: CY = 1 Phép toán có nh . S có d u: CY = 1 S dương = S âm + S âm. S âm = S dương + S dương. • Các d ng l nh: ADDC A, Rn 1 S byte 1 S chu kỳ 00110rrr Mã ñ i tư ng (A) ← (A) + (C) + (Rn) Ho t ñ ng ADDC A, direct 2 S byte 1 S chu kỳ 00110101 aaaaaaaa Mã ñ i tư ng (A) ← (A) + (C) + (direct) Ho t ñ ng ADDC A,@Ri 1 S byte 1 S chu kỳ 0011011i Mã ñ i tư ng (A) ← (A) + (C) + ((Ri)) Ho t ñ ng ADDC A, #data 2 S byte 1 S chu kỳ 00110100 dddddddd Mã ñ i tư ng (A) ← (A) + (C) + # data Ho t ñ ng Giáo trình Vi x lý. 48 Biên so n: Ph m Quang Trí
  11. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. • Ví d : Cho bi t trư c (A)=C3H, (R0)=47H, (P1)=(90H)=AAH, (47H)=D2H và c CY=1. Sau khi th c thi l nh ADDC A, R0 thì: (A)=0BH, CY=1, AC=0, OV=0 ADDC A, R0 CY A C3H C3H + 47H + 1H = 0BH A 0BH R0 47H Sau khi th c thi l nh ADDC A, 90H hay ADDC A, P1 thì: (A)=6DH, CY=1, AC=0, OV=1 Sau khi th c thi l nh ADDC A, @R0 thì: (A)=96H, CY=1, AC=0, OV=0 Sau khi th c thi l nh ADDC A, #4EH thì: (A)=11H, CY=1, AC=1, OV=0 ADDC A, #4EH A C3H C3H + 4EH + 1H = 12H A 12H 4EH 1.3. SUBB A, • Ch c năng: Tr có s mư n (Subtract with Borrow). SUBB tr n i dung c a thanh ghi A (A) v i n i dung c a byte có ñ a ch ñư c ch • Mô t : ra trong l nh (src-byte) cùng v i c nh và c t k t qu vào thanh ghi A. Các c b nh hư ng. o C CY = 1 n u có s mư n cho bit 7. Ngư c l i CY = 0. o C AC = 1 n u có s mư n cho bit 3. Ngư c l i AC = 0. o C OV = 1 n u có s mư n cho bit 6 nhưng không có s mư n cho bit 7 ho c n u có s mư n cho bit 7 nhưng không có s mư n cho bit 6. Ngư c l i OV = 0. o Khi c ng hai s nguyên không d u và có d u: S không d u: CY = 1 Phép toán có mư n. S có d u: CY = 1 S dương = S âm - S dương. S âm = S dương - S âm. Giáo trình Vi x lý. 49 Biên so n: Ph m Quang Trí
  12. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. • Các d ng l nh: SUBB A, Rn 1 S byte 1 S chu kỳ 10011rrr Mã ñ i tư ng (A) ← (A) – (C) – (Rn) Ho t ñ ng SUBB A, direct 2 S byte 1 S chu kỳ 10010101 aaaaaaaa Mã ñ i tư ng (A) ← (A) – (C) – (direct) Ho t ñ ng SUBB A, @Ri 1 S byte 1 S chu kỳ 1001011i Mã ñ i tư ng (A) ← (A) – (C) – ((Ri)) Ho t ñ ng SUBB A, #data 1 S byte 1 S chu kỳ 100110100 dddddddd Mã ñ i tư ng (A) ← (A) – (C) – #data Ho t ñ ng • Ví d : Cho bi t trư c (A)=83H, (R0)=78H, (P1)=(90H)=AAH, (78H)=C5H và c CY=1. Sau khi th c thi l nh SUBB A, R0 thì: (A)=0AH, CY=0, AC=1, OV=1 Sau khi th c thi l nh SUBB A, 90H hay SUBB A, P1 thì: (A)=D8H, CY=1, AC=1, OV=0 Sau khi th c thi l nh SUBB A, @R0 thì: (A)=BDH, CY=1, AC=1, OV=0 Giáo trình Vi x lý. 50 Biên so n: Ph m Quang Trí
  13. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. Sau khi th c thi l nh SUBB A, #D6H thì: (A)=ACH, CY=1, AC=1, OV=0 1.4. INC byte • Ch c năng: Tăng thêm 1 (Increment). Tăng n i dung c a byte có ñ a ch ñư c ch ra trong l nh (byte) thêm 1. Các c • Mô t : không b nh hư ng. Khi l nh này ñư c dùng ñ thay ñ i giá tr c a m t port xu t thì giá tr ñư c dùng • Lưu ý: làm d li u ban ñ u c a port ñư c l y t b ch t d li u xu t, không ph i ñư c l y t các chân nh p. • Các d ng l nh: INC A 1 S byte 1 S chu kỳ 00000100 Mã ñ i tư ng (A) ← (A) + 1 Ho t ñ ng INC Rn 1 S byte 1 S chu kỳ 00001rrr Mã ñ i tư ng (Rn) ← (Rn) + 1 Ho t ñ ng INC direct 2 S byte 1 S chu kỳ 00000101 aaaaaaaa Mã ñ i tư ng (direct) ← (direct) + 1 Ho t ñ ng INC @Ri 1 S byte 1 S chu kỳ 0000011i Mã ñ i tư ng ((Ri)) ← ((Ri)) + 1 Ho t ñ ng • Ví d : Cho bi t trư c (A)=C3H, (R0)=69H, (P1)=(90H)=AAH, (69H)=7FH. Sau khi th c thi l nh INC A thì: (A)=C4H Sau khi th c thi l nh INC 90H hay INC P1 thì: (P1)=(90H)=ABH Giáo trình Vi x lý. 51 Biên so n: Ph m Quang Trí
  14. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. Sau khi th c thi l nh INC @R0 thì: (@R0)=(69H)=80H Sau khi th c thi l nh INC R0 thì: R0=6AH 1.5. INC DPTR • Ch c năng: Tăng con tr d li u (Increment Data Pointer). Tăng n i dung c a thanh ghi con tr d li u 16-bit thêm 1. Các c không b nh • Mô t : hư ng. 1 S byte 2 S chu kỳ 10100011 Mã ñ i tư ng (DPTR) ← (DPTR) + 1 Ho t ñ ng • Ví d 1: Cho bi t trư c (DPTR)=1234H. Sau khi th c thi l nh INC DPTR thì: (DPTR)=1235H v i (DPH)=12H và (DPL)=35H • Ví d 2: Cho bi t trư c (DPH)=12H và (DPL)=FFH. Sau khi th c thi l nh INC DPTR thì: (DPTR)=1300H v i (DPH)=13H và (DPL)=00H Không có l nh giãm n i dung c a DPTR (DEC DPTR). N u mu n giãm n i dung • Lưu ý: c a DPTR ta ph i vi t m t ño n chương trình con ñ th c hi n ñi u này. Chương trình con ñư c minh h a như sau: DEC_DPTR: ;Chương trình con giãm DPTR. PUSH ACC ;C t t m giá tr ACC. DEC DPL ;Giãm byte th p c a DPTR. MOV A, DPL ;So sánh byte th p c a DPTR CJNE A,#0FFH, SKIP ;v i FFH. DEC DPH ;Giãm byte cao c a DPTR. SKIP: POP ACC ;Ph c h i giá tr ACC. RET Giáo trình Vi x lý. 52 Biên so n: Ph m Quang Trí
  15. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. 1.6. DEC byte • Ch c năng: Giãm b t 1 (Decrement). Giãm n i dung c a byte có ñ a ch ñư c ch ra trong l nh (byte) b t 1. Các c • Mô t : không b nh hư ng. Khi l nh này ñư c dùng ñ thay ñ i giá tr c a m t port xu t thì giá tr ñư c dùng • Lưu ý: làm d li u ban ñ u c a port ñư c l y t b ch t d li u xu t, không ph i ñư c l y t các chân nh p. • Các d ng l nh: DEC A 1 S byte 1 S chu kỳ 00010100 Mã ñ i tư ng (A) ← (A) – 1 Ho t ñ ng DEC Rn 1 S byte 1 S chu kỳ 00011rrr Mã ñ i tư ng (Rn) ← (Rn) – 1 Ho t ñ ng DEC direct 2 S byte 1 S chu kỳ 00010101 aaaaaaaa Mã ñ i tư ng (direct) ← (direct) – 1 Ho t ñ ng DEC @Ri 1 S byte 1 S chu kỳ 0001011i Mã ñ i tư ng ((Ri)) ← ((Ri)) – 1 Ho t ñ ng • Ví d : Cho bi t trư c (A)=C3H, (R0)=60H, (P1)=(90H)=AAH, (60H)=7AH. Sau khi th c thi l nh DEC A thì: (A)=C2H Sau khi th c thi l nh DEC 90H hay DEC P1 thì: (P1)=(90H)=A9H Sau khi th c thi l nh DEC @R0 thì: (@R0)=(60H)=79H Giáo trình Vi x lý. 53 Biên so n: Ph m Quang Trí
  16. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. Sau khi th c thi l nh DEC R0 thì: R0=5FH 1.7. MUL AB • Ch c năng: Nhân (Multiply). MUL AB nhân các s nguyên không d u 8-bit ch a trong thanh ghi A và thanh ghi • Mô t : B. Tích s là m t giá tr 16 bit, byte th p (8 bit th p) ñư c c t trong thanh ghi A còn byte cao (8 bit cao) ñư c c t trong thanh ghi B. N u tích s l n hơn 255 (0FFH) thì c tràn OV=1. C nh CY luôn luôn b xóa. 1 S byte 4 S chu kỳ 10100100 Mã ñ i tư ng (B) ← HIGH BYTE OF (A) × (B) Ho t ñ ng (A) ← LOW BYTE OF (A) × (B) • Ví d 1: Cho bi t trư c (A)=02H, (B)=7CH. Sau khi th c thi l nh MUL AB thì: (B)= 00H, (A)= F8H, CY=0, OV=0. • Ví d 2: Cho bi t trư c (A)=C3H, (B)=AAH. Sau khi th c thi l nh MUL AB thì: (B)= 81H, (A)= 7EH, CY=0, OV=1. 1.8. DIV AB • Ch c năng: Chia (Divide). DIV AB chia s nguyên không d u 8-bit ch a trong thanh ghi A cho s nguyên • Mô t : không d u 8-bit ch a trong thanh ghi B. Thương s ñư c c t trong thanh ghi A còn s dư ñư c c t trong thanh ghi B. C CY và c OV b xoá. N u ban ñ u B ch a 00H, giá tr tr v trong thanh ghi A và thanh ghi B không ñư c xác ñ nh và c OV=1. C CY ñư c xóa trong m i trư ng h p. 1 S byte 4 S chu kỳ 10000100 Mã ñ i tư ng (A) ← QUOTIENT OF (A) / (B) Ho t ñ ng (B) ← REMAINDER OF (A) / (B) Giáo trình Vi x lý. 54 Biên so n: Ph m Quang Trí
  17. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. • Ví d 1: Cho bi t trư c (A)=C3H, (B)=0AH. Sau khi th c thi l nh DIV AB thì: (B)= 05H, (A)= 13H, CY=0, OV=0. • Ví d 2: Cho bi t trư c (A)=00H, (B)=0AH. Sau khi th c thi l nh DIV AB thì: (B)= 00H, (A)= 00H, CY=0, OV=0. • Ví d 3: Cho bi t trư c (A)=C3H, (B)=00H. Sau khi th c thi l nh DIV AB thì: (B)= yyH, (A)= xxH, CY=0, OV=1. DIV AB A C3H B yyH C3H / 00H = xxH dö yyH B A xxH 00H 1.9. DA A • Ch c năng: Hi u ch nh th p phân n i dung c a thanh ghi A ñ i v i phép c ng (Decimal-adjust Accumulator for Addition) DA A hi u ch nh giá tr 8-bit trong thanh ghi A (giá tr này là k t qu phép c ng • Mô t : hai toán h ng có d ng BCD - gói trư c ñó) ñ t o ra hai digit 4 bit. Phép c ng ñư c th c hi n b i l nh ADD ho c ADDC, l nh DA A không áp d ng cho phép tr SUBB). N u c AC = 1 ho c n u 4 bit th p c a thanh ghi A có giá tr > “9” (xxxx1010 – xxxx1111), thì “6”ñư c c ng v i n i dung c a thanh ghi A ñ t o ra s BCD 4 bit th p. Sau khi c ng, c CY = 1 n u có s nh t 4 bit th p chuy n ñ n t t c 4 bit cao. N u c CY = 1 ho c n u 4 bit cao c a thanh ghi A có giá tr > “9” (1010xxxx – 1111xxxx), thì “6”ñư c c ng v i 4 bit cao ñ t o ra s BCD 4 bit cao. Sau khi c ng c CY = 1 n u có s nh t 4 bit cao nhưng c CY không b xóa. V y thì c CY ch ra r ng t ng c a 2 toán h ng BCD ban ñ u l n hơn 99. C OV không b nh hư ng. T t c s ki n trên ch x y ra trong m t chu kỳ máy. L nh này th c hi n phép bi n ñ i th p phân b ng cách c ng 00H, 06H, 60H hay 66H v i n i dung c a thanh ghi A tùy thu c vào n i dung ban ñ u c a thanh ghi A và các ñi u ki n c a t tr ng thái chương trình PSW. DA A không th ñơn gi n bi n ñ i s hex trong thanh ghi A thành s d ng BCD, • Lưu ý: DA A cũng không áp d ng cho phép tr th p phân. 1 S byte 1 S chu kỳ 11010100 Mã ñ i tư ng Giáo trình Vi x lý. 55 Biên so n: Ph m Quang Trí
  18. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. Gi s n i dung c a thanh ghi A là BCD Ho t ñ ng 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 bi t trư c (A)=56H → bi u di n BCD c a s 56 (R3)=67H → bi u di n BCD c a s 67 ADD A, R3 Sau khi th c thi chu i l nh: DA A thì: c CY=1 và (A)=23 → bi u di n BCD c a s 123 (56+67) • Ví d 2: Cho bi t trư c (A)=59H → bi u di n BCD c a s 59 (R3)=28H → bi u di n BCD c a s 28 ADD A, R3 Sau khi th c thi chu i l nh: DA A thì: c CY=0 và (A)=87 → bi u di n BCD c a s 87 (59+28) • Ví d 3: Cho bi t trư c (A)=86H → bi u di n BCD c a s 86 (R3)=92H → bi u di n BCD c a s 92 ADD A, R3 Sau khi th c thi chu i l nh: DA A thì: c CY=1 và (A)=78 → bi u di n BCD c a s 178 (86+92) Giáo trình Vi x lý. 56 Biên so n: Ph m Quang Trí
  19. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. • Ví d 4: Cho bi t trư c (A)=56H → bi u di n BCD c a s 56 (R3)=67H → bi u di n BCD c a s 67 c CY=1 ADDC A, R3 Sau khi th c thi chu i l nh: DA A thì: c CY=1 và (A)=24 → bi u di n BCD c a s 124 (56+67+1) Các giá tr BCD có th ñư c tăng thêm 1 ñơn v ho c giãm ñi 1 ñơn v b ng cách • Lưu ý: c ng v i 01H (khi tăng) ho c c ng v i 99H (khi giãm). o Ví d 1: Gi s cho (A)=39H → bi u di n BCD c a s 39. ADD A, #01H Sau khi th c thi chu i l nh: DA A thì: c CY=0 và (A)=40H → bi u di n BCD c a s 40. o Ví d 2: Gi s cho (A)=30H → bi u di n BCD c a s 30. ADD A, #99H Sau khi th c thi chu i l nh: DA A thì: c CY=1 và (A)=29H → bi u di n BCD c a s 29. 2. Nhóm l nh logic: B ng tr ng thái c a các phép toán logic AND – OR – XOR – CPL A B A AND B A OR B A XOR B CPL A 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 2.1. ANL , • Ch c năng: AND hai toán h ng (Logical-AND). ANL th c hi n phép toán AND t ng bit gi a hai toán h ng ñư c ch ra trong l nh • Mô t : và lưu k t qu vào toán h ng ñích (dest-byte). Các c không b nh hư ng. Khi l nh này ñư c dùng ñ s a ñ i m t port xu t, giá tr ñư c dùng làm d li u • Lưu ý: ban ñ u c a port ñư c ñ c t b ch t d li u xu t, không ph i t các chân port. Giáo trình Vi x lý. 57 Biên so n: Ph m Quang Trí
  20. Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM. • Các d ng l nh: ANL A, Rn 1 S byte 1 S chu kỳ 01011rrr Mã ñ i tư ng (A) ← (A) AND (Rn) Ho t ñ ng ANL A, direct 2 S byte 1 S chu kỳ 01010101 aaaaaaaa Mã ñ i tư ng (A) ← (A) AND (direct) Ho t ñ ng ANL A, @Ri 1 S byte 1 S chu kỳ 0101011i Mã ñ i tư ng (A) ← (A) AND ((Ri)) Ho t ñ ng ANL A, #data 2 S byte 1 S chu kỳ 01010100 dddddddd Mã ñ i tư ng (A) ← (A) AND #data Ho t ñ ng ANL direct, A 2 S byte 1 S chu kỳ 01010010 aaaaaaaa Mã ñ i tư ng (direct) ← (direct) AND (A) Ho t ñ ng ANL direct, #data 3 S byte 2 S chu kỳ 01010011 aaaaaaaa dddddddd Mã ñ i tư ng (direct) ← (direct) AND #data Ho t ñ ng • Ví d : Cho bi t trư c (A)=C3H, (R0)=2AH, (P3)=(B0H)=75H, (2AH)=55H. Sau khi th c thi l nh ANL A, R0 thì: (A)=02H ANL A, R0 A C3H C3H AND 2AH = 02H A 02H R0 2AH 11000011B AND 00101010B 00000010B Giáo trình Vi x lý. 58 Biên so n: Ph m Quang Trí
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2