MIPS汇编语言学习笔记32:浮点数 与 If 语句

本文已收录于 MIPS汇编语言学习笔记 系列,共计 27 篇,本篇是第 27 篇

本文已收录到:MIPS汇编语言学习笔记 专题

原课程视频

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

 

本节视频讲解

作者: 高志远

高志远,24岁,男生

发表评论

邮箱地址不会被公开。