有關指令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不帶)字符串