基于用户输入执行的服务调用

时间:2016-09-03 21:16:35

标签: assembly mips low-level low-level-io

我刚刚编写了我的第一个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

感谢您提前协助。

0 个答案:

没有答案
相关问题