MIPS汇编指令存在问题,更改了字符串的大小写,循环无法正确执行

时间:2019-02-24 18:41:38

标签: assembly mips

我正在尝试编写一个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

0 个答案:

没有答案