在MIPS程序的.data部分中,我定义了两个char变量d和h。
.data
d: .word
h: .word
在我的.text部分中,我尝试将d的值设置为'i',将h的值设置为'k'。
.text
#setting d = to 'i'
la $s0, d
li $s1, 'i'
sb $s1, 0($s0)
#setting h = to 'x'
la $s0, h
li $s1, 'x'
sb $s1, 0($s0)
但是,当我随后打印出d的值和h的值时,它们都是'x'。
#printing d
lb $a0, d
li $v0, 11
syscall
#printing h
lb $a0, h
li $v0, 11
syscall
我似乎正在覆盖“ i”的值。我在做什么错?
答案 0 :(得分:1)
您永远不会提供d
和h
的初始值,因此不会为它们保留任何空间,因此它们都具有相同的地址。
您可以通过查看在MARS中组装后使用的地址来查看此信息。在QtSPIM中,这甚至都无法汇编,因为它要求您指定一个初始值。
要解决此问题,请将这两个变量声明更改为
d: .word 0
h: .word 0