CHƯƠNG 2 LẬP TRÌNH HỢP NGỮ 8051

309 238 0
CHƯƠNG 2 LẬP TRÌNH HỢP NGỮ 8051

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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# [...]... cao hơn cho ngăn xếp trong ví dụ 2. 10 Ví dụ 2. 10: Biểu diễn ngăn xếp và con trỏ ngăn xếp đối với các lệnh sau: MOV MOV MOV MOV PUSH SP, #5FH R2, #25 H R1, #12H R4, #0F3H 2 ; Đặt ngăn nhớ từ 60H của RAM cho ngăn xếp PUSH 1 PUSH 4 Lời giải: 63 62 61 60 Bắt đầuSP=5F Sau PUSH 2 63 62 61 60 25 SP = 60 Sau PUSP 3 63 62 61 12 60 25 SP = 61 Sau PUSH 4 63 62 F3 61 12 60 25 SP = 62 HQG HN CNTT Ngụn ng mỏy ASSEMBLY... tệp nguồn asm chỉ lệnh END là dòng cuối cùng của chương trình 8051 có nghĩa là trong mã nguồn thì mọi thứ sau chỉ lệnh END để bị trình hợp ngữ bỏ qua Một số trình hợp ngữ sử dụng END có dấu chấm đứng trước thay cho END 2. 5.4 Các quy định đố với nhãn trong hợp ngữ Bằng cách chọn các tên nhãn có nghĩa là một lập trình viên có thể làm cho chương trình dễ đọc và dễ bảo trì hơn, có một số quy định mà các tên... trong 8051 Bank 0 Bank 1 Bank 2 Bank 3 7 R7 F R7 17 R7 1F R7 6 R6 E R6 16 R6 1E R6 5 R5 D R5 15 R5 1D R5 4 R4 C R4 14 R4 1C R4 3 R3 B R3 13 R3 1B R3 2 R2 A R2 12 R2 1A R2 1 R1 9 R1 11 R1 19 R1 0 R0 8 R0 10 R0 18 R0 Hình 2. 6: Các băng thanh ghi của 8051 và địa chỉ của chúng Như ta có thể nhìn thấy từ hình 2. 5 băng 1 sử dụng cùng không gian RAM như ngăn xếp Đây là một vấn đề chính trong lập trình 8051. .. trình và lập trình viên muốn thay đổi giá trị của nó trong cả chương trình Bằng việc sử dụng chỉ lệnh EQU ta có thể thay đổi một số lần và hợp ngữ sẽ thay đổi tất cả mọi lần xuất hiện của nó là tìm toàn bộ chương trình và gắng tìm mọi lần xuất hiện 3 Chỉ lệnh END: Một lệnh quan trọng khác là chỉ lệnh END Nó báo cho trình hợp ngữ kết thúc của tệp nguồn asm chỉ lệnh END là dòng cuối cùng của chương trình. .. CMP AX ,25 5 Jb tieptuclam int 20 h tieptuclam: MOV NUMBER1,AL CALL CR_LF MOV AH,09H MOV DX,OFFSET MSG2 INT 21 H mov soam,0h mov dauso2,0 CALL GET_AN_INT_NUM cmp soam,1 jne so2khongam mov dauso2,1 so2khongam: CMP AX ,25 5 JA EXIT MOV NUMBER2,AL CALL CR_LF 7 HQG HN CNTT Ngụn ng mỏy ASSEMBLY LOOP _2: CALL GET_A_DEC_DIGIT CMP AL,0DH JE EXIT _2 ; -cmp al,'-' jne tieptuc mov soam,1h jmp loop _2 ; ... thước một byte 2. 5.3 Các chỉ lệnh của hợp ngữ 1 Chỉ lệnh ORG: Chỉ lệnh ORG được dùng để báo bắt đầu của địa chỉ Số đi sau ORG có kể ở dạng Hex hoặc thập phân Nếu số này có kèm chữ H đằng sau thì là ở dạng Hex và nếu không có chữ H ở sau là số thập phân và hợp ngữ sẽ chuyển nó thành số Hex Một số hợp ngữ sử dụng dấu chấm đứng trước ORG thay cho ORG Hãy đọc kỹ về trình hợp ngữ ta sử dụng 2 Chỉ lệnh EQU:... là cất thanh ghi R1 vào ngăn xếp Ví dụ 2. 8: Hãy biểu diễn ngăn xếp và con trỏ ngăn xếp đối với đoạn chương trình sau đây Giả thiết vùng ngăn xếp là mặc định MOV MOV MOV PUSH PUSH PUSH R6, #25 H R1, #12H R4, #0F3H 6 1 4 Lời giải: 0B 0A 09 08 Bắt đầu SP = 07 2. 6.8 Sau PUSH 6 0B 0A 09 08 25 SP = 08 Sau PUSP 1 0B 0A 09 12 08 25 SP = 09 Sau PUSH 4 0B 0A F3 09 12 08 25 SP = 0A Lấy nôi dung thanh ghi ra từ... liệt kê các từ dự phòng của hợp ngữ ta đang sử dụng 2. 6 Các bit cờ và thanh ghi đặc bệt PSW của 8051 Cũng như các bộ vi xử lý khác, 8051 có một thanh ghi cờ để báo các điều kiện số học như bit nhớ Thanh ghi cờ trong 8051 được gọi là thanh ghi từ trạng thái chương trình PSW Trong phần này và đưa ra một số ví dụ về cách thay đổi chúng 2. 6.1 Thanh ghi từ trạng thái chương trình PSW Thanh ghi PSW là thanh... chúng như các thanh ghi và ngăn xếp 2. 7.1 Phân bố không gian bộ nhớ RAM trong 8051 Có 128 byte RAM trong 8051 (một số thành viên đang chú ý là 80 52 có 25 6 byte RAM) 128 byte RAM bên trong 8051 được gán địa chỉ từ 00 đến 7FH Như ta sẽ thấy ở chương 5, chúng có thể được truy cập trực tiếp như các ngăn nhớ 128 byte RAM này được phân chia thành từng nhóm như sau: 1 Tổng cộng 32 byte từ ngăn nhớ 00 đến 1FH được... R0 đến R7 số 2 được chọn Băng 2 sử dụng các ngăn nhớ từ 10H đến 17H Nên sau khi thực hiện đoạn chương trình trên ta có nội dung các ngăn nhớ như sau: Ngăn nhớ vị trí 10H có giá trị 99H Ngăn nhớ vị trí 11H có giá trị 85H Ngăn nhớ vị trí 12H có giá trị 3FH Ngăn nhớ vị trí 17H có giá trị 63H Ngăn nhớ vị trí 15H có giá trị 12H 2. 6.5 Ngăn xếp trong 8051 2. 6.6 Cách truy cập các ngăn xếp trong 8051 Ngăn xếp . MOV R2, #25 H 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 . ; Nạp giá trị 23 H vào A (A = 23 H) 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,. m¸y Hîp ng÷ 0000 7D25 MOV R5, #25 H 00 02 7F34 MOV R7, #34H 0004 7400 MOV A, #0 0006 2D ADD A, R5 0007 2F ADD A, R7 0008 24 12 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#

Ngày đăng: 05/07/2015, 12:43

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan