汇编语言程序设计及仿真调试课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言程序设计及仿真调试课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 仿真 调试 课件
- 资源描述:
-
1、单片机应用技术1/38第第5 5章章 汇编语言程序设计及仿真调试汇编语言程序设计及仿真调试 单片机应用技术2/385.15.1.1 .1 伪指令伪指令 一般来说,在汇编语言源程序中用一般来说,在汇编语言源程序中用MSC-51MSC-51指令助记指令助记符编写的程序,都可以一一对应的产生目标程序。但还符编写的程序,都可以一一对应的产生目标程序。但还有一些指令,例如指定目标程序或数据存放的起始地址,有一些指令,例如指定目标程序或数据存放的起始地址,给一些指定的标号赋值,在内存中予留工作单元,表示给一些指定的标号赋值,在内存中予留工作单元,表示源程序结束等等。这些指令并不产生目标程序,不影响源程序结
2、束等等。这些指令并不产生目标程序,不影响程序的执行,仅仅产生供汇编用的某些指令,以便在汇程序的执行,仅仅产生供汇编用的某些指令,以便在汇编时执行一些特殊操作,称之为伪指令。编时执行一些特殊操作,称之为伪指令。 5.1 5.1 汇编语言程序设计基础知识汇编语言程序设计基础知识单片机应用技术3/381 1、设置起始地址、设置起始地址ORGORG ORG ORG nnnn ORG ORG伪指令总是出现在每段源程序或数据块的开始。它可使程序伪指令总是出现在每段源程序或数据块的开始。它可使程序员把程序、子程序或数据块存放在存贮器的任何位置。员把程序、子程序或数据块存放在存贮器的任何位置。 ORG 200
3、0H ORG 2000H MOV A, 20H MOV A, 20H 表示后续目标程序从表示后续目标程序从20002000H H单元开始存放。一般要求单元开始存放。一般要求ORGORG定义空间定义空间地址由小到大,且不能重叠地址由小到大,且不能重叠 。 在实际应用中,一般仅设置中断服务子程序的入口地址和主程序在实际应用中,一般仅设置中断服务子程序的入口地址和主程序的起始存放地址,其他的程序或常数依次存放即可,汇编程序会自动的起始存放地址,其他的程序或常数依次存放即可,汇编程序会自动进行存储空间的分配。进行存储空间的分配。 单片机应用技术4/382 2、定义字节、定义字节DBDB或或DEFBDE
4、FB 标号:标号: DB DB 项或项表项或项表 其中项或项表是指一个字节,数或字符串,或以引号括起来的其中项或项表是指一个字节,数或字符串,或以引号括起来的ASCASC码字符串(一个字符用码字符串(一个字符用ASCASC码表示,相当于一个字节)。该码表示,相当于一个字节)。该指令的功能是把项或项表的数值(字符则用它的指令的功能是把项或项表的数值(字符则用它的ASCASC码)存入从标码)存入从标号开始的连续单元中。号开始的连续单元中。 SEG1 SEG1: DB 53H,74H,78H,1,2 DB 53H,74H,78H,1,2 SEG2 SEG2: DB 23H,DAY DB 23H,DA
5、Y则:则: (10001000H H)=53H=53H (1001H1001H)=74H=74H (1002H1002H)=78H=78H (1003H1003H)=31H =31H 数字数字1 1的的ASCASC码码 (10041004H H)=32H =32H 数字数字2 2的的ASCASC码码 (10051005H H)=23H=23H (1006H1006H)=44H=44H (1007H1007H)=41H=41HDAY DAY 的的ASCASC码码 (10081008H H)=59H=59H单片机应用技术5/383 3、定义字、定义字DWDW或或DEFWDEFW 标号:标号: DW
6、 DW 项或项表项或项表 DW DW的基本含义与的基本含义与DBDB相同,但相同,但DBDB一般用于定义一般用于定义8 8位数位数据(一个字节),而据(一个字节),而DWDW则定义则定义1616位数据,即一个字(规位数据,即一个字(规定为两个字节,即一个字为定为两个字节,即一个字为1616位二进制数)。在执行汇位二进制数)。在执行汇编程序时,机器会自动按高位字节在前,低位字节在后编程序时,机器会自动按高位字节在前,低位字节在后的格式排列(与程序中的地址规定一致)。的格式排列(与程序中的地址规定一致)。 例:例: ABC ABC: DW 1234H, 08H DW 1234H, 08H ABC
7、ABC: DB 12H ,34H,00H,08H DB 12H ,34H,00H,08H上两条指令是等价的。上两条指令是等价的。单片机应用技术6/384 4、为标号赋值、为标号赋值EQUEQU 标号:标号: EQU EQU nnnn或表达式或表达式其功能是将语句操作数的值赋于本语句的标号。故又称其功能是将语句操作数的值赋于本语句的标号。故又称为等值指令。如:为等值指令。如:BLKBLK: EQU 1000H EQU 1000H 即给标号即给标号BLKBLK赋以地址值赋以地址值10001000H H。需要注意的是,在需要注意的是,在同一程序中,用同一程序中,用EQUEQU伪指令对标号赋值后,该标
8、号的值在伪指令对标号赋值后,该标号的值在整个程序中不能再改变。整个程序中不能再改变。 单片机应用技术7/385 5DATADATA指令指令格式格式: 符号名符号名 DATA DATA 表达式表达式 DATA DATA 指令用于将一个内部指令用于将一个内部 RAM RAM 的地址赋给指定的的地址赋给指定的符号名符号名。 数值表达式的值在数值表达式的值在00H00H0FFH0FFH之间,表达式必须是一之间,表达式必须是一个简单表达式。如:个简单表达式。如: BUFFER DATA 40H BUFFER DATA 40H单片机应用技术8/386 6XDATAXDATA指令指令( (ExtenalEx
9、tenal Data) Data)格式:格式: 符号名符号名 XDATA XDATA 表达式表达式 XDATA XDATA 指令用于将一个外部指令用于将一个外部 RAM RAM 的地址赋给指定的的地址赋给指定的符号名。符号名。 数值表达式的值在数值表达式的值在0000H0000H0FFFFH0FFFFH之间,之间,对于对于STC12C5410AD单片机,片内集成了单片机,片内集成了256字节的字节的XRAM,地址范围是地址范围是0000H00FFH。表达式必须是一个简单表达式。表达式必须是一个简单表达式。如:如: MYDATA XDATA 0020H MYDATA XDATA 0020H单片机
10、应用技术9/387定义位命令定义位命令BIT 格式:格式: 字符名称字符名称 BIT BIT 位地址位地址 用于给字符名称定义位地址。如:用于给字符名称定义位地址。如: DOGOUT BIT P3.4 DOGOUT BIT P3.4 经定义后,允许在指令中用经定义后,允许在指令中用DOGOUTDOGOUT代替代替P3.4P3.4。 DATADATA、BITBIT命令可以使用命令可以使用EQUEQU代替,例如,下面的两条命令代替,例如,下面的两条命令是等价的:是等价的: TCON TCONDATA DATA 88H88H; ;中断优先级高位寄存器中断优先级高位寄存器 TCON TCONEQU E
11、QU 88H88H; ;中断优先级高位寄存器中断优先级高位寄存器 下面的两条命令也是等价的:下面的两条命令也是等价的: TF1 TF1BITBIT8FH8FH;TF1;TF1的位地址位的位地址位8FH8FH TF1 TF1EQUEQUTCON.7TCON.7 ;TF1 ;TF1为为TCONTCON的第的第7 7位位单片机应用技术10/388 8、文件包含命令文件包含命令INCLUDE 文件包含命令文件包含命令INCLUDE用于将寄存器定义文件(一般用于将寄存器定义文件(一般的后缀名为的后缀名为.INC)包含于当前程序中,与)包含于当前程序中,与C语言中的语言中的#include语句类似。使用格
12、式为:语句类似。使用格式为: $INCLUDE (文件名文件名) 例如,为了使用方便,作者把例如,为了使用方便,作者把STC12C5410AD单片单片机的寄存器定义保存在文件机的寄存器定义保存在文件STC12.INC中,使用时,可以中,使用时,可以在程序的开始处使用下面的命令将其包含到用户程序中:在程序的开始处使用下面的命令将其包含到用户程序中: $INCLUDE (STC12.INC) ;包含寄存器定义文件包含寄存器定义文件 使用上述命令后,在用户程序中就可以直接使用使用上述命令后,在用户程序中就可以直接使用STC12C5410AD单片机的寄存器名称了。单片机的寄存器名称了。 单片机应用技术
13、11/389 9、源程序结束、源程序结束 ENDEND 标号:标号: END END 表达式表达式 END END语句是一个结束标志,它告诉汇编程序,该程序语句是一个结束标志,它告诉汇编程序,该程序段已结束。因此,该语句必须放在整个程序(包括伪指段已结束。因此,该语句必须放在整个程序(包括伪指令)之后。若令)之后。若ENDEND语句出现在代码块中间,则汇编程序将语句出现在代码块中间,则汇编程序将不汇编不汇编ENDEND后面的语句。后面的语句。单片机应用技术12/385.15.1.2 .2 汇编语言程序设计的一般步骤和基本框架汇编语言程序设计的一般步骤和基本框架 1、汇编语言程序设计的一般步骤、
14、汇编语言程序设计的一般步骤1 1)分析课题,确定算法或解题思路;)分析课题,确定算法或解题思路;2 2)根据算法或思路画出流程图;)根据算法或思路画出流程图;3 3)根据流程图编写程序;)根据流程图编写程序;4 4)上机调试源程序,进而确定源程序。)上机调试源程序,进而确定源程序。单片机应用技术13/382 2、STC12C5410AD单片机单片机汇编语言程序的设计框架:汇编语言程序的设计框架: ORG ORG0000H0000H LJMP LJMP MAIN MAIN ; ;跳转到主程序跳转到主程序 ORG ORG0003H0003H LJMP LJMP X0_ISR X0_ISR ; ;外
15、部中断外部中断0 0入口入口 ORG ORG000BH000BH LJMP LJMP T0_ISR T0_ISR ; ;定时器定时器0 0中断入口中断入口 ORG ORG0013H0013H LJMP LJMP X1_ISR X1_ISR ; ;外部中断外部中断1 1入口入口 ORG ORG001BH001BH LJMP LJMP T1_ISR ; T1_ISR ;定时器定时器1 1中断入口中断入口 ORG ORG0023H0023H LJMP LJMP UART_ISR ; UART_ISR ;串行通信中断入口串行通信中断入口 ORG ORG002BH 002BH LJMP LJMP ADC
16、SPI_ISR ;ADC_SPI ADCSPI_ISR ;ADC_SPI中断服务程序入口中断服务程序入口 ORG ORG0033H 0033H LJMP LJMP PCA_ISR ;PCA PCA_ISR ;PCA中断服务程序入口中断服务程序入口 ORG ORG0100H0100HMAIN: MOVMAIN: MOVSP,#70H ;SP,#70H ;设置堆栈指针设置堆栈指针 ;初始化内存区域内容初始化内存区域内容 ;设置有关设置有关SFR的控制字的控制字 ;开放相应的中断控制开放相应的中断控制MAINLOOP:MAINLOOP: ; ;主程序循环主程序循环 LJMP MAINLOOP LJM
17、P MAINLOOP单片机应用技术14/38;下面是各个中断服务子程序的入口下面是各个中断服务子程序的入口X0_ISR: ;外部中断外部中断0服务子程序服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIX1_ISR: ;外部中断外部中断1服务子程序服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIT0_ISR: ;定时器定时器0中断服务子程序中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIT1_ISR: ;定时器定时器1中断服务子程序中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIUART_ISR: ;串行通信
18、中断服务子程序串行通信中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIADCSPI_ISR:;ADC和和SPI通信中断服务子程序通信中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIPCA_ISR: ;PCA和和PWM中断服务子程序中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETI ;下面可以编写其他子程序或者使用下面可以编写其他子程序或者使用DB定义程序中所用的常数定义程序中所用的常数END 单片机应用技术15/385.2 5.2 汇编语言程序设计举例汇编语言程序设计举例 例例1 1 延时程序(时钟为延时程序(时钟为6 6M
19、HzMHz ) 入口:设延时时间入口:设延时时间N N(以毫秒为单位)送入以毫秒为单位)送入R0R0。 出口:延时到,退出程序,无参数传递。出口:延时到,退出程序,无参数传递。DELAY: MOV A,#240 ;当时钟为当时钟为6MHz,A计数到计数到240,约延时,约延时0.2msLOOP: DEC A JNZ LOOP DJNZ R0,DELAY RET单片机应用技术16/38 例例2 2 多字节无符号加法子程序多字节无符号加法子程序入口:被加数低字节地址在入口:被加数低字节地址在R0R0,加数低字节地址在加数低字节地址在R1R1,字节数在字节数在R2R2。出口:和的低字节地址在出口:和
展开阅读全文