ARM指令的寻址方式-块复制寻址
张立新
(北京信息职业技术学院)
要:块复制寻址是多寄存器寻址的又一特殊形式,一般用于内存复制。它利用多寄存器
传送指令将一块数据从存储器的某一位置复制到另一位置。
关键词: 寻址方式/
块复制寻址是多寄存器寻址的又一特殊形式,一般用于内存复制。它利用多寄存器传送指令将一块数
据从存储器的某一位置复制到另一位置。
在进行数据复制时,先设置好源数据指针和目标指针,然后使用块复制寻址指令进行读取和存储。若
指令后缀名不同,则寻址方式也不同。按指针的增减方式,块复制寻址分为以下 4 种。见图 1。
LDMIA/STMIAZ后增
LDMIB/STMIBZ先增
LDMDA/STMDA; 后减
LDMDB/STMDBZ先减
图 1 块复制寻址方式
上图表明了如何将 4 个寄存器存到存储器中,以及使用自动变址时如保修改基址寄存器。执行指令之
前的基址寄存器值为 R10,自动变址之后的基址寄存器为 R10’。引用“!”自动变址 4 个字后,R10 的
内容增加或减少 16 个字节。
多寄存器传送指令用于一块数据从存储器的某一位置拷贝到另一位置。
块拷贝寻址指令举例如下:
STMIA R0!,{R1-R7} ;将 R1~R7 的数据保存到存储器中,存储器指针在保存第一个值之后增加 ,
增长方向为向上增长。
STMIB R0!,{R1-R7} ;将 R1~R7 的数据保存到存储器中,存储器指针在保存第一个值之前增加 ,
增长方向为向上增长。
STMDA R0!,{R1-R7} ;将 R1~R7 的数据保存到存储器中,存储器指针在保存第一个值之后增加,
增长方向为向下增长。
STMDB R0!,{R1-R7} 将 R1~R7 的数据保存到存储器中,存储器指针在保存第一个值之前增加,
增长方向为向下增长。
1 / 2
ARM 指令的寻址方式-块复制寻址