- 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.1程序编制的方法和技巧 4.3基本程序结构 程序设计流程 4.3基本程序结构 4.3.1 顺序程序 顺序程序是无分支无循环的程序。 【例4-1】设片内RAM的21H单元存放一个十进制数据十位的ASCII码, 22H单元存放一个十进制数据个位的ASCII码,编写程序将该数据转换成压缩BCD码存放在20H单元 4.3.2 分支程序 根据需要改变程序的执行顺序。单分支、多分支等 【例4-2】设变量x以补码形式存在片内RAM的30H单元,变量y与x的关系是: 当x0时,y=x; 当x=0时,y=20H; 当x0时,y=x+5。编制程序,根据x的大小求y并送回原单元。 4.3.3 循环程序 按某种控制规律重复执行的程序。 【例4-4】编写程序,将内部30H至3FH单元初始化为00H。 【例4-5】将内部RAM中起始地址为60H的数据串传送到外部RAM中起始地址为1000H的存储区域内,直到发现‘$’字符停止传送。 4.4 子程序及其调用 4.4.1 现场保护与恢复 4.4.2 参数传递(入口参数及出口参数传递) 4.4.3 常用子程序示例 4.4.3 常用子程序示例 * * 第4章 80C51的汇编语言程序设计 程序编制的方法和技巧 4.1 源程序的编辑和汇编 4.2 基本程序结构 4.3 子程序及其调用 4.4 简单I/O设备的并口直接驱动示例 4.5 4.1.1程序编制步骤 一、任务分析 二、算法设计 三、流程描述 标号是指令的符号地址,通常作转移指令的操作数; 由1-31个字符组成,由字母、数字、“-”、“?”等组成,不能由数字开头; 不能用已定义的保留字; 必须后跟英文冒号”:” 4.1.3汇编语言的语句格式 [标号:]指令助记符[操作数1][,操作数2][,操作数3][;注释] 指令助记符是指令功能的英文缩写,不可空缺。 操作数是指令要操作的数据或数据的地址 操作数可以空缺,或者一项、两项、三项或者多项; 各项之间用英文逗号隔开; 操作数可以是数据(二进制、十六进制、ASCII码等)、符号(符号名、标号或特定符号$)、表达式组成; 表达式由运算符和数据构成的算式。 如:4*(5+6)、2 shl 2等 注释只是对语句的说明,以增加程序的可读性,以英文分号”;”开头。 例:tab: db 20h,4*(2+6),40h,50h,10h ;定义一串数据,起始地址为tab mov dptr,#tab * * 4.2.1 源程序编辑与汇编 一、源程序的编辑.asm 二、源程序的汇编A51.exe 三、目标文件的连接BL51.exe,由符号转换器OH51.exe转换成*.hex文件 4.2源程序的编辑和汇编 源程序(*.asm) 汇编 目标程序(*.obj、*.lib) 连接 绝对地址目标文件 符号转换 目标文件(*.hex) * * 4.2.2 伪指令 伪指令,也叫汇编命令。仅对汇编过程进行指示 伪指令无对应的单片机可执行代码 起始地址设定伪指令ORG ORG 表达式 表达式通常为十六进制地址,例: ORG 8000H START:MOV A,#30H … … ORG可多次使用,但地址值的顺序要由小到大顺序设置 结束汇编伪指令END END 该伪指令位于源程序的最后一行。 * * 定义字节数据表伪指令DB 定义字数据表伪指令DW 1000H [标号:] DB 字节数据表 如: ORG 1000H DB -2,-4,-6,8,10,18 FEH FCH FAH 08H 0AH 12H 1001H [标号:] DW 字数据表 ORG 1400H DATA1:DW 324AH,3CH … … 1400H 32H 4AH 00H 3CH 1401H 1402H 1403H 大端模式 * * 定义常值为符号名伪指令EQU 符号名 EQU 常值表达式 LEN EQU 10 SUM EQU 21H BLOCK EQU 22H CLR A MOV R7,#LEN MOV R0,#BLOCK LOOP:ADD A,@R0 INC R0 DJNZ R7,LOOP MOV SUM,A 符号名为: 地址 常数 段名 字符串 寄存器名 位名 比较:标号只能是地址,符号名可以代表地址、常数、段名等 注:用EQU定义的符号名一经定义便不能重新定义和改变 * * 定义位地址为符号名伪指令BIT 符号名 BIT 位地址表达式 如: ST B
文档评论(0)