装配MIPS:反向打印两个字符串

时间:2016-10-18 19:39:33

标签: assembly mips

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

f.e。

  

加布

     

纽厄尔

纽厄尔

加布

tried试图做到这一点:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

改为使用.space

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