(Большинство) язык ассемблера на самом деле не обеспечивает принудительное применение типов, поэтому вы можете просто инициализировать местоположение с этим значением, а затем использовать / использовать его как число с плавающей точкой.Самый простой способ конвертации - это что-то вроде:
.data
myfloat dd 042F6E979H
mydec db 10 dup(?)
.code
mov ebx, offset mydec
fld myfloat
fbstp [ebx]
Это на самом деле дает двоичное двоичное десятичное число, поэтому вы должны разделить каждый байт на две цифры для отображения.Конечно, это для x86 - большинство других архитектур усложняют работу.Например, в PowerPC у вас есть fctiw
, который просто преобразуется в целое число (в том же общем порядке, что и x86 fist
).Чтобы использовать его, вы обычно умножаетесь на кратное 10, чтобы получить желаемое количество десятичных разрядов, затем конвертируете в целое число и ставите десятичную точку в нужном месте в результате.Это может показаться немного уродливым, если / если 1) вы близки к пределам диапазона для числа с плавающей запятой или 2) вам нужна большая точность, чем вы можете представить в одном целом числе.