[
指令编码格式
内存地址计算方式:
内存地址address为基址寄存器的值加上/减去索引寄存器Rm的值。
当U = 1时,address = Rn + Rm
当U = 0时,address = Rn - Rm
当指令执行条件满足时,生产的地址address将写入基址寄存器Rn中。这种方式为事先访问方式。
指令中寻址方式的语法格式
[
-- !用来设置W位,更新基址寄存器的内容。
伪代码如下:
if U==1 then
address = Rn + Rm
else /*U == 0*/
address = Rn - Rm
if ConditionPassed(cond) then
Rn = address
使用说明:
标志位L、S的用法与[
当R15用作基址寄存器Rn或Rm时,会产生不可预期的结果。
当Rn和Rm是同一个寄存器时,会产生不可预期的结果。
示例:
LDRH R0,[R1,R2]! ;将内存单元(R1+R2)中的半字数据读取到R0中,R0中高16位设置成0;R1 = R1 + R2
閱讀更多 劉帥嵌入式系統 的文章