新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 数据传送指令之:单寄存器的Load/Store指令

数据传送指令之:单寄存器的Load/Store指令

作者:时间:2013-09-13来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/257080.htm

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

存储器相关文章:存储器原理




评论


相关推荐

技术专区

关闭