2016-10-18 86 views
1

假設您先輸入姓名並輸入姓氏,然後想要程序首先打印姓氏,然後輸入姓名。裝配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 

li $v0, 4 
la  $a0, second 
syscall 

move  $a0, $s1 

la  $a0, 0($s1) 
syscall 

李$ V0, 10
系統調用

,但在輸出它給我: 紐維爾 紐厄爾

那麼,什麼是這裏的問題?

回答

1

您沒有爲名稱留出足夠的空間; .word僅留出足夠的整數(2或4字節,可能是後者)。

改爲使用.space

然後,要打印名字,您需要在製作syscall之前將first的地址加載到$a0; $s1沒有你認爲它的價值。

+0

我將它替換爲「first:.space 20」和 「second:.space 20」,但它仍然給出了兩次姓氏,而不是姓氏後跟名字 – Coursal