| [Назад] [Далее] | ![]() |
При умножении следует просто помнить, что умножение 16-битных чисел дает 32-битный результат, а умножение 32-битных чисел — 64-битный результат. Например, пусть ЕАХ и ЕВХ содержат числа с фиксированной запятой в формате 16:16:
xor edx,edx
mul ebx ; теперь EDX:EAX содержит 64-битный результат
; (EDX содержит всю целую часть, а ЕАХ - всю дробную)
shrd eax,edx,16 ;теперь ЕАХ содержит ответ, если не
; произошло переполнение (то есть если результат не превысил 65 535)
аналогом IMUL в этом случае будет последовательность команд
cdq
imul ebx
shrd eax,edx,16