MIPS обратный порядок заглавных букв в каждом слове в строке - PullRequest
0 голосов
/ 16 ноября 2018
 ..data

    keyboardBuffer: .space      50
    test1:      .asciiz     "WORD is BAD"
    .text

    main:
    # Test case 1
        la  $a0, test1
        jal subroutine
        li  $v0, 4
        syscall
    # Endline
        li  $a0, '\n'
        li  $v0, 11
        syscall
    # Exit
        li  $v0, 10
        syscall

    # Address of argument stored in $a0
    # Return value also in $a0
    # %t0 - pointer to current char
    # %t1 - current char
    # $t2 - current number from buffer
    # $fp - buffer for CAPITAL LETTERS
    # $sp - pointer to start of the buffer
    subroutine:
        move    $t0, $a0        # Copy address of string
        move    $fp, $sp        # Set frame pointer
    findLoop:

        lbu $t1, ($t0)      # Load char
        beq $t1, ' ', endFindLoop   # End loop if char is less than white space
        bltu    $t1, 'A', skipSave  # Skip saving char if NaN
        bgtu    $t1, 'Z', skipSave
        sb  $t1, ($fp)  
        addiu   $fp, $fp, -1        # Decrement stack
        sb      $t1, ($fp)
    skipSave:
        addiu   $t0, $t0, 1
        j   findLoop
    endFindLoop:
        move    $t0, $a0        # Set pointer to begin of the string
    replceLoop:
        lbu $t1, ($t0)      # Load char
        bltu    $t1, ' ', return    # End loop if char is less than white space
        bltu    $t1, 'A', skipReplace   # Skip saving char if NaN
        bgtu    $t1, 'Z', skipReplace
        addiu   $fp, $fp, 1     # Increment stack
        lbu $t2, ($fp)
        sb  $t2, ($t0)

        beq     $t1, '0', findLoop
    skipReplace:
        addiu   $t0, $t0, 1
        j   replceLoop
    return:
        jr  $ra


Так что по сути мне нужно конвертировать

WORD is BAD

в

DROW is DAB 
и я получаю

DROW is 
Почему для второго слова оно дробится заглавными буквами? Я понятия не имею: (
...