检查如果一个数字大于或小于那么使用slt和分支使用火星

时间:2017-06-21 02:36:15

标签: assembly mips32 mars

所以这就是我到目前为止我不知道从哪里开始分支或只是打印出答案。我试图打印出消息,但无济于事。有没有办法同时使用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

1 个答案:

答案 0 :(得分: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