指令与伪指令
(1)(汇编)指令是CPU机器指令的助记符,经过汇编后会得到一串1、0组成的机器码,可以由CPU读取执行。
(2)(汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是汇编器环境提供的,目的是用来指导汇编的过程,经过汇编后伪指令最终不会生成机器码。
ARM汇编特点1:LDR/STR架构
(1)ARM采用RISC架构,CPU本身不能直接读取内存,而需要先将内存中内容加载入CPU的通用寄存器中才能被CPU处理。
(2)ldr(load register)指令将内存内容加载入通用寄存器。
(3)str(store register)指令将寄存器内容存入内存空间中。
(4)ldr/str组合用来实现ARM CPU和内存数据交换。
ARM汇编特点2:8种寻址方式
(1)寄存器寻址 mov r0, r1
(2)立即寻址 mov r0, #0xff00
(3)寄存器移位寻址 mov r0, r1, lsl#3 lsl(逻辑左移,左移一位相当于乘以2,左移三位相当于乘以8)
(4)寄存器间接寻址 ldr r1, [r2] (ld出现了,表示从内存到寄存器加载值)
(5)基址变址寻址 ldr r1, [r2, #4]
(6)多寄存器寻址 ldmia r1!, {r2-r7, r12}
(7)堆栈寻址 stmfd sp!, {r2-r7, lr}
(8)相对寻址 beq flag
flag:
ARM汇编特点3: 指令后缀 B H S
同一指令经常附带不同后缀,变成不同的指令。经常使用的后缀有:
B(byte)功能不变,操作长度变为8位
H(half word)功能不变,长度变为16位
S(signed)功能不变,操作数变为有符号 如 ldr ldrb ldrh ldrsb ldrsh
S(S标志)功能不变,影响CPSR标志位 如 mov和movs movs r0, #0
ARM汇编特点4:条件后缀
EQ/NE:等于/不等于(equal / not equal)
HS/LO:无符号数高于或等于/无符号数小于(higher or same/lower)
HI/LS:无符号数高于/无符号数低于或等于(higher/lower or same)
GE/LT:有符号数大于或等于/有符号数小于(greater or equal/less than)
GT/LE:有符号数大于/有符号数小于或等于(greater than/less or equal)
MI/PL:负/非负
VS/VC:溢出/不溢出(overflow set / overflow clear)
CS/CC:进位/无进位(carry set / carry clear)
更多嵌入式学习笔记、实战项目,点击这里即可免费领取