单片机基础(第3版)——第4章.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机基础(第3版) 李广弟等编著 北京航空航天大学出版社 2007年6 月 第4章 80C51单片机汇编语言程序设计 4.1 单片机程序设计语言概述 4.2 汇编语言程序的基本结构形式 4.3 80C51 单片机汇编语言程序设计举例 4.4 单片机汇编语言源程序的编辑和汇编 4.5 80C51 单片机汇编语言伪指令 4.1 单片机程序设计语言概述 4.1.1 机器语言和汇编语言 机器语言:用二进制编码表示的指令,是计算机能直接识别并执行的指令。 汇编语言:用助记符和专门的语言规则表示指令的功能和特征。 汇编语言是对机器语言的改进,比机器语言高级。汇编语言的最大优点是助记符与机器指令一一对应。用汇编语言编写的程序占用存储空间小,运行速度快,程序效率高。 缺点:难以记忆和使用,程序设计的技巧性较高,编程难度较大。要求使用者必须精通单片机的硬件系统和指令系统。缺乏通用性,程序不易移植。 4.1.2 单片机使用的高级语言 对于8051单片机,现有4种语言支持,即汇编、PL/M、C和BASIC。 C语言最终得到广泛应用。 可以大大提高单片机应用系统研制的开发效率。移植性好。 高级语言的不足:生成的目标代码较长,导致应用程序运行速度较慢。 4.1.3 80C51 单片机汇编语言的语句格式 80C51汇编语言的语句格式如下: [<标号>] : <操作码> [<操作数>]; [<注释>] 1. 标号 是语句地址的标志符号,标号的几点规定: 1~8个ASCII字符组成,第一个字符必须是字母。 不能使用本汇编语言已经定义的符号作为标号。 标号后面必须跟以冒号“:”。 同一标号在一个程序中只能定义一次。 标号可有可无。 2. 操作码 用于规定语句执行的操作内容,用指令助记符表示。不能空缺。 3. 操作数 操作数用于为指令操作提供数据。可以是空白,也可能有1~3个操作数,各操作数之间以逗号分隔。 4. 注释 不属于语句的功能部分,只是对语句的解释说明,以“;”开头。 5. 分界符(分隔符) 用于把语句中的各部分隔开,以便于区分。分界符包括空格、冒号、分号或逗号等符号。 4.2 汇编语言程序的基本结构形式 三种基本结构形式:顺序程序结构,分支程序结构,循环程序结构。 4.2.1 顺序程序结构 顺序结构程序是最简单的程序结构。程序既无分支、循环,也不调用子程序,程序执行时一条接一条地按顺序执行指令。 3字节无符号数相加:其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、54H和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的20H位中。 MOV R0, #52H;被加数的低字节地址 MOV R1, #55H;加数的低字节地址 MOV A, @R0 ADD A, @R1 ;低字节相加 MOV @R0, A ;存低字节相加结果 DEC R0 DEC R1 MOV A, @R0 ADDC A, @R1;中间字节带进位相加 MOV @R0, A ;存中间字节相加结果 DEC R0 DEC R1 MOV A, @R0 ADDC A, @R1;高字节带进位相加 MOV @R0, A ;存高字节相加结果 CLR A ADDC A, #00H;进位送00H位保存 MOV R0, #20H;存放进位的单元地址 MOV @R0, A 4.2.2 分支程序结构 分支结构也称为选择结构。为分支需要,程序设计时应给程序段的起始地址赋予一个地址标号,以供选择分支使用。分支结构又可分为单分支结构和多分支结构。 1. 单分支程序结构 单分支程序结构即二中选一,是通过条件判断实现的。一般都使用条件转移指令对程序的执行结果进行判断 (1)单分支结构举例 假定在外部RAM中有ST1、ST2和ST3共3个连续单元,其中ST1和ST2单元中存放着两个无符号二进制数,要求找出其中的大数并存入ST3单元中。 START: CLR C ;进位位清0 MOV DPTR,#ST1 ;设置数据指针 MOVX A,@DPTR ;取第1个数 MOV R2, A ;第1个数存于R2 INC DPTR ;数据指针加1 MOVX A, @DPTR ;取第2个数 SUBB A, R2 ;两数比较 JNC BIG1 ;若第2个数大,则转向BIG1 XCH A, R2 ;若第1个数大,则整字节交换 BIG0: INC DPTR MOVX @DPTR, A ;存大数 RET BIG1: MOVX A,

文档评论(0)

jyr0221 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档