在MIPS中将float转换为二进制

时间:2015-11-10 21:05:25

标签: assembly floating-point mips mips32

我正在为作业编写代码,我需要将十进制数转换为IEEE754表示。例如:输入“8.855”并输出“0 10000010 00011011010111000010100”。 我将数字存储在浮动寄存器中并尝试打印每个数字,但我无法得到它。 这是我的代码:

.text
main:
li.s $f0 -0.855 #load floating point immediate
mfc1 $t8 $f0 #store in $t8

#extract bit 31 --10000000000000000000000000000000--
and $a0, $t1, 0x80000000
srl  $a0 $a0 31

#print sign
addi $v0 $zero 1
syscall

#print space
addi $a0 $zero 32
addi $v0 $zero 11
syscall

#extract bits 23-30 --01111111100000000000000000000000--
and $a0, $t1, 0x7F800000
srl  $a0 $a0 23

#print exponent
addi $v0 $zero 1
syscall

#print space
addi $a0 $zero 32
addi $v0 $zero 11
syscall

#extract bits 0-22 --00000000011111111111111111111111--
and $a0, $t1, 0x003FFFFF

#print mantissa
addi $v0 $zero 1
syscall

#print new line
addi $a0 $zero 10
addi $v0 $zero 11
syscall

jr $ra

我认为我的代码位置错误,但我不太确定。有任何想法吗?? 谢谢大家!! :d

0 个答案:

没有答案