在不使用la的情况下在MIP中打印字符串

时间:2012-12-11 17:47:49

标签: arrays mips

我已经有了创建一个int数组,总结并打印平均值的赋值。一直不使用la。好吧,我的主要结构都做得很好,但是我遇到的一件事就是打印我的字符串以获取提示。

我需要知道的是,我需要移动指针,我必须访问我的.data部分中的字符串。以下是我的数据部分......

    .data
size: .word 10
nums: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

prompt: .asciiz "\nEnter ten integers : "

theaverage : .asciiz "\nThe average is "
greaterthan : .asciiz "\nThese integers are greater than the average   \n----------------------------------------- "
lessthan : .asciiz "\nThese integers are less than the average \n-------------------------------------- "

我的问题是我需要在多大程度上增加$ t0以访问我的变量提示,平均值,更大值,更低。我能够自己完成整个阵列。我开始在.data部分的基地址处使用$ t0,就像这样......

main :
        lui $t0, 0x1001 # Base address of .data segment

1 个答案:

答案 0 :(得分:0)

您需要知道数据部分中存储的每个元素的大小。

例如,每个.word消耗4个字节,每个字符消耗1个字节。

您还必须考虑.asciiz字符串以空字节结尾。

因此,例如,要知道prompt的起始地址,您必须添加基地址加4(size)加40(nums数组)。

然后,theaverageprompt地址加17开始(\n计为1个字节,结尾null都被计算在内);等等其他标签。

另请注意,.data段更有可能从地址0x1000开始,而不是如你所说的那样是0x1001。