Load/Store指令
Load/Store指令用于寄存器和内存间数据的传送。 Load 用于把内存中的数据装载到寄存器中。 Store用于把寄存器中的数据存入内存。
该集合的指令使用频繁,在指令集中最为重要,因为其他指令只能操作寄存器,当数据存放在内存中时,必须先把数据从内存装载到寄存器,执行完后再把寄存器中的数据存储到内存中。
Load/Store指令分为3类:
(1)单一数据传送指令(LDR和STR等) (2)多数据传送指令(LDM和STM) (3)数据交换指令(SWP和SWPB) Load/Store指令1-1
1.LDR 字数据加载指令
格式:LDR{} ,;
功能:把addr所表示的内存地址中的字数据装载到目标寄存器Rd中,同时还可以把合成的有效地址写回到基址寄存器。
地址addr可以是一个简单的值、一个偏移量,或者是一个被移位的偏移量。 寻址方式:
Rn:基址寄存器。 Rm:变址寄存器。
Index:偏移量,12位的无符号数。 LDR Rd,[Rn]
;把内存中地址为Rn的字数据装入寄存器Rd中 LDR Rd,[Rn,Rm]
;将内存中地址为Rn+Rm的字数据装入寄存器Rd中
Load/Store指令1-2 LDR Rd,[Rn,#index]
;将内存中地址为Rn+index的字数据装入Rd中 LDR Rd,[Rn,Rm,LSL#5] ;将内存中地址为Rn+Rm×32的字数据装入Rd LDR Rd,[Rn,Rm] !
;将内存中地址为Rn+Rm的字数据装入Rd,并将新地址Rn+Rm写入Rn LDR Rd,[Rn,#index] !
;将内存中地址为Rn+index的字数据装入Rd,并将新地址Rn+index写入Rn LDR Rd,[Rn,Rm,LSL#5]! ;将内存中地址为Rn+Rm×32的字数据装入Rd,并将新地址Rn+Rm×32写入Rn
Load/Store指令1-3 LDR Rd,[Rn],Rm
;将内存中地址为Rn的字数据装入寄存器Rd,并将新地址Rn+Rm写入Rn
LDR Rd,[Rn],#index;将内存中地址为Rn的字数据装入寄存器Rd,并将新地址Rn+index写入Rn