Проблема с инструкциями по сборке MIPS, изменением регистра строки, неправильным выполнением цикла - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь написать программу MIPS, которая будет принимать предопределенную строку и отображать регистр каждой буквы.Моими мыслями для достижения этой цели было бы вычесть или добавить 32 в зависимости от случая.

Кажется, мой цикл работает неправильно?Я пробовал несколько разных вещей, но было трудно определить, где я иду не так.

main:
jal displayString

li $v0, 4
la $a0, string
la $a1, newStr
li $t7, 0 #loop counter
jal changeCase

move $a1, $a0
jal displayString

#exit
li $v0, 10
syscall

displayString:
    li $v0, 4
    la $a0, string
    syscall

    jr $ra

changeCase:
    loop:
        #counter
        beq $t7, 10, endloop #if $t7 = 10 then end
        lbu $t1, 0($a0)
        #beqz $t1, exit
        #if less than 91, add 32
        #if greater than 97, sub 32
        slti $t0, $t1, 91
        beq $t0, 0, else
        addi $a1, $t1, 32
        add $t6, $t7, 1 #add 1 to counter t7
        move $t6, $t7
        j endif
    else:
        subi  $a1, $t1, 32
        add $t6, $t7, 1 #add 1 to counter t7
        move $t6, $t7
        j loop
    endif:
        j loop
    #exit:
        #jr $ra
    endloop:
        jr $ra
...