汇编点亮LED
目录
一、ARM常用汇编指令
二、汇编点亮LED
2.1 GPIO简述
2.2 GPIO相关寄存器
2.3 LED原理图
2.4 汇编点亮LED
一、ARM常用汇编指令
常用汇编格式:
label : instruction @ comment
label:标号
instruction:具体汇编指令
comment:注释内容
常用段名:
.text:代码段
.data:初始化的数据段
.bss:未初始化的数据段
.rodata:只读数据段
.section:自定义段(如.section .vector)
常见伪操作:
.global:定义全局标号(如.global _start)
.align:字节对齐(如.align 2)
寄存器间数据传输:
mov:寄存器数据(或者是立即数)拷贝到另一个寄存器。
mov r0, r1
mov r0, #0x12
mrs:读程序状态寄存器。
mrs r0, cpsr
msr:写程序状态寄存器
msr cpsr, r0
mrc:读cp15协处理器
mrc r0, cpsr
mcr:写cp15协处理器
mcr cpsr, r0
内存与寄存器数据传输:
ldr:把内存数据(或者是立即数)加载到寄存器。
ldr r0, =0x80000000
ldr r1, [r0]
str:把寄存器数据写入到内存。
ldr r0, =0x80000000
str r1, [r0]
压栈和出栈:
push:把寄存器列表存入栈中。
push {r0~r3, r12}
pop:从栈中恢复寄存器列表。
pop {r0~r3, r12}
跳转:
b:跳转到目标地址
b main
bl:跳转到目标地址,并把当前pc指针值保存在lr寄存器中。
bl main
算术运算指令:
add:加法运算
add r1, r2, r3
add r1, r2
sub:减法运算
sub r1, r2, r3
mul:乘法运算
mul r1, r2, r3
udiv:除法运算
udiv r1, r2, r3
逻辑运算指令:
and:与
and r1, r2, r3
orr:或
orr r1, r2, r3
bir:位清除
bir r1, r2, r3
二、汇编点亮LED
2.1 GPIO简述
GPIO数量:
5组GPIO(GPIO1~GPIO5&