MIPS——分支语句

Posted lfri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MIPS——分支语句相关的知识,希望对你有一定的参考价值。

有关指令

1 li $t1,immediate     #load immediate,立即数可正可负
2 la $t1,address       #load address
3 move $t1,$t2         #move $t2 to $t1
4 syscall              #打印字符串时,将要输出的字符串的地址存到$a0,将$v0设置成4

关于syscall指令的使用,MARS中有详细文档,help--> syscalls

MIPS代码实现

c语言代码

 

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a, b;
 6     scanf("%d", &a);
 7     scanf("%d", &b);
 8     if (a > b)  printf("YES
");
 9     else    printf("NO
");
10 
11     return 0;
12 }

 

MIPS代码

.data
      msg_yes:  .asciiz  "YES"
      msg_no:   .asciiz   "NO"     #定义两个字符串
  
.text
     li $v0,5
    syscall                       #读入a
    move $t0,$v0            #syscall读入的a存在$v0,要将它及时的转移到其它寄存器

    li $v0,5
    syscall
    move $t1,$v0            #读入b

    bgt $t0,$t1,L1           
        la $a0,msg_no   #else
        li $v0,4
        syscall
        j exit                 #要及时跳转到结束,否则L1中的指令也会执行

        L1:                   #if
            la $a0,msg_yes
            li $v0,4
            syscall
        
    exit:
       li $v0,10
       syscall                    #$v0  == 10,运行终止

             

值得一提的是,由于存放两个字符串的地址是连续的,如果字符串结尾没加终止符‘‘或者使用的是.ascii而不是.asciiz(.asciiz自带终止符,.ascii不带)

 

以上是关于MIPS——分支语句的主要内容,如果未能解决你的问题,请参考以下文章

shell if 语句

MIPS中有关于分支指令及跳转寻址

MIPS 中的大于、小于等于、大于等于

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

MIPS汇编指令集