如何在不使用循环

时间:2017-10-12 06:56:07

标签: assembly mips mips32

我能够获得用户输入,如我的代码所示,但我绝对无法获得最小的数字。 非常感谢...

以下是此说明。

"编写汇编程序,从用户读取三个32位有符号整数。确定这三个数字中最小的一个并显示此结果。不要使用循环。提示用户输入每个输入的整数。"

.data
Msg1: .asciiz "Enter the first integer: "
Msg2: .asciiz "Enter the second integer: "
Msg3: .asciiz "Enter the third integer: "
Msg4: .asciiz "the the smallest numberis: "

.text
     # Print the first message
 li $v0, 4
 la $a0, Msg1
 syscall

 # Prompt the user to enter the first integer
 li $v0, 5
 syscall

 # Store the first integer in $t0
 move $t0, $v0

 # Print the second message
 li $v0, 4
 la $a0, Msg2
 syscall

 # Prompt the user to enter the second integer
 li $v0, 5
 syscall

 # Store the first integer in $t1
 move $t1, $v0

 # Print the third message
 li $v0, 4
 la $a0, Msg3
 syscall

 # Prompt the user to enter the third interger
 li $v0, 5
 syscall

 # Store the first integer in $t0
 move $t2, $v0

 # Determine the smallest Number
 slt $s0, $t1, $t0
 beq $s0, $zero, L1

1 个答案:

答案 0 :(得分:0)

谢谢大家的答案,我终于能够确定最小的数字了。该代码在MARS上完美运行。

.data
Msg1: .asciiz "Enter the first integer: "
Msg2: .asciiz "Enter the second integer: "
Msg3: .asciiz "Enter the third integer: "

.text
     # Print the first message
 li $v0, 4
 la $a0, Msg1
 syscall

 # Prompt the user to enter the first integer
 li $v0, 5
 syscall

 # Store the first integer in $t0
 move $t0, $v0

 # Print the second message
 li $v0, 4
 la $a0, Msg2
 syscall

 # Prompt the user to enter the second integer
 li $v0, 5
 syscall

 # Store the first integer in $t1
 move $t1, $v0

 # Print the third message
 li $v0, 4
 la $a0, Msg3
 syscall

 # Prompt the user to enter the third interger
 li $v0, 5
 syscall

 # Store the first integer in $t0
 move $t2, $v0

 # Determine the smallest Number
 blt $t0, $t1, L0
 blt $t1, $t0, L3


 li, $v0, 10
 syscall

 L0:
   blt $t0, $t2, L2
   blt $t2, $t0, L3

 L2:
   li $v0, 1
   move $a0, $t0
   syscall
   li, $v0, 10
   syscall

 L3:
   blt $t1, $t2, L4
   blt $t2, $t1, L5

 L4:
    li $v0, 1
    move $a0, $t1
    syscall
    li, $v0, 10
    syscall

 L5:
    li $v0, 1
    move $a0, $t2
    syscall
    li, $v0, 10
    syscall


 li, $v0, 10
 syscall