本文已收录到: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 语句
程序功能:通过函数实现打印输出字符“Hello World!”。
原视频:
https://www.bilibili.com/video/BV19J411y7pA?p=15
讲解视频:
视频播放器
00:00
00:00
代码:
- .data
- message: .asciiz "Hello World!\n"
- .text
- main:
- jal display # $pc <- display代码地址,$ra <- pc+4,也就是第七行代码地址
- # 宣告本程序执行完毕,exit退出
- li $v0, 10
- syscall
- display:
- la $a0, message
- li $v0, 4
- syscall
- jr $ra # $pc <- $ra
提示:博客中的视频如果播放卡顿可以在阿里云盘上下载/在线看视频:
「2021-03-21-12-57-07.mp4」https://www.aliyundrive.com/s/EvtXoQnizVA
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
希望大佬上传到B站 说实话 你BLOG有点卡 也有可能我在国外的原因
Blog用的香港线路的云主机,境外访问效果确实不好,我稍后把视频上传到阿里云盘上。 :taikaixin:
感谢讲解,这里清晰了很多,确实和C比较像,不过比C更细致就是了。这里注意到相邻的指令地址相差是4,之前都没有在意。。这个是内置的吗?
晚上好,“相邻的指令地址相差是4”是因为在32位MIPS体系的CPU中,每一条指令都是固定长度。这是MIPS设计之初就确定的事情——MIPS采用定长指令。
又因为32位MIPS CPU每一条指令占用32比特位,即 4 字节(1字节 = 8比特位),所以在指令存储器中每相邻的两条MIPS指令相差4字节,这也就解释了为什么“相邻的指令地址相差是4”。
可以点击这篇文章,里面有附图,可以解释一条指令占用32比特位:https://gaozhiyuan.net/computer/cpu/mips-logic-shifting-instruction.html