是的。这是做作业,所以请不要谴责我。我不需要确切的答案,但是要指明方向。
我提供的入门说明非常简单。
text DCB 'K','D','S','E'
LDR R0, =text
我必须将这些字符加载到内存中,然后使用预索引寻址重新排列它们以创建单词“ desk”。不幸的是,这些都是角色的事实让我很头疼。我尝试查找多种资源,阅读提供的书籍,观看许多不同的视频,但我并没有全神贯注于如何开始使用它。
答案 0 :(得分:2)
显然,因为ARM还将术语“预索引”用于简单的寄存器偏移量寻址,所以它就像将4个字符加载到4个寄存器然后将其写出一样简单。实际上,由于S
停留在同一位置,因此您只需要移动3。例如,
LDR R0, =text
LDRB R1, [R0, #0]
LDRB R2, [R0, #1]
LDRB R3, [R0, #3]
STRB R1, [R0, #3]
STRB R2, [R0, #0]
STRB R3, [R0, #1]
其他文献将上述内容称为“立即偏移量”,而只有回写是“预索引”的。对于这种情况,很容易将代码重写为:
LDR R0, =text
LDRB R1, [R0, #0]!
LDRB R2, [R0, #1]!
LDRB R3, [R0, #2]!
STRB R1, [R0, #0]!
STRB R2, [R0, #-3]!
STRB R3, [R0, #1]!