如果MIPS大于或等于

时间:2014-09-16 01:42:02

标签: if-statement assembly mips equals

使用系统调用

提示输入两个整数“a”和“b”

根据> b或a = b或a显示以下语句之一

  • 您输入了大于b

  • 您输入的等于b

  • 您输入的不到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 

我真的不知道如何使用分支语句,这真的令人困惑。我想知道如何解决它。

1 个答案:

答案 0 :(得分:1)

为什么你把数字读入$ t1和$ t2然后比较$ s1和$ s0?它在哪里令人困惑?

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

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

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

a = b:
beq a_eq_b, $s0, $s1   # nothing more to explain

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

a >= b:
slt $t0, $s0, $s1
beq a_ge_b, $t0, $zero # $t0 == 0 if a >= b or !(a < b)

a <= b:
slt $t0, $s1, $s0
beq b_ge_a, $t0, $zero # $t0 == 0 if b >= a or !(b < a)