MIPS汇编语言实现Fibonacci数列的存储和输出,其中输出方式有两种(十进制和十六进制)。
下面给出自己的代码,如有bug欢迎指出

.data
start:  .asciiz "\n Input N = "
last:  .asciiz "\n The result is "
out1:  .asciiz "\n N is not legal\n"
out2:  .asciiz "\n overflow\n"
empty:  .asciiz "  "
Hex:    .asciiz " 0Xxxxxxxxx\n"
buf:  .word 1,1.space 4096              #设定数组大小.text
main:   la $a0,startli $v0,4syscall               #输出startla $a0,bufmove $a1,$a0   #$a1是地址  ==$s2li $v0,5syscall            #输入Naddi $v0,$v0,-1move $a0,$v0        #$a0是计数器N   ==$s3bltz $a0,out_1move $t5,$a1move $t6,$a0li $s1,1jal FIB        #按要求存储数据addi $a3,$a0,0li  $a2,0la $a0,startli $v0,4syscaljal print         #按要求打印数据li $v0,10         #退出syscall
FIB:    ble $t6,$s1,ret       #$t6<=1就返回addi $a2,$t5,4lw $t1,($t5)lw $t2,($a2)addu $a3,$t1,$t2  addi $t4,$0,-1        #f3=f1+f2subu $t3,$t4,$t1bltu $t3,$t2,out_2    #判断溢出sw $a3,4($a2)addi $t5,$t5,4addi $t6,$t6,-1b FIB
print:  bgt $a2,$a3,retmove $a0,$a2li $v0,1syscall     #打印下标la $a0,emptyli $v0,4syscall     #空格lw $a0,($a1)li $v0,1syscall      #打印十进制数值la $a0,emptyli $v0,4syscall    #空格lw $a0,($a1)addi $sp,$sp,-16sw $ra,12($sp)sw $a0,8($sp)sw $a2,4($sp) sw $a1,($sp)      #用堆栈存储来保护寄存器中的值jal hex            #调用hex函数转换成十六进制lw $ra,12($sp)lw $a0,8($sp)lw $a2,4($sp)lw $a1,($sp)            #恢复相应寄存器的值addi $sp,$sp,16la $a0,Hexli $v0,4syscall                #输出转换好的的十六进制字符串addi $a1,$a1,4addi $a2,$a2,1b print
hex:   la $a0, Hex  lw   $a1,8($sp)li $a2, 7                #循环次数addi $t1, $a0, 10       #从位置buf+10处开始存放16进制数
loop:   andi $t0, $a1, 0x0f     #取a1的低4位srl $a1, $a1, 4     #a1右移4位bge $t0, 10, char    #t0大于等于10跳转到为A-F处理addi $t0, $t0, 0x30   #0的ASCII码为0x30,在原先基础上加0x30b put
char:   addi $t0, $t0, 0x37     #A的ASCII码为65,在原先基础上加(65-10)
put:    sb $t0, ($t1)       #放置字符addi $t1, $t1, -1      #放置位置前移一个字符addi $a2, $a2, -1    #将循环次数减1bgez $a2, loop      #判断循环是否结束jr $ra
out_1:  la $a0,out1        #N非法li $v0,4syscallb out
out_2:  la  $a0,out2       #数值出现溢出li $v0,4syscallb out
ret:    jr $ra            #返回地址out: li $v0,10             #退出syscall  

已通过mars测试.
测试结果:

