一、程序跳转指令
1、修改pc的值实现跳转
mov pc ,#0x00
不建议使用,因为要自己计算你要跳的地址(有的时候你不知道地址,知道的情况下是可以用的)
2、跳转指令 B
B function
用法:
它不会去修改LR的值,意味着程序无法跳转回来3、带返回的跳转指令
BL function
用法
它可以用LR去保存跳转指令下一条指令的地址然后可以使用mov PC LR 的方法跳转回来
二、条件码
@条件码是判断一件事是否成立,如果是执行如果不是则跳过
@有点像C 里面的 if
@但是条件码并不是一条指令,它只是一个后缀(加在指令上的一个后缀,如果条件码成立则执行该指令,否则跳过)
@一般作用与cmp 指令后面
CMP (COMPARE) 比较指令
用法 CMP R1 , R2
比较R1 R2 的值 (本质上为减法指令(是SUB)但是它没有目标寄存器)也就是没有返回值 它作用也CPSR的N Z C V 为
请看图:
通过判断N,Z,C ,V的状态(0OR1)就可以看出CMP R1 , R2
然后再通过下一条指令加上条件码判断CMP 是否成立来判断该指令是否执行
讲这么多,什么是条件码?
看图:
这个助记后缀符就是条件码
用法:
里面的EQ NE GE LT等都是条件码 @前面提到条件码和if的功能相似那么我们用它来实现c中IF的功能
练习:
———————————————————————————————
汇编代码: