汇编语言程序设计及仿真调试课件

上传人:F****n 文档编号:88151319 上传时间:2019-04-20 格式:PPT 页数:38 大小:310.50KB
返回 下载 相关 举报
汇编语言程序设计及仿真调试课件_第1页
第1页 / 共38页
汇编语言程序设计及仿真调试课件_第2页
第2页 / 共38页
汇编语言程序设计及仿真调试课件_第3页
第3页 / 共38页
汇编语言程序设计及仿真调试课件_第4页
第4页 / 共38页
汇编语言程序设计及仿真调试课件_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《汇编语言程序设计及仿真调试课件》由会员分享,可在线阅读,更多相关《汇编语言程序设计及仿真调试课件(38页珍藏版)》请在金锄头文库上搜索。

1、第5章 汇编语言程序设计及仿真调试,5.1 汇编语言程序设计基础知识,5.2 汇编语言程序设计举例,5.3 利用Keil uVision2调试程序,5.4 ISP工具的使用,5.1.1 伪指令,一般来说,在汇编语言源程序中用MSC-51指令助记符编写的程序,都可以一一对应的产生目标程序。但还有一些指令,例如指定目标程序或数据存放的起始地址,给一些指定的标号赋值,在内存中予留工作单元,表示源程序结束等等。这些指令并不产生目标程序,不影响程序的执行,仅仅产生供汇编用的某些指令,以便在汇编时执行一些特殊操作,称之为伪指令。,5.1 汇编语言程序设计基础知识,1、设置起始地址ORG,ORG nn OR

2、G伪指令总是出现在每段源程序或数据块的开始。它可使程序员把程序、子程序或数据块存放在存贮器的任何位置。 ORG 2000H MOV A, 20H 表示后续目标程序从2000H单元开始存放。一般要求ORG定义空间地址由小到大,且不能重叠 。 在实际应用中,一般仅设置中断服务子程序的入口地址和主程序的起始存放地址,其他的程序或常数依次存放即可,汇编程序会自动进行存储空间的分配。,2、定义字节DB或DEFB,标号: DB 项或项表 其中项或项表是指一个字节,数或字符串,或以引号括起来的ASC码字符串(一个字符用ASC码表示,相当于一个字节)。该指令的功能是把项或项表的数值(字符则用它的ASC码)存入

3、从标号开始的连续单元中。 SEG1: DB 53H,74H,78H,1,2 SEG2: DB 23H,DAY 则: (1000H)=53H (1001H)=74H (1002H)=78H (1003H)=31H 数字1的ASC码 (1004H)=32H 数字2的ASC码 (1005H)=23H (1006H)=44H (1007H)=41H DAY 的ASC码 (1008H)=59H,3、定义字DW或DEFW,标号: DW 项或项表 DW的基本含义与DB相同,但DB一般用于定义8位数据(一个字节),而DW则定义16位数据,即一个字(规定为两个字节,即一个字为16位二进制数)。在执行汇编程序时,

4、机器会自动按高位字节在前,低位字节在后的格式排列(与程序中的地址规定一致)。 例: ABC: DW 1234H, 08H ABC: DB 12H ,34H,00H,08H 上两条指令是等价的。,4、为标号赋值EQU,标号: EQU nn或表达式 其功能是将语句操作数的值赋于本语句的标号。故又称为等值指令。如: BLK: EQU 1000H 即给标号BLK赋以地址值1000H。需要注意的是,在同一程序中,用EQU伪指令对标号赋值后,该标号的值在整个程序中不能再改变。,5DATA指令,格式: 符号名 DATA 表达式 DATA 指令用于将一个内部 RAM 的地址赋给指定的符号名。 数值表达式的值在

5、00H0FFH之间,表达式必须是一个简单表达式。如: BUFFER DATA 40H,6XDATA指令(Extenal Data),格式: 符号名 XDATA 表达式 XDATA 指令用于将一个外部 RAM 的地址赋给指定的符号名。 数值表达式的值在0000H0FFFFH之间,对于STC12C5410AD单片机,片内集成了256字节的XRAM,地址范围是0000H00FFH。表达式必须是一个简单表达式。如: MYDATA XDATA 0020H,7定义位命令BIT,格式: 字符名称 BIT 位地址 用于给字符名称定义位地址。如: DOGOUT BIT P3.4 经定义后,允许在指令中用DOGO

6、UT代替P3.4。 DATA、BIT命令可以使用EQU代替,例如,下面的两条命令是等价的: TCON DATA 88H ;中断优先级高位寄存器 TCON EQU 88H ;中断优先级高位寄存器 下面的两条命令也是等价的: TF1 BIT 8FH ;TF1的位地址位8FH TF1 EQU TCON.7 ;TF1为TCON的第7位,8、文件包含命令INCLUDE,文件包含命令INCLUDE用于将寄存器定义文件(一般的后缀名为.INC)包含于当前程序中,与C语言中的#include语句类似。使用格式为: $INCLUDE (文件名) 例如,为了使用方便,作者把STC12C5410AD单片机的寄存器定

7、义保存在文件STC12.INC中,使用时,可以在程序的开始处使用下面的命令将其包含到用户程序中: $INCLUDE (STC12.INC) ;包含寄存器定义文件 使用上述命令后,在用户程序中就可以直接使用STC12C5410AD单片机的寄存器名称了。,9、源程序结束 END,标号: END 表达式 END语句是一个结束标志,它告诉汇编程序,该程序段已结束。因此,该语句必须放在整个程序(包括伪指令)之后。若END语句出现在代码块中间,则汇编程序将不汇编END后面的语句。,5.1.2 汇编语言程序设计的一般步骤和基本框架,1、汇编语言程序设计的一般步骤,1)分析课题,确定算法或解题思路; 2)根据

