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\n");
 9     else    printf("NO\n");
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,運行終止

             

值得一提的是,由於存放兩個字符串的地址是連續的,如果字符串結尾沒加終止符'\0'或者使用的是.ascii而不是.asciiz(.asciiz自帶終止符,.ascii不帶)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM