Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник ОЭВМ Трусфус.doc
Скачиваний:
126
Добавлен:
12.03.2015
Размер:
4.82 Mб
Скачать

2.6. Управление потоком команд.

Исключение из структуры команд адреса следующей команды предполагает исполнение (выборку) команд в порядке их расположения в программе. Такая выборка – в "естественном порядке" – производится при помощи счетчика команд, путем прибавления к содержимому счетчика команд количества байт в текущей команде.

Но в ряде случаев необходимо изменение естественного порядка выборки команд. Для этого в систему команд вводятся команды управления программой. Это команды переходов, реализующие соответствующие процедуры передачи управления. Для этих же целей в архитектуру ЭВМ вводят специальную систему, называемую системой прерывания.

К командам управления программой относятся команды:

  • безусловного перехода,

  • условного перехода,

  • управления циклами,

  • вызова (подпрограмм),

  • условного вызова (подпрограмм).

Команды безусловного перехода

Команды безусловного перехода содержат поле кода операции, обычно – JMP (JUMP), и адрес перехода:

JMP mem_A,

где mem – адрес перехода.

Команды условного перехода

Это команды ветвлений. При помощи этих команд организуется выбор альтернативных процедур. В командах условного перехода наряду с адресом перехода указывается условие, при выполнении которого осуществляется переход на новый адрес.

Адрес перехода может задаваться прямым адресом или относительным (относительно содержимого счетчика команд). Условие перехода задается или кодом команды, или указывается в поле адреса перехода.

В качестве кода операции для команд ветвления на языке ассемблера используются мнемоника Jcc (Jump condition code) или Bсс (Branch condition code), где сс (condition code) – код условия, например, JNS – передать управление, если знак результата (по коду условий в регистре состояния) неотрицателен.

Команды управления циклами

Это команды условного перехода, которые проверяют содержимое счетчика циклов и передают управление на начало цикла по условию, заданному кодом операции.

Для ЭВМ моделей PDP-11 – это команда SOB R1, M. По этой команде производится декремент счетчика циклов (R1) и переход на метку М, пока содержимое R1 отлично от нуля.

Для МП Intel - это команда LOOP М. По этой команде содержимое регистра ecx уменьшается на 1, и выполняется переход на метку М, пока ecx не равно нулю.

Команды вызова

Это команды условного или безусловного перехода на подпрограммы (вызов функции или процедуры).

В случае вызова функции в подпрограмму передаются параметры (аргументы функции) с указанием их числа.

В ассемблере МП Intel для кода операции команд вызова используется мнемоника CALL, в ассемблере ЭВМ PDP-11 – JSR. По командам вызова производится переход на подпрограмму с возможностью возврата в основную программу. Для возможности возврата при выполнении перехода сохраняется адрес возврата.

Возврат в основную программу делается по команде возврата в вызываемой программе. Это безадресные команды RET и RET n, где n – количество переданных аргументов (используется для восстановления стека).

Для реализации передачи управления или вызова могут использоваться два механизма перехода:

  • передачи управления,

  • переключения задач.

Механизм передачи управления

Механизм передачи управления заключается в сохранении адреса возврата (для большинства архитектур МП) в стеке и занесении в счетчик команд адреса перехода.

Термин "задача" в описаниях МПIA(Intel-архитектур) означает – «программа, находящаяся на стадии выполнения в режиме разделения времени".

Механизм переключения задач используется в МП Intel только в защищенном режиме. При переключении задач сохраняется содержимое всех программно-доступных регистров процессора в специальных сегментах памяти.

Вопросы для самопроверки:

  1. Действие команд безусловного перехода.

  2. Мнемоника команд безусловного перехода.

  3. Действие команд условного перехода.

  4. Мнемоника команд условного перехода.

  5. Действие команд управления циклами.

  6. Задание числа повторений циклов в командах управления циклами.

  7. Действие команд вызова (подпрограмм).

  8. Мнемоника команд вызова (подпрограмм).

  9. Действие команд условного вызова (подпрограмм).

  10. Мнемоника команд условного вызова (подпрограмм).