数据传送指令之:单寄存器的Load/Store指令
2.STR指令
(1)指令编码格式
STR指令用于将一个32位的字数据写入到指令中指定的内存单元。
指令的编码格式如图5.4所示。
图5.4 STR指令编码格式
(2)指令的语法格式
STR{cond>} Rd>,addr_mode>
① cond>
为指令编码中的条件域。它指示STR指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
③ addr_mode>
它确定了指令编码中的I、P、U、W、Rn和addr_mode>位。所有的寻址模式中,都会确定一个基址寄存器Rn。
(3)指令操作的伪代码
指令操作的伪代码如下面程序段所示。
If ConditionPassed{cond} then
Memory[address,4]=Rd
(4)指令举例
LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件的控制操作等等,若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能,这样也就实现了程序散转。
① 变量访问
NumCount EQU 0x40003000 ;定义变量NumCount
LDR R0,=NumCount ;使用LDR伪指令装载NumCount的地址到R0
LDR R1,[R0] ;取出变量值
ADD R1,R1,#1 ;NumCount=NumCount+1
STR R1,[R0] ;保存变量
② GPIO设置
GPIO—BASE EQU 0xe0028000 ;定义GPIO寄存器的基地址
……
LDR R0,=GPIO—BASE
LDR R1,=0x00ffff00 ;将设置值放入寄存器
STR R1,[R0,#0x0C] ;IODIR=0x00ffff00,IOSET的地址为0xE0028004
③ 程序散转
…
MOV r2,r2,LSL #2 ;功能号乘以4,以便查表
LDR PC,[PC,r2] ;查表取得对应功能子程序地址,并跳转
NOP
FUN—TAB DCD FUN—SUB0
DCD FUN—SUB1
DCD FUN—SUB2
…
存储器相关文章:存储器原理
评论