If statement 如果在MIPS中大于或等于
使用系统调用提示并输入两个整数“a”和“b” 根据a>b或a=b或a是否显示以下语句之一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
- 您输入了一个等于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
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)