手动构建MIPS字符串

时间:2013-03-14 21:31:21

标签: assembly mips

对于家庭作业,我假设取一个整数并将其改为字符串代表。我对MIPS有基本的了解,但我真的不明白为什么我的代码不起作用。我想知道是否有人可以给我一些指示我需要做什么或帮助如何从手创建一个字符串。我正在使用MARS Simulator 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表示空字符串结束,然后打印出该字符串。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-1)

此外,li $v0 1用于系统调用以打印整数。如果您真的在制作字符串,则应编写li $v0 4