汇编 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
没有您认为的价值。
假设您先输入姓名,最后输入姓氏,您希望程序先打印姓氏,然后再打印姓名。
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
没有您认为的价值。