ARM GNU常用汇编语言介绍
ARM汇编语言源程序查办,一般由指令,伪操作,宏指令和伪指令组成.ARM汇编语言的规划根底是汇编伪指令,汇编伪操作和宏指令。伪操作,是ARM汇编语言程序里的一些特别的指令助记符,其效果首要是为完结汇编程序做各种准备工作,在源程序运转汇编程序时处理,而在计算机运转期间没有有机器碑文.也就是说,这些伪操作仅仅汇编过程中起效果,一旦汇编完毕,伪操作的任务也就随之消失.宏指令,是一段独立的程序代码,能够插在程序中,它经过伪操作来界说。1>宏在被运用之前有必要提早界说好,宏之间能够相互调用,也可自己递归调用。2>经过直接书写宏名来运用宏.并本具宏指令的格局输入输出参数.3>宏界说自身不发生代码,仅仅在调用它时把宏体刺进到原程序中.4>宏与C语言中的子函数形参和实参的调用类似,调用宏时经过实践的指令来替代宏体,完成相关的一段代码,但宏的调用与子程序的调用有实质的差异,即宏并不会节约程序的空间,其长处是简化程序代码,进步程序的可读性以及宏内容能够同步改.伪操作,宏指令一般与编译程序有关,因而ARM汇编语言的伪操作,宏指令在不同的编译环境下有不同的编写方法和规矩.伪指令也是ARM汇编语言程序里的特别助记符,也不在处理器运转期间由机器碑文,他们在汇编时将被适宜的机器指令替代成ARM或Thumb指令,然后完成真实的指令操作.现在常用的ARM编译环境有2种:1>ADS/SDT IDE:ARM公司开发,运用了CodeWarrior公司的编译器.2>集成了GNU开发工具的IDE开发环境;它由GNU的汇编器as,穿插汇编器gcc和衔接器id组成.ADS编译环境下的ARM伪操作和宏指令,可参阅北航出版社的<微控制器根底与实践》(周建功)这儿首要推荐ARM GNU常用汇编语言。4.1 ARM GNU常用汇编伪指令介绍1.abort.abort: 中止汇编.align absexpr1,absexpr2:以某种对齐方法,在未运用的存储区域填充值. 第一个值一共对齐方法,4, 8,16或32. 第二个表达式值一共填充的值.2.if...else...endif.if.else.endif: 支撑条件预编译3.include.include "file": 包括指定的头文件, 能够把一个汇编常量界说放在头文件中.4.comm.comm symbol, length:在bss段请求一段命名空间,该段空间的称号叫symbol, 长度为length. Ld衔接器在衔接会为它留出空间.5.data.data subsection: 阐明接下来的界说归属于subsection数据段.6.equ.equ symbol, expression: 把某一个符号(symbol)界说成某一个值(expression).该指令并不分配空间.7.global.global symbol: 界说一个大局符号, 通常是为ld运用.8.ascii.ascii "string": 界说一个字符串并为之分配空间.9.byte.byte expressions: 界说一个字节, 并为之分配空间.10.short.short expressions: 界说一个短整型, 并为之分配空间.11.int.int expressions: 界说一个整型,并为之分配空间.12.long.long expressions: 界说一个长整型, 并为之分配空间.13.word.word expressions: 界说一个字,并为之分配空间, 4bytes.14.macro/endm.macro: 界说一段宏代码, .macro一共代码的开端, .endm一共代码的完毕.15.reqname .req register name: 为寄存器界说一个别号.16.code.code [1632]: 指定指令代码发生的长度, 16一共Thumb指令, 32一共ARM指令.17.ltorg.ltorg: 一共当时往下的界说在归于当时段,并为之分配空间.4.2 ARM GNU专有符号1.@一共注释从当时方位到行尾的字符.2.#注释掉一整行.3.;新行分隔符.4.3 操作码1. NOPnop空操作, 相当于MOV r0, r02.LDRldr, = 相当于PC寄存器或其它寄存器的长搬运.3.ADRadr