汇编语言读写浮点数值

< 上一页FCOM指令 FWAIT(WAIT)指令下一页 >

本教程链接库有两个浮点数输入输出过程,如下所示:
  • ReadFloat:从键盘读取一个浮点数,并将其压入浮点堆栈。
  • WriteFloat:将 ST(0) 中的浮点数以阶码形式写到控制台窗口。

ReadFloat 接收各种形式的浮点数,示例如下:

35
+35.
-3.5
.35
3.5E5
3.5E005
-3.5E+5
3.5E-4
+3.5E-4

ShowFPUStack 另一个有用的过程,能够显示 FPU 堆栈。调用该过程不需要参数:

call ShowFPUStack

【示例】下面的示例程序把两个浮点数压入 FPU 堆栈并显示,再由用户输入两个数,将它们相乘并显示乘积:
; 32位浮点数 I/O 测试      (floatTest32.asm)
INCLUDE Irvine32.inc
INCLUDE macros.inc

.data
first  REAL8 123.456
second REAL8 10.0
third  REAL8 ?

.code
main PROC
    finit                    ; 初始化 FPU

; 两个浮点数入栈,并显示 FPU 堆栈.
    fld    first
    fld    second
    call    ShowFPUStack

; 输入两个浮点数,并显示它们的乘机
    mWrite "Please enter a real number: "
    call    ReadFloat
   
    mWrite "Please enter a real number: "
    call    ReadFloat
   
    fmul    ST(0),ST(1)            ; 相乘
   
    mWrite "Their product is: "
    call    WriteFloat
    call    Crlf

    exit
main ENDP
END main
示例输入/输出(用户输入显示为粗体)如下:

< 上一页FCOM指令 FWAIT(WAIT)指令下一页 >