Прежде всего, я уже проверил связанные с этим вопросы, но я все еще не могу решить проблему, связанную с этой программой.Сборка - Копирование массива байтов - MIPS
То, что я пытаюсь сделать, в основном, принимает байтовый вход [] и дублирует его на другой байт [] и печатает дублирующий массив. Мой код, как описано выше:
.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 в качестве ввода, и я получаю бесчисленное количество 1s в качестве вывода, что говорит мне, что я застрял в цикле и больше не получаю в $ s1 (inp).
спасибо за ответ, я позже понял это, но мне было бы легче проверить ответ здесь, я думаю :) –