Проблемы с отображением числа с плавающей точкой в ​​сборке MIPS - PullRequest
0 голосов
/ 27 марта 2020

У меня проблемы с отображением числа с плавающей запятой в мипах. Я пробовал два разных подхода, и оба не работают. Любые предложения о том, что я делаю неправильно?

Это то, что первый подход

square_ root:

la   $s0, arrayN       # initalize array parameters

l.s  $f1, 0($s0)       # load coef[a] into $f0
l.s  $f2, 4($s0)       # load coef[b] into $f1
l.s  $f3, 8($s0)       # load coef[c] into $f2
l.s  $f7, four         # load the float 4.0 to $f7

mul.s $f4, $f2, $f2    # square b.$f2 * $f2 = $f4

mul.s $f5, $f1, $f3    # multiply a*c ($f1 * $f3 = $f5)
mul.s $f6, $f7, $f5    # multiply 4*(results of ac)($f7 * $f5 = $f6)

sub.s $f0, $f4, $f6    # b^2-4ac ($f4 - $f6 = $f0)  

li  $v0, 4         # system code call for print string
la  $a0, xEq           # print "x = "
syscall

li     $v0, 2          # system code call for print integer
mov.s  $f12, $f0       # move value to be printed to $f1
syscall                # print the result

jr    $ra                # return to main 

код показывает x = 0.0 он должен отображать x = -8

второй подход, который я выбрал

square_ root:

la   $s0, arrayN       # initalize array parameters

l.s  $f1, 0($s0)       # load coef[a] into $f0
l.s  $f2, 4($s0)       # load coef[b] into $f1
l.s  $f3, 8($s0)       # load coef[c] into $f2
l.s  $f7, four         # load the float 4.0 to $f7

mul.s $f4, $f2, $f2    # square b.$f2 * $f2 = $f4

mul.s $f5, $f1, $f3    # multiply a*c ($f1 * $f3 = $f5)
mul.s $f6, $f7, $f5    # multiply 4*(results of ac)($f7 * $f5 = $f6)

sub.s $f0, $f4, $f6    # b^2-4ac ($f4 - $f6 = $f0)

swc1  $f0, posX        # output for f(x)

li  $v0, 4         # system code call for print string
la  $a0, xEq           # print "x = "
syscall

li  $v0, 1         # system code call for print string
la  $a0, posX           # print $f0 value
syscall

jr    $ra                # return to main 

Эта версия отображает x = 268501116 вместо x = -8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...