Сборник по задачам и примерам Assembler

     

Умножение чисел размером 1 байт без учета знака



Умножение чисел размером 1 байт без учета знака

---------------------------------------------------------------------

:mul_unsign.asm - программа умножения чисел размером 1 байт без учета знака. ;Вход: multiplier], и multiplied - множители размером 1 байт. ;Выход: product - значение произведения.

---------------------------------------------------------------------

.data

:значения в multiplier], и multiplied нужно внести

product label word

productj label byte

multiplier! db ? :множитель 1 (младшая часть произведения)

product_h db 0 ;старшая часть произведения

multiplied db ? ;множитель 2

.code

mul_unsign proc

mov al .multiplierl

mul multiplier2 :оценить результат:

jnc по_саггу ;нет переполнения - на no_carry обрабатываем ситуацию переполнения

mov product_h.ah :старшая часть результата no_carry: mov product_l.al ;младшая часть результата

ret

mul_unsign endp main:

call mul_unsign

end main

Здесь все достаточно просто и реализуется средствами самого процессора. Проблема состоит лишь в правильном определении размера результата. Произведение чисел большей размерности (2/4 байта) выполняется аналогично. Необходимо заменить директивы DB на DW/DD, регистр AL на АХ/ЕАХ, регистр АН на DX/EDX.



Содержание раздела