Assembly 程序集MIPS:反向打印两个字符串

Assembly 程序集MIPS:反向打印两个字符串,assembly,mips,Assembly,Mips,假设您先键入姓名,最后键入姓氏,然后希望程序先打印姓氏,再打印姓名 f、 e 盖布 纽厄尔 纽厄尔 盖布 我试图做到这一点: .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 l

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

f、 e

盖布

纽厄尔

纽厄尔

盖布

我试图做到这一点:

.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
系统调用

但从输出来看,它给了我: 纽厄尔 纽厄尔


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

您没有为名称留出足够的空间
.word
只为整数留出足够的空间(2或4个字节,可能是后者)

改用
.space

然后,要打印名字,在进行
系统调用之前,需要将
first
的地址加载到
$a0
$s1
没有您认为的值。

我将其替换为“first:.space 20”和“second:.space 20”,但它仍然给出了两次姓氏,而不是姓氏后面跟着名字