Я пишу программу в 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 говорит:
Неопределенный символ: TWORD
Аргумент нуждается в переопределении типа
Указывает на самую последнюю строку кода, который я дал здесь.
Нет проблем, если я сделаю это, например, с ДВОЙНЫМ номером, например:
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, которые я уже знал.