- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4汇编程序设计4汇编程序设计
§4-1 汇编语言程序设计基本概念
?
一、MCS-51指令操作数说明
1、语句格式[标号:] 操作码 [操作数(目的操作数,源操作数)] [;注释]
2、操作数
对于立即数 #data
(1)立即数188,可表示为 、#0BCH、#188
(2)MOV R0,# BLOCK;BLOCK为定义过的标号地址。对于直接地址 direct
(1)二进制、十进制、十六进制数,MOV A,30H
(2)定义过的标号地址,AGAIN:LJMP AGAIN
(3)表达式,如SUM+2,其中SUM为定义过的标号地址
(4) SFR寄存器符号名称,如SP、DPH、DPL等
对于偏移量 rel
(1)可以是数值、标号地址、表达式
(2)使用特殊符号“$”,它代表本条转移指令所在的地址,如LJMP $(死循环)
(3)实际编程时,凡指令中用到地址(rel、 addr11 、addr16等)都可用标号地址代替实际地址,而地址的运算由汇编程序完成。
二、常用伪指令
汇编:将计算机不可直接识别的汇编语言源程序翻译成机器语言的过程。分为计算机汇编和人工汇编两种。
汇编程序:具有完成汇编功能的程序。
目标程序:汇编语言源程序经过汇编得到的机器语言程序。
伪指令:提供汇编用控制信息的指令,只能被汇编程序所识 别,不是单片机的CPU可执行的指令。
1、定位伪指令ORG(Origin)
格式: [标号:] ORG m
m:16位二进制数,代表地址。
功能:指出汇编语言程序通过编译,得到的机器语言程序的起始地址。
2、定义字节伪指令DB(Define Byte)
格式:[标号:] DB X1,X2,~Xn
Xn:单字节二进制、十进制、十六进制数,或以‘ ’括起来的字符串,数据符号。
功能:定义程序存储器从标号开始的连续单元,用来存放常数、字符和表格。
? 3、定义字伪指令DW(Define Word)
格式:[标号:] DW Y1,Y2,~Yn
Yn:双字节二进制、十进制、十六进制数,或以‘ ’括起来的字符串,数据符号。
功能:同DB,不同的是为16位数据。
4、汇编结束命令END
格式:[标号:] END
功能:END是汇编语言源程序的汇编结束标志,在它后面所写的指令均不予处理。?
5、等值命令EQU
格式:字符名称 EQU 数或汇编符号
功能:将一个数或特定的汇编符号赋予规定的字符名称。先定义后使用。
?
6、数据地址赋值命令DATA
格式:字符名称 DATA 表达式
功能:将数据地址或代码地址赋予规定的字符名称
三、汇编语言程序的结构
1、程序设计的基本步骤
一般步骤为:
(1)分析题意,明确要求;
(2)建立思路,确定算法;
(3)编制框图,绘出流程;
(4)编写程序,上机调试;
显然,算法和流程是至关重要的。程序结构有简单顺序、分支、循环和子程序等几种基本式。
2、画流程图
画流程图是指用各种图形、符号、指向线等来说明程序设计的过程。国际通用的图形和符号说明如下:
椭圆框:起止框,在程序的开始和结束时使用。
矩形框:处理框,表示要进行的各种操作。
菱形框:判断框,表示条件判断,以决定程序的流向。
指向线:流程线,表示程序执行的流向。
圆 圈:连接符,表示不同页之间的流程连接。
各种几何图形符号如下图所示。
§4-2 汇编语言程序的基本结构形式
?一、简单程序的设计
例4-1 已知两个压缩BCD码分别放在内部RAM的31H30H和33H 32H
等4个单元中,试编程求和,结果存入R4R3R2中。
分析:流程如图:
程序如下:
ORG 0000H
LJMP MAIN
ORG 0040H
MAIN: MOV A, 30H
ADD A, 32H
DA A
MOV R2,A
MOV A,31H
ADDC A,33H
DA A
MOV R3,A
CLR A
MOV ACC.0,C
MOV R4, A
HERE: AJMP HERE
END
例4-2 利用查表指令将内部RAM中20H单元的压缩BCD码拆开,转换成相应的ASCII码,存入21H、22H中,高位存在22H。
分析:控制流程图(略),程序如下:
START:MOV DPTR,#TABLE
MOV A, 20H
ANL A, #0FH
MOVC A, @A+DPTR
MOV 21H,
文档评论(0)