13_ARM汇编自学笔记指令系统之批量数据加载存储指令

批量数据加载/存储指令

ARM 微处理器所支持批量数据加载/存储指令可以一次在一片连续的存储器单元和多个寄存器之间传送数据,批量加载指令用于将一片连续的存储器中的数据传送到多个寄存器,批量数据存储指令则完成相反的操作。常用的加载存储指令如下:

— LDM 批量数据加载指令

— STM 批量数据存储指令

LDM(或 STM)指令

LDM(或 STM)指令的格式为:

LDM(或 STM){条件}{类型} 基址寄存器{!},寄存器列表{∧ }

LDM(或 STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。其中,{类型}为以下几种情况:

I A  每次传送后地址加 1;

I B  每次传送前地址加 1;

DA  每次传送后地址减 1;

DB  每次传送前地址减 1;

FD  满递减堆栈;

ED  空递减堆栈;

FA  满递增堆栈;

EA  空递增堆栈;

{!}为可选后缀,若选用该后缀,则当数据传送完毕之后,将最后的地址写入基址寄存器,否则基址寄存器的内容不改变。基址寄存器不允许为 R15,寄存器列表可以为 R0~R15的任意组合。{∧ }为可选后缀,当指令为 LDM且寄存器列表中包含 R15,选用该后缀时表示:除了正常的数据传送之外,还将 SPSR复制到 CPSR。同时,该后缀还表示传入或传出的是用户模式下的寄存器,而不是当前模式下的寄存器。指令示例:

STMFD R13!,{R0,R4-R12,LR} ;将寄存器列表中的寄存器(R0,R4 到 R12,LR)存入堆栈。

LDMFD R13!,{R0,R4-R12,PC} ;将堆栈内容恢复到寄存器(R0,R4 到 R12,LR)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值