ARM汇编部分指令

ARM部分汇编指令:
1、数据处理指令
完成立即数和通用寄存器之间的数据处理。
1)数据传送指令
mov R0,#100
mov PC, LR
mvn R1, #100 —>按位取反,在传递
2)比较指令 —>自动影响标志位
CMP R0,#10 —>R0-10 —>NZCV
TEQ R1,#100
TST R1,#(1<<10)
CMN R0, #10 —>R0+10 —>NZCV
这影响的标志位影响的是 Condition Code Flags中的标志位 N Z C V
3)算术运算指令
ADD R1,R0,#10 –> R1=R0+10
SUB R2,R1,R0 –> R2=R1-R0
ADD R1,#10,R0 –>不合法
ADD R0, R0, R0 –>R0=R0+R0
ORR R1,R1,#(1<<10) –> R1=R1 | (1<<10)
BIC R1,R1,#(1<<10) –> R1=R1 & ~(1<<10)
AND R1,R1,#(1<<10) –> R1=R1 & (1<<10)
EOR R1,R1,#(1<<10) –> R1=R1 ^ (1<<10)

2、移位操作(数据处理指令)
LSL —>裸机左移
LSR —>裸机右移
例:
mov R0,#0
mov R2,#1

loop:
BIC R1,R1,R2,LSL R0 //R1 = R1 & ~(R2<

    STMFD SP!, {R0-R2}
    BL delay 
    LDMFD SP!, {R0-R2}

或:

    STMFD SP!, {R0,R1,R2}
    BL delay 
    LDMFD SP!, {R0,R1,R2} 

注意:入栈和出栈的循序与寄存器列表中,寄存器书写书写顺序无关,与寄存的编码有关。
汇编和C语言混编的时候参数的传递是依据ATPCS规则来执行的

猜你喜欢

转载自blog.csdn.net/mce_19/article/details/53351319