从 TASM 中的 FPU 堆栈弹出 TWORD 变量
Pop TWORD variable from FPU stack in TASM
我正在用 Turbo Assembler 编写一个程序,它从控制台获取一个数字,根据它计算另一个数字,然后将结果打印到控制台。
我已经完成了从字符串到浮点数的转换并通过子程序返回(我认为这并不重要,以防万一)。但是,我有问题。我必须使用 LONG DOUBLE (TWORD, DT) 数字,但我做不到!我可以用 DOUBLE (QWORD, DQ) 和 FLOAT (DWORD, DD) 数字来做,但不能用 TWORD。
好的,只是代码(我通过堆栈传递参数,以防万一):
locals __
...
string_to_float proc near
arg __ARGS:word:4 = __ARGSIZE
__ARG struc
__BP dw ?
__IP dw ?
__STRING dw ? ; string address
__DT dw ? ; LONG DOUBLE number address
__ARG ends
...
mov BX, __DT[BP]
fstp tword ptr [BX]
...
组装时,TASM 说:
Undefined symbol: TWORD
Argument needs type override
它指向我在这里给出的代码的最后一行。
我这样做是没有问题的,比如DOUBLE number,像这样:
locals __
...
string_to_float proc near
arg __ARGS:word:4 = __ARGSIZE
__ARG struc
__BP dw ?
__IP dw ?
__STRING dw ?
__DQ dw ? ; DOUBLE number address
__ARG ends
...
mov BX, __DQ[BP]
fstp qword ptr [BX]
...
这里可以做什么?我已经为 TWORD 搜索了不同的名称,但我只找到了,嗯,我已经知道的 TWORD 和 DT。
FSTP TBYTE PTR [BX]
最后检查 TD 反汇编确实帮助最大,即使检查快速参考指南和 fstp
指令示例也不够,示例在那里是错误的,我忽略了页面上定义的 tbyte ptr
《Turbo Assembler 5.0 快速参考指南》中的12:
TBYTE PTR expression | Ideal, MASM
Forces address expression to be 10-byte size
我正在用 Turbo Assembler 编写一个程序,它从控制台获取一个数字,根据它计算另一个数字,然后将结果打印到控制台。
我已经完成了从字符串到浮点数的转换并通过子程序返回(我认为这并不重要,以防万一)。但是,我有问题。我必须使用 LONG DOUBLE (TWORD, DT) 数字,但我做不到!我可以用 DOUBLE (QWORD, DQ) 和 FLOAT (DWORD, DD) 数字来做,但不能用 TWORD。 好的,只是代码(我通过堆栈传递参数,以防万一):
locals __
...
string_to_float proc near
arg __ARGS:word:4 = __ARGSIZE
__ARG struc
__BP dw ?
__IP dw ?
__STRING dw ? ; string address
__DT dw ? ; LONG DOUBLE number address
__ARG ends
...
mov BX, __DT[BP]
fstp tword ptr [BX]
...
组装时,TASM 说:
Undefined symbol: TWORD
Argument needs type override
它指向我在这里给出的代码的最后一行。
我这样做是没有问题的,比如DOUBLE number,像这样:
locals __
...
string_to_float proc near
arg __ARGS:word:4 = __ARGSIZE
__ARG struc
__BP dw ?
__IP dw ?
__STRING dw ?
__DQ dw ? ; DOUBLE number address
__ARG ends
...
mov BX, __DQ[BP]
fstp qword ptr [BX]
...
这里可以做什么?我已经为 TWORD 搜索了不同的名称,但我只找到了,嗯,我已经知道的 TWORD 和 DT。
FSTP TBYTE PTR [BX]
最后检查 TD 反汇编确实帮助最大,即使检查快速参考指南和 fstp
指令示例也不够,示例在那里是错误的,我忽略了页面上定义的 tbyte ptr
《Turbo Assembler 5.0 快速参考指南》中的12:
TBYTE PTR expression | Ideal, MASM
Forces address expression to be 10-byte size