Я новичок в программировании в MIPS, и мне трудно понять, как я могу умножить два поплавка после прочтения их от пользователя. Как получить аргумент в число с плавающей запятой с одной точностью? Когда я запускаю программу, она печатает результат как 0.0 вместо числа, умноженного на константу. Может кто-нибудь объяснить мне, почему он печатает 0.0 вместо правильного номера?Умножение с плавающей запятой MIPS
.data
prompt: .asciiz "Enter the amount: "
newline: .asciiz "\n"
float1: .float 0.0
const: .float 121.28
.text
.globl main
main:
li $v0, 4 #calls print_string code 4
la $a0, prompt #pointer to string
syscall
#get amount from user
li $v0, 6 #call read_float code 6
syscall
la $a0, float1 #loads address of float1
l.s $f1, 0($a0) #a0 --> float1
la $a1, const #loads address of const
l.d $f2, 0($a1) #a1 --> float2
#calculates
mul.s $f1, $f1, $f2 #f1 = f1*f2
#prints resulting amount
li $v0, 2 #calls print_float code 2
syscall
#continual loop
li $v0, 4 #calls print_string code 4
la $a0, newline #pointer to string
syscall
j main #jumps to beginning of main
Если вы думаете, немного должно быть очевидно, что 'read_float' не может волшебным образом прочитать ввод в' float1'. Таким образом, вы умножаетесь на ноль. Если вы обратитесь к руководству, вы увидите, что 'read_float' возвращает значение в' $ f0'. Также научитесь использовать отладчик. – Jester