1

次のコードを試してみましたが、最初の 2 つの整数については正常に動作しています。ただし、3 番目のプロンプトで最小の数を取得すると、最小の数として取得されません。これは私のコードです。どこでその間違いを犯したのですか(下手な英語でごめんなさい)

どうもありがとう..

    .text
.align 2 
.globl main 

main: 
# this program prints out the lowest value of three numbers input 

li $v0, 4 
la $a0, prompt1 
syscall 

li $v0, 5 # read keyboard into $v0 (number x is number to test) 
syscall 
move $t0,$v0 # first number in $t0 

li $v0, 4 
la $a0, prompt2 
syscall 

li $v0, 5 # read keyboard into $v0 (number x is number to test) 
syscall 
move $t1,$v0 # second number in $t1 

li $v0, 4 
la $a0, prompt3 
syscall 

li $v0, 5 # read keyboard into $v0 (number x is number to test) 
syscall 
move $t2,$v0 # third number in $t2 

blt $t1, $t0, L1 
move $t1, $t0 # smallest number in $t1 

blt $t2, $t1, L1 
move $t2, $t1

L1: 
li $v0, 4 # print answer 
la $a0, answer 
syscall 

li $v0, 1 # print integer function call 1 
move $a0, $t1 # integer to print 
syscall 

end: jr $ra 

.data 
prompt1: .asciiz "Enter the first number " 
prompt2: .asciiz "Enter the second number " 
prompt3: .asciiz "Enter the third number " 
answer: .asciiz "\nThe smallest number is "
4

1 に答える 1

0

最小の数を選択しようとするビット:

blt $t1, $t0, L1 
move $t1, $t0 # smallest number in $t1 

blt $t2, $t1, L1 
move $t2, $t1

L1: 

ラベルは 1 つしかないため、最初の分岐をたどると、3 番目の番号との比較は完全にスキップされます。

次のようなものが必要になります。

blt $t1, $t0, L1 
move $t1, $t0 # smallest number in $t1 

L1: 

blt $t2, $t1, L2
move $t2, $t1

L2: 
于 2012-12-30T15:33:24.393 に答える