我已经测试了将所有小写字符分别切换为大写的功能。当将函数返回给我的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
我必须返回内容而不是我修改的字符串的地址?非常感谢任何帮助。
结果:
********* toUpper *********
Input: Computer
Result: