资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
3.4 汇编语言程序的基本形式,单片机汇编语言源程序是用户把单片机所能接受的指令形式按照任务要求组织在一起的部分指令逻辑集合。 它与PC的汇编语言程序有所不同,PC的汇编语言程序可以调用操作系统的中断功能或Windows的API函数来完成特定的操作,而单片机的汇编语言程序从最底层面向硬件接口做起,所有的程序都需要程序员自己编写、配置。,3.4.1 汇编语言程序的伪指令,伪指令:控制汇编程序的指令,但不是控制单片机操作的指令,没有机器码。 1. 定位伪指令ORG 格式: ORG XXXX 或 标号地址。 作用:说明下面紧接的程序段或数据段存放的起始地址。 例如:ORG 1000H;指示后面的程序或数据块以 1000H为起始地址连续存放。 若省略ORG伪指令,则该程序段从ROM中0000H单元开始存放。 在一个源程序中,可以多次使用ORG伪指令,但地址值由小到大依序排列,不允许空间重叠。,3.4.1 汇编语言程序的伪指令,2. 汇编结束伪指令 END 格式:END。 作用:结束汇编。 汇编程序遇到END伪指令后即结束汇编。 处于END之后的程序,汇编程序软件将不处理。,3.4.1 汇编语言程序的伪指令,3. 字节数据定义伪指令 DB 格式:标号: DB 字节数据表。 作用:从标号指定的地址单元开始,在ROM中存放8位字节数据。 将字节数据根据从左到右的顺序依次存放在指定的存储单元中,一个数据占一个存储单元。 字节数据表可以是字符、十进制、十六进制、二进制等。该伪指令常用于存放数据表格。,3.4.1 汇编语言程序的伪指令,例如: ORG 1000H SEG1: DB 53H,78H , “2” SEG2: DB DAY END 则 (1000H)=53H (1001H)=78H (1002H)=32H ;32H为“2”的ASCII码 (1003H)=44H ;44H为“D”的ASCII码 (1004H)=41H ;41H为“A”的ASCII码 (1005H)=59H ;59H为“Y”的ASCII码 如果操作数为数值,其取值范围应为00HFFH; 若为字符串,其长度应限制在80个字符内。,3.4.1 汇编语言程序的伪指令,4. 字数据定义伪指令 DW 格式为:标号: DW 字数据表。 作用:从标号指定的地址单元开始,在ROM中定义字数据。 将数据根据从左到右的顺序依次存放在指定的存储单元中。 应特别注意:16位的二进制数,高8位存放在低地址单元,低8位存放在高地址单元。,3.4.1 汇编语言程序的伪指令,5. 赋值伪指令 EQU 格式为:符号名 EQU 表达式。 作用:将表达式的值或特定的某个汇编符号定义为一个指定的符号名。 【例】 SG EQU R0 ;SG与R0等值 DE EQU 40H ;DE与40H等值 MOV A, SG ;(A)(R0) MOV R7, #DE ;(R7)40H,3.4.1 汇编语言程序的伪指令,6. 位地址符号定义伪指令 BIT 格式为:符号名 BIT 位地址表达式 作用:将位地址赋给指定的符号名。 其中,位地址表达式可以是绝对地址,也可以是符号地址。 【例】 MN BIT P1.7 G5 BIT 02H 汇编后,位地址P1.7、02H分别赋给变量MN和G5。,3.4.1 汇编语言程序的伪指令,7. 数据地址赋值伪指令 DATA 格式为:符号名 DATA 数或表达式 DATA伪指令与EQU类似。但有些差别: (1) 用DATA定义的标识符可以先使用后定义, 而EQU定义的必须先定义后使用。 (2) 用EQU可以把一个汇编符号赋给字符名, 而DATA只能把数据赋给字符名。 (3) DATA可以把一个可求值表达式赋给字符名。 【例】 MAIN DATA 2000H 汇编后MAIN的值为2000H。,3.4.2 汇编语言程序的编辑与汇编,源程序的编写要以MCS-51单片机汇编语言指令和伪指令为基础,灵活运用指令完成确定的算法或解题思路。具体体工作过程如图3.9所示 图3.9 源程序编辑和汇编过程,3.4.3 汇编语言源程序的格式,源程序基本上由主程序、子程序、中断服务子程序组成。编制汇编语言源程序根据MCS-51单片机ROM的出厂内部定义,一般按这样的主框架编制: ;程序变量定义区 1 SDA BIT P1.3 ;定义SDA位变量 2 IO EQU P0 ;定义I/O等值P0口 3 ByteCon DATA 30H ;定义字节变量ByteCon ;程序主体部分 4 ORG 0000H ;程序段从0000H单元开始存放 5 LJMP MAIN ;跳到主程MAIN 6 ORG 0003H ;从0003H开始存放程序段 7 LJMP INTERUPT1 ;跳到外部中断0处理子程序,3.4.3 汇编语言源程序的格式,8 ORG 0030H ;从0030H开始存放程序段 9 MAIN: ;主程序标号说明 10 MOV SP,#30H ;设置堆栈指针,可以大于30H 11 LCALL INITIATE ;调用初始化子程 12 FCY: ;控制程序循环标号 LCALL SUB ;调用功能子程序 13 LJMP FCY ;跳到FCY构成循环 14 ORG xxxx ;以下功能程序的存放地址 15 INITIATE: ;初始化子程序标号 16 RET ;子程序返回 17 SUB: ;功能子程序标号 18 RET ;子程序返回 19 INTERUPT1: ;外部中断0功能程序 20 RETI ;中断返回 21 TABLE: ;表的标号 22 DB 00H,01H ;表的数据 END ;源程序结束,停止汇编。,3.4.3 汇编语言源程序的格式,第13行:把一些符号或变量定义成通俗的符号。 第4、6、8、14行:表示程序存储的开始地址。 第5行:使CPU在执行程序时,从0000H跳过各中断源的入口地址,主程序以跳转的目标地址作为起始地址开始编写。 第6行:中断服务程序的存储地址。 第9、12、15、17、19行:为程序语句标号。 第10行:设置堆栈指针一般最小设30H,栈区够用还可以增大。 第21、22行:为查表指令的表。,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号