Chương 2 Lập trình hợp ngữ 8051 doc

19 214 0
Chương 2 Lập trình hợp ngữ 8051 doc

Đ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 [...]... 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 ... 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 Chúng ta phải hoặc là không sử dụng băng 1 hoặc là phải đánh một không gian khác của RAM cho ngăn xếp Ví dụ 2. 5: Hãy phát biểu các... 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à 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ừ... 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... 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 nhớ RAM số 2 v.v... R2 giá trị 3FH ; Nạp thanh ghi R7giá trị 63H ; 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? Như đã nói ở trên, băng thanh ghi 0 là mặc định khi 8051 được cấp nguồn Chúng ta có thể chuyển mạch sang các băng thanh ghi khác bằng cách sử dụng bit D3 và D4 của thanh ghi PSW như chỉ ra theo bảng 2. 2 Bảng 2. 2: Bit lựa chọn các băng thanh ghi RS0 và RS1 Băng 0 Băng 1 Băng 2. .. số 1 Sau POP 2 0B 0A 09 08 6C SP = 08 Giới hạn trên của ngăn xếp 2. 6.10 Sau POP 5 0B 0A 09 76 08 6C SP = 09 Như đã nói ở trên, các ngăn nhớ 08 đến 1FH của RAM trong 8051 có thể được dùng làm ngăn nhớ 20 H đến 2FH của RAM được dự phòng cho bộ nhớ đánh địa chỉ được theo bit và không thể dùng trước cho ngăn xếp Nếu trong một chương trình đã cho ta cần ngăn xếp nhiều hơn 24 byte (08 đến 1FH = 24 byte) thì... băng thanh ghi 1 Xem ví dụ 2. 7 dưới đây Ví dụ 2. 7: Hãy phát biểu nội dung các ngăn nhớ RAM sau đoạn chương trình dưới đây: SETB MOV MOV MOV MOV MOV PSW.4 R0, #99H R1, #85H R2, #3FH R7, #63H R5, #12H ; Chọn băng thanh ghi 4 ; Nạp thanh ghi R0 giá trị 99H ; Nạp thanh ghi R1 giá trị 85H ; Nạp thanh ghi R2 giá trị 3FH ; Nạp thanh ghi R7giá trị 63H ; Nạp thanh ghi R5 giá trị12H Lời giải: Theo mặc định PSW.3... và được bàn kỹ ở chương 6 2. 6 .2 Lệnh ADD và PSW Bây giờ ta xét tác động của lệnh ADD lên các bit CY, AC và P của thanh ghi PSW Một số ví dụ sẽ làm rõ trạng thái của chúng, mặc dù các bit cờ bị tác động bởi lệnh ADD là CY, P, AC và OV nhưng ta chỉ tập trung vào các cờ CY, AC và P, còn cờ OV sẽ được nói đến ở chương 6 vì nó liên quan đến phép tính số học số có dấu Các ví dụ 2. 2 đến 2. 4 sẽ phản ánh tác . 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: 28/07/2014, 10:23

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

Tài liệu liên quan