文章目录
跳转指令
@ 1.2 跳转指令:实现程序的跳转,本质就是修改了PC寄存器
@ 方式一:直接修改PC寄存器的值(不建议使用,需要自己计算目标指令的绝对地址)
@ MAIN:
@ MOV R1, #1
@ MOV R2, #2
@ MOV R3, #3
@ MOV PC, #0x18
@ MOV R4, #4
@ MOV R5, #5
@ FUNC:
@ MOV R6, #6
@ MOV R7, #7
@ MOV R8, #8
@ 方式二:不带返回的跳转指令,本质就是将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 跳转到FUNC并在LR中保存下一条指令的地址
@ MOV R4, #4
@ MOV R5, #5
@ FUNC:
@ MOV R6, #6
@ MOV R7, #7
@ MOV R8, #8
@ MOV PC, LR 最后将LR中指令的地址给PC,让它返回执行跳转完的下一条指令
@ 程序返回
ARM指令的条件执行
比较指令
CMP R1, R2:
没有存储结果的寄存器,结果在CPSR中的N\Z\C\V中显示
比较指令的实质是两个寄存器做减法SUBS

本文详细介绍了ARM指令中的跳转、条件执行和内存访问操作,包括比较指令如何通过SUBS实现,如何查看内存访问权限,以及ARM指令的寻址方式。此外,还提供了一个练习,要求用汇编语言计算100以内正整数之和,结果存于R2寄存器。

541

被折叠的 条评论
为什么被折叠?



