Все про Assembler українською мовою на сайті net.kr.ua

 

:: Меню ::

Головна
Введення
Архітектура реального режиму
Основи програмування
Команди і алгоритми
Розширені можливості сучасних мікропроцесорів
Система команд процесорів Intel
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
 

:: Лічильники ::

=

 

 

 

 

fff00e50

POP Витягання слова із стека

Команда pop виштовхує 16-бітове дане із стека, тобто пересилає слово з вершини стека (на яку указує регістр SP) за адресою операнда-приймача. Після цього вміст SP збільшується на 2, і SP указує на попереднє слово стека, яке тепер є його новою вершиною. Виштовхувати із стека можна тільки цілі слова (не байти). Програма повинна строго стежити за тим, щоб кожній команді проштовхування в стек push відповідала зворотна команда виштовхування із стека pop. Якщо стек використовується для тимчасового зберігання деяких даних, то витягувати ці дані із стека слід в порядку, зворотному їх збереженню.
Як операнд-приймач можна використовувати будь-який 16-розрядний регістр (окрім CS) або елемент пам'яті. Команда не впливає на прапори процесора.
Пара команд push - pop часто використовується для пересилки даного з регістра в регістр (особливо, в сегментний) через стек.

Приклад 1


push AX ;Временное збереження
push BX ;в стеку
push DS ;трех операндів
pop DS ;Восстановление із стека
pop BX ;трех операндів
pop AX ; у зворотному порядку

Приклад 2


push CS ;Пересылка CS через стек 

pop DS ;Теперь Ds=cs

Приклад 3


;У полях даних
mem dw 0
; У програмному сегменті
pop mem ;Восстановление із стека в пам'ять

Допустиме використання 32-бітових операндів і додаткових режимів адресації 32-розрядних процесорів.

Приклад


pop EAX ;Извлечение із стека подвійного слова

 

386+ РОРА Восстановленіє із стека всіх регістрів


Команда рора відновлює із стека вміст всіх регістрів, заздалегідь збережених в стеку командою pusha. Заповнення із стека регістрів здійснюється в наступному порядку: DI, SI, BP, SP, ВХ, DX, СХ, АХ. Початковий вміст покажчика стека SP, збережене в стеку командою pusha, командою рора із стека витягується, але відкидається. Команда не має параметрів.

Приклад


рора

 

386+ POPAD Відновлення із стека всіх регістрів в 32-розрядному режимі


Команда popad відновлює із стека вміст всіх розширених регістрів, заздалегідь збережених в стеку командою pushad. Заповнення із стека регістрів здійснюється в наступному порядку: EDI, ESI, EBP, ESP, ЕВХ, EDX, ЕСХ, ЕАХ. Початковий вміст покажчика стека ESP, збережене в стеку командою pusha, командою рора із стека витягується, але відкидається. Команда не має параметрів.

Приклад


popad

 

POPF Відновлення із стека регістра прапорів


Команда popf пересилає верхнє слово стека (на яке указує регістр SP) в регістр прапорів FLAGS. Після цього вміст SP збільшується на 2, і SP указує на попереднє слово стека, яке тепер є його новою вершиною. Команда popf не має параметрів; вона впливає на всі прапори процесора, окрім прапорів VM і RF.

Приклад 1


popf ;Регистр прапорів завантажується із стека

Приклад 2


pushf ;Отправим прапори в стек
mov Bp,sp ;Настроим ВР на прапори в стеку
or [BP],100h ;Установим битий 100h (прапор TF)
popf ;Вытолкнем у регістр прапорів.
;Тепер в регістрі прапорів Tf=1

 

386+ POPFD Відновлення із стека розширеного регістра прапорів


Команда popfd пересилає верхнє слово стека (на яке указує регістр ESP) в розширений регістр прапорів EFLAGS. Після цього вміст ESP збільшується на 4, і ESP указує на попереднє слово стека, яке тепер є його новою вершиною. Команда popfd не має параметрів; вона впливає на всі прапори процесора.

Приклад


popfd ;Регистр EFLGS завантажується із стека

-

:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Популярне ::

-


:: Посилання ::

-


 

 

 


Copyright © net.kr.ua, 2019-2025 (assem.us)