我已经有了创建一个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
答案 0 :(得分:0)
您需要知道数据部分中存储的每个元素的大小。
例如,每个.word
消耗4个字节,每个字符消耗1个字节。
您还必须考虑.asciiz
字符串以空字节结尾。
因此,例如,要知道prompt
的起始地址,您必须添加基地址加4(size
)加40(nums
数组)。
然后,theaverage
从prompt
地址加17开始(\n
计为1个字节,结尾null
都被计算在内);等等其他标签。
另请注意,.data段更有可能从地址0x1000开始,而不是如你所说的那样是0x1001。