汇编 MIPS:反向打印两个字符串

Assembly MIPS: Reverse printing two strings

假设您先输入姓名,最后输入姓氏,您希望程序先打印姓氏,然后再打印姓名。

f.e.

Gabe

Newell

纽维尔

加布

我试图做到这一点:

.data  
first: .word
second: .word

.text
.globl main 
main: 

li       $v0, 8 
la       $a0, first
la   $a1, 20 
syscall

move     $s1, $a0

la       $a0, second
la   $a1, 20 
syscall

li   $v0, 4
la       $a0, second
syscall
     
move     $a0, $s1

la       $a0, 0($s1)
syscall

li $v0, 10
系统调用

但在输出中它给了我: 纽厄尔 纽厄尔

那么,这里的问题是什么?

你没有为名字预留足够的space; .word 只预留足够的整数(2 或 4 个字节,可能是后者)。

改用.space

然后,要打印名字,需要在制作syscall之前将first的地址加载到$a0$s1 没有您认为的价值。