Доступ к элементам .space в MIPS (в порядке убывания) - PullRequest
0 голосов
/ 30 октября 2019

Я хочу получить побайтно из массива .space , начиная с самого высокого индекса. У меня есть два массива .space , один для ввода текста пользователем, второй для хранения маленьких букв из входной строки. Есть проблема, когда я пытаюсь сохранить байт при смене раздела - sb $ t4, ($ t3) , кажется, не хранит правильный символ, или, что хуже, $ t4 не кажетсячтобы указывать на последний символ TMP больше. Есть ли лучший способ получить доступ к символам в строке с конца?

Мой код предназначен для обратного порядка маленьких букв во введенной строке,

здесь:

arr:    .space 100
tmp:    .space 100
che:    .asciiz "check\n"
text1:  .asciiz "input string: \n"
text2:  .asciiz "Output:\n"
    .text
    .globl main
main:
    li  $v0,4
    la  $a0, text1
    syscall

    la  $a0, arr
    li  $a1, 100
    li  $v0, 8
    syscall

    li  $t0, 'a'
    li  $t1, 'z'
    la  $t3,arr
    la  $t4,tmp
read_begin:
    lb  $t5,($t3)
    lb  $t6,($t4)
    beq     $t5,$zero,ch
    blt     $t5,$t0,increment
    bgt $t5,$t1,increment

    sb  $t5,($t4)
    addi    $t4,$t4,1
    b   increment

increment:
    addi    $t3,$t3,1
    b   read_begin
ch:
    la  $t3,arr
    b   change
change:

    lb  $t5,($t3)
    beq     $t5,$zero,end
    blt     $t5,$t0,increment2
    bgt $t5,$t1,increment2
    sb  $t4,($t3)
    addi    $t4,$t4,-1

increment2:
    addi    $t3,$t3,1
    b   change

end:

    li  $v0,4
    la  $a0, text2
    syscall
    la  $a0, arr                    
    li  $v0, 4                      
    syscall                         
    li  $v0, 10                     
    syscall 
...