汇编语法
#LDR和MOV的使用
MOV R0,R1 @将寄存器 R1 中的数据传递给 R0,即 R0=R1
MOV R0, #0X12 @将立即数 0X12 传递给 R0 寄存器,即 R0=0X12
LDR R0, =0X0209C004 @将寄存器地址 0X0209C004 加载到 R0 中,即 R0=0X0209C004
LDR R1, [R0] @读取地址 0X0209C004 中的数据到 R1 寄存器中
_bss_start:
.word __bss_start //相当于定义一个变量 _bss_start为变量名
//_bss_start值等于__bss_start值,__bss_start 存储的是bss段的启示地址
.global _bss_end
_bss_end:
.word __bss_end
/* 清除BSS段 */
ldr r0, _bss_start /* __bss_start为变量 bss起始地址赋给r0*/
//stmia指令将起始地址r0清0后,地址加1
ldr r1, _bss_end
mov r2, #0
LDR r, label 和 LDR r, =label的区别:
LDR r, =label 会把label表示的值加载到寄存器中,而LDR r, label会把label当做地址,把label指向的地址中的值加载到寄存器中。
譬如 label的值是 0x8000, LDR r, =label会将 0x8000加载到寄存器中,而LDR r, label则会将内存0x8000处的值加载到寄存器中。