Tải bản đầy đủ (.pdf) (19 trang)

Lập trình hợp ngữ 8051 - Chương 2 - Vi điều khiển 8051 Assembly

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (186.29 KB, 19 trang )

ch"¬ng 2
!"#$%&'(#()"#'*+#, /#
#
01/#23'#$%4'*#, /1#
5%4'*#"(6'#'78#9(:'*#$;#'*(<3'#9=>#9?9#$(;'(#*(<#9(@'(#9A;#, /#B7#$%&'(#C78#9?9(#
DE#FG'*#BH<#9?9#IJ'(#KL'#*<M'#NOP#B7#QRR1#
2.1.1 C¸c thanh ghi.
5%4'*#STU#9?9#$(;'(#*(<#KV)9#FW'*#KX#IV>#9Y$#$(Z'*#$<'#$[\#$(]<^#'(+'*#$(Z'*#$<'#
'78#9_#$(X#I7#\`$#C8$a#F+#I<J>#96'#KV)9#DE#Ib#(4c9#I7#\`$#Kd;#9(e#Kf'#F+#I<J>#96'#
KV)9#'["1#T(6'#IH'#9?9#$(;'(#*(<#9A;#, /#I7#9?9#$(;'(#*(<#,#C<$1#5%4'*#, /#9(e#9_#
\`$#g<X>#F+#I<J>h# 4[<#,#C<$^#,#C<$#9A;#\`$#$(;'(#*(<#KV)9#$%&'(#C78#'(V#D;>h#
#
#
BH<#Ni2#I7#C<$#9_#*<?#$%d#9;4#'(Y$#Rj#9(4#Kf'# i2#I7#C<$#9_#*<?#$%d#$(Y"#'(Y$#R-1#
kNi2#l#N4D$#i<*m<9;'#C<$#B7# i2#l# a;%$#i<*'<m<9;'$#2<$n1#PH<#\`$#g<X>#F+#I<J>#,#C<$#
$(&#CY$#go#F+#I<J>#'74#IH'#(L'#,#C<$#Kp>#"(M<#KV)9#9(<;#$(7'(#9?9#g(:9#,#C<$#$%VH9#g(<#
KV)9#qE#Ib1#P&#9_#\`$#Dr#IV)'*#IH'#9?9#$(;'(#*(<#$%4'*#, /#$;#Ds#$!"#$%>'*#B74#\`$#
Dr#$(;'(#*(<#9Z'*#FG'*#9(>'*#Kc9#C<J$#$%4'*#9?9#9(VL'*#gf#$<f"1#tu8#$(;\#g(M4#"(G#
IG9#Q""a'F<q#Q1v#KX#C<f$#K68#KA#Bp#9?9#$(;'(#*(<#9A;#, /1#
H×nh 2.1:#;n#N`$#Dr#$(;'(#*(<#,#C<$#9A;#, /#
Cn#N`$#Dr#$(;'(#*(<#/w#C<$#9A;#, /#
S?9#$(;'(#*(<#KV)9#DE#FG'*#%`'*#%u<#'(Y$#9A;#, /#I7#Q#k$(;'(#*(<#$@9(#I>xn^#2^#y-#l#
yj^#RT5y#k94'#$%z#F+#I<J>n#B7#TS#kC`#Kf\#9(VL'*#$%&'(n1#5Y$#9M#9?9#F+#I<J>#$%3'#Kp>#
I7#$(;'(#*#(<#,#C<$#$%{#RT5y#B7#TS#I7#/w#C<$1#5(;'(#*(<#$@9(#I>x#Q#KV)9#DE#FG'*#9(4#
$Y$#9M#\|<#"(}"#$4?'#Dr#(|9#B7#IZl*@91#~X#(<X>#DE#FG'*#9?9#$(;'(#*(<#'78#$;#Ds#*<H<#
$(<J>#9(:'*#$%4'*#9?9#B@#FG#BH<#9?9#IJ'(#KL'#*<M'#I7#QRR#B7#NOP1#
2.1.2 LÖnh chuyÓn MOV.
•_<#\`$#9?9(#KL'#*<M'^#IJ'(#NOP#D;4#9(}"#F+#I<J>#${#\`$#Bd#$%@#'78#Kf'#\`$#B@#$%@#
g(?91#•_#9_#9:#"(?"#'(V#D;>h#
NOP## ;#~@9(^#'*>å';#D;4#9(}"#'*>å'#B74#K@9(#
D7



D6

D5

D4

D3

D2

D1

D0

A

B

R0

R1

R2

R3

R4

R5


R6

R7

DPH

PC (program counter)

DPL

DPTR

PC

J'(#'78#'_<#STU#9(>8X'#k$%4'*#$(ự9#$f#I7#D;4#9(}"n#$4?'#(['*#'*>ồ'#B74#$4?'#(['*#
K@9(1#P@#FG#IJ'(#NOP#Q^#y-#D;4#9(}"#'`<#F>'*#$(;'(#*(<#y-#B74#$(;'(#*(<#Q1#
i;>#g(<#I3'(#'78#KV)9#$(ự9#(<J'#$(&#$(;'(#*(<#Q#Ds#9_#*<?#$%d#*<r'*#'(V#$(;'(#*(<#y-1#
J'(#NOP#g(Z'*#$?9#K`'*#$4?'#(['*#'*>ồ'1#~4['#9(VL'*#$%&'(#FVH<#Kâ8#K6>#$<3'#
I7#'["#$(;'(#*(<#Q#$H<#*<?#$%d# t#9I7#*<?#$%d# #ở#F['*#Dr#taqn#B7#D;>#K_#9(>8X'#*<?#
$%d#'78#q>;#9?9#$(;'(#*(<#g(?9#'(;>#C3'#$%4'*#STU1## V>#b#%ằ'*#FY>###$%4'*#IJ'(#
C?4#%ằ'*#K_#I7#\`$#*<?#$%d1#56\#q>;'#$%|'*#9A;#'_#Ds#KV)9#$%&'(#C78#'*;8#D;>#B@#FG#
'781#
MOV A, #55H; ; Nạp trí trị 55H vào thanh ghi A (A = 55H)
MOV R0, A ; Sao chép nội dung A vào R0 (bây giờ R0=A)
MOV R1, A ; Sao chép nội dung A và R1 (bây giờ R1=R0=A)
MOV R2, A ; Sao chép nội dung A và R2 (bây giờ R2=R1=R0=A)
MOV R3, #95H ; Nạp giá trị 95H vào thanh ghi R3 (R3 = 95H)
MOV A, R3 ; Sáo chép nội dung R3 vào A (bây giờ A = 95H)
#

K(<#I!"#$%&'(#C`#B<#K<p>#g(<X'#, /#96'#IV>#b#9?9#K<X\#D;>h#
/1#S?9#*<?#$%d#9_#$(X#KV)9#'["#B74#$%ự9#$<f"#CY$#go#$(;'(#*(<#'74#Q^#2^#y-#l#yj1#5>8#
'(<3'^#KX#$(Z'*#C?4#K_#I7#*<?#$%d#$=9#$(]<#$(&#"(M<#Kc$#$%VH9#'_#\`$#gb#(<J>###'(V#
9(e#%;#FVH<#Kâ81#
#
MOV A, #23H ; Nạp giá trị 23H vào A (A = 23H)
MOV R0, #12H ; Nạp giá trị 12H vào R0 (R0 = 2BH)
MOV R1, #1FH ; Nạp giá trị 1FH vào R1 (R1 = 1FH)
MOV R2, #2BH ; Nạp giá trị 2BH vào R2 (R2 = 2BH)
MOV B, # 3CH ; Nạp giá trị 3CH vào B (B = 3CH)
MOV R7, #9DH ; Nạp giá trị 9DH vào R7 (R7 = 9DH)
MOV R5, #0F9H ; Nạp giá trị F9H vào R5 (R5 = F9H)
MOV R6, #12 ;Nạp giá trị thập phân 12 = 0CH vào R6
(trong R6 có giá trị 0CH).
#
~X#b#$%4'*#IJ'(#NOP#y.^##-F9t#$(&#"(M<#9_#Dr#-#K='*#$%VH9#F#B7#D;>#FY>###C?4#
%ằ'*#F#I7#\`$#Dr#taq#9(=#g(Z'*#"(M<#I7#\`$#gb#$ự1#t;8#'_<#9?9(#g(?9#NOP#y.^#
#F9t#Ds#*â8#%;#Iỗ<1#
01#f>#9?9#*<?#$%d#-#Kf'#F#KV)9#9(>8X'#B74#\`$#$(;'(#*(<#,#C<$#$(&#9?9#C<$#9ò'#I[<#KV)9#
94<#I7#$Y$#9M#9?9#Dr#-1#P@#FG^#$%4'*#IJ'(#NOP#Q^#.#gf$#q>M#I7#Q=-1.^#K_#I7#Q#=#
#-/-/#ở#F['*#'(d#"(â'1#
v1#P<J9#9(>8X'#\`$#*<?#$%d#IH'#(L'#g(M#'ă'*#9(=;#9A;#$(;'(#*(<#Ds#*â8#%;#Iỗ<#B@#FGh#
#
MOV A, #7F2H ; Không hợp lệ vì 7F2H > FFH
MOV R2, 456 ; Không hợp lệ vì 456 > 255 (FFH)
#
41#~X#'["#\`$#*<?#$%d#B74#\`$#$(;'(#*(<#$(&#"(M<#*?'#FY>###$%VH9#*<?#$%d#K_1#f>#
g(Z'*#9_#FY>#$(&#'_#(<X>#%ằ'*#'["#${#\`$#Bd#$%@#'(H1#P@#FG##NOP#Q^#/jt#9_#'*(ĩ;#
I7#'["#*<?#$%d#$%4'*#'*ă'#'(H#9_#*<?#$%d#/jt#B74#$(;'(#*(<#Q#B7#$[<#Kd;#9(e#K_#F+#I<J>#
9_#$(X#9_#CY$#go#*<?#$%d#'74#${#-#Kf'#FFt1#Sò'#KX#'["#*<?#$%d##I7#/jt#B74#$(;'(#*(<#Q#

$(&#96'#"(M<#9_#FY>###$%VH9#/jt#'(V#$(f#'781#NOP#Q^##/jt1#S6'#IV>#b#%ằ'*#
'f>#$(<f>#FY>###$%VH9#\`$#$(&#Ds#g(Z'*#*â8#Iỗ<#B&#()"#'*+#9(4#K_#I7#\`$#IJ'(#()"#
IJ1#5>8#'(<3'^#gf$#q>M#Ds#g(Z'*#K:'*#'(V#b#\>r'#9A;#'*V]<#I!"#$%&'(1#~# â8#Ds#I7#
\`$#Iỗ<#$(V]'*##(;8#*c"#Kr<#BH<#I!"#$%&'(#B<3'#\H<1#
2.1.3 Lệnh cộng ADD.
J'(#9`'*#QRR#9_#9?9#"(}"#'(V#D;>h#
QRR#;^#'*>ồ'## ;#S`'*#$4?'#(['*#'*>ồ'#B74#$(;'(#*(<#Q1#
J'(#9`'*#QRR#'_<#STU#9`'*#C8$a#'*>ồ'#B74#$(;'(#*(<#Q#B7#Kc$#gf$#q>M#$(;'(#*(<#
Q1#~X#9`'*#(;<#Dr#'(V#0.t#B7#v4t#$(&#\ỗ<#Dr#9_#$(X#9(>8X'#Kf'#\`$#$(;'(#*(<#B7#
D;>#K_#9`'*#I[<#BH<#'(;>#'(Vh#
MOV A, #25H ; Nạp giá trị 25H vào A
MOV R2, #34H ; Nạp giá trị 34H vào R2
ADD A, R2 ; Cộng R2 vào A và kết quả A = A + R2
#
5(ự9#(<J'#9(VL'*#$%&'(#$%3'#$;#KV)9#Q#=#.9t#kB&#0.t#+#v4t#=#.9tn#B7#y0#=##v4t^#
9(:#b#I7#'`<#FG'*#y0#g(Z'*#$(;8#Kổ<1#S(VL'*#$%&'(#$%3'#9_#$(X#B<f$#$(a4#'(<p>#9?9(#
"(G#$(>`9#B74#$(;'(#*(<#KV)9#DE#FG'*1#N`$#$%4'*#9?9(#B<f$#g(?9#9_#$(X#I7h#
MOV R5, #25H ; Nạp giá trị 25H vào thanh ghi R5
MOV R7, #34H ; Nạp giá trị 34H vào thanh ghi R7
MOV A, #0 ; Xoá thanh ghi A (A = 0)
ADD A, R5 ; Cộng nội dung R5 vào A (A = A + R5)
ADD A, R7 ; Cộng nội dung R7 vào A (A = A + R7 = 25H + 34H)
#
S(VL'*#$%&'(#$%3'#9_#gf$#q>M#$%4'*#Q# 7#.9t^#9_#%Y$#'(<p>#9?9(#KX#B<f$#9(VL'*#$%&'(#
*<r'*#'(V#B!81#N`$#9â>#(z<#9_#$(X#Kc$#%;#D;>#g(<#qa\#K4['#9(VL'*#$%&'(#$%3'#I7#I<J>#
9_#9ẩ'#9(>8X'#9M#(;<#F+#I<J>#B74#9?9#$(;'(#*(<#$%VH9#g(<#9`'*#9(:'*#BH<#'(;>#
g(Z'*?#Sâ>#$%M#I]<#I7#g(Z'*#96'1#tu8#qa\#K4['#9(VL'*#$%&'(#FVH<#Kâ8h#
MOV A, #25H ; Nạp giá trị thứ nhất vào thanh ghi A (A = 25H)
ADD A, #34H ; Cộng giá trị thứ hai là 34H vào A (A = 59H)
#

5%4'*#$%V]'*#()"#$%3'#Kâ8^#g(<#$(;'(#*(<#Q#Ku#9(=;#Dr#$(=#'(Y$#$(&#*<?#$%d#$(=#(;<#K<#
$(a4#\`$#$4?'#(['*1#~â8#KV)9#*|<#I7#$4?'#(['*#$=9#$(]<#k$%ự9#$<f"n1#
S?9#B@#FG#$%VH9#9(4#Kf'#*<]#$(&#IJ'(#QRR#C?4#%ằ'*#$4?'#(['*#'*>ồ'#9_#$(X#(4c9#I7#
\`$#$(;'(#*(<#(4c9#I7#\`$#F+#I<J>#$%ự9#$<f"#k$=9#$(]<n#'(V'*#$(;'(#*(<#K@9(#I>Z'#I7#
$(;'(#*(<#Q^#$(;'(#*(<#$@9(#I>x1#t;8#'_<#9?9(#g(?9#I7#\`$#IJ'(#'(V# QRR#y0^#
#/0t#I7#IJ'(#g(Z'*#()"#IJ#B&#\|<#"(}"#$4?'#Dr#(|9#"(M<#96'#Kf'#$(;'(#*(<#Q#B7#
IJ'(#QRR#y4^#Q#9ũ'*#g(Z'*#()"#IJ#B&#Q#I>Z'#I7#$(;'(#*(<#K@9(#9(4#\|<#"(}"#Dr#
(|91#_<#\`$#9?9(#KL'#*<M'#I7#$%4'*#, /#$(&#\|<#"(}"#$4?'#Dr#(|9#Kp>#96'#Kf'#
$(;'(#Q#BH<#B;<#$%ò#I7#$4?'#(['*#K@9(1#T(6'#$%&'(#C78#$%3'#Kâ8#*<M<#$(@9(#Ib#F4#B&#D;4#
$(;'(#*(<#Q#'(V#I7#$(;'(#$(<#$@9(#I>x1#S:#"(?"#9?9#IJ'(#()"#'*+#\Z#$M#9?9(#DE#FG'*#
9(:'*#B7#I<J$#g3#9?9#g<X>#$4?'#(['*#()"#IJ#KV)9#9(4#$%4'*#"(G#IG9#Q""a'F<q#Q1/1#
S_#(;<#$(;'(#*(<#/w#C<$#$%4'*#, /#I7#C`#Kf\#9(VL'*#$%&'(#TS#B7#94'#$%z#F+#I<J>#
QT5y1#56\#q>;'#$%|'*#B7#9?9(#DE#FG'*#9(:'*#KV)9#$%&'(#C78#ở#\G9#01v1#5(;'(#*(<#
RT5y#KV)9#DE#FG'*#KX#$%>8#9!"#F+#I<J>#B7#KV)9#I7\#gx#ở#9(VL'*#.#g(<#'_<#Bp#9?9#
9(f#K`#K?'(#Kd;#9(e1#
010# G<H<#$(<J>#Bp#I!"#$%&'(#()"#'*+#, /1#
5%4'*#"(6'#'78#9(:'*#$;#C7'#Bp#F['*#$(=9#9A;#()"#'*+#B7#Kd'(#'*(ĩ;#\`$#Dr#$(>!$#
'*+#DE#FG'*#%`'*#%u<#*ắ'#I<p'#BH<#I!"#$%&'(#()"#'*+1#
STU#9(e#9_#$(X#I7\#B<J9#BH<#9?9#Dr#'(d#"(â'#B7#9_#$(X#9([8#BH<#$r9#K`#%Y$#9;41#5>8#
'(<3'^#$(!$#I7#'*?'#'*!\#B7#9(!\#9(["#Kr<#BH<#94'#'*V]<#"(M<#I7\#B<J9#BH<#9?9#Dr#-#
B7#/#KX#I!"#$%&'(#9(4#\?8#$@'(1#N`$#9(VL'*#$%&'(#9(=;#9?9#Dr#-#B7#/#KV)9#*|<#I7#'*Z'#
'*+#\?81#
5%4'*#'(+'*#'*78#K6>#9A;#\?8#$@'(^#9?9#I!"#$%&'(#B<3'#"(M<#B<f$#\u#9(VL'*#$%&'(#
FVH<#F['*#'*Z'#'*+#\?81#Nc9#FG#(J#$(r'*#$(!"#IG9#"(â'#kDr#taqn#Ku#KV)9#DE#FG'*#
'(V#\`$#9?9(#(<J>#q>M#(L'#KX#C<X>#F<ễ'#9?9#Dr#'(d#"(â'#$(&#q>?#$%&'(#I7\#B<J9#BH<#
\u#\?8#Bẫ'#9ò'#I7#9Z'*#B<J9#9ồ'*#gp'(#Kr<#BH<#94'#'*V]<1#S>r<#9W'*^#9?9#'*>ồ'#
'*+#()"#'*+#Ku#KV)9#"(?$^#Ku#9>'*#9Y"#9?9#${#*)<#'(H#9(4#9?9#IJ'(#\u#\?8#9`'*#BH<#
'(+'*#Kc9#$@'(#g(?9#*<:"#9(4#B<J9#I!"#$%&'(#'(;'(#(L'#B7#@$#\ắ9#Iỗ<#(L'1#5(>!$#'*+#
${#*)<#'(H#k\'a\4'<9n#$(V]'*#q>83'#DE#FG'*#$%4'*#$7<#I<J>#g(4;#(|9#B7#gx#$(>!$#
\?8#$@'(#KX#$(;\#9(<f>#9(4#9?9#\u#B7#${#%:$#*|'#$VL'*#Kr<#Fễ#'(H^#9?9#9(VL'*#$%&'(#

()"#'*+#"(M<#KV)9#Fd9(#%;#$(;'(#\u#\?8#Cằ'*#\`$#9(VL'*#$%&'(#KV)9#I7#$%&'(#()"#
'*+#k()"#Fd9(n1#t)"#'*+#KV)9#94<#'(V#I7#\`$#'*Z'*#'*+#C!9#$(Y"#B&#'_#*<;4#$<f"#$%ự9#
$<f"#BH<#9Y>#$%:9#C3'#$%4'*#9A;#STU1#~X#I!"#$%&'(#$%4'*#()"#'*+^#I!"#$%&'(#B<3'#"(M<#
C<f$#$Y$#9M#9?9#$(;'(#*(<#9A;#STU#B7#g@9(#$(VH9#9A;#9(:'*#9ũ'*#'(V#9?9#9(<#$<f$#
g(?91#
*78#';8^#$;#9_#$(X#DE#FG'*#'(<p>#'*Z'#'*+#I!"#$%&'(#g(?9#'(;>^#9(ẳ'*#(['#'(V#
2;D<9^#T;D9;I^#S^#S
++
^#J;B;#B7#BZ#Dr#'*Z'#'*+#g(?91#S?9#'*Z'#'*+#'78#KV)9#94<#I7#
'(V'*#'*Z'#'*+#C!9#9;4#B&#I!"#$%&'(#B<3'#g(Z'*#96'#"(M<#$VL'*#$?9#BH<#9?9#9(<#$<f$#
C3'#$%4'*#9A;#STU1#N`$#$%&'(#()"#Fd9(#KV)9#FW'*#KX#Fd9(#9(VL'*#$%&'(#()"#'*+#%;#
\u#\?8#9ò'#k9ò'#KZ<#g(<#9ũ'*#9ò'#KV)9#*|<#\7#Kr<#$V)'*#kOCja9$#S4Fan#(;8#\u#
IJ'(#O"94Fan^#9ò'#9?9#'*Z'#'*+#C!9#9;4#KV)9#Fd9(#$(7'(#9?9#'*Z'#'*+#\u#\?8#
Cằ'*#\`$#9(VL'*#$%&'(#*|<#I7#$%&'(#C<3'#Fd9(1#P@#FG^#KX#B<f$#\`$#9(VL'*#$%&'(#$%4'*#S#
$;#"(M<#DE#FG'*#\`$#$%&'(#C<3'#Fd9(#S#KX#Fd9(#9(VL'*#$%&'(#Bp#F['*#\u#\?81#2â8#*<]#
$;#q}$#F['*#$(=9#()"#'*+#9A;#, /#B7#DE#FG'*#$%&'(#()"#Fd9(#KX#$[4#%;#\`$#9(VL'*#
$%&'(#Dẵ'#D7'*#9([8#'*;8#KV)91#
2.2.1 Cấu trúc của hợp ngữ.
N`$#9(VL'*#$%&'(#()"#'*+#C;4#*ồ\#\`$#9(>ỗ<##9?9#Fò'*#IJ'(#()"#'*+1#N`$#IJ'(#()"#
'*+#9_#9(=;#\`$#${#*)<#'(H#k\'a\4'<9n#B7#$>8#$(a4#${'*#IJ'(#B7#D;>#'_#9_#\`$#(4c9#
(;<#$4?'#(['*1#S?9#$4?'#(['*#I7#9?9#F+#I<J>#96'#KV)9#$(;4#$?9#B7#9?9#${#*)<#'(H#I7#9?9#
IJ'(#Kr<#BH<#STU#'_<#'_#I7\#*&#BH<#9?9#F+#I<J>1#
ORG 0H ; Bắt đầu (origin) tại ngăn nhớ 0
MOV R5, #25H ; Nạp 25H vào R5
MOV R7, #34H ; Nạp 34H vào R7
MOV A, #0 ; Nạp 0 vào thanh ghi A
ADD A, R5 ; Cộng nôi dụng R5 vào A (A = A + R5)
ADD A, R7 ; Cộng nội dung R7 vào A (A = A + R7)
ADD A, #121H ; Cộng giá trị 12H vào A (A = A + 12H)
HERE: SJMP HERE ; ở lại trong vòng lặp này

END ; Kết thúc tệp nguồn hợp ngữ
#
S(VL'*#$%&'(#01/h#P@#FG#\ẫ>#Bp#\`$#9(VL'*#$%&'(#()"#'*+1#
S(VL'*#$%&'(#01/#9(4#$%3'#Kâ8#I7#\`$#9(>ỗ<#9?9#9â>#IJ'(#(4c9#9?9#Fò'*#IJ'(#KV)9#
B<f$#(4c9#Cằ'*#9?9#IJ'(#()"#'*+#'(V#QRR#B7#NOP#(4c9#Cằ'*#9?9#9â>#IJ'(#KV)9#*|<#
I7#9?9#9(e#Fẫ'1#5%4'*#g(<#9?9#IJ'(#()"#'*+#$(&#'_<#STU#"(M<#I7\#*&#$(&#9?9#9(e#IJ'(#
k(;8#9ß'#*|<#I7#*<M#IJ'(n#$(&#KV;#%;#9?9#9(e#IJ'(#9(4#()"#'*+1#P@#FG^#$%4'*#9(VL'*#
$%&'(#01/#$(&#9?9#IJ'(#QRR#B7#NOP#I7#9?9#IJ'(#Kf'#STU^#9ß'#OyG#B7#E•R#I7#9?9#
9(e#IJ'(#Kr<#BH<#()"#'*+1#OyG#'_<#()"#'*+#Kc$#\u#IJ'(#$[<#'*¨'#'(H#-#B7#E•R#$(&#
C?4#9(4#()"#'*+#C<f$#gf$#$(:9#\u#'*>å'1#t;8#'_<#9?9(#g(?9#\`$#9(e#IJ'(#KX#C¾$#K6>#
B7#9(e#IJ'(#$(=#(;<#KX#gf$#$(:9#9(VL'*#$%&'(1#
SY>#$%:9#9A;#\`$#IJ'(#()"#'*+#9_#4#$%V]'*#'(V#D;>h#
['(u'h]### [${#*)<#'(H]# [9?9#$4?'#(['*]# [;#9(:#*<M<]#
S?9#$%V]'*#$%4'*#FY>#'*4c9#B>Z'*#I7#$>o#9(|'#B7#g(Z'*#"(M<#Fß'*#IJ'(#'74#9ò'*#9_#
9(:'*1#S?9#FY>#'*4c9#B>Z'*#g(Z'*#KV)9#B<f$#B741#PH<#F['*#$(=9#$%3'#K©8#96'#IV>#b#
9?9#K<X\#D;>h#
/1#5%V]'*#'(u'#9(4#"(}"#9(VL'*#$%&'(#$(;\#9(<f>#Kf'#\`$#Fß'*#IJ'(#C»'*#$3'1#•_#
g(Z'*#KV)9#B<f$#q>?#\`$#Dr#gb#$ù#'(Y$#Kd'(1#tu8#g<X\#$%;#q>8#Kd'(#'78#9A;#()"#'*+#
\7#$;#DE#FG'*1#
01#5{#*)<#'(H#kIJ'(n#B7#9?9#$4?'#(['*#I7#9?9#$%V]'*#gf$#()"#BH<#'(;>#$(ù9#$(<#9Z'*#B<J9#
$(ù9#$f#9A;#9(VL'*#$%&'(#B7#(47'#$(<J'#9?9#'(<J\#BG#\7#9(VL'*#$%&'(#KV)9#B<f$#9(4#
9(:'*1#5%4'*#()"#'*+#9?9#9©>#IJ'(#'(Vh#
#
“ ADD A, B”
“MOV A, #67H”
#
$(&#QRR#B7#NOP#I7#'(+'*#${#*)<#'(H#$[4#%;#\u#IJ'(^#9ß'#“Q^#2”#B7#“Q^#
#wjt”#I7#'(+'*#$4?'#(['*#$(&#(;<#$%V]'*#9_#$(X#9(=;#9?9#IJ'(#*<M#(4c9#9(e#
IJ'(#9A;#()"#'*+1#tu8#'(H#%»'*#9?9#9(e#IJ'(#g(Z'*#$[4#%;#\u#IJ'(#'74#k\u#
\?8n#B7#9(:'*#9(e#FW'*#Cë<#()"#'*+^#'*V)9#I[<#Kr<#BH<#9?9#IJ'(#I7#9(:'*#

KV)9#Fd9(#%;#\u#\?8#k\u#I3'(n#9(4#STU#$(ù9#(<J'1#5%4'*#9(VL'*#$%&'(#01/#
9?9#IJ'(#OyG#B7# E•R#I7#9?9#9(e#IJ'(#k\`$#Dr#()"#'*+#9A;#, /#DE#FG'*#
F['*#1OyG#B7#1E•Rn1#tu8#K|9#q>8#Kd'(#9G#$(X#9A;#()"#'*+#$;#DE#FG'*1#
v1#S(VL'*#9(:#*<M<#I>Z'#"(M<#C¾$#K6>#C»'*#FY>#9(Y\#"(È8#k;n1#S?9#9(:#*<M<#9_#$(X#C¾$#
K6>#ë#K6>#Fß'*#(4c9#*<+;#Fß'*1#t)"#'*+#
Cz#q>;#kI7\#'*Ln#9?9#9(:#*<M<#'(V'*#9(:'*#
I[<#%Y$#96'#$(<f$#Kr<#BH<#I!"#$%&'(#B<3'1#Nc9#
FW#9?9#9(:#*<M<#I7#$>o#9(|'^#g(Z'*#C¾$#C>`9#
'(V'*#$;#'3'#FW'*#9(:'*#KX#\Z#$M#9(VL'*#
$%&'(#KX#*<:"#9(4#'*V]<#g(?9#K|9#B7#(<X>#
9(VL'*#$%&'(#FÔ#F7'*#(L'1#
41# V>#b#Kf'#'(u'#tEyE#$%4'*#$%V]'*#'(u'#
9A;#9(VL'*#$%&'(#01/1#N`$#'(u'#CY$#go#
$(;\#9(<f>#Kf'#\`$#IJ'(#"(M<#9_#FY>#(;<#
9(Y\#khn#K='*#ë#D;>1#5%4'*#9©>#IJ'(#'(M8#
'*¾'#iJNT#$(&#, /#KV)9#%;#IJ'(#ë#I[<#
$%4'*#Bß'*#Ic"#'78#BZ#(['1#•f>#(J#$(r'*#
9A;#9(:'*#$;#9_#\`$#9(VL'*#$%&'(#*<?\#D?$#
$(&#$;g(Z'*#96'#Fß'*#IJ'(#'78#B7#'_#9_#$(X#
KV)9#q4?#K<#%;#g(z<#9(VL'*#$%&'(1#
01v#t)"#Fd9(#B7#9([8#\`$#9(VL'*#
$%&'(#, /1#
•(V#B!8#9Y>#$%:9#9A;#\`$#9(VL'*#$%&'(#()"#
'*+#$;#Ku#KV)9#C<f$^#9©>#(z<#Kc$#%;#I7#9(VL'*#
EDITOR

PRAGRAM

ASSEMBLE
R


PRAGRAM

LINKER

PRAGRAM

OH

PRAGRAM

myfile.asm

myfile.lst

myfile.obj

other obj file

myfile.abs

myfile.hex

$%&'(#Ds#KV)9#$[4#%;#B7#()"#Fd9(#'(V#$(f#'74#B7#I7\#$(f#'74#KX#9_#$(X#9([8#KV)9?#S?9#
CVH9#KX#$[4#%;#\`$#9(VL'*#$%&'(#()"#'*+#9_#$(X#9([8#KV)9#I7h#
/1#5%VH9#(f$#$;#DE#FG'*#\`#$%&'(#D4['#$(M4#KX#*ỡ#B74#\`$#9(VL'*#$%&'(#*<r'*#'(V#
9(VL'*#$%&'(#01/1#S_#'(<p>#$%&'(#D4['#$(M4#$>8J$#B]<#(4c9#9?9#C`#DE#Ib#${#KV)9#DE#
FG'*#KX#$[4#%;#B7/#(4c9#KX#D4['#$(M4#9(VL'*#$%&'(1#N`$#$%&'(#D4['#$(M4#KV)9#DE#FG'*#
%`'*#%u<#I7#$%&'(#D4['#$(M4#ERI5#9A;#NilROi#k(4c9#4$a%;F#9A;#W<'F4wDn#Kp>#
9([8#$%3'#(J#K<p>#(7'(#N<9%4D4m$1# V>#b#%ằ'*^#$%&'(#D4['#$(M4#"(M<#9_#g(M#'ă'*#$[4#

%;#$J"#\u#QiSII1#~r<#BH<#'(<p>#$%&'(#()"#'*+#$(&#9?9#$3'#$J"#$>â'#$(a4#9?9#q>8#VH9#
$(V]'*#IJ#9A#ROi^#'(V'*#"(6'#\ở#%`'*#9A;#9?9#$J"#'*>ồ'#"(M<#I7#;D\#(;8#D%9#
$>o#$(a4#$%&'(#()"#'*+#\7#$;#DE#FG'*1#
01#5J"#'*>ồ'#9_#"(6'#\ở#%`'*#;D\#9(=;#\u#9(VL'*#$%&'(#KV)9#$[4#%;#ở#CVH9#/#KV)9#
'["#B74#$%&'(#()"#Fd9(#9A;#, /1#5%&'(#()"#Fd9(#9(>8X'#9?9#IJ'(#%;#\u#\?81#5%&'(#
()"#Fd9(#Ds#$[4#%;#\`$#$J"#Kr<#$V)'*#B7#\`$#$J"#I<J$#g3#BH<#9?9#$(7'(#"(6'#\ở#%`'*#
4Cj#B7#ID$#$VL'*#='*1#
v1#S?9#$%&'(#()"#Fd9(#83>#96>#\`$#CVH9#$(=#C;#*|<#I7#I<3'#gf$1#S(VL'*#$%&'(#I<3'#gf$#IY8#
\`$#(4c9#'(<p>#$J"#Kr<#$V)'*#B7#$[4#%;#\`$#$J"#Kr<#$V)'*#$>8J$#Kr<#BH<#$(7'(#"(6'#
\ở#%`'*#;CD1#5J"#;CD#'78#KV)9#DE#FG'*#Cở<#$(W'*#9(=;#9A;#, /#9_#\`$#
9(VL'*#$%&'(#*<?\#D?$1#
41# Kf#D;>#K_#$J"#;CD#KV)9#'["#B74#\`$#9(VL'*#$%&'(#KV)9#*|<#I7#-t#k9(>8X'#Kr<#
$V)'*#4Cja9$#Bp#F['*#Dr#taqn#KX#$[4#%;#\`$#$J"#BH<#K>Z<#\ở#%`'*#taq#9_#$(X#'["#
$r$#B74#$%4'*#yON1#S(VL'*#$%&'(#'78#9_#$%4'*#$Y$#9M#\|<#$%&'(#()"#'*+#9A;#, /#
9?9#$%&'(#()"#'*+#Fự;#$%3'#W<'F4wD#(<J'#';8#gf$#()"#9?9#CVH9#0#Kf'#4#B74#$(7'(#
\`$#CVH91#
Hình 2.2:#S?9#CVH9#KX#$[4#%;#\`$#9(VL'*#$%&'(1#
2.3.1 Nói thêm về các tệp .asm và .object.
5J"#1;D\#9ũ'*#KV)9##*|<#I7#$J"#'*>ồ'#B7#9(@'(#B&#Ib#F4#'78#\7#\`$#Dr#$%&'(#()"#
'*+#Kò<#(z<#$J"#'78#"(M<#9_#\`$#"(6'#\ở#%`'*#D%9#${#9(+#D4>%9a#I7#'*>ồ'1#tu8#
g<X\#$%;#()"#'*+#, /#\7#$;#DE#FG'*#qa\#'_#9_#Kò<#(z<#'(V#B!8#g(Z'*?#(V#$;#'_<#
$%VH9#Kâ8#$J"#'78#KV)9#$[4#%;#'(]#\`$#$%&'(#C<3'#$!"#9(ẳ'*#(['#'(V#EF<$#9A;#ROi#
(4c9#4$a";F#9A;#W<'F4wD1#t)"#'*+#9A;#, /#9(>8X'#Kổ<#9?9#$J"#()"#'*+#$%4'*#
$J"#1;D\#$(7'(#'*Z'#'*+#\u#\?8#B7#9>'*#9Y"#$J"#Kr<#$V)'*#14Cja9$1#*47<#B<J9#$[4#%;#
$J"#Kr<#$V)'*#$%&'(#()"#'*+#9ũ'*#9(4#%;#$J"#I<J$#g3#ID$#k <D$#m<Ian1#
2.3.2 Tệp liệt kê .lst.
5J"#I<J$#g3#I7#\`$#$>o#9(|'^#'_#%Y$#(+>#@9(#9(4#I!"#$%&'(#B<3'#B&#'_#I<J$#g3#$Y$#9M#\|<#
\u#IJ'(#B7#Kd;#9(e#9ũ'*#'(V#$Y$#9M#9?9#Iỗ<#\7#$%&'(#()"#'*+#"(?$#(<J'#%;1#(<p>#$%&'(#
()"#'*+#*<M#$(<f$#%ằ'*^#$J"#I<J$#g3#I7#g(Z'*#96'#$(<f$#$%{#g(<#$;#C?4#%ằ'*#$;#\>r'#$[4#
%;#'_1#5J"#'78#9_#$(X#KV)9#$%>8#9!"#Cằ'*#\`$#$%&'(#C<3'#Fd9(#'(V#EF<$#9A;#ROi#(4c9#

4$a";F#9A;#W<'F4w#B7#KV)9#(<X'#$(d#$%3'#\7'#(&'(#(4c9#KV)9#*E<#%;#\?8#<'1# !"#
$%&'(#B<3'#DE#FG'*#$J"#I<J$#g3#KX#$&\#9?9#Iỗ<#9:#"(?"1#S(e#D;>#g(<#Ku#DE;#(f$#9?9#Iỗ<#
KV)9#K?'(#FY>#$%4'*#$J"#I<J$#g3#$(&#$J"#Kr<#$V)'*#\H<#Dẵ'#D7'*#I7\#K6>#B74#9(4#
9(VL'*#$%&'(#I<3'#gf$1#
1 0000 ORG 0H ; Bắt đầu ở địa chỉ 0
2 0000 7D25 MOV R5, #25H ; Nạp giá trị 25H vào R5
3 0002 7F34 MOV R7, #34H ; Nạp giá trị 34H vào R7
4 0004 7400 MOV A, #0 ; Nạp 0 vào A (xoá A)
5 0006 2D ADD A, R5 ; Cộng nội dung R5 vào A (A = A + R5)
6 0007 2F ADD A, R7 ; Cộng nội dung R7 vào A (A = A + R7)
7 0008 2412 ADD A, #12H ; Cộng giá trị 12H vào A (A = A + 12H)
8 00A BCEF HERE: SJMP HERE ; ở lại vòng lặp này
9 000C END ; Kết thúc tệp .asm
#
S(VL'*#$%&'(#010h#5J"#I<J$#g31#
014#2`#Kf\#9(VL'*#$%&'(#B7#g(Z'*#*<;'#yON#$%4'*#, /1#
2.4.1 Bộ đếm ch ơng trình trong 8051.
N`$#$(;'(#*(<#q>;'#$%|'*#g(?9#$%4'*#, /#I7#C`#Kf\#9(VL'*#$%&'(#1#2`#Kf\#9(VL'*#
$%&'(#9(e#Kf\#Kd;#9(e#9A;#IJ'(#gf#$<f"#96'#KV)9#$(ự9#(<J'1#K(<#STU#'["#\u#IJ'(#${#
C`#'(H#yON#9(VL'*#$%&'(#$(&#C`#Kf\#9(VL'*#$%&'(#$ă'*#I3'#9(e#Kf\#IJ'(#gf$#$<f"1#
2`#Kf\#9(VL'*#$%&'(#$%4'*#, /#9_#$(X#$%>8#9!"#9?9#Kd;#9(e#9(VL'*#$%&'(#$%4'*#, /#
%`'*#/w#C<$1#~<p>#'78#9_#'*(ĩ;#I7#, /#9_#$(X#$%>8#9!"#9?9#Kd;#9(e;#9(VL'*#$%&'(#${#
#Kf'#FFFFt#$ổ'*#9`'*#I7#w4g#C8$a#\u#IJ'(1#5>8#'(<3'^#g(Z'*#"(M<#$Y$#9M#\|<#
$(7'(#B<3'#9A;#, /#Kp>#9_#$Y$#9M#w4g#C8$a#yON#$%3'#9(@"#KV)9#97<#Kc$1#P!8#g(<#
, /#KV)9#C!$#'*>ồ'#$(&#'_#K?'(#$(=9#ở#Kd;#9(e;#'74?#
2.4.2 Địa chỉ bắt đầu khi 8051 đ ợc cấp nguồn.
N`$#9â>#(z<#\7#$;#"(M<#(z<#Bp#C`#B<#K<p>#g(<X'#CY$#go#I7#$(&#'_#KV)9#9Y"#'*>ồ'#$(&#'_#
Cắ$#K6>#${#Kd;#9(e#'74?#Nỗ<#C`#B<#K<p>#g(<X'#Kp>#g(?9#'(;>1#5%4'*#$%V]'*#()"#(|#
, /#$(&#\|<#$(7'(#B<3'#gX#${#'(7#DM'#q>Y$#'74#(;8#"(<3'#CM'#'74#$(&#C`#B<#K<p>#
g(<X'#Kp>#Cắ$#K6>#${#Kd;#9(e# #g(<#'_#KV)9#C!$#'*>ồ'1#2!$#'*>ồ'#ở#Kâ8#9_#'*(ĩ;#

I7#$;#9Y"#K<J'#?"#P
99
#Kf'#9(â'#yEiE5#'(V#Ds#$%&'(#C78#ở#9(VL'*#41#t;8#'_<#9?9(#
g(?9^#g(<#, /#KV)9#9Y"#'*>ồ'#$(&#C`#Kf\#9(VL'*#$%&'(#9_#*<?#$%d# 1#~<p>#'78#9_#
'*(ĩ;#I7#'_#9(]#\u#IJ'(#K6>#$<3'#KV)9#IV>#ở#Kd;#9(e;#yON# t1#P&#Ib#F4#'78#\7#
$%4'*#Bd#$%@#'(H# t#9A;#C`#'(ở#yON#9(VL'*#$%&'(#B&#Kâ8#I7#'L<#\7#'_#$&\#IJ'(#
K6>#$<3'#g(<#C!$#'*>ồ'1#S(:'*#$;#K[$#KV)9#K<p>#'78#Cằ'*#9â>#IJ'(#OyG#$%4'*#
9(VL'*#$%&'(#'*>ồ'#'(V#Ku#$%&'(#C78#$%VH9#Kâ81#RVH<#Kâ8#I7#(4[$#K`'*#${'*#CVH9#9A;#
C`#Kf\#9(VL'*#$%&'(#$%4'*#q:;#$%&'(#'["#B7#$(ự9#$(<#\`$#9(VL'*#$%&'(#\ẫ>1#
2.4.3 Đặt mã vào ROM ch ơng trình.
~X#(<X>#$r$#(L'#B;<#$%ò#9A;#C`#Kf\#9(VL'*#$%&'(#$%4'*#q>?#$%&'(#'["#B7#$(ự9#$(<#\`$#
9(VL'*#$%&'(^#$;#g(M4#D?$#\`$#(4[$#K`'*#9A;#C`#Kf\#9(VL'*#$%&'(#g(<#\ỗ<#IJ'(#KV)9#
'["#B7#$(ự9#$(<1#5%VH9#(f$#$;#g(M4#D?$#\`$#I6'#'+;#$J"#I<J$#g3#9A;#9(VL'*#$%&'(#\ẫ>#B7#
9?9(#Kc$#\u#B74#yON#9(VL'*#$%&'(#, /#'(V#$(f#'74?#(V#$;#9_#$(X#$(Y8^#\u#IJ'(#
B7#$4?'#(['*#Kr<#BH<#\ỗ<#IJ'(#KV)9#I<J$#g3#ở#C3'#$%?<#9A;#IJ'(#I<J$#g31#
S(VL'*#$%&'(#01/h#P@#FG#\ẫ>#Bp#\`$#9(VL'*#$%&'(#()"#'*+1#
S(VL'*#$%&'(#01/#9(4#$%3'#Kâ8#I7#\`$#9(>ỗ<#9?9#9â>#IJ'(#(4c9#9?9#Fò'*#IJ'(#KV)9#
B<f$#(4c9#Cằ'*#9?9#IJ'(#()"#'*+#'(V#QRR#B7#NOP#(4c9#Cằ'*#9?9#9â>#IJ'(#KV)9#*|<#
I7#9?9#9(e#Fẫ'1#5%4'*#g(<#9?9#IJ'(#()"#'*+#$(&#'_<#STU#"(M<#I7\#*&#$(&#9?9#9(e#IJ'(#
k(;8#9ò'#*|<#I7#*<M#IJ'(n#$(&#KV;#%;#9?9#9(e#IJ'(#9(4#()"#'*+1#P@#FG^#$%4'*#9(VL'*#
$%&'(#01/#$(&#9?9#IJ'(#QRR#B7#NOP#I7#9?9#IJ'(#Kf'#STU^#9ò'#OyG#B7#ER#I7#9?9#
9(e#IJ'(#Kr<#BH<#()"#'*+1#OyG#'_<#()"#'*+#Kc$#\u#IJ'(#$[<#'*ă'#'(H#-#B7#ER#$(&#
C?4#9(4#()"#'*+#C<f$#gf$#$(:9#\u#'*>ồ'1#t;8#'_<#9?9(#g(?9#\`$#9(e#IJ'(#KX#Cắ$#K6>#
B7#9(e#IJ'(#$(=#(;<#KX#gf$#$(:9#9(VL'*#$%&'(1#
SY>#$%:9#9A;#\`$#IJ'(#()"#'*+#9_#4#$%V]'*#'(V#D;>h#
['(u'h]### [${#*)<#'(H]# [9?9#$4?'#(['*]# [;#9(:#*<M<]#
S?9#$%V]'*#$%4'*#FY>#'*4c9#B>Z'*#I7#$>o#9(|'#B7#g(Z'*#"(M<#Fò'*#IJ'(#'74#9ũ'*#9_#
9(:'*1#S?9#FY>#'*4c9#B>Z'*#g(Z'*#KV)9#B<f$#B741#PH<#F['*#$(=9#$%3'#Kâ8#96'#IV>#b#
9?9#K<X\#D;>h#
5%V]'*#'(u'#9(4#"(}"#9(VL'*#$%&'(#$(;\#9(<f>#Kf'#\`$#Fß'*#IJ'(#C»'*#$3'1#•_#

g(Z'*#KV)9#B<f$#q>?#\`$#Dr#gb#$ù#'(Y$#Kd'(1#tu8#g<X\#$%;#q>8#Kd'(#'78#9A;#()"#'*+#
\7#$;#DE#FG'*1#
5{#*)<#'(H#kIJ'(n#B7#9?9##$4?'#(['*#I7#9?9#$%V]'*#gf$#()"#BH<#'(;>#$(ù9#$(<#9Z'*#B<J9#
$(ù9#$f#9A;#9(VL'*#$%&'(#B7#(47'#$(<J'#9?9#'(<J\#BG#\7#9(VL'*#$%&'(#KV)9#B<f$#9(4#
9(:'*1#5%4'*#()"#'*+#9?9#9©>#IJ'(#'(Vh#
“ ADD A, B”
“MOV A, #67H”
#
5(&#QRR#B7#NOP#I7#'(+'*#${#*L<#'(H#$[4#%;#\u#IJ'(^#9ß'#“Q^#2”#B7#“Q^#
#wjt”#I7#'(+'*#$4?'#(['*#$(&#(;<#$%V]'*#9_#$(X#9(=;#9?9#IJ'(#*<M#(4c9#9(e#IJ'(#9A;#
()"#'*+1#tu8#'(H#%»'*#9?9#9(e#IJ'(#g(Z'*#$[4#%;#\u#IJ'(#'74#k\u#\?8n#B7#9(:'*#
9(e#FW'*#Cë<#()"#'*+^#'*V)9#I[<#Kr<#BH<#9?9#IJ'(#I7#9(:'*#KV)9#Fd9(#%;#\u#\?8#k\u#
I3'(n#9(4#STU#$(ù9#(<J'1#5%4'*#9(VL'*#$%&'(#01/#9?9#IJ'(#OyG#B7#E•R#I7#9?9#9(e#
IJ'(#k\`$#Dr#()"#'*+#9A;#, /#DE#FG'*#F['*#1OyG#B7#1E•Rn1#tu8#K|9#q>8#Kd'(#9G#
$(X#9A;#()"#'*+#$;#DE#FG'*1#
5%VL'*#9(:#*<M<#I>Z'#"(M<#C¾$#K6>#C»'*#FY>#9(Y\#"(È8#k;n1##S?9#9(:#*<M<#9_#
$(X#C¾$#K6># ë#K6>#Fß'*#(4c9#*<+;#Fß'*1#t)"#'*+#Cz# q>;#kI7\#'*Ln#9?9#9(:#*<M<#
'(V'*#9(:'*#I[<#%Y$#96'#$(<f$#Kr<#BH<#I!"#$%&'(#B<3'1#Nc9#FW#9?9#9(:#*<M<#I7#$>o#9(|'^#
g(Z'*#C¾$#C>`9#'(V'*#$;#'3'#FW'*#9(:'*#KX#\Z#$M#9(VL'*#$%&'(#KX#*<:"#9(4#'*V]<#
g(?9#K|9#B7#(<X>#9(VL'*#$%&'(#FÔ#F7'*#(L'1#
V>#b#Kf'#'(u'#tEyE#$%4'*#$%V]'*#'(u'#9A;#
9(VL'*#$%&'(#01/1#N`$#'(u'#CY$#go#$(;\#9(<f>#Kf'#\`$#
IJ'(#"(M<#9_#FY>#(;<#9(Y\#khn#K='*#ë#D;>1#5%4'*#9©>#IJ'(#
'(M8#'*¾'#iJNT#$(&#, /#KV)9#%;#IJ'(#ë#I[<#$%4'*#Bß'*#
Ic"#'78#BZ#(['1#•f>#(J#$(r'*#9A;#9(:'*#$;#9_#\`$#9(VL'*#
$%&'(#*<?\#D?$#$(&#$;g(Z'*#96'#Fß'*#IJ'(#'78#B7##'_#9_#$(X#
KV)9#q4?#K<#%;#g(z<#9(VL'*#$%&'(1###
#S(VL'*#$%&'(#01/h#5J"#I<J$#g3#
#i;>#g(<#9(VL'*#$%&'(#KV)9#Kr$#B74#$%4'*#yON#9A;#
$(7'(#B<3'#(|#, /#'(V#,j./#(4c9#Q5#,9./#(4c9#Ri#

#$(&#\u#IJ'(#B7#$4?'#(['*#KV)9#KV;#B74#9?9#Bd#$%@#'(H#
yON#C¾$#K6>#${#Kd;#9(e# #'(V#CM'*#I<J$#g3#FVH<#K©81#
#
§Þa chØ ROM Ng«n ng÷ m¸y Hîp ng÷
0000 7D25 MOV R5, #25H
0002 7F34 MOV R7, #34H
0004 7400 MOV A, #0
0006 2D ADD A, R5
0007 2F ADD A, R7
0008 2412 ADD A, #12H
000A 80EF HERE: SJMP HERE
#
2M'*#'`<#F>'*#yON#9A;#9(VL'*#$%&'(#01/1#
2M'*#I<J$#g3#9(e#%;#Kd;#9(e# #9(=;#\u#jR#I7#\u#IJ'(#KX#9(>8X'#\`$#*<?#$%d#B74#
$(;'(#*(<#y.#B7#Kd;#9(e# /#9(=;#$4?'#(['*#kë#K©8#I7#*<?#$%d#0.4n#96'#KV)9#9(>8X'#
B74#y.1#R4#B!8^#IJ'(#“NOP#y.^##0.t”#9_#\u#I7#“jR0.”#$%4'*#K_#jR#I7#\u#IJ'(^#
§Þa chØ M· lÖnh
0000 7D
0001 25
0002 F7
0003 34
0004 74
0005 00
0006 2D
0007 2F
0008 24
0009 12
000A 80
000B FE
#

9ò'*#0.#I7#$4?'#(['*1#5VL'*#$ự#'(V#B!8^#\u#\?8#jFv4#KV)9#Kc$#$%4'*#9?9#'*ă'#
'(H# 0#B7# v#B7#C<X>#F<ễ'#\u#IJ'(#B7#$4?'#(['*#Kr<#BH<#IJ'(#NOP#yj^##v4t1#
5(a4#9?9(#'(V#B!8^#\u#\?8#j4 #KV)9#Kc$#$[<#Kd;#9(e# 4#B7# #B7#C<X>#F<ễ'#
\u#IJ'(#B7#$4?'#(['*#Kr<#BH<#IJ'(#NOP#Q^##-1#*ă'#'(H# w#9_#\u#0R#I7#\u#
Kr<#BH<#IJ'(#QRR#Q^#y.#B7#'*ă'#'(H# j#9_#'`<#F>'*#0F#I7#\u#IJ'(#9(4#QRR#
Q^#yj1#Nu#IJ'(#Kr<#BH<#IJ'(#QRR#Q^##/0t#KV)9#Kc$#ở#'*ă'#'(H# ,#B7#$4?'#
(['*#/0t#KV)9#Kc$#ở#'*ă'#'(H# 91#*ă'#'(H# Q#9_#\u#IJ'(#9A;#IJ'(#iJNT#B7#
Kd;#9(e#K@9(#9A;#'_#KV)9#Kc$#ở#'*ă'#'(H# 21# b#F4#B&#D;4#Kd;#9(e#K@9(#I7#FE#KV)9#
*<M<#$(@9(#ở#9(VL'*#v1#
2.4.4 Thực hiện một ch ơng trình theo từng byte.
G<M#DE#%ằ'*#9(VL'*#$%&'(#$%3'#KV)9#Kr$#B74#yON#9A;#9(@"#, /#(4c9k#,j./^#Q5#
,9./#(4c9#Ri# n#$(&#FVH<#Kâ8#I7#\Z#$M#(4[$#K`'*#$(a4#${'*#CVH9#9A;#, /#g(<#'_#
KV)9#9Y"#'*>ồ'1#
/1# K(<#, /#KV)9#C!$#'*>ồ'^#C`#Kf\#9(VL'*#$%&'(#TS#9_#'`<#F>'*# #B7#Cắ$#K6>#'["#
\u#IJ'(#K6>#$<3'#${#Bd#$%@#'(H# #9A;#yON#9(VL'*#$%&'(1#5%4'*#$%V]'*#()"#9A;#
9(VL'*#$%&'(#'78#I7#\u#jR#KX#9(>8X'#\`$#$4?'#(['*#B74#y.1#K(<#$(ự9#(<J'#\u#IJ'(#
STU#'["#*<?#$%d#0.#B74#C`#Kf\#9(VL'*#$%&'(#KV)9#$ă'*#I3'#KX#9(e#Kf'# 0#kTS#=#
0n#9_#9(=;#\u#IJ'(#jF#I7#\u#9A;#IJ'(#9(>8X'#\`$#$4?'#(['*#B74#yj#NOP#yj^#
1111#
01# K(<#$(ự9#(<J'#\u#IJ'(#jF#$(&#*<?#$%d#v4t#KV)9#9(>8X'#B74#yj#D;>#K_#TS#KV)9#$ă'*#
I3'# 41#
v1#*ă'#'(H# 4#9(=;#\u#IJ'(#9A;#IJ'(#NOP#Q^##-1# J'(#'78#KV)9#$(ự9#(<J'#B7#
Câ8#*<]#TS#=# w1# V>#b#%ằ'*#$Y$#9M#9?9#IJ'(#$%3'#Kp>#I7#'(+'*#IJ'(#0#C8$a^#'*(ĩ;#
I7#\ỗ<#IJ'(#9(<f\#(;<#'*ă'#'(H1#
41#2â8#*<]#TS#=# w#9(e#Kf'#IJ'(#gf#$<f"#I7#QRR#Q^#y.1#~â8#I7#IJ'(#\`$#C8$a^#D;>#
g(<#$(ự9#(<J'#IJ'(#'78#TS#=# j1#
.1#*ă'#'(H# j#9(=;#\u#0F#I7#\u#IJ'(#9A;#QRR#Q^#yj1#~â8#9ũ'*#I7#IJ'(#\`$#
C8$a^#g(<#$(ự9#(<J'#IJ'(#'78#TS#KV)9#$ă'*#I3'# ,1#Q:;#$%&'(#'78#9=#$<f"#$G9#9(4#
Kf'#g(<#$Y$#9M#\4<#IJ'(#Kp>#KV)9#'["#B7#$(ự9#(<J'1#5(ự9#$f#\7#C`#Kf\#9(VL'*#$%&'(#
9(e#Kf'#IJ'(#gf#$<f"#96'#KV)9#$(ự9#(<J'#*<M<#$(@9(#$[<#D;4#\`$#Dr#C`#B<#qE#Ib#kK?'*#

'_<#I7##,wn#*|<#C`#Kf\#I7#94'#$%z#IJ'(#kI'D$%>9$<4'#T4<'$a%n1#
2.4.5 Bản đồ nhớ ROM trong họ 8051.
(V#$;#Ku#$(Y8#ở#9(VL'*#$%VH9^#\`$#Dr#$(7'(#B<3'#(|#, /#9(e#9_#4g#C8$a#C`#'(H#
yON#$%3'#9(@"#kB@#FG#,j./^#Q5#,9./n#B7#\`$#Dr#g(?9#'(V#Q5#,9./#9_#,g#C8$a#
yON^#Ri# lv0#9A;#R;II;D#ia\<94'F>9$4%#9_#v0g#C8$a#yON#$%3'#9(@"1#R;II;D#
ia\<94'F>9$4%#9ũ'*#9_#\4$|#, /#BH<#yON#$%3'#9(@"#I7#w4g#C8$a1#~<X\#96'#'(H#I7#
g(Z'*#9_#$(7'(#B<3'#'74#9A;#(|#, /#9_#$(X#$%>8#9!"#KV)9#(L'#w4g#C8$a#\u#IJ'(#B&#
C`#Kf\#9(VL'*#$%&'(#9A;#, /#I7#/w#C<$#kFM<#Kd;#9(e#${# #Kf'#FFFFtn1#S6'#"(M<#
*(<#'(H#I7#IJ'(#K6>#$<3'#9A;#yON#9(VL'*#$%&'(#Kp>#Kc$#ở# ^#9ò'#IJ'(#9>r<#9W'*#
"(G#$(>`9#B74#F>'*#IV)'*#yON#$%3'#9(@"#9A;#\ỗ<#$(7'(#B<3'#(|#, /1#5%4'*#Dr#9?9#
$(7'(#B<3'#(|#, /#$(&#,j./#B7#Q5#,9./#9_#4g#C8$a#yON#$%3'#9(@"1#2`#'(H#yON#
$%3'#9(@"#'78#9_#9?9#Kd;#9(e#${# #Kf'#-FFFt1#R4#B!8^#'*ă'#'(H#K6>#$<3'#9_#Kd;#
9(e# #B7#'*ă'#'(H#9>r<#9W'*#9_#Kd;#9(e;#-FFFt1#tu8#q}$#B@#FG#01/1#
Ví dụ 2.1:
5&\#Kd;#9(e#C`#'(H#yON#9A;#\ỗ<#$(7'(#B<3'#(|#, /#D;>#Kâ81#
;n#Q5#,9./#k(4c9#,j./n#BH<#4g#C8$a#
Cn#Ri# lv0#BH<#v0g#C8$a#
Lời giải:
;n#PH<#4g#C8$a#9A;#g(Z'*#*<;'#'(H#yON#$%3'#9(@"#$;#9_#4-9w#C8$a#Cằ'*#/ t#ở#F['*#
taq#k4##/-04#=#4-9w#(;8#/ #ở#F['*#taqn1#2`#'(H#'78#KV)9#qắ"#qf"#$%4'*#9?9#
'*ă'#'(H#${# #Kf'#-FFFFt1# V>#b#-#I>Z'#I7#'*ă'#'(H#K6>#$<3'1#
Cn#PH<#v0g#C8$a#'(H#$;#9_#v01jw,#C8$a#kv0##/-04n1#S(>8X'#Kổ<#v01jw,#Bp#Dr#taq#$;#
'(!'#KV)9#*<?#$%d#, t1#R4#B!8^#g(Z'*#*<;'#'(H#I7#FM<#${# #Kf'#jFFFt1#
#
#
#
#
#
#
#

#
#
#
#
#
#
#
Hình 2.3:#RM<#Kd;#9(e#9A;#yON#$%3'#9(@"#\`$#Dr#$(7'(#B<3'#(|#, /1#
01.#S?9#g<X>#F+#I<J>#B7#9?9#9(e#IJ'(1#
2.5.1 Kiểu dữ liệu và các chỉ lệnh của 8051.
2`#B<#K<p>#g(<X'#9(e#9_#\`$#g<X>#F+#I<J>^#'_#I7#,#C<$#B7#K`#F7<#\ỗ<#$(;'(#*(<#9ũ'*#I7#
,#C<$1#SZ'*#B<J9#9A;#I!"#$%&'(#B<3'#I7#"(â'#9(<;#F+#I<J>#IH'#(L'#,#C<$#%;#$(7'(#${'*#
g(:9#,#C<$#k${# #Kf'#FFt#(;8#${#-#Kf'#0 n#KX#STU#qE#Ib1#P@#FG#Bp#qE#Ib#F+#I<J>#IH'#
(L'#,#C<$#KV)9#$%&'(#C78#ở#9(VL'*#w1#S?9#F+#I<J>#KV)9#DE#FG'*#Cở<#, /#9_#$(X#I7#Dr#
â\#(4c9#Dr#FVL'*#B7#Bp#qE#Ib#9?9#Dr#9_#FY>#KV)9#C7'#ở#9(VL'*#w1#
2.5.2 Chỉ lệnh DB (định nghĩa byte).
S(e#IJ'(#R2#I7#\`$#9(e#IJ'(#F+#I<J>#KV)9#DE#FG'*#%`'*#%u<#'(Y$#$%4'*#()"#'*+1#_#
KV)9#FW'*#KX#Kd'(#'*(ĩ;#F+#I<J>#,#C<$1#K(<#R2#KV)9#FW'*#KX#Kd'(#'*(ĩ;#C8$a#F+#I<J>#
$(&#9?9#Dr#9_#$(X#ở#F['*#$(!"#"(â'^#'(d#"(â'^#taq#(4c9#ở#F['*#$(=9#QiII1#~r<#BH<#F+#
I<J>#$(!"#"(â'#$(&#96'#Kc$#9(+#R#D;>#Dr#$(!"#"(â'^#Kr<#BH<#Dr#'(d#"(â'#$(&#Kc$#9(+#
2#B7#Kr<#BH<#F+#I<J>#F['*#taq#$(&#96'#Kc$#9(+#t1#2Y$#gX#$;#DE#FG'*#Dr#ở#F['*#
$(=9#'74#$(&#()"#'*+#Kp>#9(>8X'#Kr<#9(:'*#Bp#$(7'(#F['*#taq1#~X#C?4#F['*#$(=9#ở#
F['*#\u#QiSII#$(&#9(e#96'#KL'#*<M'#Kc$#'_#B74#FY>#'(?8#KL'#'(V#$(f#'781#t)"#'*+#
Ds#*?'#\u#QiSII#9(4#9?9#Dr#(4c9#9?9#gb#$ự#\`$#9?9(#$ự#K`'*1#S(e#IJ'(#R2#9(e#I7#9(e#
IJ'(#\7#9_#$(X#KV)9##DE#FG'*#KX#Kd'(#'*(ĩ;#9?9#9(>ỗ<#QiSII#IH'#(L'#0#gb#$ự1#R4#
B!8^#'_#9_#$(X#KV)9#DE#FG'*#9(4#$Y$#9M#\|<#Kd'(#'*(ĩ;#F+#I<J>#QiSII1#RVH<#Kâ8#I7#
\`$#Dr#B@#FG#Bp#R2h#
ORG 500H
DATA1: DB 2B ; Số thập phân (1C ở dạng Hex)
DATA2: DB 00110101B ; Số nhị phân (35 ở dạng Hex)

DATA3: DB 39H ; Số dạng Hex
ORG 510H
DATA4: DB 2591 ; Các số ASCII
ORG 518H
DATA5 DB My name is Joe ; Các ký tự ASCII
byte

byte

byte

0000

0FFF

1FFF

7FFF

0000

0000

8751

AT89C51
#
8752

AT89C52

#
DS5000
-
32

##
#S?9#9(>ỗ<#QiSII#9_#$(X#DE#FG'*#FY>#'(?8#KL'#'(V#$(f#'78#(4c9#'(?8#g}"#
'(V#$(f#'781#RW'*#FY>#"(ẩ8#g}"#Ds#(+>#@9(#(L'#Kr<#BH<#$%V]'*#()"#FY>#'(?8#KL'#
KV)9#FW'*#Dở#(+>#9?9(#'(V#$(f#'78#(7#O# a;%81#S(e#IJ'(#R2#9ũ'*#KV)9#FW'*#
KX#9Y"#"(?$#C`#'(H#$(a4#${'*#K4['#g@9(#$(VH9#\`$#C8$a1#
2.5.3 Các chỉ lệnh của hợp ngữ.
/1#S(e#IJ'(#OyGh#S(e#IJ'(#OyG#KV)9#FW'*#KX#C?4#Cắ$#K6>#9A;#Kd;#9(e1#ir#K<#D;>#OyG#
9_#gX#ở#F['*#taq#(4c9#$(!"#"(â'1#f>#Dr#'78#9_#gè\#9(+#t#Kằ'*#D;>#$(&#I7#ở#F['*#
taq#B7#'f>#g(Z'*#9_#9(+#t#ở#D;>#I7#Dr#$(!"#"(â'#B7#()"#'*+#Ds#9(>8X'#'_#$(7'(#Dr#
taq1#N`$#Dr#()"#'*+#DE#FG'*#FY>#9(Y\#K='*#$%VH9#OyG#$(;8#9(4#OyG1#tu8#
K|9#gx#Bp#$%&'(#()"#'*+#$;#DE#FG'*1#
01#S(e#IJ'(#EQUh#~V)9#FW'*#KX#Kd'(#'*(ĩ;#\`$#(ằ'*#Dr#\7#g(Z'*#9(<f\#'*ă'#'(H#
'741#S(e#IJ'(#EQU#g(Z'*#F7'(#9(ỗ#9Y$#9(4#F+#I<J>#'(V'*#'_#*ắ'#\`$#*<?#$%d#(ằ'*#Dr#
BH<#'(u'#F+#I<J>#D;4#9(4#g(<#'(u'#q>Y$#(<J'#$%4'*#9(VL'*#$%&'(#*<?#$%d#(ằ'*#Dr#9A;#
'_#Ds#KV)9#$(;8#$(f#Kr<#BH<#'(u'1#RVH<#Kâ8#DE#FG'*#EQU#9(4#(ằ'*#Dr#C`#Kf\#B7#D;>#
K_#(ằ'*#Dr#KV)9#FW'*#KX#'["#$(;'(#*(<#yi1#
#
COUNT EQU 25
MOV R3, #count
#
K(<#$(ự9#(<J'#IJ'#NOP#yv^##SOU5#$(&#$(;'(#*(<#yv#Ds#KV)9#'["#*<?#$%d#
0.#k9(:#b#Kf'#FY>##n1#P!8#V>#K<X\#9A;#B<J9#DE#FG'*#EQU#I7#*&?#G<M#DE#9_#
\`$#(ằ'*#Dr#k\`$#*<?#$%d#9r#Kd'(n#KV)9#FW'*#$%4'*#'(<p>#9(ỗ#g(?9#'(;>#$%4'*#
9(VL'*#$%&'(#B7#I!"#$%&'(#B<3'#\>r'#$(;8#Kổ<#*<?#$%d#9A;#'_#$%4'*#9M#9(VL'*#
$%&'(1#2ằ'*#B<J9#DE#FG'*#9(e#IJ'(#EQU#$;#9_#$(X#$(;8#Kổ<#\`$#Dr#I6'#B7#()"#

'*+#Ds#$(;8#Kổ<#$Y$#9M#\|<#I6'#q>Y$#(<J'#9A;#'_#I7#$&\#$47'#C`#9(VL'*#$%&'(#B7#
*ắ'*#$&\#\|<#I6'#q>Y$#(<J'1#
v1#S(e#IJ'(#ERh#N`$#IJ'(#q>;'#$%|'*#g(?9#I7#9(e#IJ'(#ER1#_#C?4#9(4#$%&'(#
()"#'*+#gf$#$(:9#9A;#$J"#'*>ồ'#;D\#9(e#IJ'(#ER#I7#Fò'*#9>r<#9W'*#9A;#
9(VL'*#$%&'(#, /#9_##'*(ĩ;#I7#$%4'*#\u#'*>ồ'#$(&#\|<#$(=#D;>#9(e#IJ'(#ER#
KX#Cd#$%&'(#()"#'*+#Cz#q>;1#N`$#Dr#$%&'(#()"#'*+#DE#FG'*#1ER#9_#FY>#9(Y\#
K='*#$%VH9#$(;8#9(4#ER1#
2.5.4 Các quy định đố với nhãn trong hợp ngữ.
2ằ'*#9?9(#9(|'#9?9#$3'#'(u'#9_#'*(ĩ;#I7#\`$#I!"#$%&'(#B<3'#9_#$(X#I7\#9(4#9(VL'*#
$%&'(#Fễ#K|9#B7#Fễ#CM4#$%&#(L'^#9_#\`$#Dr#q>8#Kd'(#\7#9?9#$3'#'(u'#"(M<#$>â'#$(a41#
5(=#'(Y$#I7#\ỗ<#$3'#'(u'#"(M<#$(r'*#'(Y$^#9?9#$3'#KV)9#DE#FG'*#I7\#'(u'#$%4'*#()"#
'*+#*ồ\#9?9#9(+#9?<#B<f$#(4;#B7#B<f$#$(V]'*^#9?9#Dr#${#-#Kf'#9#B7#9?9#FY>#Kc9#C<J$#
'(Vh#FY>#(z<#k?n^#FY>#kn^#FY>#*[9(#FVH<#k_n^#FY>#KZ#I7#k$n#B7#FY>#9(>#go#k1n1#Kb#$ự#
K6>#$<3'#9A;#'(u'#"(M<#I7#\`$#9(+#9?<1#t;8#'_<#9?9(#g(?9#I7#'_#g(Z'*#$(X#I7#Dr#taq1#
Nỗ<#$%&'(#()"#'*+#9_#\`$#Dr#${#Fự#$%+#I7#9?9#${#*)<#'(H#9(4#9?9#IJ'(#\7#g(Z'*#KV)9#
FW'*#KX#I7\#'(u'#$%4'*#9(VL'*#$%&'(1#P@#FG#'(V#NOP#B7#QRR1#23'#9['(#9?9#
${#*)<#'(H#9ò'#9_#\`$#Dr#$ự#Fự#$%+#g(?9^#(u8#g<X\#$%;#CM'#I<J$#g3#9?9#${#Fự#"(ò'*#9A;#
()"#'*+#$;#K;'*#DE#FG'*1#
01w#S?9#C<$#9]#B7#$(;'(#*(<#Kc9#CJ$#TiW#9A;#, /1#
Sũ'*#'(V#9?9#C`#B<#qE#Ib#g(?9^#, /#9_#\`$#$(;'(#*(<#9]#KX#C?4#9?9#K<p>#g<J'#Dr#
(|9#'(V#C<$#'(H1#5(;'(#*(<#9]#$%4'*#, /#KV)9#*|<#I7#$(;'(#*(<#${#$%['*#$(?<#9(VL'*#
$%&'(#TiW1#5%4'*#"(6'#'78#B7#KV;#%;#\`$#Dr#B@#FG#Bp#9?9(#$(;8#Kổ<#9(:'*1#
2.6.1 Thanh ghi từ trạng thái ch ơng trình PSW.
5(;'(#*(<#TiW#I7#$(;'(#*(<#,#C<$1#_#9ũ'*#9ò'#KV)9#94<#'(V#I7#$(;'(#*(<#9]1#Nc9#
FW#$(;'(#*(<#TiW#%`'*#,#C<$#'(V'*#9(e#9_#w#C<$#KV)9#, /#DE#FG'*1#t;<#C<$#9(V;#
FW'*#I7#9?9#9]#9(#'*V]<#FW'*#Kd'(#'*(ĩ;1#2r'#$%4'*#Dr#9?9#9]#KV)9#*|<#I7#9?9#9]#9_#
K<p>#g<J'^#9_#'*(ĩ;#I7#9(:'*#C?4#\`$#Dr#K<p>#g<J'#F4#gf$#q>M#9A;#\`$#IJ'(#B{;#KV)9#
$(ự9#(<J'1#2r'#9]#'78#I7#9]#'(H#SY#k9;%%8n^#9]#QS#k;>q<I<;%8#9;%8n^#9]#9(ẵ'#Iẻ#T#
k";%<$8n#B7#9]#$%7'#OP#k4Ba%mI4wn1#
(V#'(&'#$(Y8#${#(&'(#014#$(&#9?9#C<$#TiW1v#B7#TiW14#KV)9#*?'#'(V#yi-#B7#yi/#B7#

9(:'*#KV)9#DE#FG'*#KX#$(;8#Kổ<#9?9#$(;'(#*(<#Că'*1#S(:'*#Ds#KV)9#*<M<#$(@9(#ở#"(6'#
gf#D;>1#S?9#C<$#TiW1.#B7#TiW1/#I7#9?9#C<$#9]#$%['*#$(?<#9Z'*#FG'*#9(>'*#B7#I!"#$%&'(#
B<3'#9_#$(X#DE#FG'*#9(4#CY$#go#\G9#K@9(#'741#
#
#
CY PSW.7 ; Cờ nhớ
AC PSW.6 ; Cờ
ã TiW1.## ;#R7'(#9(4#'*V]<#FW'*#DE#FG'*#\G9#K@9(#9(>'*#
RS1 PSW.4 ; Bit = 1 chọn băng thanh ghi
RS0 PSW.3 ; Bit = 0 chọn băng thanh ghi
OV PSW.2 ; Cờ bận
ã TiW1/## ;#2<$#F7'(#9(4#'*V]<#FW'*#Kd'(#'*(ĩ;#
P PSW.0 ; Cờ chẵn, lẻ. Thiết lập/ xoá bằng phần cứng mỗi chu kỳ lệnh báo tổng các
số bit 1 trong thanh ghi A là chẵn/ lẻ.
RS1 RS0 Băng thanh ghi Địa chỉ
0 0 0 00H - 07H
0 1 1 08H - 0FH
1 0 2 10H - 17H
1 1 3 18H - 1FH
#
Hình 2.4: Các bit của thanh ghi PSW
RVH<#Kâ8#I7#*<M<#$(@9(#'*ắ'#*|'#Bp#4#C<$#9]#9A;#$(;'(#*(<#TiW1#
/1#S]#'(H#SYh#S]#'78#KV)9#$(<f$#I!"#\ỗ<#g(<#9_#'(H#${#C<$#Rj1#S]#'78#KV)9#$?9#K`'*#
D;>#IJ'(#9`'*#(4c9#$%{#,#C<$1#_#9ũ'*#KV)9#$(<f$#I!"#I3'#/#(4c9#q4?#Bp#-#$%ự9#$<f"#
Cằ'*#IJ'(#iE52#S#B7#S y#S#'*(ĩ;#I7#$(<f$#I!"#9]#'(H#B7#q4?#9]#'(H#$VL'*#
='*1#Pp#9?9#IJ'(#K?'(#Kd;#9(e#$(a4#C<$#KV)9#C7'#gx#ở#9(VL'*#,1#
01#S]#QSh#S]#'78#C?4#9_#'(H#${#C<$#Rv#D;'*#R4#$%4'*#"(}"#9`'*#QRR#(4c9#$%{#iU21#
S]#'78#KV)9#FW'*#Cở<#9?9#IJ'(#$(ự9#$(<#"(}"#Dr#(|9#\u#2SR#kqa\#ở#9(VL'*#wn1#
v1#S]#9(ẵ'#Iẻ#Th#S]#9(ẵ'#Iẻ#9(e#"(M'#?'(#Dr#C<$#\`$#$%4'*#$(;'(#*(<#Q#I7#9(ẵ'#(;8#Iẻ1#
f>#$(;'(#*(<#Q#9(=;#\`$#Dr#9(ẵ'#9?9#C<$#\`$#$(&#T#=#-1#R4#B!8^#T#=#/#'f>#Q#9_#\`$#

Dr#Iẻ#9?9#C<$#\`$1#
41#S]#9(7'#OPh#S]#'78#KV)9#$(<f$#I!"#\ỗ<#g(<#gf$#q>M#9A;#\`$#"(}"#$@'(#Dr#9_#FY>#q>?#
IH'#$[4#%;#C<$#C!9#9;4#I7\#$%7'#C<$#FY>1#(&'#9(>'*#9]#'(H#KV)9#FW'*#KX#"(?$#(<J'#
Iỗ<#$%4'*#9?9#"(}"#Dr#(|9#g(Z'*#FY>1#Sò'#9]#$%7'#KV)9#FW'*#9(e#KX#"(?$#(<J'#Iỗ<#
$%4'*#9?9#"(}"#Dr#(|9#9_#FY>#B7#KV)9#C7'#gx#ở#9(VL'*#w1#
2.6.2 Lệnh ADD và PSW.
2â8#*<]#$;#q}$#$?9#K`'*#9A;#IJ'(#QRR#I3'#9?9#C<$#SY^#QS#B7#T#9A;#$(;'(#*(<#TiW1#
N`$#Dr#B@#FG#Ds#I7\#%õ#$%['*#$(?<#9A;#9(:'*^#\c9#FW#9?9#C<$#9]#Cd#$?9#K`'*#Cở<#IJ'(#
QRR#I7#SY^#T^#QS#B7#OP#'(V'*#$;#9(e#$!"#$%>'*#B74#9?9#9]#SY^#QS#B7#T^#9ò'#9]#
OP#Ds#KV)9#'_<#Kf'#ở#9(VL'*#w#B&#'_#I<3'#q>;'#Kf'#"(}"#$@'(#Dr#(|9#Dr#9_#FY>1##
CY

AC

F0

OV

P

-

RS1

RS0

S?9#B@#FG#010#Kf'#014#Ds#"(M'#?'(#$?9#K`'*#9A;#IJ'(#QRR#I3'#9?9#C<$#'_<#$%3'1#
B¶ng 2.1:#S?9#IJ'(#$?9#K`'*#I3'#9?9#C<$#9]1#
VÝ dô 2.2:#tu8#$%&'(#C78#$%['*#$(?<#9?9#C<$#9]#SY^#QS#B7#T#D;>#IJ'(#9`'*#v,t#BH<#
0Ft#FVH<#K©8h#

MOV A, #38H
ADD A, #2FH ; Sau khi céng A = 67H, CY = 0
#
Lêi gi¶i:
38 00111000
+ 2F 00101111
67 01100111
#
S]#SY#=#-#B&#g(Z'*#9_#'(H#${#Rj#
S]#QS#=#/#B&#9_#'(H#${#Rv#D;'*#R4#
S]#T#=#/#B&#$(;'(#*(<#Q#9_#.#C<$#/#kIÎn#
#
VÝ dô 2.3:
tu8#$%&'(#C78#$%['*#$(?<#9?9#9]#SY^#QS#B7#T#
D;>#"(}"#9`'*#9St#BH<#w4t1#
Lêi gi¶i:
9C 10011100
+ 64 01100100
100 00000000
##
S]#SY#=#/#B&#9_#'(H#q>;#C<$#Rj#
S]#QS#=#/#B&#9_#'(H#${#Rv#D;'*#R4#
S]#T#=#-#B&#$(;'(#*(<#Q#g(Z'*#9_#C<$#/#'74#k9(½'n#
#
VÝ dô 2.4:
tu8#$%&'(#C78#$%['*#$(?<#9?9#9]#SY^#QS#B7#T#D;>#"(}"#9`'*#,,t#BH<#9vt1#
Lêi gi¶i:
#######,,# / / #
+#####9v# / / //#
#####//2# //-//#

##
S]#SY#=#/#B&#9_#'(H#${#C<$#Rj#
S]#QS#=#-#B&#g(Z'*#9_#'(H#${#Rv#D;'*#R4#
S]#T#=#-#B&#Dr#C<$#/#$%4'*#Q#I7#4#k9(½'n#
#
Instruction CY OV AC
ADD X X X
ADDC X X X
SUBB X X X
MUL 0 X
DIV 0 X
DA X
RRC X
RLC X
SETB C 1
CLR C 0
CPL C X
ANL C, bit X
ANL C,/ bit X
ORL C, bit X
ORL C,/bit X
MOV C, bit X
CJNE

X



01j#S?9#Că'*#$(;'(#*(<#B7#'*ă'#qf"#9A;#, /1#
2`#B<#K<p>#g(<X'#, /#9_#$Y$#9M#/0,#C8$a#yQN1#5%4'*#\G9#'78#$;#C7'#BJ#"(â'#Cr#

9A;#/0,#C8$a#yQN#'78#B7#g(M4#D?$#9Z'*#FG'*#9A;#9(:'*#'(V#9?9#$(;'(#*(<#B7#'*ă'#
qf"1#
2.7.1 Phân bố không gian bộ nhớ RAM trong 8051.
S_#/0,#C8$a#yQN#$%4'*#, /#k\`$#Dr#$(7'(#B<3'#K;'*#9(:#b#I7#, 0#9_#0.w#C8$a#
yQNn1#/0,#C8$a#yQN#C3'#$%4'*#, /#KV)9#*?'#Kd;#9(e#${# #Kf'#jFt1#(V#$;#Ds#
$(Y8#ở#9(VL'*#.^#9(:'*#9_#$(X#KV)9#$%>8#9!"#$%ự9#$<f"#'(V#9?9#'*ă'#'(H#/0,#C8$a#
yQN#'78#KV)9#"(â'#9(<;#$(7'(#${'*#'(_\#'(V#D;>h#
/1#5ổ'*#9`'*#v0#C8$a#${#'*ă'#'(H# #Kf'#/Ft#KV)9#F7'(#9(4#9?9#$(;'(#*(<#B7#'*ă'#
qf"1#
01#5ổ'*#9`'*#/w#C8$a#${#'*ă'#'(H#0-t#Kf'#0Ft#KV)9#F7'(#9(4#C`#'(H#K|9/#*(<#K?'(#
Kd;#9(e#KV)9#$(a4#C<$1#S(VL'*#,#Ds#C7'#9(<#$<f$#Bp#C`#'(H#B7#9?9#IJ'(#K?'(#Kd;#9(e#
KV)9#$(a4#C<$1#
v1#5ổ'*#9`'*#,-#C8$a#${#'*ă'#'(H#v-t#Kf'#jFt#KV)9#FW'*#9(4#IV>#K|9#B7#*(<#(;8#'(V#
Bẫ'#$(V]'*#*|<#I7#CM'*#'(?"#kia%;9(#";Fn1#(+'*#'*ă'#'(H#'78#k,-#C8$an#9A;#yQN#
KV)9#DE#FG'*#%`'*#%u<#9(4#\G9#K@9(#IV>#F+#I<J>#B7#$(;\#Dr#Cở<#9?9#I!"#$%&'(#B<3'#
, /1#S(:'*#$;#Ds#DE#FG'*#9(:'*#ở#9?9#9(VL'*#D;>#KX#IV>#F+#I<J>#'(!'#B74#STU#q>;#
9?9#9ổ'*#B74l%;1#
2.7.2 Các băng thanh ghi trong 8051.
(V#Ku#'_<#ở#$%VH9^#$ổ'*#9`'*#v0#C8$a#yQN#KV)9#F7'(#%<3'*#9(4#9?9#Că'*#$(;'(#*(<#
B7#'*ă'#qf"1#v0#C8$a#'78#KV)9#9(<;#%;#$(7'(#4#Că'*#9?9#$(;'(#*(<#$%4'*#K_#\ỗ<#Că'*#
9_#,#$(;'(#*(<#${#y-#Kf'#yj1#S?9#'*ă'#'(H#yQN#Dr#-^#y/#I7#'*ă'#'(H#yQN#Dr#/^#
y0#I7#'*ă'#'(H#yQN#Dr#0#B1B111#2ă'*#$(=#(;<#9A;#9?9#$(;'(#*(<#y-#Kf'#yj#Cắ$#K6>#${#
$(;'(#'(H#yQN#Dr#0#9(4#Kf'#'*ă'#'(H#yQN#Dr#-Ft1#2ă'*#$(=#C;#Cắ$#K6>#${#'*ă'#
'(H#/-t#Kf'#/jt#B7#9>r<#9W'*#${#'*ă'#'(H#/,t#Kf'#/Ft#I7#FW'*#9(4#Că'*#9?9#
$(;'(#*(<#y-#Kf'#yj#$(=#$V1#
#
R0 - R7
R0 - R7
R0 - R7
R0 - R7

RAM đánh địa
chỉ theo bit
RAM băng nhớ
(Seratch Pad)
#
##
Hình 2.5:#*ă'#qf"#9?9#$(;'(#'(H#yQN#$%4'*#, /1#
#
#
#
#
#
#
#
#
#
#
#
#
00 07 08 0F10 1718 1F 20 2F 3
0 7F

Băng0 Băng3

R7

R6

R5


R4

R3

R2

R1

7

6

.

4

v

0

1

R0

0

R7

R6


R5

R4

R3

R2

R1

F

E

D

C

B

A

9

R0

8

R7


R6

R5

R4

R3

R2

R1

17

16

15

14

13

12

11

R0

10


R7

R6

R5

R4

R3

R2

R1

1F

1E

1D

1C

1B

1A

19

R0


18

Bank 0

Bank 1

Bank 2

Bank 3

#
#
Hình 2.6: S?9#Că'*#$(;'(#*(<#9A;#, /#B7#Kd;#9(e#9A;#9(:'*1#
(V#$;#9_#$(X#'(&'#$(Y8#${#(&'(#01.#Că'*#/#DE#FG'*#9W'*#g(Z'*#*<;'#yQN#'(V#'*ă'#
qf"1#~â8#I7#\`$#BY'#Kp#9(@'(#$%4'*#I!"#$%&'(#, /1#S(:'*#$;#"(M<#(4c9#I7#g(Z'*#DE#
FG'*#Că'*#/#(4c9#I7#"(M<#K?'(#\`$#g(Z'*#*<;'#g(?9#9A;#yQN#9(4#'*ă'#qf"1#
Ví dụ 2.5:
tu8#"(?$#C<X>#9?9#'`<#F>'*#9A;#9?9#'*ă'#'(H#yQN#D;>#K4['#9(VL'*#$%&'(#D;>h#
MOV R0, #99H ; Nạp R0 giá trị 99H
MOV R1, #85H ; Nạp R1 giá trị 85H
MOV R2, #3FH ; Nạp R2 giá trị 3FH
MOV R7, #63H ; Nạp R7giá trị 63H
MOV R5, #12H ; Nạp R5 giá trị12H
#
Lời giải:
i;>#g(<#$(ự9#(<J'#9(VL'*#$%&'(#$%3'#$;#9_h#
*ă'#'(H#-#9A;#yQN#9_#*<?#$%d#99t#
*ă'#'(H#/#9A;#yQN#9_#*<?#$%d#,.t#
*ă'#'(H#0#9A;#yQN#9_#*<?#$%d#vFt#
*ă'#'(H#j#9A;#yQN#9_#*<?#$%d#wvt#

*ă'#'(H#.#9A;#yQN#9_#*<?#$%d#/0t#
#
2.6.3 Băng thanh ghi mặc định.
f>#9?9#'*ă'#'(H# #Kf'#/F#KV)9#F7'(#%<3'*#9(4#Cr'#Că'*#$(;'(#*(<^#B!8#Că'*#
$(;'(#*(<#y-#Kf'#yj#'74#$;#"(M<#$%>8#9!"#$H<#g(<#, /#KV)9#9Y"#'*>ồ'?#Sâ>#$%M#I]<#I7#
9?9#Că'*#$(;'(#*(<#-1#~_#I7#9?9#'*ă'#'(H#yQN#Dr#-^#/^#0^#v^#4^#.^#w#B7#j#KV)9#$%>8#
9!"#BH<#$3'#y-^#y/^#y0^#yv^#y4^#y.^#yw#B7#yj#g(<#I!"#$%&'(#, /1#_#Fễ#F7'*#(L'#
'(<p>#g(<#$(;\#9(<f>#9?9#'*ă'#'(H#yQN#'78#LB@#9?9#$3'#y-^#y/#B1B111#(L'#I7#Dr#Bd#
$%@#9A;#9?9#'*ă'#'(H1#P@#FG#01w#I7\#%õ#g(?<#'<J\#'781#
Ví dụ 2.6:
tu8#B<f$#I[<#9(VL'*#$%&'(#ở#B@#FG#01.#DE#FG'*#9?9#Kd;#9(e#yQN#$(;8#$3'#9?9#$(;'(#
*(<1#
Lời giải:
~â8#KV)9#*|<#I7#9(f#K`#K?'(#Kd;#9(e#$%ự9#$<f"#B7#DE#FG'*#Kd;#9(e#9?9#Bd#$%@#'*ă'#'(H#
yQN#Kr<#BH<#Kd;#9(e#K@9(1#Xa\#9(<#$<f$#ở#9(VL'*#.#Bp#9(f#K`#K?'(#Kd;#9(e1#
MOV 00, #99H ; Nạp thanh ghi R0 giá trị 99H
MOV 01, #85H ; Nạp thanh ghi R1 giá trị 85H
MOV 02, #3FH ; Nạp thanh ghi R2 giá trị 3FH
MOV 07, #63H ; Nạp thanh ghi R7giá trị 63H
MOV 05, #12H ; Nạp thanh ghi R5 giá trị12H
#
2.6.4 Chuyển mạch các băng thanh ghi nh thế nào?
(V#Ku#'_<#ở#$%3'^#Că'*#$(;'(#*(<#-#I7#\c9#Kd'(#g(<#, /#KV)9#9Y"#'*>ồ'1#S(:'*#$;#
9_#$(X#9(>8X'#\[9(#D;'*#9?9#Că'*#$(;'(#*(<#g(?9#Cằ'*#9?9(#DE#FG'*#C<$#Rv#B7#R4#
9A;#$(;'(#*(<#TiW#'(V#9(e#%;#$(a4#CM'*#0101#
Bảng 2.2:#2<$#Iự;#9(|'#9?9#Că'*#$(;'(#*(<#yi-#B7#yi/1#
RS1 (PSW.4) RS0 (PSW.3)
Băng 0 0 0
Băng 1 0 1
Băng 2 1 0

Băng 3 1 1
#
2<$#Rv#B7#R4#9A;#$(;'(#*(<#TiW#$(V]'*#KV)9#$(;\#9(<f>#'(V#I7#TiW1v#B7#TiW14#B&#
9(:'*#9_#$(X#KV)9#$%>8#9!"#Cằ'*#9?9#IJ'(#K?'(#Kd;#9(e#$(a4#C<$#'(V#iE52#B7#S y1#
P@#FG#iE52#TiW1v#Ds#$(<f$#I!"#TiW1v#B7#9(|'#Că'*#$(;'(#*(<#/1#Xa\#B@#FG#01j#
FVH<#Kâ81#
Ví dụ 2.7:
tu8#"(?$#C<X>#'`<#F>'*#9?9#'*ă'#'(H#yQN#D;>#K4['#9(VL'*#$%&'(#FVH<#Kâ8h#
SETB PSW.4 ; Chọn băng thanh ghi 4
MOV R0, #99H ; Nạp thanh ghi R0 giá trị 99H
MOV R1, #85H ; Nạp thanh ghi R1 giá trị 85H
MOV R2, #3FH ; Nạp thanh ghi R2 giá trị 3FH
MOV R7, #63H ; Nạp thanh ghi R7giá trị 63H
MOV R5, #12H ; Nạp thanh ghi R5 giá trị12H
#
Lời giải:
5(a4#\c9#Kd'(#TiW1v#=#-#B7#TiW14#=#-1#R4#B!8^#IJ'(#iE52#TiW14#Ds#C!$#C<$#yi/#
=#/#B7#yi-#=#-^#Cằ'*#IJ'(#'(V#B!8#Că'*#$(;'(#*(<#y-#Kf'#yj#Dr#0#KV)9#9(|'1#2ă'*#
0#DE#FG'*#9?9#'*ă'#'(H#${#/-t#Kf'#/jt1#3'#D;>#g(<#$(ự9#(<J'#K4['#9(VL'*#$%&'(#
$%3'#$;#9_#'`<#F>'*#9?9#'*ă'#'(H#'(V#D;>h#
*ă'#'(H#Bd#$%@#/-t#9_#*<?#$%d#99t#
*ă'#'(H#Bd#$%@#//t#9_#*<?#$%d#,.t#
*ă'#'(H#Bd#$%@#/0t#9_#*<?#$%d#vFt#
*ă'#'(H#Bd#$%@#/jt#9_#*<?#$%d#wvt#
*ă'#'(H#Bd#$%@#/.t#9_#*<?#$%d#/0t#
#
2.6.5 Ngăn xếp trong 8051.
*ă'#qf"#I7#\`$#BW'*#C`#'(H#yQN#KV)9#STU#DE#FG'*#KX#IV>#$(Z'*#$<'#$[\#$(]<1#
5(Z'*#$<'#'78#9_#$(X#I7#Fự#I<J>^#9_#$(X#I7#Kd;#9e#STU#96'#g(Z'*#*<;'#IV>#$%+#'78#B&#Dr#
9?9#$(;'(#*(<#Cd#(['#9(f1#

2.6.6 Cách truy cập các ngăn xếp trong 8051.
f>#'*ă'#qf"#I7#\`$#BW'*#9A;#C`#'(H#yQN#$(&#"(M<#9_#9?9#$(;'(#*(<#$%4'*#STU#9(e#
Kf'#'_1#5(;'(#KV)9#FW'*#KX#9(e#Kf'#'*ă'#qf"#KV)9#*|<#I7#$(;'(#*(<#94'#$%z#'*ă'#
qf"#iT#ki$;9g#T4<'$a%n1#S4'#$%z#'*ă'#qf"#$%4'*#, /#9(e#%`'*#,#C<$#9_#'*(ĩ;#I7#'_#9(e#
9_#$(X#9_#$(X#KV)9#9?9#Kd;#9(e#${# #Kf'#FFt1#
K(<#, /#KV)9#9Y"#'*>ồ'#$(&#iT#9(=;#*<?#$%d#-j#9_#'*(ĩ;#I7#'*ă'#'(H#-,#9A;#yQN#I7#
'*ă'#'(H#K6>#$<3'#KV)9#FW'*#9(4#'*ă'#qf"#$%4'*#, /1#P<J9#IV>#I[<#\`$#$(;'(#*(<#
TSU#$%4'*#'*ă'#qf"#KV)9#*|<#I7#\`$#I6'#9Y$#B74#TUit#B7#B<J9#'["#'`<#F>'*#9A;#
'*ă'#qf"#$%ở#I[<#$(;'(#*(<#STU#KV)9#*|<#I7#IY8#%;#TOT1#t;8#'_<#9?9(#g(?9#I7#\`$#
$(;'(#*(<#KV)9#9Y$#B74#'*ă'#qf"#KX#IV>#9Y$#B7#KV)9#IY8#%;#${#'*ă'#qf"#KX#FW'*#$<f"#
9Z'*#B<J9#9A;#iT#I7#%Y$#'*(<3\#'*c$#\ỗ<#g(<#$(;4#$?9#9Y$#B74#kTUitn#B7#IY8#%;#kTOTn#
KV)9#$(ự9#$(<1#~X#C<f$#'*ă'#qf"#I7\#B<J9#'(V#$(f#'74#(u8#q}$#9?9#IJ'(#TUit#B7#TOT#
FVH<#Kâ81#
2.6.7 Cất thanh ghi vào ngăn xếp.
5%4'*#, /#$(&#94'#$%z#'*ă'#qf"#9(e#Kf'#'*ă'#'(H#DE#FG'*#9>r<#9W'*#9A;#'*ă'#qf"1#
K(<#$;#9Y$#F+#I<J>#B74#'*ă'#qf"#$(&#94'#$%z#'*ă'#qf"#iT#KV)9#$ă'*#I3'#/1# V>#b#%ằ'*#
K<p>#'78#Kr<#BH<#9?9#C`#B<#qE#Ib#g(?9#'(;>#I7#g(?9#'(;>^#K?'*#9(:#b#I7#9?9#C`#B<#qE#
Ib##,w#I7#iT#*<M\#q>r'*#g(<#9Y$#F+#I<J>#B74#'*ă'#qf"1#X}$#B@#FG#01,#FVH<#Kâ8^#$;#
$(Y8#%ằ'*#\ỗ<#g(<#IJ'(#TUit#KV)9#$(ự9#(<J'#$(&#'`<#F>'*#9A;#$(;'(#*(<#KV)9#9Y$#B74#
'*ă'#qf"#B7#iT#KV)9#$ă'*#I3'#/1# V>#b#I7#Kr<#BH<#\ỗ<#C8$a#9A;#F+#I<J>#KV)9#9Y$#B74#
'*ă'#qf"#$(&#iT#KV)9#$ă'*#I3'#/#I6'1#Sũ'*#IV>#b#%ằ'*#KX#9Y$#9?9#$(;'(#*(<#B74#'*ă'#
qf"#$;#"(M<#DE#FG'*#Kd;#9(e#yQN#9A;#9(:'*1#P@#FG#IJ'(#TUit#/#I7#9Y$#$(;'(#*(<#
y/#B74#'*ă'#qf"1#
Ví dụ 2.8:
tu8#C<X>#F<ễ'#'*ă'#qf"#B7#94'#$%z#'*ă'#qf"#Kr<#BH<#K4['#9(VL'*#$%&'(#D;>#Kâ81#G<M#
$(<f$#BW'*#'*ă'#qf"#I7#\c9#Kd'(1#
MOV R6, #25H
MOV R1, #12H
MOV R4, #0F3H
PUSH 6

PUSH 1
PUSH 4
#
Lời giải:

Sau PUSH 6 Sau PUSP 1 Sau PUSH 4
0B

0B 0B 0B
0A

0A 0A 0A F3
09

09 09 12 09 12
08

08 25 08 25 08 25
Bắt đầu SP = 07 SP = 08 SP = 09 SP = 0A

2.6.8 Lấy nôi dung thanh ghi ra từ ngăn xếp.
P<J9#IY8#'`<#F>'*#%;#${#'*ă'#qf"#$%ở#I;<#$(;'(#*(<#Ku#9(4#I7#q:;#$%&'(#'*V)9#BH<#9?9#
'`<#F>'*#$(;'(#*(<#B74#'*ă'#qf"1#PH<#\ỗ<#I6'#IY8#%;#$(&#C8$a#$%3'#Ke'(#'*ă'#qf"#
KV)9#D;4#9(}"#B74#$(;'(#*(<#KV)9#q?9#Kd'(#Cở<#IJ'(#B7#94'#$%z#'*ă'#qf"#KV)9#*<M\#
q>r'*#/1#P@#FG#019#\<'(#(4[#IJ'(#IY8#'`<#F>'*#%;#g(z<#'*ă'#qf"1#
Ví dụ 2.9:
K(M4#D?$#'*ă'#qf"#B7#(u8#$%&'(#C78#'`<#F>'*#9A;#9?9#$(;'(#*(<#B7#iT#D;>#g(<#$(ự9#
(<J'#K4['#9(VL'*#$%&'(#D;>#Kâ8h#
POP 3 ; Lấy ngăn xếp trở lại R3
POP 5 ; Lấy ngăn xếp trở lại R5

POP 2 ; Lấy ngăn xếp trở lại R2
#
Lời giải:

Sau POP3 Sau POP 5 Sau POP 2
0B 54

0B 0B 0B
0A F9

0A F9 0A 0A
09 76

09 76 09 76 09
08 6C

08 6C 08 6C 08 6C
Bắt đầu SP = 0B SP = 0A SP = 09 SP = 08
#
2.6.9 Giới hạn trên của ngăn xếp.
(V#Ku#'_<#ở#$%3'^#9?9#'*ă'#'(H#-,#Kf'#/Ft#9A;#yQN#$%4'*#, /#9_#$(X#KV)9#FW'*#
I7\#'*ă'#'(H#0-t#Kf'#0Ft#9A;#yQN#KV)9#Fự#"(ò'*#9(4#C`#'(H#K?'(#Kd;#9(e#KV)9#
$(a4#C<$#B7#g(Z'*#$(X#FW'*#$%VH9#9(4#'*ă'#qf"1#f>#$%4'*#\`$#9(VL'*#$%&'(#Ku#9(4#
$;#96'#'*ă'#qf"#'(<p>#(L'#04#C8$a#k-,#Kf'#/Ft#=#04#C8$an#$(&#$;#9_#$(X#Kổ<#iT#9(e#
Kf'#9?9#'*ă'#'(H#v-#Kf'#jFt1#~<p>#'78#KV)9#$(ự9#(<X'#Cở<#Iẹ'(#NOP#iT^##XX1#
2.6.10 Lệnh gọi CALL và ngăn xếp.
*47<#B<J9#DE#FG'*#'*ă'#qf"#KX#IV>#9Y$#9?9#$(;'(#*(<#$(&#STU#9ũ'*#DE#FG'*#'*ă'#
qf"#KX#IV>#9Y$#$;\#$(]<#Kd;#9(e#9A;#IJ'(#K='*#'*;8#FVH<#IJ'(#SQ 1#~<p>#'78#9(@'(#
I7#KX#TSU#C<f$#9(ỗ#'74#KX#q>;8#$%ở#Bp#$(ự9#(<J'#$<f"#9?9#IJ'(#D;>#g(<#9(|'#9(VL'*#
$%&'(#94'1#S(<#$<f$#Bp#IJ'(#*|<#SQ #KV)9#$%&'(#Co#ở#9(VL'*#v1#

2.6.11 Xung đột ngăn xếp và băng thanh ghi số 1.
(V#$;#K;#'_<#ở#$%3'#$(&#$(;'(#*(<#94'#$%z#'*ă'#qf"#9_#$(X#9(e#Kf'#Bd#$%@#yQN#(<J'#
$(]<#F7'(#9(4#'*ă'#qf"1#K(<#F+#I<J>#KV)9#IV>#9Y$#974#'*ă'#qf"#$(&#iT#KV)9#$ă'*#I3'#
B7#'*V)9#I[<#g(<#F+#I<J>#KV)9#IY8#%;#${#'*ă'#qf"#$(&#iT#*<M\#q>r'*1# b#F4#I7#Ti#KV)9#
$ă'*#I3'#D;>#g(<#TUit#I7#"(M<#C<f$#IY8#9(ắ9#9(ắ'#%ằ'*#'*ă'#qf"#K;'*#$ă'*#I3'#Kf'#Bd#
$%@#'*ă'#'(H#jFt#9A;#yQN#${#Kd;#9(e#$(Y"#'(Y$#Kf'#Kd;#9(e#9;4#'(Y$1#f>#94'#$%z#
'*ă'#qf"#Ku#KV)9#*<M\#D;>#9?9#IJ'(#TUit#$(&#$;#'3'#DE#FG'*#9?9#'*ă'#'(H#j^#w^#.#
B1B111#9A;#yQN#$(>`9#9?9#$(;'(#*(<#yj#Kf'#y-#9A;#Că'*#-^#Că'*#$(;'(#*(<#\c9#Kd'(1#
P<J9#$ă'*#'78#9A;#94'#$%z#'*ă'#qf"#Kr<#BH<#9?9#IJ'(#TUit#9ũ'*#KM\#CM4#%ằ'*#'*ă'#
qf"#Ds#g(Z'*#BH<#$H<#'*ă'#'(H#-#9A;#yQN#kK?8#9A;#yQNn#B7#F4#B!8#Ds#'(M8#%;#g(z<#
g(Z'*#*<;'#F7'(#9(4#'*ă'#qf"1#5>8#'(<3'#9_#BY'#Kp#'M8#D<'(#BH<#$(<f$#I!"#\c9#Kd'(#
9A;#'*ă'#qf"1#P@#FG#iT#=#-j#g(<#, /#KV)9#C!$#'*>ồ'#'3'#yQN#B7#9ũ'*#$(>`9#Bp#
$(;'(#*(<#y-#9A#Că'*#$(;'(#*(<#Dr#/1#t;8#'_<#9?9(#g(?9#Că'*#$(;'(#*(<#Dr#/#B7#'*ă'#
qf"#K;'*#FW'*#9(>'*#\`$#g(Z'*#*<;'#9A;#C`#'(H#yQN1#f>#9(VL'*#$%&'(#Ku#9(4#
96'#DE#FG'*#9?9#Că'*#$(;'(#*(<#Dr#/#B7#Dr#0#$;#9_#$(X#Kc$#I[<#BW'*#'(H#yQN#9(4#
'*ă'#qf"1#P@#FG^#$;#9_#$(X#9Y"#Bd#$%@#'*ă'#'(H#w-t#9A;#yQN#B7#9;4#(L'#9(4#'*ă'#
qf"#$%4'*#B@#FG#01/-1#
Ví dụ 2.10:
2<X>#F<ễ'#'*ă'#qf"#B7#94'#$%z#'*ă'#qf"#Kr<#BH<#9?9#IJ'(#D;>h#
MOV SP, #5FH ; Đặt ngăn nhớ từ 60H của RAM cho ngăn xếp
MOV R2, #25H
MOV R1, #12H
MOV R4, #0F3H
PUSH 2
PUSH 1
TUit#4#
Lêi gi¶i:

Sau PUSH 2 Sau PUSP 3 Sau PUSH 4
63


63 63 63
62

62 62 62 F3
61

61 61 12 61 12
60

60 25 60 25 60 25
B¾t ®ÇuSP=5F SP = 60 SP = 61 SP = 62
#
#
#
#

×