我刚刚编写了我的第一个 MIPS 加法程序。我的输出是预期的($t0 + $t1 = $t2),但我对一些我认为应该可以避免的奇怪行为有疑问。
在我收集用户输入(li $v0, 5)的行上, $v0 服务调用的值被设置为我的用户输入的值。例如,如果我输入“10”作为用户输入,$v0 被赋值为 10,这是终止程序的服务代码。
我可以做些什么来确保我的用户输入不会影响 $v0 注册表上的服务调用? 旁注:我的大会术语在这里正确吗?
.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
提前感谢您的帮助。