Главная Программирование Софт Документы Статьи Обо мне


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



###  Команда PUSH #########################################################

 ### Включает в стек слово операнда.  После выполнения команды производится
 автоматическое уменьшение указателя стека SP на 2.
     Если стек организуется из 64К (максимальный размер), то при полном его
 заполнении   каждое   следующее   включение  разрушает  ранее   записанную
 информацию.  Если стек имеет меньший размер,  то при полном его заполнении
 каждое  следующее  включение  разрушает  область  памяти, находящуюся  вне
 стекового сегмента.

 ### Регистр флажков не модифицируется.

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 3-4 байта          +----------------+
    ¦ PUSH  Память            ¦ t = 16+ЕА тактов       ¦   11111111     ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦  mod 110  r/m  ¦
                                                       ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+

                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ PUSH  Регистр           ¦ t = 11 тактов          ¦   01010 reg    ¦
    +-------------------------+                        +----------------+

                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ PUSH  СегРегистр        ¦ t = 10 тактов          ¦   000 sreg 110 ¦
    +-------------------------+                        +----------------+

 ### Примечание:
      Некоторые  команды  (например,  CALL)  заносят  информацию  в  стек
 автоматически.
      С  помощью  стековых  команд  можно   производить  загруку   одного
 сегментного  регистра  из  другого.  Например:

             PUSH CS                           MOV  AX, CS
             POP  DS      - эквивалентно -   MOV  DS, AX
        (потери в скорости)                 (потери в размере)

###  Команда POP #########################################################

 ### Извлекает слово из стека в  операнд команды.  После выполнения команды
 производится  автоматическое увеличение указателя стека  SP на  2. Команде
 POP  должна  предшествовать  команда  PUSH.
     Извлеченное слово остается  в памяти  на том же месте и не разрушается
 до  следующего  применения  команды  PUSH.

 ### Регистр флажков не модифицируется.

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 3-4 байта          +----------------+
    ¦ POP   Память            ¦ t = 17+ЕА тактов       ¦   10001111     ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦  mod 110  r/m  ¦
                                                       ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+

                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ POP   Регистр           ¦ t = 8 тактов           ¦   01011 reg    ¦
    +-------------------------+                        +----------------+

                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ POP   СегРегистр        ¦ t = 8 тактов           ¦   000 sreg 111 ¦
    +-------------------------+                        +----------------+

 ### Примечание:
      Некоторые  команды  (например, RET)  извлекают информацию из стека
 автоматически.
      С  помощью  стековых  команд  можно  производить  загруку   одного
 сегментного  регистра  из  другого.  Например:

             PUSH CS                           MOV  AX, CS
             POP  DS      - эквивалентно -   MOV  DS, AX
        (потери в скорости)                 (потери в размере)

###  Команда PUSHF #########################################################

 ### Включает в стек регистр флажков. Команда аналогична команде PUSH.

 ### Регистр флажков не модифицируется.

 ### Формат команды:
                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ PUSHF                   ¦ t = 10 тактов          ¦   10011100     ¦
    +-------------------------+                        +----------------+

 ### Примечание:
     Команд прямого воздействия  на флажок  TF нет.  Изменение этого флажка
 осуществляется включением регистра флажков в стек, модификацией  8-го бита
 и последующего извлечения.

###  Команда POPF #########################################################

 ### Извлекает из стека регистр флажков. Команда аналогична команде POP.

 ### Регистр флажков принимает значение, извлеченное из стека.

 ### Формат команды:
                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ POPF                    ¦ t = 8 тактов           ¦   10011101     ¦
    +-------------------------+                        +----------------+

 ### Применение и особенности программирования:
     Команд прямого воздействия  на флажок  TF нет.  Изменение этого флажка
 осуществляется включением регистра флажков в стек, модификацией  8-го бита
 и последующего извлечения.

[   ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ   ]
Сайт создан в системе uCoz