我刚刚编写了我的第一个MIPS附加程序。我的输出是预期的($ t0 + $ t1 = $ t2),但我对一些我认为应该可以避免的奇怪行为有疑问。
在我收集用户输入( li $ v0,5 )的行上,$ v0服务调用的值被设置为我的用户输入的值。因此,例如,如果我输入“10”作为用户输入,则为$ v0分配值10,这是终止程序的服务代码。
我能做些什么来确保我的用户输入不会影响$ v0注册表上的服务调用吗? Side Note :我的程序集术语是否正确这里吗?
.data
prompt1: .asciiz "Give me an integer: "
prompt2: .asciiz "Give me another integer: "
result: .asciiz "The sum of the two inputted numbers is: "
.text
main:
# Service call to Print String, then show prompt1
li $v0,4
la $a0, prompt1
syscall
# Get first int from user
li $v0, 5
syscall
# Move the user's input to $t1
move $t0, $v0
syscall
# Service call to Print String, then show prompt2
li $v0, 4
la $a0, prompt2
syscall
# Get second int from user
li $v0, 5
syscall
# Move the user's input to $t1
move $t1, $v0
syscall
# $t2 = $t1 + $t0
add $t2, $t1, $t0
syscall
# Print result string
li $v0, 4
la $a0, result
syscall
# System service code to print an integer, then move sum value to $a0
li $v0, 1
move $a0, $t2
syscall
# End program
li $v0, 10
syscall
感谢您提前协助。