浮点数的表示和计算_第1页
浮点数的表示和计算_第2页
浮点数的表示和计算_第3页
浮点数的表示和计算_第4页
浮点数的表示和计算_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档计算机组成原理实验报告年级、专业、班级姓名实验题目浮点数的表示和计算实验时间实验地点A主404实验成绩 实验性质验证性 设计性 综合性教师评价:算法/实验过程正确; 源程序/实验内容提交 程序结构/实验步骤合理;实验结果正确; 语法、语义正确; 报告规范; 其他: 评价教师签名:一、实验目的 (1) 深入掌握二进制数的表示方法以及不同进制数的转换; (2) 掌握二进制不同编码的表示方法; (3) 掌握IEEE 754 中单精度浮点数的表示和计算。二、实验项目内容 假设没有浮点表示和计算的硬件,用软件方法采用仿真方式实现IEEE 754单精度浮点数的表示及运算功能,具体要求如下: (1)

2、 程序需要提供人机交互方式(GUI或者字符界面)供用户选择相应的功能; (2) 可接受十进制实数形式的输入,在内存中以IEEE 754单精度方式表示,支持以二进制和十六进制的方式显示输出; (3) 可实现浮点数的加减乘除运算; (4) 可以使用80X86或MIPS或ARM汇编指令,但是不能使用浮点指令,只能利用整数运算指令来编写软件完成。三、实验过程或算法(源程序) 1. 本次项目我们采用单精度浮点数格式读入两个浮点数,并读入一个操作符,然后根据操作符类型选择运算类型,加法指令如下: sum:subu$sp,$sp,32 sw $ra,20($sp)sw$fp,16($sp)addiu $fp

3、,$sp,28sw $a0,0($fp) #calculate the first numberandi $s2,$s0,0x80000000 # s2 is the sign srl$s2,$s2,31andi $s3,$s0,0x7f800000# s3 is the exponent srl$s3,$s3,23andi $s4,$s0,0x007fffff# s4 is the fraction addi$s4,$s4,0x00800000 #calculate the second numberandi $s5,$s1,0x80000000 # s5 is the sign srl$s

4、5,$s5,31andi $s6,$s1,0x7f800000# s6 is the exponent srl$s6,$s6,23andi $s7,$s1,0x007fffff# s7 is the fraction addi$s7,$s7,0x00800000sub$t0,$s3,$s6blt$t0,0,sumL1 # add subbgt$t0,0,sumL2# sub addbeq$t0,0,sumL3 2. 减法指令如下:mysub:subu$sp,$sp,32 sw $ra,20($sp)sw$fp,16($sp)addiu $fp,$sp,28sw $a0,0($fp) #calc

5、ulate the first numberandi $s2,$s0,0x80000000 # s2 is the sign srl$s2,$s2,31andi $s3,$s0,0x7f800000# s3 is the exponent srl$s3,$s3,23andi $s4,$s0,0x007fffff# s4 is the fraction addi$s4,$s4,0x00800000 #calculate the second numberxori $s5,$s1,0x80000000 # s5 is the sign srl$s5,$s5,31andi $s6,$s1,0x7f8

6、00000# s6 is the exponent srl$s6,$s6,23andi $s7,$s1,0x007fffff# s7 is the fraction addi$s7,$s7,0x00800000sub$t0,$s3,$s6blt$t0,0,subL1 # +,-bgt$t0,0,subL2# -,+beq$t0,0,subL3# +,+ or -,-3. 乘法指令如下:mutilStart:srl $t2,$s0,31 srl $t3,$s1,31 sll $t4,$s0,1srl $t4,$t4,24 # expsll $t5,$s1,1srl $t5,$t5,24 # ex

7、p # 0.1fracsll$t6,$s0,9srl $t6,$t6,9ori $t6,$t6,0x00800000sll $t6,$t6,8 addi $t4,$t4,1 # 0.1fracsll $t7,$s1,9srl $t7,$t7,9ori $t7,$t7,0x00800000sll $t7,$t7,8addi $t5,$t5,1sub $t4,$t4,127add $t4,$t4,$t5 # final expsub $t5,$t5,$t5mutilCompareSign:add $t2,$t2,$t3sll $t2,$t2,31 # final signmultu $t6,$t7

8、mfhi $t5#regularandi $t8,$t5,0x80000000beq $t8,0x80000000,mutilnextsll $t5,$t5,1sub $t4,$t4,1mutilnext:sll $t5,$t5,1 # IEEE754sub $t4,$t4,1srl $t5,$t5,9 # final fractionmutilFinal:sll $t4,$t4,24srl $t4,$t4,1addu $t2,$t2,$t4addu $t2,$t2,$t5 # resultadd$s2,$t2,$zero# save resultli $v0,4la $a0,msg3sysc

9、all li $v0,2mtc1 $t2,$f12 syscallla $a0,msg0 # new lineli $v0,4syscalllw$ra,20($sp)lw $fp,16($sp)addiu $sp,$sp,32jr$ra 4. 除法指令如下:divideStart:srl $t2,$s0,31 srl $t3,$s1,31 sll $t4,$s0,1srl $t4,$t4,24 # expsll $t5,$s1,1srl $t5,$t5,24 # expsll $t6,$s0,9srl $t6,$t6,9ori $t6,$t6,0x00800000sll $t7,$s1,9sr

