.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
Хорошо, я пытаюсь найти минимальное значение из трех введенных пользователем целых чисел.
Программа запустится и позволит пользователю ввести свои три целых числа.
Что происходит, так это то, что вместо печати минимального значения распечатываются все три значения.
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
Это часть кода, которая должна проверять, какое значение наименьшее, но это не так.
Я не понимаю, почему печатаются все три целых числа. Я думал, что мои проверки ошибок предотвратят печать всех трех целых чисел. Я запускаю эту программу в QTSPIM.
Пример: пользователь вводит 4, 3 и 2 как свои три целых числа. Консоль показывает 4, 3 и 2 вместо того, чтобы просто печатать наименьшее целое.
T2P
иT3P
, если вы перешли наT1P
. Метка - это просто имя, которое вы можете использовать для удобной ссылки на определенное место в вашей программе; это не какой-то магический барьер. Используйте инструкцию ветвления всякий раз, когда вы хотите изменить поток выполнения. - person Michael   schedule 12.02.2014