Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Программирование -> Assembler -> Основные команды языка ASSEMBLER


Основные команды языка ASSEMBLER



###  Команда MUL #########################################################

 ### Производит  умножение  аккумулятора  и  операнда  команды. Сомножители
 интерпретируются как беззнаковые числа.
     В операциях над байтами  функцию аккумулятора выполняет регистр  AL, а
 16-битное  произведение  образуется  в  регистре AX. Максимальное значение
 произведения равно 255 * 255 = 65025.
     Если  операнд идентифицирует слово, оно умножается  на аккумулятор  AX,
 а 32-битное произведение формируется в регистрах  DX (старшая часть) и  AX.

 ### Если старшая половина произведения не равна нулю, то флажки  CF  и  OF
 устанавливаются  в  единицу. Состояние  остальных  флажков  не  определено.

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 2 байта            +----------------+
    ¦ MUL  Регистр            ¦ t = 70...77 тактов     ¦   1111011  w   ¦
    +-------------------------+ (пpи байте pегистpа)   ¦----------------¦
                                t = 118:133 такта      ¦    11100 reg   ¦
                                (при слове регистра)   +----------------+

                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ MUL  Память             ¦ t = (76:83)+ЕА тактов  ¦   1111011  w   ¦
    +-------------------------+ (пpи байте памяти)     ¦----------------¦
                                t = (124:139)+EA тактов¦  mod 100 r/m   ¦
                                (пpи слове памяти)     ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+
 ### Примечание:
     При  умножении  на  числа,  котоpые  являются  степенями  2,  удобнее
 пользоваться  командой  сдвига  влево  SAL.

###  Команда IMUL #########################################################

 ### Производит  умножение  аккумулятора  и  операнда  команды. Сомножители
 интерпретируются как знаковые числа.
     В операциях над байтами  функцию аккумулятора выполняет регистр  AL, а
 16-битное  произведение  образуется  в  регистре AX.
     Если  операнд идентифицирует слово, оно умножается  на аккумулятор  AX,
 а 32-битное произведение формируется в регистрах  DX (старшая часть) и  AX.

 ### Если  старшая  половина произведения не равна 00(0000) или FF(FFFF), то
 флажки  CF  и  OF устанавливаются в единицу. Состояние остальных флажков не
 определено.

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 2 байта            +----------------+
    ¦ IMUL  Регистр           ¦ t = 80:98 тактов       ¦   1111011  w   ¦
    +-------------------------+ (пpи байте pегистpа)   ¦----------------¦
                                t = 128:154 такта      ¦    11101 reg   ¦
                                (при слове регистра)   +----------------+

                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ IMUL  Память            ¦ t = (86:104)+ЕА тактов ¦   1111011  w   ¦
    +-------------------------+ (пpи байте памяти)     ¦----------------¦
                                t = (134:160)+EA тактов¦  mod 101 r/m   ¦
                                (при слове памяти)     ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+

###  Команда DIV #########################################################

 ### Производит деление аккумулятора и его расширения на содержимое операнда
 команды.  Деление   выполняется   над   числами,  интерпретированными   как
 беззнаковые. Делимое должно быть в 2 раза длиннее делителя.
     Байтовые  команды  делят 16-битовое число, расположенное в аккумуляторе
 AX, на  8-битный  делитель. Частное  результата  помещается в регистр AL, а
 остаток в регистр AH.
     Команда, работающая  со словами, делит  32-битовое число, расположенное
 в регистре  DX (старшая часть) и  аккумуляторе  AX, на  16-битный делитель.
 Частное результата помещается в регистр AX, а остаток в регистр DX.

 ### Состояние регистра флажков не определено.

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 2 байта            +----------------+
    ¦ DIV  Регистр            ¦ t = 80:90 тактов       ¦   1111011  w   ¦
    +-------------------------+ (пpи байте pегистpа)   ¦----------------¦
                                t = 144:162 такта      ¦    11110 reg   ¦
                                (пpи слове pегистpа)   +----------------+

                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ DIV  Память             ¦ t = (86:96)+ЕА тактов  ¦   1111011  w   ¦
    +-------------------------+ (пpи байте памяти)     ¦----------------¦
                                t = (150:168)+EA тактов¦  mod 110 r/m   ¦
                                (при слове памяти)     ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+
 ### Примечание:
      Если  частное  результата  превышает  разрядность  аккумулятора или
 делитель равен нулю, генерируется  прерывание типа 0, а частное и остаток
 не  определены.  Если  нет  подпрограммы   обработки  такого   прерывания,
 необходимо  до операции деления проверить  возможность  его возникновения.
      При  делении  на  числа,  котоpые  являются  степенями  2,  удобнее
 пользоваться командой сдвига вправо.

###  Команда IDIV #########################################################

 ### Производит деление аккумулятора и его расширения на содержимое операнда
 команды. Деление выполняется над числами, интерпретированными как знаковые.
 Делимое должно быть в 2 раза длиннее делителя.
     Байтовые  команды  делят 16-битовое число, расположенное в аккумуляторе
 AX, на  8-битный делитель. Частное результата помещается  в  регистр  AL, а
 остаток  в  регистр   AH.
     Команда, работающая  со словами, делит  32-битовое число, расположенное
 в регистре  DX (старшая часть) и  аккумуляторе  AX, на  16-битный делитель.
 Частное результата помещается в регистр AX, а остаток в регистр DX.

 ### Состояние регистра флажков не определено.

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 2 байта            +----------------+
    ¦ IDIV  Регистр           ¦ t = 101:112 тактов     ¦   1111011  w   ¦
    +-------------------------+ (пpи байте pегистpа)   ¦----------------¦
                                t = 165:184 такта      ¦    11111 reg   ¦
                                (при слове регистра)   +----------------+

                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ IDIV  Память            ¦ t = (107:118)+ЕА тактов¦   1111011  w   ¦
    +-------------------------+ (пpи байте памяти)     ¦----------------¦
                                t = (107:190)+EA тактов¦  mod 111 r/m   ¦
                                (при слове памяти)     ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+
 ### Примечание:
      Если  частное  результата  превышает  разрядность  аккумулятора или
 делитель равен нулю, генерируется  прерывание типа 0, а частное и остаток
 не  определены.  Если  нет  подпрограммы   обработки  такого   прерывания,
 необходимо  до операции деления проверить  возможность  его возникновения.
      Если  результат  отрицательный,  частное  усекается  (в направлении
 нуля), а остаток имеет тот же знак, что и делимое. Например:
          +---------------------------------------------------+
          ¦делимое (AX)¦  делитель  ¦частное (AL)¦остаток (AH)¦
          +------------+------------+------------+------------¦
          ¦      7     ¦      2     ¦      3     ¦      1     ¦
          ¦      7     ¦    - 2     ¦    - 3     ¦      1     ¦
          ¦    - 7     ¦      2     ¦    - 3     ¦    - 1     ¦
          ¦    - 7     ¦    - 2     ¦      3     ¦    - 1     ¦
          +---------------------------------------------------+

[   ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ   ]

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.