MIPS汇编语言实现Fibonacci数列(斐波那契数列)相关推荐

  1. C++large fibonacci大斐波那契数列的实现(附完整源码)

    C++large fibonacci大斐波那契数列的实现算法 C++large fibonacci大斐波那契数列的实现算法完整源码(定义,实现,main函数测试) 用于对任意大数执行算术运算的库lar ...

  2. Python - Python3 编程第一步 Fibonacci series: 斐波纳契数列

    Fibonacci series: 斐波纳契数列, 两个元素的总和确定了下一个数,例如:1 1 2 3 5 8 13 21 34 55 Python程序如下: def fibonacci1(n):a, ...

  3. HDU1568 Fibonacci【斐波拉契数列】

    Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. HDU-A Fibonacci sequence斐波那契数列-大数求和

    问题及代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:Fibonacci.cpp *作 者:单昕昕 *完成日期 ...

  5. 第十一章 ALDS1_10_A:Fibonacci Number 斐波那契数列

    问题链接 ALDS1_10_A:Fibonacci Number 问题内容 求出斐波那契数列的第n项的值. 思路 递推并记录前n项的值到数组,求第n项的值时用到第n-1项和第n-2项,这样我们先记录开 ...

  6. 斐波那契数列不用数组_兔子数列——斐波那契数列

    相信人们都对斐波那契数列有或多或少的了解,如果没有,那你一定听过黄金分割比或是见过下面这种图片: 斐波那契生活在十三世纪的意大利,原名列奥纳多·皮萨诺(Leonardo Pisano),他出生在意大利 ...

  7. matlab斐波那契数列画图,斐波拉契数列 斐波那契数列 matlab程序

    斐波那契数列数列从第3项开始,每一项都等于前两项之和. 例子:数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,25 ...

  8. 斐波那契数列编程python_fibonacci数列-斐波那契数列-python编程

    未完待续~ 了解fibonacci数列: 斐波纳契数列(Fibonacci Sequence),又称黄金分割数列. 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610 ...

  9. c语言斐波那契数列_神奇的数列——斐波那契数列

    斐波那契数列之美 斐波那契是一位数学家,生于公元1170年,籍贯大概是比萨,卒于1240年后.1202年,他撰写了<珠算原理>(Liber Abaci)一书.他是第一个研究了印度和阿拉伯数 ...

  10. HDU1250 Hat's Fibonacci 大数斐波那契数列

    点击打开链接 Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

最新文章

  1. 简单好听的id_一位妈妈给孩子的10大家规,简单实用,值得所有父母借鉴!
  2. 如何在 Kubernetes 中对无状态应用进行分批发布
  3. Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
  4. LASSOS方程--图像降噪
  5. 执行Hive的查询语句报错:java.lang.IllegalArgumentException: Does not contain a valid host:port authority: loca
  6. 李飞飞:一站式全链路数据管理与服务成为产业布局重点
  7. Python __all__的作用
  8. java进程消失_Linux系统下的Java进程无故消失的解决方法
  9. 宽度发生变化事件监听_PyQt5(3) :实现登录 事件监听处理 程序逻辑功能和界面分离...
  10. SQLiteDatabase中query、insert、update、delete方法参数说明
  11. Bootstrap 3之美03-独立行,文字环绕,图片自适应,隐藏元素
  12. 科学网—中文普通话语音识别DEMO,LilyMandarinSpeechRecognition V1.0 - 石自强的博文...
  13. Postman发送GET请求带中文
  14. 绑定touch事件后click无效,vue项目解决棒法
  15. 最简单的文件加密工具(完全免费)
  16. 计算过去某天距离今天过去了多少天。
  17. 华为人报:实事求是科研方向与20年艰苦努力
  18. 二分算法实例应用(二)
  19. 学海拾遗:汇编语言实验
  20. [SWPU2019]伟大的侦探1

热门文章

  1. java adsl 拨号_[zt]利用脚本实现ADSL自动拨号上网
  2. 关于vcf文件的读取
  3. 平行四边形的定义以及判定和性质
  4. 电脑热点的连接问题(基于现有IPhone12)
  5. “猫”和路由器是一个东西吗?
  6. 个人账号密码管理体系(密码篇)
  7. Python爬虫——糗百
  8. python 金融发欺诈_python金融反欺诈-项目实战
  9. 51单片机之数据转移指令MOV、MOVX、MOVC等
  10. 项目jar包启动的命令