您的位置:首页 > 其它

汇编指令的学习2——常用的ARM指令

2017-05-04 19:57 357 查看
一、常用ARM指令1:数据处理指令

(1)数据传输指令  

mov

mvn(源目标按位取反后赋给目标)

(2)算术指令

add sub

rsb adc sbc rsc 

(3)逻辑指令

and orr eor     

bic(位清除指令)bic r0,r1,#0x1f @将r1中的数的bit0~bit4清零后,赋给r0。

(4)比较指令(用来比较两个寄存器中的数,不加S后缀就可以影响CPSR中的标志位)

cmp cmn tst teq

cmp r0,r1@相当于sub r2, r0, r1

cmn r0,r1@相当于add r0,r1(是否-1,1这种类型?)

tst r0,#0xf@测试bit0~bit3是否为0

(5)乘法指令

mvl mla umull umlal smull smlal

(6)前导零计数clz

二、常用ARM指令2:cpsr访问指令   mrs & msr

(1)mrs用来读psr,msr用来写psr

(2)CPSR寄存器比较特殊,需要专门的指令访问,这就是mrs和msr。

三、常用ARM指令3:跳转(分支)指令  b & bl & bx

(1)b 直接跳转(就没打开算返回);

(2)bl branch and link,跳转前把返回地址放入lr中,以便返回,以便用于函数调用;

(3)bx跳转同时切换到ARM模式,一般用于异常处理的跳转。

四、常用ARM指令4:访存指令  ldr/str & ldm/stm & swp

(1)单个字/半字/字节访问 ldr/str

(2)多字批量访问  ldm/stm

(3)swp r1, r2, [r0] @[r0]写到r1,r2写到[r0]

(4)swp r1, r1, [r0]

五、ARM汇编中的立即数

(1)合法立即数与非法立即数

ARM指令都是32位,除了指令标记和操作标记外,本身只能附带很少位数的立即数。因此立即数有合法和非法之分。

合法立即数:经过任意位数的移位后非零部分可以用8位表示的即为合法立即数。

ldr伪指令可以不用人为去判断合法(非合法)立即数。

六、常用ARM指令5:软中断指令swi(software interrupt)

软中断指令用来实现操作系统中系统调用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: