首先,让我这样说......我不希望任何人给我一个答案......我想指出正确的方向!
我在这个程序中有一个整数数组....例如:
numbers:
.word 17
.word -50
.word 1
.word -999
我有一个贯穿它们的while循环,并在一个新行上打印每个循环。这很好。 (-999是终止号码,不包含在打印输出中)
我还需要以相反的顺序打印它们。我知道我可以使用一个循环来计算元素的数量,然后让另一个循环从最后一个地址开始然后向后......这看起来效率很低。
有没有办法在没有先循环的情况下找到数组中最后一个元素的地址?如果没有,我可以这样做,我提到,只是想确保我在程序中尽可能高效。
提前致谢!
答案 0 :(得分:1)
如果你被允许做任何你想要的装配技巧,你可以做类似的事情
numbers:
.word 17
.word -50
.word 1
last:
.word -999
并使用类似此伪代码的代码
for (ptr = last; ptr != numbers; ) print(*--ptr);
换句话说,放一个标签和数组的末尾然后向后走,直到你到达数组的开头,使用指针比较而不是寻找终结符(-999)。
或者,为避免更改代码太多,
怎么样 .word -999
numbers:
.word 17
.word -50
.word 1
last:
.word -999
向后走,直到找到-999?