Программирование на JAVA

IMUL                        WORD1                                            ;произвед, в DX:AX

RET

D10 IMUL                ENDP

CODESG                  ENDS               

END    BEGIN

Рис.4.26. Беззнаковое и знаковое умножение

Первый   пример   команды   IMUL   перемножает   80H (отрицательное число) на 40H (положительное число). Произведение Е000H получается в регистре AX. Используя те же данные, команда MUL дает в результате 2000 (12810 (80H) * 6410 (40H) = 819210 или 2000H, а команда IMUL дополняет результат знаковыми единицами и получает Е000H), так что можно видеть разницу в использовании команд MUL и IMUL. Команда MUL рассматривает 80H как +128, а команда IMUL - как -128. В результате умножения -128 на +64 получается -8192 или шестнадцатиричное Е000. (Попробуйте преобразовать Е000 в десятичный формат.)

Второй   пример   команды   IMUL   перемножает   8000H (отрицательное значение) на 2000Н (положительное значение). Произведение  F0000000  получается  в   регистрах   DX:AX  и представляет собой отрицательное значение.

Третий пример команды IMUL перед умножением выполняет расширение байта BYTE1 до размеров слова в регистре AX


<< назад вперед >>