文档详情

ARM汇编程序设计.ppt

发布:2019-04-17约9.93千字共65页下载文档
文本预览下载声明
ARM 嵌入式系统 ARM汇编程序设计 1 汇编语言源程序 助记符 伪指令 宏指令 汇编指令和机器指令是“一一对应”的 汇编语言程序需由汇编程序将其汇编为机器语言 程序,才能被计算机执行。 汇编语言大体上包括了汇编指令、系统调用和中断、伪指令和宏指令,汇编语言是强烈依赖硬件和汇编环境的。 学习和使用汇编语言程序设计的原因 指令语句(instructions) 完成一定操作功能,能够翻译成机器代码的语句。 伪指令语句(directives, 指示性语句) 为汇编程序在翻译汇编语言源程序时提供有关信息,并不翻译成机器代码。 宏指令语句(marcos) 可看成是由若干条指令语句形成的语句,一条宏指令语句的功能相当于若干条指令语句的功能。 ARM程序设计基础 伪指令 宏与宏指令 ARM汇编语言规范(语句、表达式和运算符) ARM汇编语言的程序格式 2 伪指令 段定义 标号 符号定义伪指令 数据定义伪指令 汇编控制伪指令 其他伪操作 汇编语言程序示例 AREA Block, CODE, READONLY num EQU 10 ENTRY start LDR R0, =src LDR R1, =dst MOV R2, #num blockcopy LDR R3, [R0], #4 STR R3, [R1], #4 SUBS R2, R2, #1 BNE blockcopy B . AREA BlockData, DATA, READWRITE src DCD 0,1,2,3,4,5,6,7,8,9 dst SPACE 10*4 END 符号定义伪指令 定义全局变量: GBLA、GBLL和GBLS 定义局部变量: LCLA、LCLL和LCLS 变量赋值: SETA、SETL、SETS 通用寄存器列表定义名称:RLIST GBLA、GBLL和GBLS GBLA、GBLL和GBLS 语法格式: GBLA(GBLL或GBLS) 全局变量名 GBLA objectsize ;全局的数字变量objectsize ,为0 Objectsize SETA 0xff ;将该变量赋值为0xff SPACE objectsize ;引用该变量 GBLL statusB ;全局的逻辑变量statusB ,为{False} statusB SETL {TRUE} ;将该变量赋值为真 全局:作用范围为包含该变量的源程序 LCLA、LCLL和LCLS LCLA、LCLL和LCLS 语法格式: LCLA(LCLL或LCLS) 局部变量名 MACRO ;声明一个宏 $label message $a ;宏的原型 LCLS err ;声明一个局部变量err,为空串 err SETS “error no: ” ;向该变量赋值 $label ;代码 INFO 0,err:CC::STR:$a ;使用该串变量 MEND ;宏定义结束 局部:作用范围为包含该局部变量的宏代码的一个实例 SETA、SETL、SETS SETA、SETL和SETS 语法格式: 变量名 SETA(SETL或SETS) 表达式 在向变量赋值前,必须先声明该变量 RLIST RLIST 语法格式: 名称 RLIST {寄存器列表} Context RLIST {r0-r6,r8,r10-r12,r15} ;将寄存器列表名称定义为Context ,可在ARM指令LDM/STM中通过该名称访问寄存器列表。排列顺序无关 数据定义伪指令 DCB DCW(DCWU) DCD(DCDU) DCFD(DCFDU) DCFS(DCFSU) SPACE MAP FIELD DCB DCW(或DCWU) DCD(或DCDU) 语法格式: {标号} DCD(或DCDU) 表达式 DCD:“ ” DCD:字对齐 DCDU:不严格字对齐。 data1 DCD 1,5,20 ;其值为1,5,20 data2 DCD memaddr+4 ;分配一个字单元,其值为程序中标号memaddr加4个字节 DCFD(或DCFDU) 语法格式: {标号} DCFD
显示全部
相似文档