Архитектура микропроцессорной системы. Состав машинных команд и основы программирования микропроцессорной системы на ассемблере. Булатов В.Н. - 54 стр.

UptoLike

Составители: 

8 Команды перехода между программой и подпрограммой
В этой главе рассмотрим команды переходов, позволяющие
осуществлять переход из тела программы к подпрограмме и возврат
назад. Сразу поставим точки над i: подпрограммой будем называть
такую программу, которая заканчивается безадресным переходом типа
RET (RET — RETURN — возврат). Эти команды используются, главным
образом, в двух видах.
Что делает микропроцессор, обнаружив КОП безадресного
перехода
RET NEAR (КОП=СЗ, ассемблер: RETN) или RET FAR (КОП=СВ,
ассемблер: RETF)?
а) если КОП = СЗ (ассемблер: RET или RETN), то МП
8086 производит скрытую операцию чтения стека POP IP: IP :=
<Stack>.
б) если КОП = СВ ( ассемблер: RETFвозврат издалека, из
другого сегмента), то МП 8086 производит две скрытых операции чтения
стека: сначала POP IP, потом POP CS:
IP := <Stack>;
CS := <Stack>.
ПримечаниеПроцедуры чтения-записи стека изложены в главе 4,
поэтому подробности, связанные с организацией стека, здесь опускаются.
Поскольку смысл любой подпрограммы в том, чтобы выполнять
какую-то часто повторяемую процедуру и возвращаться туда, откуда
произошел «скачок» на подпрограмму, и принимая во внимание, как
происходит безадресный возврат, нетрудно догадаться, что где-то
должны позаботиться о том, чтобы прежде, чем сделать «скачок», в стеке
остался на сохранение адрес той команды, которая была следующей, но
еще не успела выполниться. И судя по командам возврата, должно быть
два типа таких команд-скачков, из которых одна перед «скачком»
отправляет в стек только содержимое IP, а вторая сначала отправляет в
стек содержимое CS, а потомсодержимое IP.
Рассмотрим эти два типа команд, которые имеют мнемонику
CALL1(CALL —вызов).
8.1 Внутрисегментные переходы
8.1.1 Внутрисегментный, с относительной адресацией; команда 3-х
байтовая:
а) ассемблер: CALL Addr;
б) КОП = Е8.
Все процедуры формирования смещения такие же, как в п.2 главы
7 для команды JMP.
54
     8 Команды перехода между программой и подпрограммой

     В этой главе рассмотрим команды переходов, позволяющие
осуществлять переход из тела программы к подпрограмме и возврат
назад. Сразу поставим точки над i: подпрограммой будем называть
такую программу, которая заканчивается безадресным переходом типа
RET (RET — RETURN — возврат). Эти команды используются, главным
образом, в двух видах.
     Что делает микропроцессор, обнаружив КОП безадресного
перехода
RET NEAR (КОП=СЗ, ассемблер: RETN) или RET FAR (КОП=СВ,
ассемблер: RETF)?
     а) если КОП = СЗ (ассемблер: RET или RETN), то МП
8086 производит скрытую операцию чтения стека POP IP: IP :=
.
     б) если КОП = СВ ( ассемблер: RETF — возврат издалека, из
другого сегмента), то МП 8086 производит две скрытых операции чтения
стека: сначала POP IP, потом POP CS:
     IP := ;
     CS := .
           Примечание – Процедуры чтения-записи стека изложены в главе 4,
     поэтому подробности, связанные с организацией стека, здесь опускаются.
           Поскольку смысл любой подпрограммы в том, чтобы выполнять
     какую-то часто повторяемую процедуру и возвращаться туда, откуда
     произошел «скачок» на подпрограмму, и принимая во внимание, как
     происходит безадресный возврат, нетрудно догадаться, что где-то
     должны позаботиться о том, чтобы прежде, чем сделать «скачок», в стеке
     остался на сохранение адрес той команды, которая была следующей, но
     еще не успела выполниться. И судя по командам возврата, должно быть
     два типа таких команд-скачков, из которых одна перед «скачком»
     отправляет в стек только содержимое IP, а вторая сначала отправляет в
     стек содержимое CS, а потом —содержимое IP.
     Рассмотрим эти два типа команд, которые имеют мнемонику
CALL1(CALL —вызов).



8.1 Внутрисегментные переходы
     8.1.1 Внутрисегментный, с относительной адресацией; команда 3-х
байтовая:
     а) ассемблер: CALL Addr;
     б) КОП = Е8.
     Все процедуры формирования смещения такие же, как в п.2 главы
7 для команды JMP.
54