![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
PUSH r/m | Поместить в стек слово или двойное слово. |
PUSH const | Поместить в стек непосредственный 8-,16-,32-разрядный операнд |
PUSHA | Поместить в стек содержимое регистров EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP |
POP r/m | Извлечь из стека слово или двойное слово |
POPA | Извлечь из стека данные в регистры EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP |
PUSHF | Поместить в стек содержимое регистра флагов |
POPF | Извлечь из стека данные в регистр флагов |
В связи с тем, что передача параметров функциям API осуществляется через стек, необходимо обратить внимание на команды работы со стеком, количество которых существенно изменилось относительно системы команд процессора 8086. Для записи в стек служат команды PUSH. Их можно использовать с операндами, находящимися в памяти, в регистрах, а также с непосредственными операндами. Переменные в памяти могут являться словами, двойными словами, регистры могут быть как 16-разрядными, так и 32-разрядными, непосредственные операнды – 8-разрядными, 16-разрядными и 32-разрядными. В стеке данные занимают вне зависимости от внешнего представления двойное слово. В тексте программы эти команды можно представить следующим образом:
PUSH m16
PUSH m32
PUSH r16
PUSH r32
PUSH imm8
PUSH imm16
PUSH imm32
PUSH CS
PUSH SS
PUSH DS
PUSH ES
PUSH FS
PUSH GS
Команды извлечения данных из стека в тексте программы имеют вид:
POP m16
POP m32
POP r16
POP r32
POP DS
POP ES
POP SS
POP FS
POP GS
m16, m32 – адрес слова и двойного слова соответственно, r16, r32 – имена шестнадцатиразрядных и тридцатидвухразрядных регистров, imm8, imm16, imm32 – 8-разрядные, 16-разрядные, 32-разрядные числа.
Дата публикования: 2015-10-09; Прочитано: 272 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!