Нахождение наибольшего целого числа из четырех входов с использованием сборки MIPS - PullRequest
0 голосов
/ 24 марта 2019

Мне нужно напечатать наибольшее целое число из четырех входных данных от пользователя. Я разобрался, как сделать это до трех целых чисел, но с последним 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 "

Фактические результаты выплевывают наибольшее из трех чисел. Мне нужны фактические результаты наибольшего из четырех целых чисел.

1 Ответ

0 голосов
/ 27 марта 2019

Я закончил тем, что нашел решение самостоятельно. Это был фрагмент кода, который мне был нужен ...

CMP1:
# the following lines perform this: $t1 = max($t0, $t1)
bge $t1, $t0, CMP2
move $t1, $t0

CMP2:
# the following lines perform this: $t1 = max($t2, $t1)
bge $t1, $t2, L1 
move $t1, $t2

# the following lines perform this: $t1 = max($t3, $t2)
CMP3:
bge $t1, $t3, CMP2
move $t1, $t3
...