所以这就是我到目前为止我不知道从哪里开始分支或只是打印出答案。我试图打印出消息,但无济于事。有没有办法同时使用slt和branchch?
.data
message1: .asciiz "The number is less than. :"
message2: .asciiz "/nThe number is greater than. :"
.text
main:
addi $t0, $zero, 20
addi $t1, $zero, 5
slt $s0, $t0, $t1
beq $s0, $zero, printmessage1
sge $s0, $t0, $t1
beq $s0, $zero, printmessage2
li $v0, 10
syscall
printmessage1:
li $v0 4 #print out message1
la $a0 message1
syscall
printmessage2:
li $v0 4 #print out message1
la $a0 message2
syscall
答案 0 :(得分:0)
slt $t1,$t2,$t3
设置小于:如果$t2
小于$t3
,则将$t1
设置为1,否则将$t1
设置为0。
一种非常容易且减少使用指令的解决方案是
使用blt
或bgt
,则大于:分支到标签处的分支
bgt $t1,$t2,label
如果$t1
大于$t2
,则转到标签处的语句
blt $t1,$t2,label
如果更少则分支:如果$t1
小于$t2
.data
message1: .asciiz "The number is less than. :"
message2: .asciiz "/nThe number is greater than. :"
.text
main:
addi $t0, $zero, 20
addi $t1, $zero, 5
blt $t0, $t1,printmessage1
b printmessage2
li $v0, 10
syscall
printmessage1:
li $v0 4 #print out message1
la $a0 message1
syscall
printmessage2:
li $v0 4 #print out message1
la $a0 message2
syscall