Java教程

汇编大作业

本文主要是介绍汇编大作业,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 斐波那切数列
      • 迭代版本 (汇编版有点点问题)
        • C++
        • 汇编

斐波那切数列

迭代版本 (汇编版有点点问题)

缺点:并没有检查输入异常

C++

#include<iostream>
using namespace std;

int main() {
	int t3;
	cin >> t3;
	int t1 = 0, t2 = 1;
	
	cout << t1 << " " << t2 << " ";
	t3 -= 2;
	while (t3 > 0) {
		int t4 = t2;
		t2 = t1 + t2;
		t1 = t4;
		cout << t2 << " ";
		t3--;
	}

	system("pause");
	return 0;
}

汇编

 		.data
	
	
		.text
main:	li $v0, 5
		syscall
		move $t3, $v0				#输入t3的值,t3用于表示需要输出前t3项斐波那契数列(下简称“数列”)
		
		li $t1, 0					#t1表示数列的第一项
		li $t2, 1  					#t2表示数列的第二项
		
		li $v0, 1
		move $a0, $t1
		syscall  					#打印数列第一个值
		
		li $v0, 11					#打印空格
		li $a0, 0x20
		syscall		
		
		li $v0, 1
		move $a0, $t2
		syscall						#打印第二个值
		
		li $v0, 11					#打印空格
		li $a0, 0x20
		syscall
		
		addi $t3, $t3, -2			#由于已经打印出第一个值和第二个值,那么之后只需要打印$t3 - 2个值即可
		
		loop: blez $t3, here
			move $t4, $t2
			add $t2, $t2, $t1
			move $t1, $t4
			
			li $v0, 1
			move $a0, $t2
			syscall
			
			li $v0, 11				#打印空格
			li $a0, 0x20
			syscall					
			
			addi $t3, $t3, -1		#完成一次循环
		b loop
		here:
		
		li $v0, 10
		syscall
这篇关于汇编大作业的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!