本文已收录到: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=3
程序要求:
打印出“HelloWord”。
程序分析:
每个mips程序都分为数据部分(.data)和文本部分(.text)。
# .data 包含程序所有的数据部分,就像c语言中的 变量、 .data # 这是一个消息,需要将消息放入 随机存储寄存器 中,在此之前我必须告诉其数据类型是什么。 myMessage: .asciiz "Hello World \n" # 文本部分包含所有的声明 .text li $v0, 4 # 连接加载指令,将立即数 4 放入 $v0 寄存器中。如果不清楚可以看MARS软件的单步调试。 la $a0, myMessage syscall
.asciiz数据类型:类似String数据类型。
下图是MARS软件的自动提示功能,显示出了很多mips数据类型(更多mips数据类型可参考下面的pdf文档)。
关于mips数据类型,可以看下面的pdf文档。总结了很多mips数据类型。
补充:关于浮点数操作指令
L.S 从存储器中读取单精度浮点数到寄存器中 L.S R1, 0(R2)
L.D 从存储器中读取双精度浮点数到寄存器中 L.D R1, 0(R2)
S.S 把单精度浮点数从寄存器存储到存储器中 S.S R1, 0(R2)
S.D 把双精度数据从存储器存储到存储器中 S.D R1, 0(R2)
MOV.S 把一个单精度浮点数从一个浮点寄存器复制到另一个浮点寄存器 MOV.S F0,F1
MOV.D 把一个双精度浮点数从一个浮点寄存器复制到另一个浮点寄存器 MOV.D F0,F1
ADD.S 把一个单精度浮点数加上一个双精度浮点数,结果是单精度浮点数 ADD.S F0,F1,F2
ADD.D 把一个双精度浮点数加上一个单精度浮点数,结果是双精度浮点数 ADD.D F0,F1,F2
SUB.S 一个双精度浮点数减去一个单精度浮点数,结果为单精度 SUB.S F1,F2,F3
SUB.D 一个双精度浮点数减去一个单精度浮点数,结果为双精度浮点数 SUB.D F1,F2,F3
MUL.S 一个双精度浮点数乘以一个单精度浮点数,结果为单精度浮点数 DMUL.S F1,F2,F3
MUL.D 一个双精度浮点数乘以一个单精度浮点数,结果为双精度浮点数 DMUL.D F1,F2,F3
DIV.S 一个双精度浮点数除以一个单精度浮点数,结果为单精度浮点数 DIV.S F1,F2,F3
DIV.D 一个双精度浮点数除以一个单精度浮点数,结果为双精度浮点数 DIV.D F1,F2,F3
# .data 包含程序所有的数据部分,就像c语言中的 变量、 .data # 这是一个消息,需要将消息放入 随机存储寄存器 中,在此之前我必须告诉其数据类型是什么。 myMessage: .asciiz "Hello World!\n" # 文本部分包含所有的声明 .text li $v0, 4 # 连接加载指令,将立即数 4 放入 $v0 寄存器中。作用:打印字符串,在屏幕上输出字符串。 la $a0, myMessage # 把myMessage在主存(RAM)中的地址拷贝到寄存器a0中。 syscall
B站限制未登录最高720P画质。可切换其他播放源或点击右上角“去bilibili观看”登录后享受1080p画质。
疑问?li $v0, 4 指令是干啥用的??
提示:博客中的视频如果播放卡顿可以在阿里云盘上下载/在线看视频:
「2021-03-14-13-56-31.mp4」https://www.aliyundrive.com/s/y2GJijZYdgj
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
B站也上传了:https://www.bilibili.com/video/BV1jY411b7Sd/
界面右边和下面的字体怎么调整啊,太小了
启动MARS后,菜单 – Settings – Editor – Font Size 可以修改文本大小。右边和下面软件本身的文字大小我也不知道怎么调,最简单的方法是调整下分辨率,Win10中把缩放改为125%,这样文字不算小。 :hehe:
感谢您的讲解,萌新结合您的笔记懂得了很多。大家可以多多支持一下。当然您也可以在访问文档的时候可以更加熟练一点,当然只是建议
非常开心您的访问和留言,这里MIPS笔记中的视频是我学习期间录制的,可能会有一些错误,大家可以一起学习。感谢您的建议,我会改进的 :haha: