第3章MCS51单片机汇编语言程序设计改.ppt
《第3章MCS51单片机汇编语言程序设计改.ppt》由会员分享,可在线阅读,更多相关《第3章MCS51单片机汇编语言程序设计改.ppt(45页珍藏版)》请在三一文库上搜索。
1、第3章 MCS51单片机汇编语言程序设计,单片机原理、接口及应用,内 容 提 要,伪指令 汇编语言程序设计步骤 顺序程序设计 分支程序设计 循环程序设计 位操作程序设计 子程序 小结,1. 机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被CPU执行。 2. 伪指令: 汇编控制指令,没有指令代码,只用于汇编过程,为汇编程序提供汇编信息。,一、汇编语言指令类型,宏汇编功能:将需要反复多次执行的程序段定义成一个宏指令名(宏定义)。编程时,可在程序中使用宏指令名来替代被定义的程序段(宏调用)。,3.1伪指令,宏定义过程:,宏调用过程: 宏指令名 实际参数 宏指令名 实际参数,宏指
2、令名 MACRO 形式参数 ;被定义的程序段 ENDM,二伪指令 常用伪指令及功能:,1.起始指令 ORG nn 功能:定义程序或数据块的起始地址。指示此语句后面的程序或数据块以nn为起始地址,连续存放在程序存储器中。 指令地址 机器码 源程序 ORG 2000H 2000H 78 30 MAIN: MOV R0,#30H 2002H E6 MOV A,R0 ,ORG 3000H 3000H 23 TAB: DB 23H,100,A 3001H 64 3002H 41,2.字节定义 标号: DB(字节常数,或字符或表达式) 功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(八
3、位二进制数)。 例如 LN:DB 32,C,25H,-1;LNLN+2 地址单元依次存放20H , 43H , 25H ,FFH,3. 字定义 标号:DW (字常数或表达式) 作用: 指示在程序存储器中以标号为起始地址 的单元里存放的数为字数据(即16位的二进制数),例如: GH :DW 1234H,5678H,08,5. 等值指令 标号 EQU(数值表达式) 表示EQU两边的量等值,用于为标号或标识符赋值。 例如: X1 EQU 2000H X2 EQU 0FH MAIN: MOV DPTR,#X1 ; DPTR=2000H ADD A,#X2 ; A=A+0FH,4保留字节 标号:DS (
4、数值表达式) 作用: 指示在程序存储器中保留以标号为起始地 址的若干字节单元,其单元个数由数值表达式指定。 例如 L1:DS 32 ; 从L1地址开始保留32个存储单元。,6. 位定义 标号 BIT 位地址 作用: 同EQU指令,不过定义的是位操作地址。 例如 AIC BIT P1.1。,7.汇编结束 END 作用: 指示源程序段结束。 END指令放在程序的最后。 A51汇编程序还有一些其它的伪指令,列在教材表3-1中,以备查阅。,汇编语言程序设计步骤,一.确定方案和计算方法 二.了解应用系统的硬件配置、性能指标 三.建立系统数学模型,确定控制算法和操作步骤 四.合理分配存储器单元和了解I/O
5、接口地址,五. 编制源程序 1.按功能设计程序,明确各程序之间的相互关系 2. 用流程图表示程序结构和功能,3.程序中用注释说明指令在程序中的作用,方便阅读、调试和修改,顺序程序设计 例3-1 编程将外部数据存储器的000EH和000FH单元的内容相换。,常用程序结构 顺序程序、分支程序、 循环程序、子程序,分析: 外部数据存储器的数据操作只能用MOVX指令,且只能和A之间传送,因此必须用一个中间环节作暂存,设用20H单元。用R0、R1指示两单元的低八位地址,高八位地址由P2指示。编程过程如下:,ORG 0000H MOV P2, #0H ;送地址高八位至P2口 MOV R0, #0EH ;R
6、0= 0EH MOV R1, #0FH ;R1=OFH MOVX A, R0 ;A=(000EH) MOV 20H, A ;(20H)=(000EH) MOVX A, R1 ;A=(000FH) XCH A, 20H ; A=(000EH),(20H)=(000FH) MOVX R1, A MOV A, 20H MOVX R0, A ;交换后的数送各单元 SJMP $ END,3.3 顺序程序设计 顺序程序(简单程序),程序走向只有一条路径,例3-2:将R4R5双字节符号数求补程序。,ORG 0000H MOV A,R5 ;取低字节 CPL A ADD A,#1 ;低字节变补 MOV R5,A
7、 MOV A,R4 ;取高字节 CPL A ADDC A,#0 ;高字节变补 ORL A, #80H; 恢复负号 MOV R4,A END,例3-3 分解压缩式BCD码,使其成为非压缩式BCD码。,ORG 0000H MOV R0,#40H ;设指针 MOV A,R0 ;取一个字节 MOV R2,A ;暂存 ANL A,#0FH ;清0高半字节 INC R0 MOV R0,A ;保存数据个位,MOV A,R2 SWAP A ;十位换到低半字节 ANL A,#0FH INC R0 MOV R0,A ;保存数据十位 END,05,06,例3-4 设变量放在片内RAM的20H单元,其值为00H05H
8、 之间,要求编查表程序,查出变量的平方值, 并放入片内RAM的21H单元。,ORG 0000H MOV DPTR,#TAB MOV A,20H MOVC A,A+DPTR ;查表 MOV 21H,A SJMP $ TAB2: DB 00H,01H,04H,09H,16H,25H END,分析 :在程序存储器安排一张平方表,首地址为TAB,以DPTR指向表首址,A存放变量值,利用查表指令MOVC A,A+DPTR,即可求得。 表中数据用BCD码存放合乎人们的习惯.,如果平方值为两个字节,程序应如何编。,ORG 0000H MOV A,R2 JNB ACC.7,N ;为正数? CPL A ;负数变
9、补 INC A MOV R2,A N: SJMP $ ;结束,3.4 分支程序的设计 由条件转移指令构成程序判断框部分,形成分支结构,3.5.1 单分支程序 一个判断决策框,两种分支结构图。,例1 求8位有符号数的绝对值。 方法:正数不变,负数变补,多分支散转程序的设计 有一类分支程序,它根据不同的输入条件或不同的运算结果,转向不同的处理程序,称之为散转程序。这类程序通常利用JMPA+DPTR间接转移指令实现转移。有如下两种设计方法: 1. 查转移地址表: 将转移地址列成表格,将表格的内容作转移的目标地址。 2. 查转移指令表: 将转移到不同程序的转移指令列成表格,判断条件后查表,转到表中指令
10、执行,下面用两个例子说明。,当程序中的某些指令需要反复执行多次时,采用循环程序的方式,这样会使程序缩短,节省存储单元(并不节省执行时间)。 循环次数的控制,有两种控制方式: 第一种方法 先判断再处理即先判断满不满足循环条件,如不满足,就不循环,多以循环条件控制。 第二种方法 先处理再判断,即循环执行一遍后,下一轮还需不需要进行,多以计循环次数控制。循环可以有单重循环和多重循环,在多重循环中,内外循环不能交叉,也不允许外循环跳入内循环。下面通过几个实例说明循环程序的设计方法。,3.5 循 环 程 序 设 计,例 3-9 设计一个延时10ms的延时子程序,已知单片机使用的晶振为6MHz。 分析 :
11、 延时时间与两个因素有关:晶振频率和循环次数。由于晶振采用6MHz,一个机器周期是2s,用单循环可以实现1ms延时,外循环10次即可达10ms延时。 内循环如何实现1ms延时呢,程序中可先以未知数MT代替,从附录A查每条指令机器周期计算程序的执行时间。,ORG 0020H MOV R0,#0AH ;外循环10次 DL2: MOV R1,#MT ;内循环MT次 DL1: NOP NOP ;空操作指令 DJNZ R1,DL1 DJNZ R0,DL2 RET,内循环DL1到指令DJNZ R1,DL1的计算: (1+1+2)2SMT=1000S MT=125=7DH,将7DH代入上面程序的MT,计算总
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 单片机 汇编 语言程序设计
链接地址:https://www.31doc.com/p-2986886.html