本文已收录到:MIPS汇编语言学习笔记 专题
- MIPS汇编语言学习笔记03:print HelloWorld
- MIPS汇编语言学习笔记04:print character
- MIPS汇编语言学习笔记05:print integer
- MIPS汇编语言学习笔记06:print a float
- MIPS汇编语言学习笔记07:print a double
- MIPS汇编语言学习笔记08:Adding Integers
- MIPS汇编语言学习笔记09:Subtracting Integers
- MIPS汇编语言学习笔记10:Multiplying Integers (mul方法)
- MIPS汇编语言学习笔记11:Multiplying Integers (mult方法)
- MIPS汇编语言学习笔记12:Multiplying Integers sll
- MIPS汇编语言学习笔记13:Dividing Integers part 1
- MIPS汇编语言学习笔记14:Dividing Integers part 2
- MIPS汇编语言学习笔记15:Introduction to Functions
- MIPS汇编语言学习笔记16:Function Arguments and Return Values
- MIPS汇编语言学习笔记17:将寄存器保存到堆栈
- MIPS汇编语言学习笔记18:函数嵌套调用、递归
- MIPS汇编语言学习笔记19:获取用户输入的整数
- MIPS汇编语言学习笔记20:获取用户输入的单精度浮点数
- MIPS汇编语言学习笔记21:获取用户输入的双精度浮点数
- MIPS汇编语言学习笔记22:获取用户输入的文本
- MIPS汇编语言学习笔记23:if 语句分支指令
- MIPS汇编语言学习笔记26:MIPS While 循环
- MIPS汇编语言学习笔记27:数组
- MIPS汇编语言学习笔记28:使用While循环打印数组
- MIPS汇编语言学习笔记29:数组初始化
- MIPS汇编语言学习笔记30:浮点数(小数)运算
- MIPS汇编语言学习笔记32:浮点数 与 If 语句
原课程视频
https://www.bilibili.com/video/BV19J411y7pA?p=32
程序功能
实现浮点数(单精度或双精度)比较。
有两个浮点数,比较他们是否相等,如果相等则打印“equal”,如果不相等打印输出“Unequal”。
思路
首先关于打印输出的部分是我们之前讲过也用过很多次的,不难 ,syscall系统调用,把 立即数 10 传入到$v10 寄存器中即可。
关于比较大小,整数大小的比较我们使用 beq 指令即可,如果忘记了可以参考:MIPS汇编语言学习笔记23:if 语句分支指令
但本节是关于浮点数的,所以我们要格外了解下MIPS体系中是如何定义、存储、计算、操作浮点数的,下面这篇文章我们把MIPS指令中关于浮点数的指令都罗列的出来,请参阅后编写本节代码:https://gaozhiyuan.net/assembly/about-mips-floating-point.html
本节我们要用到的有下列命令:
代码
- .data
- message1: .asciiz "equal"
- message2: .asciiz "Unequal"
- float1: .float 3.14
- float2: .float 3.14
- .text
- main:
- lwc1 $f1, float1
- lwc1 $f2, float2
- # 比较
- c.eq.s $f1, $f2 # 若相等,跳转标志为真,不等为假
- # 跳转
- bc1t equal
- li $v0, 4
- la $a0, message2
- syscall
- # 退出
- li $v0, 10
- syscall
- equal:
- li $v0, 4
- la $a0, message1
- syscall
- # 退出
- li $v0, 10
- syscall