0

初めての 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

事前にご協力いただきありがとうございます。

4

0 に答える 0