MIPS——分支語句

有關指令spa

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--> syscallscode

MIPS代碼實現blog

c語言代碼ci

 

 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不帶)字符串

相關文章
相關標籤/搜索