0

ここにコードがありますが、浮動小数点数を宣言、入力、および出力する方法がわかりません。c では、%f は float です。コードで試してみましたが、機能しません。REAL 8も試しました。これが私のコードです。%d が整数であることは知っていますが、 %f を使用すると、出力が 0.000000 になり、正確な答えを出力できません。

.386
.model flat, c
.stack 100h


printf      PROTO arg1:Ptr byte, printlist:VARARG
scanf       PROTO arg2:Ptr byte, inputlist:VARARG

.data
in1fmt      byte "%d" , 0
msg1fmt     byte 0Ah, "%s" , 0
msg2fmt     byte 0Ah, 0Ah, "%s" , 0
msg3fmt     byte 0Ah,"%s%d" , 0Ah, 0Ah, 0
msg4fmt     byte 0Ah,"%s%d" , 0Ah, 0Ah, 0Ah, 0Ah, 0
msg5fmt     byte 0Ah, "%s%d" , 0Ah, 0Ah,  0
msg1        byte "Enter any number: " , 0
msg2        byte "Enter another number: " , 0
msg3        byte "The sum is: " , 0
msg4        byte "The product is: " , 0
msg5        byte "The largest is: ", 0

num1        sdword ?
num2        sdword ?
sum         sdword ?
product     sdword ?
largest     sdword ?

.code
main        proc
INVOKE printf, ADDR msg1fmt, ADDR msg1
INVOKE scanf, ADDR in1fmt, ADDR num1
INVOKE printf, ADDR msg2fmt, ADDR msg2
INVOKE scanf, ADDR in1fmt, ADDR num2

mov eax, 0
mov eax, num1
add eax, num2
mov sum, eax
mov eax, 0
mov eax, num1
imul num2
mov product, eax
mov eax, 0
add eax, num1
.if eax > num2
mov eax, num1
mov largest, eax
.else
mov eax, 0
add eax, num2
mov largest, eax
.endif

INVOKE printf, ADDR msg3fmt, ADDR msg3, sum
INVOKE printf, ADDR msg4fmt, ADDR msg4, product
INVOKE printf, ADDR msg5fmt, ADDR msg5, largest

ret
main        endp
end
4

1 に答える 1