• 汇编语言读写浮点数值

    本教程链接库有两个浮点数输入输出过程,如下所示:

    • 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

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

更多...

加载中...