Xem mẫu
- 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í
- 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.
• Ví d : INC A L nh tăng n i dung thanh ghi A.
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í
- 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í
- 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í
- 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
2K trang 31 0FFFH
F800H
F800H
AAA 0F46H
1800H 32 x 2K
17FFH (64K)
2K trang 2 2K trang 1
1000H
0FFFH 0901H 46H
2K trang 1 AJMP AAA
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í
- 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
AAA A209H
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í
- 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í
- 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).
• Mô t : 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
ñư 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í
- 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
S byte 1
S chu kỳ 1
Mã ñ i tư ng 00101rrr
Ho t ñ ng (A) ← (A) + (Rn)
ADD A, direct
S byte 2
S chu kỳ 1
Mã ñ i tư ng 00100101 aaaaaaaa
Ho t ñ ng (A) ← (A) + (direct)
ADD A, @Ri
S byte 1
S chu kỳ 1
Mã ñ i tư ng 0010011i
Ho t ñ ng (A) ← (A) + ((Ri))
ADD A, #data
S byte 2
S chu kỳ 1
Mã ñ i tư ng 00100100 dddddddd
Ho t ñ ng (A) ← (A) + #data
• 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 47H D2H
Giáo trình Vi x lý. 47 Biên so n: Ph m Quang Trí
- 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).
• Mô t : 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
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
S byte 1
S chu kỳ 1
Mã ñ i tư ng 00110rrr
Ho t ñ ng (A) ← (A) + (C) + (Rn)
ADDC A, direct
S byte 2
S chu kỳ 1
Mã ñ i tư ng 00110101 aaaaaaaa
Ho t ñ ng (A) ← (A) + (C) + (direct)
ADDC A,@Ri
S byte 1
S chu kỳ 1
Mã ñ i tư ng 0011011i
Ho t ñ ng (A) ← (A) + (C) + ((Ri))
ADDC A, #data
S byte 2
S chu kỳ 1
Mã ñ i tư ng 00110100 dddddddd
Ho t ñ ng (A) ← (A) + (C) + # data
Giáo trình Vi x lý. 48 Biên so n: Ph m Quang Trí
- 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).
• Mô t : SUBB tr n i dung c a thanh ghi A (A) v i n i dung c a byte có ñ a ch ñư c ch
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í
- 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
S byte 1
S chu kỳ 1
Mã ñ i tư ng 10011rrr
Ho t ñ ng (A) ← (A) – (C) – (Rn)
SUBB A, direct
S byte 2
S chu kỳ 1
Mã ñ i tư ng 10010101 aaaaaaaa
Ho t ñ ng (A) ← (A) – (C) – (direct)
SUBB A, @Ri
S byte 1
S chu kỳ 1
Mã ñ i tư ng 1001011i
Ho t ñ ng (A) ← (A) – (C) – ((Ri))
SUBB A, #data
S byte 1
S chu kỳ 1
Mã ñ i tư ng 100110100 dddddddd
Ho t ñ ng (A) ← (A) – (C) – #data
• 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í
- 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).
• Mô t : Tăng n i dung c a byte có ñ a ch ñư c ch ra trong l nh (byte) thêm 1. Các c
không b nh hư ng.
• Lưu ý: 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à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
S byte 1
S chu kỳ 1
Mã ñ i tư ng 00000100
Ho t ñ ng (A) ← (A) + 1
INC Rn
S byte 1
S chu kỳ 1
Mã ñ i tư ng 00001rrr
Ho t ñ ng (Rn) ← (Rn) + 1
INC direct
S byte 2
S chu kỳ 1
Mã ñ i tư ng 00000101 aaaaaaaa
Ho t ñ ng (direct) ← (direct) + 1
INC @Ri
S byte 1
S chu kỳ 1
Mã ñ i tư ng 0000011i
Ho t ñ ng ((Ri)) ← ((Ri)) + 1
• 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í
- 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).
• Mô t : 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
hư ng.
S byte 1
S chu kỳ 2
Mã ñ i tư ng 10100011
Ho t ñ ng (DPTR) ← (DPTR) + 1
• 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
• Lưu ý: Không có l nh giãm n i dung c a DPTR (DEC DPTR). N u mu n giãm n i dung
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í
- 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).
• Mô t : Giãm n i dung c a byte có ñ a ch ñư c ch ra trong l nh (byte) b t 1. Các c
không b nh hư ng.
• Lưu ý: 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à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
S byte 1
S chu kỳ 1
Mã ñ i tư ng 00010100
Ho t ñ ng (A) ← (A) – 1
DEC Rn
S byte 1
S chu kỳ 1
Mã ñ i tư ng 00011rrr
Ho t ñ ng (Rn) ← (Rn) – 1
DEC direct
S byte 2
S chu kỳ 1
Mã ñ i tư ng 00010101 aaaaaaaa
Ho t ñ ng (direct) ← (direct) – 1
DEC @Ri
S byte 1
S chu kỳ 1
Mã ñ i tư ng 0001011i
Ho t ñ ng ((Ri)) ← ((Ri)) – 1
• 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í
- 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).
• Mô t : MUL AB nhân các s nguyên không d u 8-bit ch a trong thanh ghi A và thanh ghi
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.
S byte 1
S chu kỳ 4
Mã ñ i tư ng 10100100
Ho t ñ ng (B) ← HIGH BYTE OF (A) × (B)
(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).
• Mô t : DIV AB chia s nguyên không d u 8-bit ch a trong thanh ghi A cho s nguyên
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.
S byte 1
S chu kỳ 4
Mã ñ i tư ng 10000100
Ho t ñ ng (A) ← QUOTIENT OF (A) / (B)
(B) ← REMAINDER OF (A) / (B)
Giáo trình Vi x lý. 54 Biên so n: Ph m Quang Trí
- 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 00H A xxH
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)
• Mô t : 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
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.
• Lưu ý: DA A không th ñơn gi n bi n ñ i s hex trong thanh ghi A thành s d ng BCD,
DA A cũng không áp d ng cho phép tr th p phân.
S byte 1
S chu kỳ 1
Mã ñ i tư ng 11010100
Giáo trình Vi x lý. 55 Biên so n: Ph m Quang Trí
- Chương 3: T p l nh c a 8051. Trư ng ðH Công nghi p Tp.HCM.
Ho t ñ ng Gi s n i dung c a 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 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
Sau khi th c thi chu i l nh: ADD A, R3
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
Sau khi th c thi chu i l nh: ADD A, R3
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
Sau khi th c thi chu i l nh: ADD A, R3
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í
- 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
Sau khi th c thi chu i l nh: ADDC A, R3
DA A
thì: c CY=1 và (A)=24 → bi u di n BCD c a s 124 (56+67+1)
• Lưu ý: 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
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.
Sau khi th c thi chu i l nh: ADD A, #01H
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.
Sau khi th c thi chu i l nh: ADD A, #99H
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).
• Mô t : 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
và lưu k t qu vào toán h ng ñích (dest-byte). Các c không b nh hư ng.
• Lưu ý: 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
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í
- 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
S byte 1
S chu kỳ 1
Mã ñ i tư ng 01011rrr
Ho t ñ ng (A) ← (A) AND (Rn)
ANL A, direct
S byte 2
S chu kỳ 1
Mã ñ i tư ng 01010101 aaaaaaaa
Ho t ñ ng (A) ← (A) AND (direct)
ANL A, @Ri
S byte 1
S chu kỳ 1
Mã ñ i tư ng 0101011i
Ho t ñ ng (A) ← (A) AND ((Ri))
ANL A, #data
S byte 2
S chu kỳ 1
Mã ñ i tư ng 01010100 dddddddd
Ho t ñ ng (A) ← (A) AND #data
ANL direct, A
S byte 2
S chu kỳ 1
Mã ñ i tư ng 01010010 aaaaaaaa
Ho t ñ ng (direct) ← (direct) AND (A)
ANL direct, #data
S byte 3
S chu kỳ 2
Mã ñ i tư ng 01010011 aaaaaaaa dddddddd
Ho t ñ ng (direct) ← (direct) AND #data
• 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í
nguon tai.lieu . vn