前言
准备开始学习汇编了,这样才能更加深入地了解ARM架构体系,也能够在调试程序的时候有更多思路。
参考文章:https://blog.csdn.net/zaassd/article/details/94900890
用法
作用:在汇编语言中,通常用术语过程(procedure)来指代子程序。在其他语言中,子程序也被称为方法或函数。
如下一段程序 当程序执行到
BL fun
这个部分的时候就会跳转到我们定义好的程序段(子程序)中去。
Reset_Handler PROC ;过程的开始
EXPORT Reset_Handler [WEAK] ;[WEAK] 弱定义,意思是如果在别处也定义该标号(函数),在链接时用别处的地址。
; 1、使能 GPIOB
LDR R0, =(0x40021000 + 0x18)
LDR R1, [R0]
ORR R1, R1, #(1<<3)
STR R1, [R0]
BL fun
; 2、把GPIOB5设置为输出引脚
LDR R0, =(0x40010C00 + 0x00)
LDR R1, [R0]
ORR R1, R1, #(1<<20)
STR R1, [R0]
所以fun这部分代码可以这样写
fun PROC
PUSH {R0}
POP {R0}
MOV PC,LR
ENDP
这样定义有助于我们更好地将两段程序分开
很简单,但是我花了很久才理解这个思想 因为以前都是理所当然地使用C语言去定义子程序。