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

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

Đ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# 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 [...]... 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 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ữ. .. 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. .. COUNT EQU 25 MOV R3, #count Khi thực hiện lện MOV R3, #COUNT thì thanh ghi R3 sẽ được nạp giá trị 25 (chú ý đến dấu #) Vậy ưu điểm của vi c sử dụng EQU là gì? Giả sử có một hằng số (một giá trị cố định) được dùng trong nhiều chỗ khác nhau trong chương 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... 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... là số Hex Mỗi trình hợp ngữ có một số từ dự trữ là các từ gợi nhớ cho các lệnh mà không được dùng để làm nhãn trong chương trình Ví dụ như MOV và ADD Bên cạnh các từ gợi nhớ còn có một số tự dự trữ khác, hãy kiểm tra bản 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ố... 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ừ ngăn xếp Vi c lấy nội dung... bởi các lập trình vi n 8051 Chúng ta sẽ sử dụng chúng ở các chương sau để lưu dữ liệu nhận vào CPU qua các cổng vào-ra 2. 7 .2 Các băng thanh ghi trong 8051 Như đã nói ở trước, tổng cộng 32 byte RAM được dành riêng cho các băng thanh ghi và ngăn xếp 32 byte này được chia ra thành 4 băng các thanh ghi trong đó mỗi băng có 8 thanh ghi từ R0 đến R7 Các ngăn nhớ RAM số 0, R1 là ngăn nhớ RAM số 1, R2 là ngăn... 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 ... 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... nào (chẵn) Ví dụ 2. 4: Hãy trình bày trạng thái các cờ CY, AC và P sau phép cộng 88H với 93H Lời giải: + 88 93 11B 10001000 10010011 00011011 Cờ CY = 1 vì có nhớ từ bit D7 Cờ AC = 0 vì không có nhớ từ D3 sang D4 Cờ P = 0 vì số bit 1 trong A là 4 (chẵn) AC X X X 2. 7 Các băng thanh ghi và ngăn xếp của 8051 Bộ vi điều khiển 8051 có tất cả 128 byte RAM Trong mục này ta bàn vệ phân bố của 128 byte RAM này . 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: 12/08/2015, 15:08

Từ khóa liên quan

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

Tài liệu liên quan