浮点数的表示和计算.docx
- 文档编号:533119
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:12
- 大小:44.10KB
浮点数的表示和计算.docx
《浮点数的表示和计算.docx》由会员分享,可在线阅读,更多相关《浮点数的表示和计算.docx(12页珍藏版)》请在冰豆网上搜索。
浮点数的表示和计算
《计算机组成原理》实验报告
年级、专业、班级
姓名
实验题目
浮点数的表示和计算
实验时间
实验地点
A主404
实验成绩
实验性质
□验证性□设计性□综合性
教师评价:
□算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;
□实验结果正确;□语法、语义正确;□报告规范;
其他:
评价教师签名:
一、实验目的
(1)深入掌握二进制数的表示方法以及不同进制数的转换;
(2)掌握二进制不同编码的表示方法;
(3)掌握IEEE754中单精度浮点数的表示和计算。
二、实验项目内容
假设没有浮点表示和计算的硬件,用软件方法采用仿真方式实现IEEE754单精度浮点数的表示及运算功能,具体要求如下:
(1)程序需要提供人机交互方式(GUI或者字符界面)供用户选择相应的功能;
(2)可接受十进制实数形式的输入,在内存中以IEEE754单精度方式表示,支持以二进制和十六进制的方式显示输出;
(3)可实现浮点数的加减乘除运算;
(4)可以使用80X86或MIPS或ARM汇编指令,但是不能使用浮点指令,只能利用整数运算指令来编写软件完成。
三、实验过程或算法(源程序)
1.本次项目我们采用单精度浮点数格式读入两个浮点数,并读入一个操作符,然后根据操作符类型选择运算类型,加法指令如下:
sum:
subu$sp,$sp,32
sw$ra,20($sp)
sw$fp,16($sp)
addiu$fp,$sp,28
sw$a0,0($fp)#calculatethefirstnumber
andi$s2,$s0,0x80000000#s2isthesign
srl$s2,$s2,31
andi$s3,$s0,0x7f800000#s3istheexponent
srl$s3,$s3,23
andi$s4,$s0,0x007fffff#s4isthefraction
addi$s4,$s4,0x00800000#calculatethesecondnumber
andi$s5,$s1,0x80000000#s5isthesign
srl$s5,$s5,31
andi$s6,$s1,0x7f800000#s6istheexponent
srl$s6,$s6,23
andi$s7,$s1,0x007fffff#s7isthefraction
addi$s7,$s7,0x00800000
sub$t0,$s3,$s6
blt$t0,0,sumL1#addsub
bgt$t0,0,sumL2#subadd
beq$t0,0,sumL3
2.减法指令如下:
mysub:
subu$sp,$sp,32
sw$ra,20($sp)
sw$fp,16($sp)
addiu$fp,$sp,28
sw$a0,0($fp)#calculatethefirstnumber
andi$s2,$s0,0x80000000#s2isthesign
srl$s2,$s2,31
andi$s3,$s0,0x7f800000#s3istheexponent
srl$s3,$s3,23
andi$s4,$s0,0x007fffff#s4isthefraction
addi$s4,$s4,0x00800000#calculatethesecondnumber
xori$s5,$s1,0x80000000#s5isthesign
srl$s5,$s5,31
andi$s6,$s1,0x7f800000#s6istheexponent
srl$s6,$s6,23
andi$s7,$s1,0x007fffff#s7isthefraction
addi$s7,$s7,0x00800000
sub$t0,$s3,$s6
blt$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,1
srl$t4,$t4,24#exp
sll$t5,$s1,1
srl$t5,$t5,24#exp#0...1frac
sll$t6,$s0,9
srl$t6,$t6,9
ori$t6,$t6,0x00800000
sll$t6,$t6,8
addi$t4,$t4,1#0...1frac
sll$t7,$s1,9
srl$t7,$t7,9
ori$t7,$t7,0x00800000
sll$t7,$t7,8
addi$t5,$t5,1
sub$t4,$t4,127
add$t4,$t4,$t5#finalexp
sub$t5,$t5,$t5
mutilCompareSign:
add$t2,$t2,$t3
sll$t2,$t2,31#finalsign
multu$t6,$t7
mfhi$t5
#regular
andi$t8,$t5,0x80000000
beq$t8,0x80000000,mutilnext
sll$t5,$t5,1
sub$t4,$t4,1
mutilnext:
sll$t5,$t5,1#IEEE754
sub$t4,$t4,1
srl$t5,$t5,9#finalfraction
mutilFinal:
sll$t4,$t4,24
srl$t4,$t4,1
addu$t2,$t2,$t4
addu$t2,$t2,$t5#result
add$s2,$t2,$zero#saveresult
li$v0,4
la$a0,msg3
syscall
li$v0,2
mtc1$t2,$f12
syscall
la$a0,msg0#newline
li$v0,4
syscall
lw$ra,20($sp)
lw$fp,16($sp)
addiu$sp,$sp,32
jr$ra
4.除法指令如下:
divideStart:
srl$t2,$s0,31
srl$t3,$s1,31
sll$t4,$s0,1
srl$t4,$t4,24#exp
sll$t5,$s1,1
srl$t5,$t5,24#exp
sll$t6,$s0,9
srl$t6,$t6,9
ori$t6,$t6,0x00800000
sll$t7,$s1,9
srl$t7,$t7,9
ori$t7,$t7,0x00800000
sub$t4,$t4,$t5#finalexp
addi$t4,$t4,127
sub$t5,$t5,$t5
divideCompareSign:
add$t2,$t2,$t3
sll$t2,$t2,31#finalsign
sub$t8,$t8,$t8#usetorecorddivid
sub$t3,$t3,$t3#usetorecordremainder
sub$t5,$t5,$t5#useascounter
dividecompare:
bge$t5,24,dividebreakout#comparethetwonumber
blt$t6,$t7,dividelower
dividegreater:
sub$t6,$t6,$t7#divideislower
sll$t6,$t6,1
sll$t8,$t8,1
addi$t8,$t8,1
addi$t5,$t5,1
jdividecompare
dividelower:
sll$t6,$t6,1
sll$t8,$t8,1
addi$t5,$t5,1
jdividecompare
dividebreakout:
blt$t8,0x00800000,dividedoSll
bge$t8,0x01000000,dividedoSrl
jdivideresult
dividedoSll:
sll$t8,$t8,1
subi$t4,$t4,1
blt$t8,0x00800000,dividedoSll
jdivideresult
dividedoSrl:
srl$t8,$t8,1
addi$t4,$t4,1
bge$t8,0x01000000,dividedoSrl
jdivideresult
divideresult:
bgt$t4,255,divideoverFlow
sll$t8,$t8,9
srl$t8,$t8,9
sll$t4,$t4,24
srl$t4,$t4,1
add$t2,$t2,$t4
add$t2,$t2,$t8
add$s2,$t2,$zero#saveresult
li$v0,4
la$a0,msg3#outputmessage
syscall
li$v0,2
mtc1$t2,$f12
syscall
jdiviedend
5.十进制转换为二进制指令如下:
dex2:
subu$sp,$sp,32
sw$ra,20($sp)
sw$fp,16($sp)
addiu$fp,$sp,28
sw$a0,0($fp)
add$a0,$s2,$zero
add$t9,$zero,$
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浮点 表示 计算