DAY7. ARM汇编指令集-跳转与储存器访问指令
如果出现图片无法查看可能是网络问题,我用的GitHub+图床保存的图片,可以参考我另外一篇文章GitHub的使用方法含网络问题解决
GitHub使用教程含网络问题_github加速器_肉丸子QAQ的博客-CSDN博客
1. 跳转指令
跳转指令:实现程序的跳转,本质就是修改了PC寄存器
main函数中调用子函数
- 方式一:直接修改PC寄存器的值(不建议使用,需要自己计算目标指令的绝对地址)
MAIN: @这个只是一个标号,不是指令
MOV R1, #1
MOV R2, #2
MOV R3, #3
MOV PC, #0x18 @0x18是因为指令按照顺序存储,FUNC函数的起始位置是 MOV R6, #6 从上往下数是0x18
MOV R4, #4
MOV R5, #5
FUNC:
MOV R6, #6
MOV R7, #7
MOV R8, #8
- 方式二:不带返回的跳转指令(
B
),本质就是将PC寄存器的值修改成跳转标号下指令的地址
MAIN:
MOV R1, #1
MOV R2, #2
MOV R3, #3
B FUNC
MOV R4, #4
MOV R5, #5
FUNC:
MOV R6, #6
MOV R7, #7
MOV R8, #8
- 方式三:带返回的跳转指令,本质就是将PC寄存器的值修改成跳转标号下指令的地址,同时将跳转指令下一条指令的地址存储到LR寄存器
MAIN:
MOV R1, #1
MOV R2, #2
MOV R3, #3
BL FUNC
MOV R4, #4
MOV R5, #5
FUNC:
MOV R6, #6
MOV R7, #7
MOV R8, #8
MOV PC, L