[MIPS汇编语言]简单排序实现
来源:互联网 发布:首都 知乎 编辑:程序博客网 时间:2024/05/19 15:25
排序是程序语言的基础操作
通过排序练习可以提高对语言的掌握程度
汇编是可以说是最底层的语言了,学习汇编,可以提高对几乎所有语言的理解程度。(个人看法)
下面展示了用MIPS汇编语言实现的简单排序
(对了,如果助教,或者教授, 你看到这个,别怀疑是我在网上抄的哇!!!可以先跟我确认下哇!!!!)
.text .globl mainmain: la $t6,array # 将数组地址其实地址放到 t6位置上 move $t7 $zero # 用于计数 控制输入 addi $t8 $zero 10 j inputinput: la $a0 input_msg # 将输入信息放到a0 这个寄存器上 li $v0 4 # 将命令符寄存器中放入立即数4 用于字符输出 syscall # 输入提示符的输入完成 li $v0 5 # 调用了输入命令 5 装载到$v0上 syscall # 系统调用 输入的数被放到了v0上 move $t0 $t7 # 将临时的计数寄存器中的内容放到临时寄存器t0上 mul $t0 $t0 4 # 得到了在该点的地址偏移值 add $t0 $t0 $t6 # 将数组地址加上了偏移量t0,得到当前地址 sw $v0 0($t0) # 将$vo中的数放到t0对应的地址中 addi $t7 $t7 1 # 对计数的$t7进行加一操作 blt $t7 $t8 input # 如果不相等,就循环该进程# 开始排序了--- 采用 简单排序方式 move $t7 $zero # 计数初始化,作为外层的遍历下标sort1: addi $t5 $t7 1 addi $t8 $zero 9 slt $t0 $t7 $t8 beq $t0 $zero output # 经过确认了,一定会到达第二层sort2: # sort2表示排序从t7 + 1开始到结尾的部分和t7比较大小(t7用于外层计数 t5用于内层计数) # 先将两个数给拉下来放到$a1 $a2 两个 register上 # 用t3 t4 做地址运算同时存储了那两个东西的地址 mul $t3 $t7 4 add $t3 $t3 $t6 # 得到了外层的那个数的地址 lw $a1 0($t3) # 得到了外层那个数值 mul $t4 $t5 4 add $t4 $t4 $t6 # 得到了内层的那个数的地址 lw $a2 0($t4) # 得到了内层那个数值 slt $t0 $a1 $a2 # 如果内层那个数大于等于外层那个数 t0就会是0 beq $t0 $zero swap # 就要进行交换sort3: addi $t5 $t5 1 # 内层计数加一 addi $t8 $zero 10 slt $t0 $t5 $t8 bne $t0 $zero sort2 # 如果不是0的话,说明还没到终点 还需要进行第二层循环 addi $t7 $t7 1 # 外层计数加一 j sort1 # 进行外层循环swap: # 进行交换,交换地址是 t3 t4 对应的值是 a1 a2 sw $a2 0($t3) sw $a1 0($t4) j sort3output: move $t7 $zero # 用于计数 控制输入 addi $t8 $zero 10 # 总共有10个数print_all: move $t0 $t7 # 将 t7的数放到这个临时的t0上 mul $t0 $t0 4 # 得到偏移量 add $t0 $t6 $t0 lw $a0 0($t0) # 所得到的地址的的数 load到 a0上 li $v0 1 syscall la $a0 space_str li $v0 4 syscall addi $t7 $t7 1 blt $t7 $t8 print_all jr $ra li $v0 10 # 退出 syscall.data array: .space 2048 # 开辟数组空间 input_msg: .ascii "Input number: " # 输入数字提示符 space_str: .ascii "\n" # 输出空格信息
最后,给我的公众号拉一波关注!
本人中大一肥宅,欢迎大家关注,请扫下面的二维码
阅读全文
1 0
- [MIPS汇编语言]简单排序实现
- MIPS汇编语言实现选择排序
- 用汇编语言实现冒泡排序——基于MIPS指令系统
- ECOP——MIPS汇编语言实现冒泡排序
- [MIPS汇编语言]InsertionSort插入排序
- 汇编语言实现简单的冒泡排序
- MIPS实现冒泡排序
- mips汇编语言之实现swap函数
- mips汇编语言实现if-else分支结构
- 汇编语言实现冒泡排序
- 汇编语言实现冒泡排序
- mips汇编语言实现Fibonacci(斐波那契)数列
- mips汇编语言伪指令
- mips汇编语言编写计数器
- MIPS汇编语言的特点
- MIPS汇编语言相关
- MIPS汇编语言参考
- MIPS汇编语言指令
- Java之NIO
- java--day06面向对象
- 人类无法创造有意识的AI——新书《生命3.0》解读
- poj1041-John's trip
- 学习python
- [MIPS汇编语言]简单排序实现
- 字符指针指针与字符串
- 单片机开发之C语言编程基本规范
- 第四周项目一 建立单链表
- 源码安装php过程中出现的错误
- 记录
- CSDN换头像
- 关于富文本编辑器ueditor(php版)上传文件到阿里云OSS的简单实例
- SpringBoot进阶之单元测试