Assembler для начинающих


         

в случае, когда результат не


    регистров AH:AL.
 
                ЪДДДДДДДДї
                і AX   і
                і BX   і
                і CX   і
                і DX   і
      ЪДДДДДДДДї    АДДДДДДДДЩ            ЪДДДДДДДДВДДДДДДДДї
      і   AX   і *  ЪДДДДДДДДї      ДДДДД>      і   DX      і   AX   і
      АДДДДДДДДЩ    і   SI   і            АДДДДДДДДБДДДДДДДДЩ
                і DI   і
                і BP   і
                і SP   і
                АДДДДДДДДЩ
                ЪДДДДДДДДї
                і Память і
                і(слова) і
                АДДДДДДДДЩ
                   (a) Умножение слов
 
                ЪДДДДДДДДДї
                і AH    і
                і AL    і
                і BH    і
                і BL    і
                і CH    і
                і CL    і
                і DH    і
                і DL    і
      ЪДДДДДДДДї    АДДДДДДДДДЩ      ЪДДДДДДДДВДДДДДДДДї
      і   AL   і *  ЪДДДДДДДДДї  ДДДДД>  і   AH   і   AL   і
      АДДДДДДДДЩ    і Память  і      АДДДДДДДДБДДДДДДДДЩ
                і(байты)  і
                АДДДДДДДДДЩ
                    (b) умножение байтов
 
            Фиг. 4.13 Операции умножения
      Целое умножение со знаком (IMUL) устанавливает флаги переноса и
    переполнения в соответствии с тем же критерием, т.е. эти флаги
    устанавливаются в случае, когда результат не может быть представлен
    тоько своей младшей половиной. Однако, поскольку число имеет знак,
    то задача не сводится только к сравнению старшей половины
    результата с нулем. Команда IMUL устанавливает флаги, если старшая
    половина результата не является распространением знака младшей. Это
    значит, что в случае положительного результата проверка будет такой
    же, как для команды MUL - установка флага происходит при ненулевой
    старшей половине результата (но самый старший бит равен нулю,
    указывая на положительность результата). В случае отрицательного
    результата IMUL устанавливает флаги, если старшая половина
    результата состоит не только из едениц (но старший бит равен 1,
    указывая на отрицательность результата). Например, перемножение
    байтов с отрицательным результатом устанавливает флаги когда
    результат менше -128 - наименьшего числа, представимого в одном
    байте. Другой пример, перемножение слов с положительным
    результатом, устанавливает флаги, если результат превышает 32 767 -
    наиболшее представимое одним словом число.

Содержание  Назад  Вперед