首先,我已经检查了与这个相关的问题,但我仍然无法克服这个程序的问题。
我要做的是,基本上,获取一个 byte[] 输入并将其复制到另一个 byte[],然后打印重复的数组。我的代码如上:
.data
hello: .asciiz "hello"
inp: .byte 5
dup: .byte 5
.text
main:
la $a0, inp #get input
li $v0, 8
syscall
la $s0, dup #load arrays on s0 and s1
la $s1, inp
li $t0, 0 #instantiate offsets as 0
li $t2, 0
Load:
lb $t1, 0($s1) #load first byte
sub $t1, $t1, 48 #test if it is <0
bltz, $t1, exit #if so go to exit
add $t1, $t1, 48
sb $t1, 0($s0) #else save the byte
add $s1, $s1, 1 #increment offsets
add $s0, $s0, 1
j Load
la $a0, hello
li $v0, 4
syscall
exit:
li $t1, 0
add $s0, $s0, 1
sb $t1, 0($s0) #add null to the end of dup
la $a0, dup
li $v0, 4
syscall
jr $ra
我是 MIPS 的新手,我无法识别问题所在。
顺便说一句,我将 123 作为输入传递,我得到无数个 1 作为输出,这告诉我我被困在循环中,再也没有在 $s1 (inp) 中得到任何进一步的信息。