如何阻止我的MIPS.data节的char变量被覆盖?

如何阻止我的MIPS.data节的char变量被覆盖?,mips,mars-simulator,Mips,Mars Simulator,在我的MIPS程序的.data部分中,我定义了两个char变量,d和h .data d: .word h: .word 在my.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的值时,它们都是“

在我的MIPS程序的.data部分中,我定义了两个char变量,d和h

.data
d:  .word   
h:  .word
在my.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”的值。“我做得不对吗?

您从未给出d和h的初始值,因此没有为它们保留空间,因此它们都有相同的地址

你可以通过查看在火星上组装后使用的地址来了解这一点。在QtSPIM中,这甚至不会进行汇编,因为它需要您指定初始值

要解决此问题,请将这两个变量声明更改为

d:  .word 0  
h:  .word 0