Тип возврата функции MIPS - PullRequest
       21

Тип возврата функции MIPS

0 голосов
/ 21 октября 2018

Я протестировал функцию, которая переключает все символы нижнего регистра в верхний регистр отдельно.При возврате функции на мой main.asm (подключенный через .include) она просто ничего не печатает.Main.asm был предварительно написан моим инструктором и печатает при печати этикетки типа .asciiz.

Вот функция, которая возвращает измененную строку в основную программу:

toUpper:

move $t0, $a0

#li $t0, 0

loop:
 lb $t1, 0($t0)
     beq $t1, 0x00, exit
 blt $t1, 'a', case
 bgt $t1, 'z', case
 sub $t1, $t1, 32
 sb $t1, 0($t0)

case: 
  addi $t0, $t0, 1
 j loop

exit:

la  $v0, 0($t0)

jr $ra

вот код, вызывающий функции печати после возврата значения:

la $a0, toUpper_CSisFun
jal toUpper

move $t0, $v0
print_string(str_result)    
print_string_reg($t0) 
print_newline

вот сам макрос печати

.macro print_string_reg(%reg)
li $v0, PRINT_STRING
la $a0, 0(%reg)
syscall 
.end_macro

Iдолжен возвращать содержимое, а не адрес строки, которую я изменил?Любая помощь с благодарностью.

результат:

********* toUpper *********
Input: Computer
Result: 
...