Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Команды PUSH и POP



PUSH - передает слово из источника в стек, а команда POP осуществляет противоположное действие: передает слово из стека в приемник. Регистр SP содержит смещение последнего включенного в стек слова (вершину стека).

! Стек растет по направлению уменьшения адресов!

PUSH начинается с уменьшения содержимого SP на 2, а команда POP завершается увеличением содержимого SP на 2.

Операндами команд PUSH и POP могут быть сегментный регистр, несегментный (шестнадцатиразрядный) ре­гистр или слово в памяти. Кроме того, в команде PUSH можно указывать непосредственный операнд, что не допускается в команде PUSH для процессора 8086. POP- не может содержать непосредственный операнд. Форматы команд приведены в таблице 2.4.

Таблица 2.4. Форматы команд PUSH и POP.

Операнд Включение Извлечение
Регистр PUSH AX POP BX
Память PUSH PW POP PW
Сегментный регистр PUSH DS POP ES
Непосредственный операнд PUSH 856  
Все 16-битные регистры PUSHA POPA
Все 32-битные регистры PUSHAD POPAD

Исключение:

POP CS и POP IP - недействительные операции.

PUSHA и POPA являются эффективным средством для сохранения содержимого всех регистров (кроме сег­ментных и IP) в начале выполнения процедуры и восстановления их в конце работы. PUSHA включает в стек регистры в следующем порядке: AX, CX, DX, BX, SP, BP, SI, DI. Значение SP то, что было в нем до выполнения команды PUSHA. PUSHAуменьшает содержимоеSP на 2 при включении в стек содержимого каждого регистра. POPA вызывает увеличение содержимого SP на ту же величину, что и PUSHA, ей не требуется запомненное в стеке содержимое регистра SP и она егопросто уничтожает. Команды PUSHAD, POPAD работают аналогично с 32-битными регистрами процессора.

Команда XLAT - преобразует значение в регистре AL: она его заменяет на байт из таблицы, адресуемой регистром BX, причем индексом таблицы служит исходное содержимое регистра AL. Удобна для преобразования из одного кода в другой.

Пример использования команды для перевода цифр из 10 системы счисления в код “2 из 5” - любой код, содержащий 2 единичных бита.

Код “2 из 5” приведен в таблице.

Цифра Код
   
   
   
   
~ ~
   

TABLE DW 11000B, 00011B, 00101B, 00110B, 01001B, 01010B, 01100B, 10001B, 10010B, 10100B, 11000B

MOV BX, OFFSET TABLE

MOV AL, 7

XLAT TABLE

2.5.1.3. Команды ввода-вывода.

Для связи с разными частями ЭВМ и управления ими микропроцессор использует порты ввода-вывода. Лю­бой порт идентифицируется шестнадцатиразрядным номером порта в диапазоне от 0 до 65535. Как и при доступе к памяти, процессор для связи использует шины данных и адреса. При доступе к порту он посылает сначала по управляющей шине сигнал, который оповещает все устройства ввода-вывода, что адрес на шине является адресом определенного порта, а затем посылает сам адрес. То устройство, адрес порта которого совпадает, дает ответ. Номер порта - это адрес ячейки памяти, являющейся частью устройства ввода-вывода, а не частью основной памяти. Для указания на доступ к порту и пересылки информации к устройствам ввода-вывода и обратно, используются специальные команды ввода-вывода.

IN - передает данные (байт, слово или двойное слово) из исходного порта в аккумулятор (AL, AX или EAX).

OUT - передает данные из аккумулятора в исходный порт.

Номер порта можно указывать либо в самой команде, либо в регистре DX(0-65535).

Примеры использования команд ввода-вывода приведены в таблице 2.5.

Таблица 2.5. Примеры использования команд ввода-вывода.





Дата публикования: 2014-11-18; Прочитано: 1737 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...