ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINHÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬKHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆPBỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
BÀI GIẢNG LÝ THUYẾTBÀI GIẢNG LÝ THUYẾT
VI XỬ LÝVI XỬ LÝ
TP. HỒ CHÍ MINHTP. HỒ CHÍ MINH
THÁNG 09THÁNG 09 20092009
VI XỬ LÝVI XỬ LÝ
GiáoGiáo viên: PHẠM QUANG TRÍviên: PHẠM QUANG TRÍ
ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINHÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬKHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆPBỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
CHƯƠNG 3CHƯƠNG 3
LẬP TRÌNH HỢP NGỮLẬP TRÌNH HỢP NGỮ
CHO 8051CHO 8051
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ thanhthanh ghighi (Register(Register Addressing)Addressing)
ðượcðược dùngdùng ñểñể truytruy xuấtxuất dữdữ liệuliệu trongtrong cáccác thanhthanh ghighi từtừ RR00 ñếnñến RR77
SốSố bytebyte củacủa lệnhlệnh:: 11 bytebyte
CấuCấu trúctrúc lệnhlệnh::
VíVí dụdụ:: ADDADD A,A, RR55 ⇒⇒ LệnhLệnh cộngcộng nộinội dungdung thanhthanh ghighi AA vớivới nộinội dungdung thanhthanh
ghighi
RR
55
(Giả(Giả
sửsử
::
(A)=(A)=
0505
H,H,
(R(R
55
)=)=
99
AH)AH)
ghighi
RR
55
(Giả(Giả
sửsử
::
(A)=(A)=
0505
H,H,
(R(R
55
)=)=
99
AH)AH)
⇒⇒ MãMã lệnhlệnh::
⇒⇒ MôMô tảtả lệnhlệnh::
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ trựctrực tiếptiếp (Direct(Direct Addressing)Addressing)
ðượcðược dùngdùng ñểñể truytruy xuấtxuất dữdữ liệuliệu trongtrong cáccác ôô nhớnhớ RAMRAM nộinội ((0000HH 77FHFH)) vàvà
trongtrong cáccác SFRSFR ((A,A, B,B, PP00,, PP11,, PP22,, PP33,, DPH,DPH, DPL,DPL, ……)) hayhay ((8080HH FFHFFH))
SốSố bytebyte củacủa lệnhlệnh:: 22 bytebyte
CấuCấu trúctrúc lệnhlệnh::
VíVí dụdụ:: ADDADD A,A, PP11 hoặchoặc ADDADD A,A, 9090HH ⇒⇒ LệnhLệnh cộngcộng nộinội dungdung thanhthanh ghighi AA
vớivới
nộinội
dungdung
PortPort
11
hayhay
ôô
nhớnhớ
9090
HH
(Giả(Giả
sửsử
::
(A)(A)
==
0505
H,H,
(P(P
11
))
==
((
9090
H)H)
==
vớivới
nộinội
dungdung
PortPort
11
hayhay
ôô
nhớnhớ
9090
HH
(Giả(Giả
sửsử
::
(A)(A)
==
0505
H,H,
(P(P
11
))
==
((
9090
H)H)
==
99AH)AH)
⇒⇒ MãMã lệnhlệnh::
⇒⇒ MôMô tảtả lệnhlệnh::
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ giángián tiếptiếp (Indirect(Indirect Addressing)Addressing)
ðượcðược dùngdùng ñểñể truytruy xuấtxuất dữdữ liệuliệu trongtrong cáccác ôô nhớnhớ RAMRAM nộinội cócó ñịañịa chỉchỉ thaythay
ñổiñổi liênliên tụctục khikhi chươngchương trìnhtrình ñangñang chạychạy RR00 vàvà RR11 hoạthoạt ñộngñộng nhưnhư cáccác
concon trỏtrỏ vàvà nộinội dungdung củacủa chúngchúng chỉchỉ rara ñịañịa chỉchỉ ôô nhớnhớ RAMRAM cầncần truytruy xuấtxuất
SốSố bytebyte củacủa lệnhlệnh:: 11 bytebyte
CấuCấu trúctrúc lệnhlệnh::
VíVí
dụdụ
::
ADDADD
A,A,
@@
RR
00
⇒⇒
LệnhLệnh
cộngcộng
nộinội
dungdung
thanhthanh
ghighi
AA
vớivới
nộinội
dungdung
ôô
VíVí
dụdụ
::
ADDADD
A,A,
@@
RR
00
⇒⇒
LệnhLệnh
cộngcộng
nộinội
dungdung
thanhthanh
ghighi
AA
vớivới
nộinội
dungdung
ôô
nhớnhớ cócó ñịañịa chỉchỉ chứachứa trongtrong thanhthanh ghighi RR00 ((GiảGiả sửsử:: (A)(A) == 0505H,H, (R(R00)) == 33BH,BH,
((33BH)BH) == 99AHAH))
⇒⇒ MãMã lệnhlệnh::
⇒⇒ MôMô tảtả lệnhlệnh::
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ tứctức thờithời (Immediate(Immediate Addressing)Addressing)
ðượcðược dùngdùng ñểñể truytruy xuấtxuất mộtmột hằnghằng sốsố ((giágiá trtr bitbit trctrc)) thaythay vìvì làlà mộtmột
biếnbiến ((giágiá trtr khôngkhông bitbit trctrc)) nhưnhư cáccác kiểukiểu ñịnhñịnh ñịañịa chỉchỉ trêntrên CóCó thểthể
dùngdùng ñểñể nạpnạp dữdữ liệuliệu vàovào mọimọi ôô nhớnhớ vàvà thanhthanh ghighi bấtbất kỳkỳ ((ñốiñối vớivới thanhthanh ghighi
88 bitbit:: ##0000HH ##00FFHFFH,, ñốiñối vớivới thanhthanh ghighi 1616 bitbit:: ##00000000HH ##00FFFFHFFFFH))
SốSố bytebyte củacủa lệnhlệnh:: 22 bytebyte
CấuCấu trúctrúc lệnhlệnh::
VíVí dụdụ:: ADDADD A,A, ##99AHAH ⇒⇒ LệnhLệnh cộngcộng nộinội dungdung thanhthanh ghighi AA vớivới giágiá trịtrị 99AHAH
((GiảGiả sửsử:: (A)(A) == 0505HH))
⇒⇒ MãMã lệnhlệnh::
⇒⇒ MôMô tảtả lệnhlệnh::
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ tươngtương ñốiñối (Relative(Relative Addressing)Addressing)
ðược sử dụng cho các lệnh nhảy (rẽ nhánh).ðược sử dụng cho các lệnh nhảy (rẽ nhánh).
ðịa chỉ tương ñối (ðịa chỉ tương ñối (hay offsethay offset) là một giá trị ) là một giá trị 8 bit có dấu8 bit có dấu
Tầm nhảy giới hạn là: Tầm nhảy giới hạn là: 128 byte … 127 byte 128 byte … 127 byte từ vị trí của lệnh tiếp theo từ vị trí của lệnh tiếp theo
sau lệnh nhảy.sau lệnh nhảy.
Số byte của lệnh: Số byte của lệnh: 2 byte2 byte
Cấu trúc lệnh: Cấu trúc lệnh:
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ tươngtương ñốiñối (Relative(Relative Addressing)Addressing)
Ví dụ 1:Ví dụ 1: SJMP SJMP AAAAAA ⇒⇒ Lệnh nhảy ñến nhãn AAA (Lệnh nhảy ñến nhãn AAA (Giả sử: nhãn AAA ñặt 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ỉ trước lệnh ở ñịa chỉ 0107H, lệnh SJMP nằm trong bộ nhớ tại ñịa chỉ
0100H và 0101H0100H và 0101H).).
⇒⇒ MãMã lệnhlệnh::
⇒⇒
MôMô
tảtả
lệnhlệnh
::
⇒⇒
MôMô
tảtả
lệnhlệnh
::
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ tươngtương ñốiñối (Relative(Relative Addressing)Addressing)
Ví dụ 2:Ví dụ 2: SJMP SJMP AAAAAA ⇒⇒ Lệnh nhảy ñến nhãn AAA (Lệnh nhảy ñến nhãn AAA (Giả sử: nhãn AAA ñặt 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ỉ trước lệnh ở ñịa chỉ 203BH, lệnh SJMP nằm trong bộ nhớ tại ñịa chỉ
2040H và 2041H2040H và 2041H).).
⇒⇒ MãMã lệnhlệnh::
⇒⇒
MôMô
tảtả
lệnhlệnh
::
⇒⇒
MôMô
tảtả
lệnhlệnh
::
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ tuyệttuyệt ñốiñối (Absolute(Absolute Addressing)Addressing)
ðược sử dụng cho các lệnh nhảy (rẽ nhánh): ðược sử dụng cho các lệnh nhảy (rẽ nhánh): ACALLACALL và và AJMPAJMP
ðịa chỉ tuyệt ñối là một giá trị ðịa chỉ tuyệt ñối là một giá trị 11 bit11 bit
Tầm nhảy giới hạn là: Tầm nhảy giới hạn là: trong cùng trang 2KB hiện hànhtrong cùng trang 2KB hiện hành
Số byte của lệnh: Số byte của lệnh: 2 byte2 byte
Cấu trúc lệnh: Cấu trúc lệnh:
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ tuyệttuyệt ñốiñối (Absolute(Absolute Addressing)Addressing)
Ví dụ:Ví dụ: AJMP AJMP AAAAAA ⇒⇒ Lệnh nhảy ñến nhãn AAA (Lệnh nhảy ñến nhãn AAA (Giả sử: nhãn AAA ñặt 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ỉ trước lệnh ở ñịa chỉ 0F46H, lệnh AJMP nằm trong bộ nhớ tại ñịa chỉ
0900H và 0901H0900H và 0901H).).
⇒⇒ MãMã lệnhlệnh::
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ tuyệttuyệt ñốiñối (Absolute(Absolute Addressing)Addressing)
⇒⇒ MôMô tảtả lệnhlệnh::
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ dàidài (Long(Long Addressing)Addressing)
ðược sử dụng cho các lệnh nhảy (rẽ nhánh): ðược sử dụng cho các lệnh nhảy (rẽ nhánh): LCALLLCALL và và LJMPLJMP
ðịa chỉ dài là một giá trị ðịa chỉ dài là một giá trị 16 bit16 bit
Tầm nhảy giới hạn là: Tầm nhảy giới hạn là: toàn bộ không gian nhớ 64KBtoàn bộ không gian nhớ 64KB
Số byte của lệnh: Số byte của lệnh: 3 byte3 byte
Cấu trúc lệnh: Cấu trúc lệnh:
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ dàidài (Long(Long Addressing)Addressing)
Ví dụ:Ví dụ: LJMP LJMP AAAAAA ⇒⇒ Lệnh nhảy ñến nhãn AAA (Lệnh nhảy ñến nhãn AAA (Giả sử: nhãn AAA ñặt 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ỉ trước lệnh ở ñịa chỉ A209H, lệnh LJMP nằm trong bộ nhớ tại ñịa chỉ
0100H, 0101H và 0102H0100H, 0101H và 0102H).).
⇒⇒ MãMã lệnhlệnh::
⇒⇒ MôMô tảtả lệnhlệnh::
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ chỉchỉ sốsố (Indexed(Indexed Addressing)Addressing)
ðượcðược dùngdùng trongtrong cáccác ứngứng dụngdụng cầncần tạotạo bảngbảng nhảynhảy hayhay bảngbảng tìmtìm kiếmkiếm
KiểuKiểu ñịnhñịnh ñịañịa chỉchỉ nàynày dùngdùng mộtmột thanhthanh ghighi nềnnền ((PCPC hayhay DPTRDPTR)) kếtkết hợphợp
vớivới mộtmột offsetoffset ((AA)) ñểñể tạotạo thànhthành dạngdạng ñịañịa chỉchỉ chocho lệnhlệnh:: JMPJMP vàvà MOVCMOVC
SốSố bytebyte củacủa lệnhlệnh:: 11 bytebyte
CấuCấu trúctrúc lệnhlệnh::
VíVí dụdụ:: JMPJMP @A+DPTR@A+DPTR ⇒⇒ LệnhLệnh nhảynhảy giángián tiếptiếp ((GiảGiả sửsử:: (A)(A) == 2525HH vàvà
(DPTR)(DPTR) == 12341234HH))
(A) + (DPTR) = 25H + 1234H = (A) + (DPTR) = 25H + 1234H = 1259H1259H
⇒⇒ Vậy chương trình sẽ nhảy ñến thực thi lệnh tại ñịa chỉ 1259HVậy chương trình sẽ nhảy ñến thực thi lệnh tại ñịa chỉ 1259H
CÁC KIỂU ðỊNH ðỊA CHỈCÁC KIỂU ðỊNH ðỊA CHỈ
ðịnhðịnh ñịañịa chỉchỉ thanhthanh ghighi (Register(Register Addressing)Addressing)
ðịnhðịnh ñịañịa chỉchỉ trựctrực tiếptiếp (Direct(Direct Addressing)Addressing)
ðịnhðịnh ñịañịa chỉchỉ giángián tiếptiếp (Indirect(Indirect Addressing)Addressing)
ðịnhðịnh ñịañịa chỉchỉ tứctức thờithời (Immediate(Immediate Addressing)Addressing)
ðịnhðịnh ñịañịa chỉchỉ tươngtương ñốiñối (Relative(Relative Addressing)Addressing)
ðịnhðịnh
ñịañịa
chỉchỉ
tuyệttuyệt
ñốiñối
(Absolute(Absolute
Addressing)Addressing)
ðịnhðịnh
ñịañịa
chỉchỉ
tuyệttuyệt
ñốiñối
(Absolute(Absolute
Addressing)Addressing)
ðịnhðịnh ñịañịa chỉchỉ dàidài (Long(Long Addressing)Addressing)
ðịnhðịnh ñịañịa chỉchỉ chỉchỉ sốsố (Indexed(Indexed Addressing)Addressing)
TẬP LỆNH CỦA 8051TẬP LỆNH CỦA 8051
GiớiGiới thiệuthiệu tậptập lệnhlệnh củacủa 80518051::
TốiTối ưuưu hóahóa chocho cáccác ứngứng dụngdụng ñiềuñiều khiểnkhiển 88 bitbit
CóCó nhiềunhiều kiểukiểu ñịnhñịnh ñịañịa chỉchỉ ñểñể truytruy xuấtxuất dữdữ liệuliệu
HỗHỗ trợtrợ cáccác ứngứng dụngdụng ñiềuñiều khiểnkhiển 11 bitbit
TậpTập lệnhlệnh gồmgồm 255255 lệnhlệnh::
•• 139139 lệnhlệnh cócó ñộñộ dàidài 11 bytebyte
•• 9292 lệnhlệnh cócó ñộñộ dàidài 22 bytebyte
•• 2424 lệnhlệnh cócó ñộñộ dàidài 33 bytebyte
TậpTập lệnhlệnh ñượcñược chiachia làmlàm 55 nhómnhóm::
•• NhómNhóm lệnhlệnh sốsố họchọc ((ArithmeticArithmetic Operations)Operations)
•• NhómNhóm lệnhlệnh logiclogic ((LogicalLogical Operations)Operations)
•• NhómNhóm lệnhlệnh didi chuyểnchuyển dữdữ liệuliệu ((DataData Transfer)Transfer)
•• NhómNhóm lệnhlệnh xửxử lýlý bitbit ((BooleanBoolean VariableVariable Manipulation)Manipulation)
•• NhómNhóm lệnhlệnh rẽrẽ nhánhnhánh ((ProgramProgram Branching)Branching)
TẬP LỆNH CỦA 8051TẬP LỆNH CỦA 8051
MộtMột sốsố kýký hiệuhiệu dùngdùng trongtrong lệnhlệnh ::
RnRn ðịa chỉ thanh ghi sử dụng (ðịa chỉ thanh ghi sử dụng (R0 R0 –– R7R7).).
directdirect ðịa chỉ trực tiếp của một byte trong RAM nội.ðịa chỉ trực tiếp của một byte trong RAM nội.
@Ri@Ri ðịa chỉ gián tiếp sử dụng (ðịa chỉ gián tiếp sử dụng (R0 hoặc R1R0 hoặc R1).).
sourcesource Toán hạng nguồn (Toán hạng nguồn (Rn, direct hoặc @RiRn, direct hoặc @Ri).).
destdest Toán hạng ñích (Toán hạng ñích (Rn, direct hoặc @RiRn, direct hoặc @Ri).).
#data#data Hằng số 8 bit .Hằng số 8 bit .
#data16#data16 Hằng số 16 bit.Hằng số 16 bit.
bitbit
ðịa chỉ trực tiếp của một bit (ðịa chỉ trực tiếp của một bit (
ñịa chỉ bitñịa chỉ bit
).).
bitbit
ðịa chỉ trực tiếp của một bit (ðịa chỉ trực tiếp của một bit (
ñịa chỉ bitñịa chỉ bit
).).
relrel Offset 8 bit có dấu.Offset 8 bit có dấu.
addr11addr11 ðịa chỉ 11 bit.ðịa chỉ 11 bit.
addr16addr16 ðịa chỉ 16 bit.ðịa chỉ 16 bit.
←
←←
←←
←←
← …… ðược thay thế bởi …ðược thay thế bởi …
(…)(…) Nội dung của …Nội dung của …
((…))((…)) Nội dung ñược chứa bởi …Nội dung ñược chứa bởi …
rrrrrr Thanh ghi của dãy thanh ghi (Thanh ghi của dãy thanh ghi (R0 R0 R7R7).).
ii ðịa chỉ gián tiếp sử dụng (R0 hoặc R1).ðịa chỉ gián tiếp sử dụng (R0 hoặc R1).
dddddddddddddddd Các bit dữ liệu.Các bit dữ liệu.
aaaaaaaaaaaaaaaa Các bit ñịa chỉ.Các bit ñịa chỉ.
eeeeeeeeeeeeeeee ðịa chỉ tương ñối.ðịa chỉ tương ñối.
TẬP LỆNH CỦA 8051TẬP LỆNH CỦA 8051
NHÓM LỆNH SỐ HỌCNHÓM LỆNH SỐ HỌC
11 LệnhLệnh cộngcộng (Add)(Add)::
ADD A, <srcADD A, <src byte>byte>
MôMô tảtả:: ADDADD cộngcộng nộinội dungdung củacủa thanhthanh ghighi AA ((AA)) vớivới nộinội dungdung củacủa mộtmột
bytebyte cócó ñịañịa chỉchỉ ñượcñược chỉchỉ rara trongtrong lệnhlệnh ((srcsrc bytebyte)) vàvà ñặtñặt kếtkết quảquả vàovào
thanhthanh ghighi AA CácCác cờcờ bịbị ảnhảnh hưởnghưởng
CácCác dạngdạng lệnhlệnh::
ADDADD A,A, RnRn
←
←←
←←
←←
←
(A) (A)
←
←←
←←
←←
←
(A) + (Rn)(A) + (Rn)
ADDADD A,A, directdirect
(A) (A) ←
←←
←←
←←
← (A) + (direct)(A) + (direct)
ADDADD A,A, @Ri@Ri
(A) (A) ←
←←
←←
←←
← (A) + ((Ri))(A) + ((Ri))
ADDADD A,A, #data#data
(A) (A) ←
←←
←←
←←
← (A) + #data(A) + #data
TẬP LỆNH CỦA 8051TẬP LỆNH CỦA 8051
NHÓM LỆNH SỐ HỌCNHÓM LỆNH SỐ HỌC
22 LệnhLệnh cộngcộng cócó nhớnhớ (Add(Add withwith Carry)Carry)::
ADDC A, <srcADDC A, <src byte>byte>
MôMô tảtả:: ADDCADDC cộngcộng ñồngñồng thờithời nộinội dungdung củacủa thanhthanh ghighi AA ((AA)) vớivới nộinội dungdung
củacủa bytebyte cócó ñịañịa chỉchỉ ñượcñược chỉchỉ rara trongtrong lệnhlệnh ((srcsrc bytebyte)) vàvà cờcờ nhớnhớ ((CYCY),), ñặtñặt
kếtkết quảquả vàovào thanhthanh ghighi AA CácCác cờcờ bịbị ảnhảnh hưởnghưởng
CácCác dạngdạng lệnhlệnh::
ADDCADDC A,A, RnRn
←
←←
←←
←←
←
(A) (A)
←
←←
←←
←←
←
(A) + (C) + (Rn)(A) + (C) + (Rn)
ADDCADDC A,A, directdirect
(A) (A) ←
←←
←←
←←
← (A) + (C) + (direct)(A) + (C) + (direct)
ADDCADDC A,A, @Ri@Ri
(A) (A) ←
←←
←←
←←
← (A) + (C) + ((Ri))(A) + (C) + ((Ri))
ADDCADDC A,A, #data#data
(A) (A) ←
←←
←←
←←
← (A) + (C) + #data(A) + (C) + #data
TẬP LỆNH CỦA 8051TẬP LỆNH CỦA 8051
NHÓM LỆNH SỐ HỌCNHÓM LỆNH SỐ HỌC
33 LệnhLệnh trừtrừ cócó sốsố mượnmượn (Subtract(Subtract withwith Borrow)Borrow)::
SUBB A, <srcSUBB A, <src byte>byte>
MôMô tảtả:: SUBBSUBB trừtrừ nộinội dungdung củacủa thanhthanh ghighi AA ((AA)) vớivới nộinội dungdung củacủa bytebyte cócó
ñịañịa chỉchỉ ñượcñược chỉchỉ rara trongtrong lệnhlệnh ((srcsrc bytebyte)) cùngcùng vớivới cờcờ nhớnhớ vàvà cấtcất kếtkết quảquả
vàovào thanhthanh ghighi AA CácCác cờcờ bịbị ảnhảnh hưởnghưởng
CácCác dạngdạng lệnhlệnh::
SUBBSUBB A,A, RnRn
←
←←
←←
←←
←
(A) (A)
←
←←
←←
←←
←
(A) (A) (C) (C) (Rn)(Rn)
SUBBSUBB A,A, directdirect
(A) (A) ←
←←
←←
←←
← (A) (A) (C) (C) (direct)(direct)
SUBBSUBB A,A, @Ri@Ri
(A) (A) ←
←←
←←
←←
← (A) (A) (C) (C) ((Ri))((Ri))
SUBBSUBB A,A, #data#data
(A) (A) ←
←←
←←
←←
← (A) (A) (C) (C) #data#data
TẬP LỆNH CỦA 8051TẬP LỆNH CỦA 8051
NHÓM LỆNH SỐ HỌCNHÓM LỆNH SỐ HỌC
44 LệnhLệnh tăngtăng thêmthêm 11 (Increment)(Increment)::
INC byteINC byte
MôMô tảtả:: TăngTăng nộinội dungdung củacủa bytebyte cócó ñịañịa chỉchỉ ñượcñược chỉchỉ rara trongtrong lệnhlệnh ((bytebyte))
thêmthêm 11 CácCác cờcờ khôngkhông bịbị ảnhảnh hưởnghưởng
CácCác dạngdạng lệnhlệnh::
INCINC AA
(A) (A) ←
←←
←←
←←
← (A) + 1(A) + 1
INCINC RnRn
(Rn) (Rn) ←
←←
←←
←←
← (Rn) + 1 (Rn) + 1
INCINC directdirect
(direct) (direct) ←
←←
←←
←←
← (direct) + 1 (direct) + 1
INCINC @Ri@Ri
((Ri)) ((Ri)) ←
←←
←←
←←
← ((Ri)) + 1((Ri)) + 1
TẬP LỆNH CỦA 8051TẬP LỆNH CỦA 8051
NHÓM LỆNH SỐ HỌCNHÓM LỆNH SỐ HỌC
55 LệnhLệnh tăngtăng concon trỏtrỏ dữdữ liệuliệu (Increment(Increment DataData Pointer)Pointer)::
INC DPTRINC DPTR
MôMô tảtả:: TăngTăng nộinội dungdung củacủa thanhthanh ghighi concon trỏtrỏ dữdữ liệuliệu 1616 bitbit ((DPTRDPTR)) thêmthêm
11 CácCác cờcờ khôngkhông bịbị ảnhảnh hưởnghưởng
CácCác dạngdạng lệnhlệnh::
INCINC DPTRDPTR
(DPTR) (DPTR) ←
←←
←←
←←
← (DPTR) + 1(DPTR) + 1
LưuLưu ýý:: KhôngKhông cócó lệnhlệnh giãmgiãm nộinội dungdung củacủa DPTRDPTR ((DECDEC DPTRDPTR)) NếuNếu muốnmuốn
giãmgiãm nộinội dungdung củacủa DPTRDPTR tata phảiphải viếtviết mộtmột ñoạnñoạn chươngchương trìnhtrình concon ñểñể thựcthực
hiệnhiện ñiềuñiều nàynày
TẬP LỆNH CỦA 8051TẬP LỆNH CỦA 8051
NHÓM LỆNH SỐ HỌCNHÓM LỆNH SỐ HỌC
66 LệnhLệnh giãmgiãm bớtbớt 11 (Decrement)(Decrement)::
DEC byteDEC byte
MôMô tảtả:: GiãmGiãm nộinội dungdung củacủa bytebyte cócó ñịañịa chỉchỉ ñượcñược chỉchỉ rara trongtrong lệnhlệnh ((bytebyte))
bớtbớt 11 CácCác cờcờ khôngkhông bịbị ảnhảnh hưởnghưởng
CácCác dạngdạng lệnhlệnh::
DECDEC AA
(A) (A) ←
←←
←←
←←
← (A) (A) 11
DECDEC RnRn
(Rn) (Rn) ←
←←
←←
←←
← (Rn) (Rn) 1 1
DECDEC directdirect
(direct) (direct) ←
←←
←←
←←
← (direct) (direct) 1 1
DECDEC @Ri@Ri
((Ri)) ((Ri)) ←
←←
←←
←←
← ((Ri)) ((Ri)) 11