8、算法或思路画出流程图; 3)根据流程图编写程序; 4)上机调试源程序,进而确定源程序。,2、STC12C5410AD单片机 汇编语言程序的设计框架:,ORG 0000H LJMP MAIN ;跳转到主程序 ORG 0003H LJMP X0_ISR ;外部中断0入口 ORG 000BH LJMP T0_ISR ;定时器0中断入口 ORG 0013H LJMP X1_ISR ;外部中断1入口 ORG 001BH LJMP T1_ISR ;定时器1中断入口 ORG 0023H LJMP UART_ISR ;串行通信中断入口 ORG 002BH LJMP ADCSPI_ISR ;ADC_SPI中断服

9、务程序入口 ORG 0033H LJMP PCA_ISR ;PCA中断服务程序入口 ORG 0100H MAIN: MOV SP,#70H ;设置堆栈指针 ;初始化内存区域内容 ;设置有关SFR的控制字 ;开放相应的中断控制 MAINLOOP: ;主程序循环 LJMP MAINLOOP,;下面是各个中断服务子程序的入口 X0_ISR: ;外部中断0服务子程序 ;根据需要填入适当的内容 RETI X1_ISR: ;外部中断1服务子程序 ;根据需要填入适当的内容 RETI T0_ISR: ;定时器0中断服务子程序 ;根据需要填入适当的内容 RETI T1_ISR: ;定时器1中断服务子程序 ;根据

10、需要填入适当的内容 RETI UART_ISR: ;串行通信中断服务子程序 ;根据需要填入适当的内容 RETI ADCSPI_ISR: ;ADC和SPI通信中断服务子程序 ;根据需要填入适当的内容 RETI PCA_ISR: ;PCA和PWM中断服务子程序 ;根据需要填入适当的内容 RETI ;下面可以编写其他子程序或者使用DB定义程序中所用的常数 END,5.2 汇编语言程序设计举例,例1 延时程序(时钟为6MHz ) 入口:设延时时间N(以毫秒为单位)送入R0。 出口:延时到,退出程序,无参数传递。 DELAY: MOV A,#240 ;当时钟为6MHz,A计数到240,约延时0.2ms

11、LOOP: DEC A JNZ LOOP DJNZ R0,DELAY RET,例2 多字节无符号加法子程序 入口:被加数低字节地址在R0,加数低字节地址在R1,字节数在R2。 出口:和的低字节地址在R0,字节数在R3。 MPADD: PUSH PSW ;保护标志寄存器内容。 CLR C ;进位为清零 MOV R3,#00H ADD10: MOV A,R0 ;相加 ADDC A,R1 MOV R0,A INC R0 ;地址值增1 INC R1 INC R3 ;字节数增1 DJNZ R2,ADD10 ;所有字节未加完继续。 JNC ADD20 ;无进位去ADD20。 MOV R0,#01 ;和最高

12、字节地址内容为01H INC R3 ;字节数增1 ADD20: POP PSW ;恢复标志寄存器内容 RET ;返主,其他编程实例,请参见教材,5.3 利用Keil uVision2集成开发环境调试程序,5.3.1 Keil uVision2集成开发环境简介 Keil uVision2 集成开发环境(IDE,以下简称uVision2)是一个基于Windows的开发平台,包含高效的编辑器、项目管理器和MAKE工具。uVision2支持所有的KEIL 8051工具,包括C编译器、宏汇编器连接/定位器、目标代码、到HEX的转换器。uVision2通过以下特性加速嵌入式系统(单片机应用系统)的开发过程

13、: 全功能的源代码编辑器 器件库用来配置开发工具设置 项目管理器用来创建和维护项目 集成的MAKE工具可以汇编编译和连接用户的嵌入式应用 所有开发工具的设置都是对话框形式的 真正的源代码级的对CPU和外围器件的调试器 高级GDIAGDI接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信 与开发工具手册和器件数据手册和用户指南有直接的链接,Keil uVision2的安装,5.3.2 Keil uVision2集成开发环境中调试单片机汇编语言程序的方法 uVision2集成开发环境中包括一个项目管理器,它可以使单片机应用系统设计变得简单。要创建一个应用,需要按下列步骤进行操作:

14、1)启动uVision2,新建一个项目文件并从器件库中选择一个器件 2)新建一个源文件并把它加入到项目中 3)针对目标硬件设置工具选项 4)编译项目并生成可以编程到程序存储器的HEX文件 5)下载到单片机中进行仿真调试,1.启动uVision2并创建一个项目,新建一个项目文件,单片机型号,选择单片机型号,拷贝启动代码提示,选择的CPU配置文件创建一个文件组,2新建一个源文件并把它加入到项目中,新文件内容见下页,【例5-1】假设晶振频率为6MHz。将片内RAM30H3FH单元的内容清零,然后循环从P1.0输出10ms方波。 ORG 0000H LJMP MAIN ORG 0100H MAIN:

15、MOV SP,#70H ;设置堆栈指针 MOV R0,#30H MOV R2,#10H CLR A LOOP1: MOV R0,A INC R0 DJNZ R2,LOOP1 ;将30H3FH单元的内容清零 SETB P1.0 LOOP2: CPL P1.0 LCALL DELAY LJMP LOOP2 ;输出方波 DELAY: ;10ms延时子程序 MOV R2,#50 DLY_LOOP: MOV A,#240 LOOP: DEC A JNZ LOOP NOP DJNZ R2,DLY_LOOP RET END,保存文件,输入文件名,加入源程序文件到项目中,选择文件类型,选择文件类型, 然后选择文件,3针对目标硬件设置工具选项,4. 编译项目并生成可以编

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号