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规则来执行的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值