gpt4 book ai didi

assembly - 从 TASM 中的 FPU 堆栈弹出 TWORD 变量

转载 作者:行者123 更新时间:2023-12-04 07:22:27 24 4
gpt4 key购买 nike

我正在用 Turbo Assembler 编写一个程序,它从控制台获取一个数字,根据它计算另一个数字,并将结果打印到控制台。

我已经完成了从字符串到 float 的转换并通过子程序返回(我认为这并不重要,以防万一)。但是,我有问题。我必须使用 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 数字,像这样:

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

关于assembly - 从 TASM 中的 FPU 堆栈弹出 TWORD 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50369079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com