假设您先输入姓名,最后输入姓氏,您希望程序首先打印姓氏,然后输入姓名。
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 < 系统调用
但是在输出中它给了我: 纽厄尔 纽厄尔
那么,这里的问题是什么?
答案 0 :(得分:1)
你没有为这些名字留出足够的空间; .word
只留出足够的整数(2或4个字节,可能是后者)。
改为使用.space
。
然后,要打印名字,您需要在first
之前将$a0
的地址加载到syscall
; $s1
没有您认为的价值。