0

所以这就是我到目前为止所拥有的,我不确定从这里去哪里分支或打印出答案。我试图打印出消息,但无济于事。有没有办法同时使用 slt 和分支?

.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
4

1 回答 1

0

slt $t1,$t2,$t3设置小于:如果$t2小于$t3,则设置$t1为 1,否则设置$t1为 0。

一种非常容易并减少指令使用的解决方案是使用bltbgt

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
于 2017-06-24T09:34:59.537 回答