If statement 如果在MIPS中大于或等于

If statement 如果在MIPS中大于或等于,if-statement,assembly,mips,equals,If Statement,Assembly,Mips,Equals,使用系统调用提示并输入两个整数“a”和“b” 根据a>b或a=b或a是否显示以下语句之一 您输入的a大于b 您输入了一个等于b的值 您输入的a小于b 我必须得到这个提示,我尽了很大的努力来完成它。这是我受挫的地方,我非常感谢你的帮助 .data p1: .asciiz "Please enter the first number ? " p2: .asciiz " Please enter the second number? " ans1: .asciiz " \nYo

使用系统调用提示并输入两个整数“a”和“b”

根据a>b或a=b或a是否显示以下语句之一
  • 您输入的a大于b

  • 您输入了一个等于b的值

  • 您输入的a小于b

我必须得到这个提示,我尽了很大的努力来完成它。这是我受挫的地方,我非常感谢你的帮助

    .data  
p1: .asciiz "Please enter the first number ? "  
p2: .asciiz " Please enter the second number? "  
ans1: .asciiz " \nYou entered a greater than b "  
ans2: .asciiz " \nYou entered a equal to b "  
ans3: .asciiz " \nYou entered a less than b "  


        .text
        .globl main

main:    
    li $v0, 4     #system call code for print_str  
    la $a0, p1  #address of string to print  
    syscall     #print the first prompt  


    li $v0, 5   #system call code for read_int
    syscall     #read first integer
    move $t1, $v0   #store it till later

    li $v0, 4   #system call code for print_str
    la $a0, p2  #address of string to print
    syscall     #prints the second prompt

    li $v0, 5   #system call code for read_int
    syscall     #read first integer
    move $t2, $v0   #store it till later

    slt $t1,$s1,$s0      # checks if $s0 > $s1
    beq $t1,1,label1 

我真的不知道如何使用分支语句,这真的很让人困惑。我想知道如何修复它。

为什么要将数字读入
$t1
$t2
然后比较
$s1
$s0
?哪里令人困惑

只需使用
slt
beq
/
bne
,即可涵盖您需要的所有比较案例

假设a在
$s0
中,b在
$s1

  • a
    slt $t0, $s0, $s1
    bne $t0, $zero, a_lt_b # $t0 == 1 != 0 if a < b
    
  • a>b:

    slt $t0, $s1, $s0
    bne $t0, $zero, b_lt_a # $t0 == 1 != 0 if b < a
    
    slt$t0、$s1、$s0
    bne$t0,$0,b_lt_a#$t0==1!=如果b
  • a>=b:

    slt $t0, $s0, $s1
    beq $t0, $zero, a_ge_b # $t0 == 0 if a >= b or !(a < b)
    
    slt$t0、$s0、$s1
    如果a>=b或!(a
  • a=a或!(b

谢谢,但我想这不是答案。但我真的很感谢你的时间和帮助。非常感谢,所以muchMIPS将分支目标放在最后,而不是第一位。
slt $t0, $s0, $s1
beq $t0, $zero, a_ge_b # $t0 == 0 if a >= b or !(a < b)
slt $t0, $s1, $s0
beq $t0, $zero, b_ge_a # $t0 == 0 if b >= a or !(b < a)