zoukankan      html  css  js  c++  java
  • 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不带)

  • 相关阅读:
    红帽7 创建网络会话
    红帽7 Iptables与Firewalld防火墙
    红帽7 配置网卡
    红帽7 LVM逻辑卷管理器
    红帽7 RAID磁盘冗余阵列
    红帽7 磁盘划分
    wpf学习一(转)
    选中当前点击的位置
    c#客显
    两个程序间的通信有三种
  • 原文地址:https://www.cnblogs.com/lfri/p/9665097.html
Copyright © 2011-2022 走看看