我添加了一个 mips 代码,但是当我尝试插入 100 时,它说成绩不正确,但我需要在 if(grade>100 ||等级<0)



我添加了一个mips代码,但当我尝试插入100时,它说等级不正确,但我需要说if时不正确(等级>100||等级<0(请告诉我如何做我的if-else声明。问题是(等级>100||等级<0(输出是否应该是等级不正确的

.data
enter: .asciiz "Enter an integer  : "
name: .asciiz "n Number is incorrect. Try Again:"
gradeA: .asciiz "n Grade is A"
gradeB: .asciiz "n Grade is B"
gradeC: .asciiz "n Grade is C"
gradeD: .asciiz "n Grade is D"
gradeF: .asciiz "n Grade is F"
.text
.globl main
main:
li $v0, 4
la $a0, enter
syscall
li $v0, 5
syscall
add $s0, $v0, $0

li $t1,100
blt  $s0,$t1,l1
bgt $s1,0,l1
j exit
l1:
la, $a0,name
blt $s0,90,l2
la $a0,gradeA
j exit

l2: 
blt $s0,80,l3
la $a0,gradeB
j exit
l3: 
blt $s0,70,l4
la $a0,gradeC
j exit

l4: 
blt $s0,60,l5
la $a0,gradeD
j exit

l5: 
la,$a0,gradeF
exit:
li $v0, 4
syscall
li $v0, 10
syscall

循环L1的代码有一行用于打印不接受的情况,您可以在单独的循环中简单地处理它blt检查输入是否小于100,其他循环是否与以前一样。下面代码中提到的另一个bgt循环检查输入是否大于100,并将其转移到拒绝循环L6

.data
enter: .asciiz "Enter an integer  : "
name: .asciiz "n Number is incorrect. Try Again:"
gradeA: .asciiz "n Grade is A"
gradeB: .asciiz "n Grade is B"
gradeC: .asciiz "n Grade is C"
gradeD: .asciiz "n Grade is D"
gradeF: .asciiz "n Grade is F"
.text
.globl main
main:
li $v0, 4
la $a0, enter
syscall
add $s2, $zero, -1
li $v0, 5
syscall
add $s0, $v0, $0


li $t1,100
blt  $s0,$t1,l1
bgt $s0,$t1,l6  ##checks if input is grater than hundread diverts to l6
ble $s0,$s2,l6
bgt $s0,0,l1
j exit
l1:
blt $s0,90,l2
la $a0,gradeA
j exit

l2: 
blt $s0,80,l3
la $a0,gradeB
j exit
l3: 
blt $s0,70,l4
la $a0,gradeC
j exit

l4: 
blt $s0,60,l5
la $a0,gradeD
j exit

l5: 
la,$a0,gradeF
j exit

l6: 
la,$a0,name  ##prints the case is incorrect
j exit
exit:
li $v0, 4
syscall
li $v0, 10
syscall

对于大于100的数字,代码显示的数字不正确。对于小于零的数字,它假设等级为F。如果你想让代码指示负数或小于零的浮点数的错误数字,你可以访问:http://www.cs.jhu.edu/~jorgev/cs333/reference.htmlhttps://s3-eu-west-1.amazonaws.com/downloads-mips/documents/MIPS_Warrior_M5150_SoftwareUserManual_MD00980_01.05.pdf

为此,您必须将代码更改为浮点输入,并使用sltu来注册hilo,然后将它们进行比较,以在控制台上显示所需的错误。您还可以使用ble将负下限与输入进行比较。