【发布时间】:2020-02-03 08:28:39
【问题描述】:
在我的课堂作业中,教授要求我们循环遍历一个由 10 个数字组成的给定数组并打印它们,以下是作为骨架代码提供的:
.data
arrayOfNums:
.word 0
.word 1
.word 255
.word 65536
.word 4294967295
.word 22
.word 314159
.word 161803
.word 42
.word 131929
K: .word 1337
.text
.globl main
main:
*Code goes here*
我不明白如何从 arrayOfNums 中删除单词列表。这是我第一次接触任何类型的汇编语言,所以详细的解释将非常有帮助,谢谢大家
【问题讨论】:
-
我建议您查看
la伪指令,用于将标签arrayOfNums表示的地址加载到寄存器中。该地址对应于数组的第一个元素(值0)。然后,使用寄存器中的此地址,您可以取消引用它以通过lw指令访问指向的元素。您可以一遍又一遍地执行最后一步,直到遍历所有元素,只需在每次迭代中将加载arrayOfNums的寄存器增加 4 以使寄存器内容指向下一个元素。 -
此外,如果每个值是连续的,您不需要为每个值编写专用的
.word指令。您可以通过用逗号分隔值来编写一个:.word 0, 1, 255, ... -
Pretty similar question 具有几乎相同的框架代码,但包含一个错误的解决方案。
标签: arrays loops assembly riscv