汇编MIPS指令集 add两数相加、syscall输出字符串、bgt分支语句、ble循环语句

第一个程序: 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
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_42483341/article/details/88778168