Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Команды безусловной передачи управленияСодержание книги
Поиск на нашем сайте JMP opr — команда безусловной передачи управления (jump unconditionally— перейти безусловно). Операнд opr может быть задан прямым или косвенным адресом: l По прямому адресу: JMP метка. l По косвенному адресу. Косвенный адрес может быть задан: в регистре: JMP r или в памяти JMP символьное_имя. l В памяти с косвенной адресацией: JMP near ptr [SI]; JMP far ptr [BX] и т.д. В последних двух командах near ptr и far ptr указывать обязательно, так как какое слово содержится в регистре SI — обычное или двойное, — ассемблер заранее не знает и ему нужно помочь. Команды перехода к подпрограмме и выхода из подпрограммы Подпрограммы оформляются как процедуры. Процедура начинается именем процедуры и заканчивается командой выхода ret (return) и директивой endp. В программе процедура помещается в операторные скобки: proc... endp Около оператора proc могут быть указаны атрибуты дистанции: near — близкая процедура (в том же сегменте) или far — дальний вызов (если этот атрибут дистанции опущен, то подразумевается near). Пример: DISP proc far; в отличие от метки после имени процедуры двоеточие не ставится: ret DISP endp Команда перехода к подпрограмме: CALL opr Вызов процедуры (call a procedure — вызов процедуры), безусловная передача управления, выполняющая короткий или дальний вызов процедуры. Флаги не меняются. В команде CALL атрибуты near или far указывать не надо, так как ассемблер нужную информацию получит сам из директивы определения процедуры. По команде CALL должно быть выполнено: l запоминание в стеке адреса возврата (содержимого IP и CS для следующей команды: 16 битов, если near, и 32 бита, если far); l переход к выполнению процедуры (инициируется записью в IP и в CS (если far) нового адреса команды). Операнд opr, определяющий адрес процедуры, бывает: l непосредственным: CALL имя_процедуры; l прямым — процедуру с атрибутом near можно вызвать через регистр, в котором содержится смещение адреса процедуры: CALL r; l косвенным: l процедура с атрибутом near вызывается, используя переменную размером в слово: CALL word ptr символьное_имя, l процедура с атрибутом far — используя переменную размером в двойное слово: CALL dword ptr символьное_имя. Команда выхода из подпрограммы RET — возврат из процедуры (return from procedure). Команда извлекает из стека адрес возврата и возвращает управление из процедуры, вызванной ранее командой CALL. Необязательный параметр команды RET указывает количество байтов, которые освобождаются в стеке после извлечения адреса возврата. Если процедура имеет атрибут near, то команда RET извлекает из стека одно слово и заносит его в регистр IP; если процедура имеет атрибут far, то команда RET извлекает из стека два слова: сначала смещение адреса, а затем адрес сегмента, и заносит их, соответственно, в регистр IP и в регистр CS. Флаги не меняются. Процедуры могут быть вложенными, глубина вложения допускается любая (ограничивается лишь емкостью стека).
|
||
|
Последнее изменение этой страницы: 2021-11-27; просмотров: 134; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.006 с.) |