Мне нужно напечатать наибольшее целое число из четырех входных данных от пользователя. Я разобрался, как сделать это до трех целых чисел, но с последним CMP у меня возникли трудности. Мне нужна помощь с последним CMP.
Я предполагаю, что мне нужен еще один CMP для решения этой проблемы, но все, что я пытаюсь всегда, просто печатает наибольшее из первых трех чисел.
# this program prints out the four of two numbers
# The four numbers are read through the keyboard
.text
.globl main
main:
# Display prompt1
li $v0, 4
la $a0, prompt1
syscall
# read keyboard into $v0 (number x is number to test)
li $v0, 5
syscall
# move the first number from $v0 in $t0
move $t0,$v0
# Display the prmopt2 (string)
li $v0, 4
la $a0, prompt2
syscall
# read keyboard into $v0
li $v0, 5
syscall
# move the second number from $v0 in $t1
move $t1,$v0
# Display the prmopt3 (string)
li $v0, 4
la $a0, prompt3
syscall
# read keyboard into $v0
li $v0, 5
syscall
# move the third number from $v0 in $t2
move $t2,$v0
# Display the prmopt4 (string)
li $v0, 4
la $a0, prompt4
syscall
# read keyboard into $v0
li $v0, 5
syscall
# move the fourth number from $v0 in $t3
move $t3,$v0
# effectively these two lines do: $t1 = max($t0, $t1)
bge $t1, $t0, CMP2
move $t1, $t0
CMP2:
# effectively these two lines do: $t1 = max($t2, $t1)
bge $t1, $t2, L1
move $t1, $t2
# largest number in $t1
move $t2, $t0
# print answer
L1:
li $v0, 4
la $a0, answer
syscall
# print integer function call 1
# put the answer into $a0
li $v0, 1
move $a0, $t1
syscall
#exit
end: li $v0, 10
syscall
.data
prompt1:
.asciiz "Enter the first number "
prompt2:
.asciiz "Enter the second number "
prompt3:
.asciiz "Enter the third number "
prompt4:
.asciiz "Enter the fourth number "
answer:
.asciiz "The largest number is "
Фактические результаты выплевывают наибольшее из трех чисел. Мне нужны фактические результаты наибольшего из четырех целых чисел.