MIPS выводит 0.0 вместо ввода

совершенно новый для MIPS и ассемблера. Попытка сделать простую программу, которая читает поплавок и выводит его. Возникла небольшая проблема:

           .data
msg2: .asciiz "please enter a value: "

    .text
    .globl main
main: 
    li $v0, 4                         #load value for print_string
    la $a0, msg2                   #load address of msg2 into $a0
    syscall                           #print msg2 to screen

    li $v0, 6                         #load value for read_float
    mov.s $f1, $f0
    syscall                           #read inputted value


    li $v0, 2           
    syscall     
    jr $ra

Я ввожу число с плавающей запятой в SPIM, и оно выдает 0,00000000. Кажется, это должно быть проще. Я искал помощь относительно MIPS и поплавков/двойников, но я не могу найти много. Любая помощь будет принята с благодарностью


person lastofscreenames    schedule 03.10.2014    source источник


Ответы (1)


Вызов read_float (системный вызов 6) помещает свой результат в $f0.

Вызов print_float (системный вызов 2) ожидает, что его аргумент будет в $f12.

Вам понадобится что-то, чтобы переместить значение в соответствующее место.

person Community    schedule 03.10.2014
comment
Выполнит ли это 'mov.s $f12, $f0'? - person lastofscreenames; 03.10.2014
comment
Возможно - да. Я решил, что это домашнее задание, поэтому не хотел слишком много кормить вас ответом. :) - person ; 03.10.2014