Выполнение сервисных вызовов на основе ввода пользователя

Я только что написал свою первую программу добавления 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

Спасибо за помощь заранее.

0 ответов

Другие вопросы по тегам