Assembler - язык неограниченных возможностей


Деление


Число, записанное с фиксированной запятой в формате 16:16, можно представить как число, умноженное на 216. Если разделить такие числа друг на друга сразу — мы получим результат деления целых чисел: (А * 216)/(В * 216) = А/В. Чтобы результат имел нужный нам вид (А/В) * 216, надо заранее умножить делимое на 216:

; деление числа с фиксированной запятой в формате 16:16 ; в регистре ЕАХ на такое же число в ЕВХ, без знака: xor edx,edx ror еах,16 xchg ax,dx ; EDX:ЕАХ = ЕАХ * 216

div ebx ; ЕАХ = результат деления

; деление числа с фиксированной запятой в формате 16:16 ; в регистре ЕАХ на такое же число в ЕВХ, со знаком: cdq ror еах,16 xchg ax,dx ; EDX:ЕАХ = ЕАХ * 216

idiv ebx ; ЕАХ = результат деления





Начало  Назад  Вперед