1. 子程序 的调用
BL xxxx
......
xxxx
......
MOV PC , LR
或B LR
BX LR
STMFD SP!, {R0-R7 ,PC}
2. 数据比较 跳转
CMP R1,R2
CMP R1,R2
ADDHI R1,R2,R1
ADDLS R1,R2,R2
BNE WAIT
3. 循环
MOV R1,#10
LOOP
........
SUB R1,R1,#1
CMP R1, 0
BEQ LOOP
4. 数据块的复制
MOV R1,=DATA_DST
MOV R2,=DATA_SRC
MOV R3,#10
LOOP
LDMFD R2!,{R4-R8}
STMFD R1!,{R4-R8}
SUBS R3,R3,#1
BNE LOOP
5. 堆栈操作
OUTDATA
STMFD SP! {R0-R7,LR}
BL DELAY
.......
LDMFD SP! {R0-R7,PC}
B FUN2
........
8.查表功能
LDR R1, =TABLE
LDR R2, [R1 ,R5, LSL #2] ;R5 是要查询的表的标号
........
TABLE DCD 0X11,OX22,OX33
DCD 0X23,...
9.长跳转
ADD LR, PC , #4
LDR PC, [PC,#-4]
DCD LADDR_FUN
RET_FUN....
也可以用 LDR PC, =LADDR_FUN 实现跳转
10.信号量
DISP_SEM EQU 0x40002A00
DISP_WAIT
MOV R1 ,#0
LDR R0, =DISP_SEM
SWP R1,R1,[R0]
CMP R1,#0
BEQ DISP_WAIT
11.伪指令的使用
LDR R1,=0x00120021
LDR R0,=RR_TAB
NOP
B ; 死循环
12. 外围部件的控制
LDR R0, =GPIO_BASE
MOV R1,#0x00
STR R1,[R0,#0x04] ; IOSET 0x00
MOV R1,#0x10
STR R1,[R0,#OxC0] ; IOCLR 0x101