10、l $t7,$t7,9ori $t7,$t7,0x00800000sub $t4,$t4,$t5 # final expaddi $t4,$t4,127sub $t5,$t5,$t5divideCompareSign:add $t2,$t2,$t3 sll $t2,$t2,31 # final signsub $t8,$t8,$t8 # use to record divid sub $t3,$t3,$t3 # use to record remaindersub $t5,$t5,$t5 # use as counterdividecompare:bge $t5,24,dividebreako

11、ut #compare the two numberblt $t6,$t7,dividelowerdividegreater:sub $t6,$t6,$t7 #divide is lowersll $t6,$t6,1sll $t8,$t8,1addi $t8,$t8,1addi $t5,$t5,1j dividecomparedividelower:sll $t6,$t6,1sll $t8,$t8,1addi $t5,$t5,1jdividecomparedividebreakout:blt $t8,0x00800000,dividedoSllbge $t8,0x01000000,divide

12、doSrlj divideresultdividedoSll:sll $t8,$t8,1subi $t4,$t4,1blt $t8,0x00800000,dividedoSllj divideresultdividedoSrl:srl $t8,$t8,1addi $t4,$t4,1bge $t8,0x01000000,dividedoSrlj divideresultdivideresult:bgt $t4,255,divideoverFlowsll $t8,$t8,9srl $t8,$t8,9sll $t4,$t4,24srl $t4,$t4,1add $t2,$t2,$t4add $t2,

13、$t2,$t8add$s2,$t2,$zero# save resultli $v0,4la $a0,msg3 #output messagesyscall li $v0,2mtc1 $t2,$f12 syscalljdiviedend 5. 十进制转换为二进制指令如下:dex2:subu$sp,$sp,32 sw $ra,20($sp)sw$fp,16($sp)addiu $fp,$sp,28sw $a0,0($fp)add$a0,$s2,$zeroadd $t9,$zero,$a0 sub $t6,$t6,$t6# set $t6=0sub $t7,$t7,$t7 # set $t7=0a

14、ddi $t5,$zero,32 # set $t5=32 as a counteraddi $t8,$zero,0x80000000 # set $t8=1000 0000 0000 0000 0000 0000 0000 0000beginLoop:addi $t5,$t5,-1# counter -and $t7,$t8,$t9srl $t8,$t8,1srlv $t7,$t7,$t5add $a0,$t7,$zero #output one bitli $v0,1syscallbeq $t5,$t6,Exist #if equals jump exist j beginLoop 6.

15、十进制转换为十六进制指令如下:dex16:subu$sp,$sp,32 sw $ra,20($sp)sw$fp,16($sp)addiu $fp,$sp,28sw $a0,0($fp)sub $t0,$t0,$t0# use as countersrloop:bge $t0,8,dex16end #16addi$t0,$t0,1srl$t1,$s2,28sll$s2,$s2,4bgt$t1,9,outcharli $v0,1add$a0,$t1,$zerosyscalljsrloopoutchar:addi $t1,$t1,55# change to charli $v0,11add$a0,$

16、t1,$zerosyscalljsrloopdex16end:la $a0,msg0# new lineli $v0,4syscalllw$ra,20($sp)lw $fp,16($sp)addiu $sp,$sp,32jr$ra四、实验结果及分析和(或)源程序调试过程 1. 实验结果:本次实验我们以十进制实数形式的输入两个浮点数,在内存中以IEEE 754单精度方式表示,执行运算操作后,以十进制形式把结果输出,并且可以以二进制和十六进制的方式显示输出,下图是执行加法运算,并输出二进制形式:下图是执行乘法操作,并输出十六进制形式:减法运算如下图:除法运算如下图:当输入错误,如除数为0时,会显示

17、错误信息并退出,如下图: 2. 实验分析:本次实验我们使用MIPS汇编指令,利用整数运算指令来编写了一个浮点数运算程序,通过在MARS 4.4软件上进行调试运行,得到了正确结果,本次实验实现了以下功能:(1) 程序提供了人机交互方式(字符界面)供用户选择相应的功能;(2) 接受十进制实数形式的输入,在内存中以IEEE 754单精度方式表示,支持以二进制和十六进制的方式显示输出;(3) 实现了浮点数的加减乘除运算;(4) 没有使用浮点指令,只利用了整数运算指令来完成软件的编写。 3. 成员分工:加、减、乘、除四个运算指令程序的编写。:十进制转二进制,十进制转十六进制代码的编写。实验报告由两人共同

18、完成。备注:1、教师在布置需撰写实验报告的实验前,应先将报告书上的“实验题目”、“实验性质”、“实验目的”、“实验项目内容”等项目填写完成,然后再下发给学生。2、教师在布置需撰写报告的实验项目时,应告知学生提交实验报告的最后期限。3、学生应按照要求正确地撰写实验报告:1) 在实验报告上正确地填写“实验时间”、“实验地点”等栏目。2) 将实验所涉及的源程序文件内容(实验操作步骤或者算法)填写在“实验过程或算法(源程序)”栏目中。3) 将实验所涉及源程序调试过程(输入数据和输出结果)或者实验的分析内容填写在“实验结果及分析和(或)源程序调试过程”栏目中。4) 在实验报告页脚的“报告创建时间:”处插入完成实验报告时的日期和时间。5) 学生将每个实验完成后,按实验要求的文件名通过网络提交(上载)到指定的服务器所规定的共享文件夹中。每个实验一个电子文档,如果实验中有多个电子文档(如源程序或图形等),则用WinRAR压缩成一个压缩包文档提交,压缩包文件名同实验报告文件名(见下条)。6) 提交的实验报告电子文档命名为:“年级(两位数字不要“级”字)专业(缩写:计算机科学与技术专业(计科

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论