Управление потоком команд.
Исключение из структуры команд адреса следующей команды предполагает исполнение (выборку) команд в порядке их расположения в программе. Такая выборка – в "естественном порядке" – производится при помощи счетчика команд, путем прибавления к содержимому счетчика команд количества байт в текущей команде.
Но в ряде случаев необходимо изменение естественного порядка выборки команд. Для этого в систему команд вводятся команды управления программой. Это команды переходов, реализующие соответствующие процедуры передачи управления. Для этих же целей в архитектуру ЭВМ вводят специальную систему, называемую системой прерывания.
К командам управления программой относятся команды:
· безусловного перехода,
· условного перехода,
· управления циклами,
· вызова (подпрограмм),
· условного вызова (подпрограмм).
Команды безусловного перехода
Команды безусловного перехода содержат поле кода операции, обычно – 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 – количество переданных аргументов (используется для восстановления стека).
Для реализации передачи управления или вызова могут использоваться два механизма перехода:
· передачи управления,
· переключения задач.
Дата добавления: 2021-01-26; просмотров: 463;