关于伪指令与mips指令的区别:
MIPS标准定义cpu指令集的同时也定义了伪指令,伪指令可以使汇编语言可读性更好,更容易维护。每条伪指令都有对应的mips指令。汇编器负责将伪指令翻译成正式的mips指令。
伪指令的功能定义,可以在MARS->Help->Extended (pseudo) Instructions
中查看
第一个程序: li add 指令的使用
功能:两数相加
运行效果
第二个程序:li la syscall指令的使用 程序的分段
功能:输出Hello World
运行结果:在run I/O中输出了Hello World
第三个程序 bgt分支语句
功能:
用户输入两个数字a,b
如果a>b
,则输出yes
否自输出no
C语言代码
对应的汇编代码
以下可复制
#C program code
# scanf("%d",&t0);
# scanf("%d",&t1);
# if(to>t1)printf("YES");
# else printf("NO");
#assemble code
.data
msg_yes: .ascii"YES\0"
msg_no: .ascii"NO\0"
.text
#input t0
li $v0,5 #syscall read a num from I/O when v0=5
syscall #user input saved to v0
move $t0,$v0 #save v0 num to t0
#input t1
li $v0,5 #syscall read a num from I/O when v0=5
syscall #user input saved to v0
move $t1,$v0 #save v0 num to t1
#branch greater than
bgt $t0,$t1,sub1 #if t0>t1, goto sub1, else goto next line
#else
la $a0,msg_no #print NO
li $v0,4
syscall
li $v0,10 #exit program
syscall
#if
sub1: la $a0,msg_yes #print YES
li $v0,4
syscall
运行结果
输入
4
5
输出
NO
输入
100
50
输出
YES
第四个程序 ble循环语句
功能:计算1+2+3+...+100
C语言代码
汇编语言代码
以下可复制
li $t0,1 #t0:looptimes(1~100)
li $t1,0 #t1:sum
loop: add $t1,$t1,$t0 #t1=t1+t0
add $t0,$t0,1 #t0=t0+1
#branch less equal
ble $t0,100,loop #if t0<=100, goto loop
#output
move $a0,$t1 #when v0=1, syscall print a0
li $v0,1
syscall
运行结果
输出为:5050