单片机汇编语言程序设计(mhr)概论.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机汇编语言程序设计(mhr)概论

第3章 MCS-51单片机汇编语言程序设计;内容提要;3.1 概述;汇编语言 源程序; 汇编:将汇编语言源程序转换成机器语言目标程序的过程称为汇编。 汇编程序:能将汇编语言源程序转换成机器语言目标程序的系统软件称为汇编程序。;汇编的方法:汇编的方法有两种 1.手工汇编: 人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。 2.机器汇编: 用计算机中的汇编程序对用户源程序进行汇编。 用机器汇编要提供给汇编器一些信息,遵循汇编程序的一些约定。这些由伪指令指定。;1)确定程序中每条汇编语言指令的指令机器码 2)确定每条指令在存储器中的存放地址 3)提供错误信息 4)提供目标执行文件(*.OBJ/*.HEX)和列表文件(*.LST);1. 机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被CPU执行。 2. 伪指令: 汇编控制指令,没有指令代码,只用于汇编过程,为汇编程序提供汇编信息。;宏定义过程:;二.伪指令 常用伪指令及功能:;2.字节定义 标号: DB(字节常数,或字符或表达式) 功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(八位二进制数)。 例如 LN:DB 20H,’C’,25H,73;LN~LN+3地址单元依次存放20H , 43H , 25H ,49H; 5. 等值指令 标号 EQU(数值表达式) 表示EQU两边的量等值,用于为标号或标识符赋值。 例如: X1 EQU 2000H X2 EQU 0FH … MAIN: MOV DPTR,#X1 ; DPTR=2000H ADD A,#X2 ; A=A+0FH;6. 位定义 标号 BIT [位地址] 作用: 同EQU指令,不过定义的是位操作地址。 例如 AIC BIT P1.1。 ; MCS-51单片机的汇编语言程序设计的步骤与其他 微机相同,本章通过编程实例,使读者进一步熟悉和 掌握单片机的指令系统及编程的方法和技巧,提高单 片机程序的编程能力。为方便上机调试,本章不涉及 中断,所以均以ORG 0000H作起始指令。 ;汇编语言程序设计步骤: 1 分析工作任务 2 确定计算方法和工作步骤 3 画工作流程图 4 确定程序与数据区存放地址 5 按流程图编写程序 6 上机调试,修改并最终确定源程序;4.2 顺序程序设计 例4-1将外部数据存储器的000EH和000FH单元的内容相交换。;例4-2 将内部数据存储器的(31H)(30H)中的16位数求其补码后放回原单元。; 当程序中的某些指令需要反复执行多次时,采用循环程序的方式,这样会使程序缩短,节省存储单元(并不节省执行时间)。 循环程序设计的一个主要问题是循环次数的控制,有两种方式:第一种方法是先判断,再处理即先判断满不满足循环条件,如不满足,就不循环,多以循环条件控制。第二种方法是先处理再判断,即循环一遍后,下一轮还需不需要进行,多以计循环次数控制。循环可以有单重循环和多重循环,再多重循环中,内部循环不能交叉,也不允许外循环跳入内循环。 ; 循环程序一般由四个主要部分组成:  (1) 初始化部分: 为循环程序做准备, 如规定循环次数、 给各变量和地址指针预置初值。  (2) 处理部分: 为反复执行的程序段, 是循环程序的实体, 也是循环程序的主体。  (3) 循环控制部分: 这部分的作用是修改循环变量和控制变量, 并判断循环是否结束, 直到符合结束条件时, 跳出循环为止。 (4) 结束部分: 这部分主要是对循环程序的结果进行分析、 处理和存放。 下面通过几个实例说明循环程序的设计方法。 ;例4-3 设计一个延时10ms的延时子程序,已知单片机使用的晶振为6MHZ。 分析 延时时间与两个因素有关,一个是晶振频率,一个是循环次数。由于晶振采用6MHZ,一个机器周期是2us,采用单循环可以实现1ms延时,外循环10次即可达10ms延时。内循环如何实现1ms延时呢,程序中可先以未知数MT代替,再根据程序的执行时间计算。; 内循环DL1到指令DJNZ R1,DL1 的计算: (1+1+2)ⅹ2μsⅹMT=1000μs MT=125=7DH 将7DH代入上面程序的MT,计算总的延时时间: {1+[1+(1+1+2)ⅹ125+2]ⅹ10}ⅹ2μ

文档评论(0)

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

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

1亿VIP精品文档

相关文档