浮点数的表示和计算.doc

上传人:F****n 文档编号:101100230 上传时间:2019-09-26 格式:DOC 页数:10 大小:67.50KB
返回 下载 相关 举报
浮点数的表示和计算.doc_第1页
第1页 / 共10页
浮点数的表示和计算.doc_第2页
第2页 / 共10页
浮点数的表示和计算.doc_第3页
第3页 / 共10页
浮点数的表示和计算.doc_第4页
第4页 / 共10页
浮点数的表示和计算.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《浮点数的表示和计算.doc》由会员分享,可在线阅读,更多相关《浮点数的表示和计算.doc(10页珍藏版)》请在金锄头文库上搜索。

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,$sp

3、,28sw $a0,0($fp) #calculate the first numberandi $s2,$s0,0x # s2 is the sign srl$s2,$s2,31andi $s3,$s0,0x7f# s3 is the exponent srl$s3,$s3,23andi $s4,$s0,0x007fffff# s4 is the fraction addi$s4,$s4,0x #calculate the second numberandi $s5,$s1,0x # s5 is the sign srl$s5,$s5,31andi $s6,$s1,0x7f# s6 is t

4、he exponent srl$s6,$s6,23andi $s7,$s1,0x007fffff# s7 is the fraction addi$s7,$s7,0xsub$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) #calculate the first numberandi $s2,$s0,0x # s2 is th

5、e sign srl$s2,$s2,31andi $s3,$s0,0x7f# s3 is the exponent srl$s3,$s3,23andi $s4,$s0,0x007fffff# s4 is the fraction addi$s4,$s4,0x #calculate the second numberxori $s5,$s1,0x # s5 is the sign srl$s5,$s5,31andi $s6,$s1,0x7f# s6 is the exponent srl$s6,$s6,23andi $s7,$s1,0x007fffff# s7 is the fraction a

6、ddi$s7,$s7,0xsub$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 # exp # 0.1fracsll$t6,$s0,9srl $t6,$t6,9ori $t6,$t6,0xsll $t6,$t6,8 addi $t4,$t4,1 # 0.1fracsll

7、$t7,$s1,9srl $t7,$t7,9ori $t7,$t7,0xsll $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,$t7mfhi $t5#regularandi $t8,$t5,0xbeq $t8,0x,mutilnextsll $t5,$t5,1sub $t4,$t4,1mutilnext:sll $t5,$t5,1 # IEEE7

8、54sub $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,msg3syscall 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. 除法

9、指令如下: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,0xsll $t7,$s1,9srl $t7,$t7,9ori $t7,$t7,0xsub $t4,$t4,$t5 # final expaddi $t4,$t4,127sub $t5,$t5,$t5divideCompareSign:add $t2,$t2,$t3 sll $t2,$t2,31

10、# 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,dividebreakout #compare the two numberblt $t6,$t7,dividelowerdividegreater:sub $t6,$t6,$t7 #divide is lowersll $t6,$t6,1sll $t8,$t8,1addi $t8,$t8,1addi

11、$t5,$t5,1j dividecomparedividelower:sll $t6,$t6,1sll $t8,$t8,1addi $t5,$t5,1jdividecomparedividebreakout:blt $t8,0x,dividedoSllbge $t8,0x,dividedoSrlj divideresultdividedoSll:sll $t8,$t8,1subi $t4,$t4,1blt $t8,0x,dividedoSllj divideresultdividedoSrl:srl $t8,$t8,1addi $t4,$t4,1bge $t8,0x,dividedoSrlj divideresultdivideresult:bgt $t4,255,divideoverFlowsll $t8,$t8,9srl $t8,$t8,9sll $t4,$t4,24srl $t4,$t4,1add $t2,$t2,$t4add $t2,$t2,$t8add$s2,$t2,$zero# save resultli $v0,4la $a0,msg3 #output messagesyscall li $v0,2mtc1 $t2,$f12 syscalljdiviedend 5. 十进制转换为二进制指令如下:dex2:subu$sp,$sp,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号