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

时间:2018-12-13 23:27:46

标签: mips mars-simulator

在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”的值。我在做什么错?

1 个答案:

答案 0 :(得分:1)

您永远不会提供dh的初始值,因此不会为它们保留任何空间,因此它们都具有相同的地址。

您可以通过查看在MARS中组装后使用的地址来查看此信息。在QtSPIM中,这甚至都无法汇编,因为它要求您指定一个初始值。

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

d:  .word 0  
h:  .word 0