(第4章 汇编语言程序设计)课件

上传人:我*** 文档编号:145244106 上传时间:2020-09-18 格式:PPT 页数:65 大小:194.50KB
返回 下载 相关 举报
(第4章 汇编语言程序设计)课件_第1页
第1页 / 共65页
(第4章 汇编语言程序设计)课件_第2页
第2页 / 共65页
(第4章 汇编语言程序设计)课件_第3页
第3页 / 共65页
(第4章 汇编语言程序设计)课件_第4页
第4页 / 共65页
(第4章 汇编语言程序设计)课件_第5页
第5页 / 共65页
点击查看更多>>
资源描述

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

1、4.1 汇编语言-伪操作,四 、汇编控制伪操作 1、功能:指示编译器编译流程 2、伪操作种类: MACRO和MEDN IF,ELSE和ENDIF WHILE和WEND MEXIT,4.1 汇编语言-伪操作,3、宏 (1)、格式 MACRO $标号 宏名 $参数1, $参数2, $参数3 指令序列(宏体) MEND 格式说明 宏定义符 起始定义符 MACRO 结束定义符 MEND $标号:宏内局部标号,可选参数,展开时标号会被替换为用户定义编号 参数:可以无参数,1个参数或多个参数 展开时由相应的值代替,4.1 汇编语言-伪操作,(2)例如 MACRO $lable mysub2 $sp1,$s

2、p2 SUB sp1,sp2,2 MEND (3)宏调用 宏名 参数表 例如 Exam mysub2 R0,R1,4.1 汇编语言-伪操作,4、条件伪指令IF ELSE ENDIF (1)、格式 IF 逻辑表达式 代码段1 ELSE 代码段2 ENDIF 说明: IF ELSE ENDIF 为条件伪指令定义符 可以分别用 | 替代 (2)功能 逻辑表达式=true (真) 编译代码段1 =false(假) 编译代码段2,4.1 汇编语言-伪操作,(3)例如 AREA Word, CODE, READONLY GBLL isbig ;定义全局变量isbig isbig SETL true ; i

3、sbig赋值true ENTRY ; 程序入口 start IF isbig=true ;条件伪指令 ADD R0,R0,#1; ;表达式=true ,编译此指令 ELSE sub r0,r0,#1; ;不编译此指令 ENDIF END,4.1 汇编语言-伪操作,3ffffff40 xe800e800 stmda r0,r11,r13-pc 3ffffff80 xe7ff0010 dci 0 xe7ff0010 ; ? undefined 3ffffffc0 xe800e800 stmda r0,r11,r13-pc start0 xe2800001 add r0,r0,#1 编译生成指令 4

4、00000040 xe3a00001 mov r0,#1 400000080 xe7ff0010 dci 0 xe7ff0010 ; ? undefined 4000000c0 xe800e800 stmda r0,r11,r13-pc,4.1 汇编语言-伪操作,5、伪指令当语句WHILE WEND (1)、格式 WHILE 逻辑表达式 代码段 WEND 说明: WHILE WEND为当语句伪指令定义符 (2)功能 根据条件重复汇编相同的,或几乎相同的代码,4.1 汇编语言-伪操作,6、伪指令MEXIT (1)、格式 MEXIT 说明: MEXIT为伪指令定义符 (2)功能 退出宏,4.1 汇

5、编语言-其他伪指令,五 、其他伪指令 1、ASSERT 断言错误伪指令 (1)、格式 ASSERT 逻辑表达式 说明: ASSERT为伪指令定义符 (2)功能 用于表示编译必须满足一定条件,否则编译器报错 (3)例如 ASSERT ver7 ;保证Ver7,4.1 汇编语言-其他伪指令,2、AREA (1)、格式 AREA 段名 属性 说明: AREA段定义符 如果段名数字开头,则用“|”将段名括起来 (2)功能 定义段 (3)常见段属性 DATA 数据段 CODE代码段 READONLY 段只读 READWRITE段读写 ALIGN= 表达式 对齐属性,为2的表达式次方,表达式取值131 C

6、OMMON 通用段 ;不包含用户代码和数据 (4)注意:一个程序至少包含一个段,可以有多个数据段,多个代码段 (5)例如 AREA |.text|,CODE,READONLY,4.1 汇编语言-其他伪指令,3、ALIGN (1)、格式 ALIGN 表达式,偏移量 (2)功能 存储器中指令、数据地址通过添加字节满足一定对齐方 式 表达式:对其方式,1,2,4,8 (2的n次幂) 没有表达式,为默认方式(字对其) 偏移量:对齐到2的n次幂+偏移量,4.1 汇编语言-其他伪指令,Thumb:伪指令ADR要求地址字对齐,Thumb标号可能不是字对齐,要求使用ALIGN安排地址标号为字对齐. ARM处理

7、器使用cache技术时,采用其他对齐方式,如16字节对齐.为了发挥cache最大性能,程序存储器、数据存储器必须与cache对齐方式一致. LDRD,STRD要求8字节对齐 指令标号根据需要对齐 (3)注意:对齐=为2的表达式次方,表达式取值131,4.1 汇编语言-其他伪指令,(4)例如 AREA |.data| ,DATA,READWRITE,ALIGN=2 start LDR R0,=0 x40002000; MOV R13,R0 LDMFD R13!,R0,R1 d DCB 0 x03 ALIGN stop MOV r0, #0 x18 LDR r1, =0 x20026 SWI 0

