.data
prompt: .asciiz "Enter in 3 integers, one per line, last one being a negative number: "
sum: .asciiz "The sum is: "
min: .asciiz "The minimum is: "
max: .asciiz "The maximum is: "
mean: .asciiz "The mean is: "
variance: .asciiz "The variance is: "
newline: .asciiz "\n"
count: .word 3
array: .space 12
.text
main:
#prints prompt msg
li $v0, 4
la $a0, prompt
syscall
#takes first integer from user and stores into $t1
li $v0, 5
syscall
move $t1, $v0
#takes second integer from user and stores into $t2
li $v0, 5
syscall
move $t2, $v0
#takes third integer from user and stores into $t3
li $v0, 5
syscall
move $t3, $v0
#min/max utilizing array
la $t0, array #initializing array at a[0]
li $t4, 0 #min
li $t5, 0 #max
li $t6, 0 #i
li $t7, 0
sw $t1, 4($t0) #user first input stored in a[1]
sw $t2, 8($t0) #user second input stored in a[2]
sw $t3, 12($t0) #user third input stored in a[3]
blt $t1, $t2, Else
ble $t1, $t3, Else2
j T1P
Else:
blt $t2, $t3, Else2
j T2P
Else2:
blt $t3, $t2, T3P
T1P:
move $a0, $t1
li $v0, 1
syscall
T2P:
move $a0, $t2
li $v0, 1
syscall
T3P:
move $a0, $t3
li $v0, 1
syscall
わかりました、私がやろうとしているのは、ユーザーが入力した 3 つの整数から最小値を見つけることです。
プログラムが実行され、ユーザーが 3 つの整数を入力できるようになります。
何が起こっているかというと、最小値を出力する代わりに、3 つの値すべてを出力しています。
blt $t1, $t2, Else
ble $t1, $t3, Else2
j T1P
Else:
blt $t2, $t3, Else2
j T2P
Else2:
blt $t3, $t2, T3P
T1P:
move $a0, $t1
li $v0, 1
syscall
T2P:
move $a0, $t2
li $v0, 1
syscall
T3P:
move $a0, $t3
li $v0, 1
syscall
これは、どの値が最小であるかをチェックすることになっているコードのセクションですが、そうではありません。
3 つの整数すべてが出力される理由がわかりません。私のエラーチェックは、3 つの整数すべてが出力されないようにしていると思いました。このプログラムを QTSPIM で実行しています。
例: ユーザーは 4 、 3 、および 2 を 3 つの int として打ち込みます。コンソールは、最小の int を出力するだけでなく、4、3、および 2 を表示しています。