版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.mips汇编语言之实现swap函数 收藏 此程序用来交换两个整数已在pcspim下编译通过# programed by stevie zou # purpose:to swap two values # 10-15-2008 # # text segment # .text .globl mainmain: la $t0, number #读取两个整数并放入寄存器$t1,$t2 lw $t1, 0($t0) lw $t2, 4($t0) li $v0, 4 #打印msg1 la $a0, msg1 syscall li $v0, 1 #打印转换前$t1中的值 move $a0, $t1 sy
2、scall li $v0, 4 #打印msg2 la $a0, msg2 syscall li $v0, 1 #打印转换前$t2中的值 move $a0, $t2 syscall move $t3, $t1 #关键部分,在寄存器间move数据 move $t1, $t2 move $t2, $t3 li $v0, 4 #打印msg3 la $a0, msg3 syscall li $v0, 1 #打印转换后$t1中的值 move $a0, $t1 syscall li $v0, 4 #打印换行符 /n la $a0, msg4 syscall li $v0, 1 #打印转换后$t2中的值 mo
3、ve $a0, $t2 syscall# data segment # .datanumber: .word 12,34msg1: .asciiz the first number is:nmsg2: .asciiz nthe second number is:nmsg3: .asciiz nnow they are swapped as:nmsg4: .ascii n# end of file程序运行结果为:本文来自CSDN博客,转载请标明出处:/yihaozou/archive/2008/10/19/3081322.aspxmips汇编简单实例一个小计
4、算器 收藏 其实开始的时候一直在看 mips的指令格式,看了、忘了,没什么效果。现在通过这个例子,简单训练一下: mips汇编中:常用寄存器的使用;系统调用: 1(print_int),4(print_str),5(read_int),10(exit);算术运算: add,sub,mul,div;逻辑运算及跳转;上代码:(汇编写的少,代码书写、风格还很差劲,感谢请大虾指教):view plaincopy to clipboardprint?#sample example a small calculater .text # text section .globl main # call mai
5、n by SPIM main: la $t0, value # load address value into $t0 la $a0,msg0 li $v0,4 syscall #print please choose the operation: li $v0, 5 syscall sw $v0, 8($t0) la $a0,msg1 li $v0,4 syscall #print first num: li $v0, 5 syscall sw $v0, 0($t0) la $a0,msg2 li $v0,4 syscall #print second num: li $v0, 5 sysc
6、all sw $v0, 4($t0) #read the other num la $a0,newline li $v0,4 syscall #print n lw $t1, 0($t0) # load the first num lw $t2, 4($t0) # load the second num lw $t3, 8($t0) # load the operation beq $t3,1,addOp # if + beq $t3,2,subOp # if - beq $t3,3,mulOp # if * beq $t3,4,divOp # if / addOp: add $t4, $t1
7、, $t2 # $t1 + $t2 = $t4 sw $t4, 12($t0) # la $t5,addFlag j printResult subOp: sub $t4, $t1, $t2 # $t1 - $t2 = $t4 sw $t4, 12($t0) la $t5,subFlag j printResult mulOp: mul $t4, $t1, $t2 # $t1 * $t2 = $t4 sw $t4, 12($t0) la $t5,mulFlag j printResult divOp: div $t4, $t1, $t2 # $t1 / $t2 = $t4 sw $t4, 12
8、($t0) la $t5,divFlag j printResult printResult: lw $a0,0($t0) li $v0,1 syscall #read first number la $a0,0($t5) li $v0,4 syscall #print opflag lw $a0,4($t0) li $v0,1 syscall #print second number la $a0,equalStr li $v0,4 syscall #print = lw $a0,12($t0) li $v0,1 syscall # print sum result j exit exit:
9、 la $a0,newline li $v0,4 syscall #print n li $v0,10 syscall # exit # data section .data value: .word 0, 0, 0 ,0 ,0 # 0: first num ,4 : second num , 8 : operation , 12:result msg0 : .asciiz please choose the operation(14):ntt1 : +,addition ntt2 : -,subtracterntt3 : * multiplication ntt4 : /,divisionn
10、 msg1 : .asciiz first num: msg2 : .asciiz second num: addFlag : .asciiz + subFlag : .asciiz - mulFlag : .asciiz * divFlag : .asciiz / equalStr : .asciiz = newline : .asciiz n=n #sample example a small calculater.text # text section.globl main# call main by SPIMmain:la $t0, value# load address value
11、into $t0la $a0,msg0 li $v0,4 syscall#print please choose the operation:li$v0, 5syscallsw$v0, 8($t0)la $a0,msg1 li $v0,4 syscall#print first num:li$v0, 5syscallsw$v0, 0($t0)la $a0,msg2 li $v0,4 syscall#print second num:li$v0, 5syscallsw$v0, 4($t0)#read the other numla $a0,newline li $v0,4 syscall#pri
12、nt nlw $t1, 0($t0)# load the first numlw $t2, 4($t0)# load the second numlw $t3, 8($t0)# load the operationbeq $t3,1,addOp# if +beq $t3,2,subOp# if -beq $t3,3,mulOp# if *beq $t3,4,divOp# if /addOp:add $t4, $t1, $t2# $t1 + $t2 = $t4 sw $t4, 12($t0)# la $t5,addFlagj printResultsubOp:sub $t4, $t1, $t2#
13、 $t1 - $t2 = $t4 sw $t4, 12($t0)la $t5,subFlagj printResultmulOp:mul $t4, $t1, $t2# $t1 * $t2 = $t4 sw $t4, 12($t0)la $t5,mulFlagj printResultdivOp:div $t4, $t1, $t2# $t1 / $t2 = $t4 sw $t4, 12($t0)la $t5,divFlagj printResultprintResult:lw $a0,0($t0) li $v0,1 syscall#read first numberla $a0,0($t5) l
14、i $v0,4 syscall#print opflaglw $a0,4($t0) li $v0,1 syscall#print second numberla $a0,equalStr li $v0,4 syscall#print = lw $a0,12($t0) li $v0,1 syscall# print sum resultj exitexit:la $a0,newline li $v0,4 syscall#print n li $v0,10 syscall# exit# data section.datavalue:.word 0, 0, 0 ,0 ,0 # 0: first nu
15、m ,4 : second num , 8 : operation , 12:resultmsg0:.asciiz please choose the operation(14):ntt1 : +,addition ntt2 : -,subtracterntt3 : * multiplication ntt4 : /,divisionnmsg1:.asciiz first num:msg2:.asciiz second num:addFlag: .asciiz + subFlag: .asciiz - mulFlag: .asciiz * divFlag: .asciiz / equalStr
16、: .asciiz = newline:.asciiz n=n 运行效果截图如下:本文来自CSDN博客,转载请标明出处:/oncoding/archive/2009/07/15/4346531.aspx本文来自CSDN博客,转载请标明出处:/oncoding/archive/2009/07/15/4346531.aspx高精度整数除法(MIPS汇编) 收藏 .datatitle: .asciiz tt高精度除法演示程序ntip1: .asciiz n请输入被除数:tip2: .asciiz 请输入除数:tip3: .a
17、sciiz 要输出小数点后多少位:tip4: .asciiz n是否继续?(y/n)err: .asciiz n除数不能为0,请重新输入ndot: .asciiz .sign: .asciiz -buf: .byte 0:16 .text.globl _start_start:#输出标题 li $v0, 4 la $a0, title syscall #提示输入被除数并接收输入 restart: li $v0, 4 la $a0, tip1 syscall li $v0, 5 syscall move $t0, $v0#提示输入除数并接收输入 input_again: li $v0, 4 la
18、 $a0, tip2 syscall li $v0, 5 syscall move $t1, $v0 #检测除数是否为0,是则输出错误信息并跳转到除数输入处,否则继续执行 bnez $t1, next li $v0, 4 la $a0, err syscall j input_again#提示输入要求的小数位数并接收输入next: li $v0, 4 la $a0, tip3 syscall li $v0, 5 syscall move $t2, $v0#两数进行除法运算,把运算结果保存到寄存器$t8和$t9 div $t0, $t1 move $s0, $zero mflo $t8 mfhi
19、 $t9#检测商是否为0,是则继续执行下一步,否则跳转到输出整数结果处 bnez $t8, int_result #检测被除数是否为非负数,是则检查除数,否则置$s0为1,$s0用来记录负数的个数 bgez $t0, next_check addi $s0, $zero, 1#检测除数是否为非负数,是则输出-号,否则$s0加1 next_check: bgez $t1, print_sign addi $s0, $s0, 1#输出-号,如果$s0值不为1,即负数个数不为奇数,则跳过此步 print_sign: bne $s0, 1, int_result li $v0, 4 la $a0, sign syscall#输出整数部分结果 int_result: li $v0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行贷款进货合同(2篇)
- 2024-2025学年初中同步测控优化设计物理八年级下册配人教版第11章 第4节 机械能及其转化含答案
- 荷花 作文 课件
- 西京学院《中国文化经典选读》2022-2023学年第一学期期末试卷
- 西京学院《土木工程施工技术与组织》2022-2023学年第一学期期末试卷
- 西京学院《建筑工程计量与计价》2022-2023学年第一学期期末试卷
- 西京学院《非线性编辑》2022-2023学年第一学期期末试卷
- 西京学院《大数据存储与管理技术》2023-2024学年期末试卷
- 西华师范大学《学科课程标准与教材研究》2021-2022学年第一学期期末试卷
- 西华师范大学《外国史学史》2022-2023学年第一学期期末试卷
- 江苏省南通市2024-2025学年七年级上学期期中英语试卷(含答案解析)
- 2022年甘肃省公务员录用考试《行测》真题及答案解析
- 排球正面上手发球课件
- 施工现场仓库、危化品管理制度
- 高三语文补写句子公开课教案省公开课获奖课件说课比赛一等奖课件
- 税收的经济效应课件
- 3.2推动高质量发展 课件-高中政治统编版必修二经济与社会-1
- GB/T 16915.1-2024家用和类似用途固定式电气装置的开关第1部分:通用要求
- 2024届清华大学强基计划数学学科笔试试题(附答案)
- 山东省潍坊市2025届高三年级10月联考语文试题及答案
- 2025届高考语文一轮复习:小说物象含义及作用
评论
0/150
提交评论