×
单片机 > 单片机程序设计 > 详情

ARM汇编指令集1

发布时间:2020-12-25 发布时间:
|

(汇编)指令是CPU机器指令的助记符,经过编译过会得到一串0011组成的机器码,可以由CPU读取执行。


(汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。

 

两种不同风格的ARM指令

--ARM官方的ARM汇编风格:指令一般用大写,Windows中的IDE开发环境(如ADS、MDK)常用。如:LDR  R0,[R1]

--GNU风格的ARM汇编:指令一般用小写字母、Linux中常用。如:ldr  r0,[r1]

 

ARM 汇编的特点1:LDR/STR架构

 --ARM采用RISC架构,CPU本身不能直接读取内存,而需要先将内存中内容载入CPU中通用寄存器中才能被CPU处理。

  --ldr(load register)指令将内存内容加载入通用寄存器。

  --str(store register) 指令将寄存器内容存入内存空间中。

  --ldr/str组合用来实现ARM CPU和内存数据交换。

 ARM汇编特点2: 8种寻址方式

  --寄存器寻址                  mov   r1,r2

  --立即寻址                     mov   r0,#0xFF00

  --寄存器移位寻址             mov   r0,r1,lsl#3

  --寄存器间接寻址             ldr     r1,[2]       ;r2里的数据为内存地址里的数据赋值给r1(有点像C语言的指针)

  --基址变址寻址                ldr     r1,[r2,#4] ;  r2里的数据为内存地址加4的地址里的数据赋值给r1(有点像C语言的指针)

  --多寄存器寻址                ldmia  r1!,{r2-r7,r12};r1里的数据作为起始内存地址依次往后将r2,r3,r4,r5,r6,r7,r12里的数据依次赋值到内存里(类似于数组)

  --堆栈寻址                     stmfd  sp!,{r2-r7,lr};sp里的数据作为起始内存地址依次往后将r2,r3,r4,r5,r6,r7,lr里的数据依次赋值到内存里(栈的操作)

  --相对寻址                     beq     flag;直接跳转到flag为标号的地方

ARM汇编特点3:指令后缀

--同一指令经常附带不同的后缀,变成不同的指令。

  经常使用的后缀有:

                               B(byte)功能不变,操作长度变为8位

                               H(half word)功能不变,长度变为16位

                               S(signed )功能不变,操作数变为有符号     如:ldr ldrb  ldrh ldrb ldrh


关键字:ARM  汇编指令集 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项