使用系统调用
提示输入两个整数“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
我真的不知道如何使用分支语句,这真的令人困惑。我想知道如何解决它。
答案 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)