Основные команды языка 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-го бита
и последующего извлечения.
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|