0

对于家庭作业,我想取一个整数并将其更改为它的字符串代表。我对 MIPS 有基本的了解,但我真的不明白为什么我的代码不起作用。我想知道是否有人可以给我一些指示我需要做什么或帮助如何从手创建一个字符串。我正在使用火星模拟器 4.2。

到目前为止,这是我的代码和注释。

#itoa
#$t0 = initial integer
#$t1 = place where string is stored
#This program I'm attempting to by hand create a null ended string from an original integer 2.


li $t0, 2              #load integer 2
la $t1, number         #load memory location for string


addi $t0, $t0, 48       #add 48 to 2 to get ASCII character, 50
sb $t0, ($t1)           #store it in original byte of $t1


add $t1, $t1, 1     #increment $t1, to point to next byte
sb $zero, ($t1)     #store #zero in the next byte

move $a0, $t1           #move the hopefully finished string to print out
li $v0, 1
syscall               #print out string


#exit program
li $v0, 10
syscall

.data
 number: .space 1024

我基本上只是尝试将 2 更改为它的 ASCII 值,添加一个 0 来表示空字符串结尾,然后将该字符串打印出来。

谢谢你的帮助。

4

2 回答 2

2

您更改了 in 的值,$t1使其不再指向字符串的开头。在覆盖之前,您应该重新加载地址或在另一个寄存器中复制$t1

于 2013-03-14T21:36:17.423 回答
-1

此外,li $v0 1用于系统调用以打印整数。如果你真的在做一个字符串,你应该编码li $v0 4.

于 2014-04-14T21:41:03.340 回答