8、x123456,4.1 汇编语言-其他伪指令,4、CODE16/CODE32 (1)、格式 CODE16/CODE32 说明: CODE16/CODE32指令集指示符 (2)功能 CODE16 指示随后的指令是Thumb指令 CODE32 指示随后的指令是ARM指令,4.1 汇编语言-其他伪指令,(3)、例如1 AREA Word, CODE, READONLY ENTRY start CODE32 ;ARM指令 LDR r0,=L1 ADD r0,r0,#1 BX R0 L1 CODE16 ;thumb指令 ADD r3,r3,#1 END,4.1 汇编语言-其他伪指令,(3)、例如2 AR

9、EA ThumbSub, CODE, READONLY ENTRY CODE32 header ADR r0, start +1 ; BX r0 ;BX 位0=1 填写状态寄存器T(5)位 ;T=1 Thumb ;T=0 ARM CODE16 start MOV r0, #10 MOV r1, #3 BL doadd,4.1 汇编语言-其他伪指令,stop MOV r0, #0 x18 LDR r1, =0 x20026 SWI 0 xAB doadd ADD r0, r0, r1 MOV pc, lr END,4.1 汇编语言-其他伪指令,5、ENTRY (1)、格式 ENTRY 说明: E

10、NTRY程序入口定义符 (2)功能 告诉编译器程序的入口 (3)说明 编程时可以有多个入口 链接时,指定唯一入口,4.1 汇编语言-其他伪指令,(3)、例如 AREA Word, CODE, READONLY ENTRY ;入口 start CODE32 ;ARM指令 LDR r0,=L1 ADD r0,r0,#1 BX R0 CODE16 ;thumb指令 L1 ADD r3,r3,#1 END,4.1 汇编语言-其他伪指令,6、END (1)、格式 END 说明: END程序结束定义符 (2)功能 告诉编译器程序结束 (3)例如 AREA Word, CODE, READONLY ENTR

11、Y ;入口 start CODE16 ;thumb指令 ADD r3,r3,#1 END,4.1 汇编语言-其他伪指令,7、EQU (1)、格式 名称 EQU 表达式,类型 说明: EQU为定义符 (2)功能 将程序中的数字常量,标号,基于寄存器的值赋予一个等效的名字 可用“*”代替 (3)例如 num1 EQU 1234 addr EQU str1+0 x50 D1 EQU 0 x2400,CODE32 ;该处为ARM指令,4.1 汇编语言-其他伪指令,8、EXPORT/GLOBAL (1)、格式 EXPORT/GLOBAL 标号,WEAK 说明: EXPORT/GLOBAL为定义符 (2)

12、功能 EXPORT:声明一个标号,可以被其他文件引用 GLOBAL与EXPORT同 ,WEAK其他的同名标号优于本标号被引用,4.1 汇编语言-其他伪指令,(3)例如 AREA|.text|,CODE,READONLY main PROC ENDP EXPORT main;声明一个外部调用函数, END,4.1 汇编语言-其他伪指令,9、IMPORT (1)、格式 IMPORT 名称,WEAK 说明: IMPORT为定义符 (2)功能 IMPORT :告诉编译器当前的编号不是在本文件定义的 ,WEAK如果所有的源文件都没有找到这个标号的定义,编译器也不会提示错误信息,同时编译器也不会到当前没有

13、被INCLUDE进来的库中去查找该符号,4.1 汇编语言-其他伪指令,(3)例如 AREAmycode,CODE,READONLY IMPORT_ printf ;通知编译器当前要引用函数_ printf在其他文件 定义 END,4.1 汇编语言-其他伪指令,10、EXTERN (1)、格式(变量) EXTERN 名称,WEAK 说明: EXTERN为定义符 (2)功能 EXTERN :告诉编译器当前的标号(变量)不是在本文件定义的 ,WEAK如果所有的源文件都没有找到这个标号的定义,编译器也不会提示错误信息,同时编译器也不会到当前没有被INCLUDE进来的库中去查找该符号,4.1 汇编语言-

14、其他伪指令,(3)例如 AREA|.text|,CODE,READONLY EXTERN_ printf,WEAK;告诉编译器当前文件要引用函数,如果找不到,则不提示错误 END,4.1 汇编语言-其他伪指令,11、GET/INCLUDE (1)、格式(变量) GET 文件名 说明: GET为定义符 (2)功能 GET :引用一个源文件,编译时,在引用位置展开 INCLUDE与GET同,4.1 汇编语言-其他伪指令,(3)例如 AREAmycode,DATA,READONLY GETE:codeprog1.s;通知编译器在当前源文件包含源文件E:code prog1.s GET prog2.s

15、 ;通知编译器当前源文件包含可搜索目录下的prog2.s END,4.1 汇编语言-其他伪指令,12、INCBIN (1)、格式 INCBIN 文件名 说明: INCBIN为定义符 (2)功能 INCBIN : INCBIN将一个数据文件或者目标文件包含到当前的源文件中,编译时被包含的文件不作任何变动地存放在当前文件中,编译器从后面开始继续处理。,4.1 汇编语言-其他伪指令,(3)例如 AREAconstdata,DATA,READONLY INCBINdata1.dat;源文件包含文件data1.dat INCBIN E:DATAdata2.bin ;源文件包含文件E:DATAdata2.bin END,4.1 汇编语言-其他伪指令,13、RN (1)、格式 名称 RN 表达式 说明: RN为定义符 表达式:寄存器名称,寄存器编码 (2)功能 为寄存器定义一个别名, (3)例如: count RN R0 ;R0别名count count1 RN 0001 ;R1,4.1 汇编语言-其他伪指令,14、ROUT (1)、格式 名称 ROUT 说明: ROUT为定义符 (2)功能 为局部变量定义作用范围.一般在两个ROUT之间 (3)例如: count

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

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

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