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

相关文章
相关标签/搜索