ARM汇编(第一天)

ARM指令格式:
operation{cond}{s} Rd ,Rn, operand2
操作指令{条件}{状态} 目标寄存器,源寄存器,后续附件的操作
{}:可选项
如:ADD R2,R1,#100; 功能:R2 = R1 + 100

ARM的9种寻址方式
一个简单的汇编程序:

    AREA testhello,CODE,READONLY
    ENTRY
    CODE32
START
    ADD R1,R2,#4
    MOV R5,R1
    END

ARM的六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM 

内存操作--读取指令
OpcodeOperandsDescription
LDRRn,Addr按照字长(32b)读取到Rn
LDRB 按照字节(8bit)读取到Rn
LDRH 按照半字(16b)读取到Rn
STRRn,Addr按照字长(32b)写入Addr
STRB  
STRH  
多寄存器内存访问指令(load/store multi)
LDM(读出内存)LDM{mode} Rn,{Rs,Re}例如:LDMIA R1,{R5,R9}

Rn为基址寄存器(n≠15),mode为地址操作模式
功能:以R1存储的内容为内存地址,读取内存地址的内容写入R5,之后读取内存地址加4后的内容写入R9

STM(写入内存)STM{mode} Rn,{Rs,Re}例如:STMIB R1,{R5,R9}
功能:以R1存储的内容为内存地址(假定为a),将R5内容写入内存(a+4),之后将R9的内容写入(a+8)
地址模式:
数据块模式:
IA(Increase after)传输后地址加4,IB(Increase before)传送前加4
DA(Decrease After)传输后减4,DB(Decrease before)传输后加4
堆栈模式:
EA(Empty add)空递增堆栈,ED空递减堆栈
FA(Full     add) 满递增堆栈,FD满递减堆栈
数据交换指令(Swap)
SWPRd,Rn1,[Rn2]内存和寄存器字交换(Rn1将数值赋给[Rn2],同时将Rn2内容作为内存地址的数据传给Rd)
SWAPB 字节交换

MOV R1,#0x00110000   ;第二操作数为立即数时,ARM指令中如何判断一个立即数是有效立即数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值