Команды передачи управления
Мы познакомились с некоторыми командами, из которых формируются линейные участки программы. Каждая из них в общем случае выполняет некоторые действия по преобразованию или пересылке данных, после чего микропроцессор передает управление следующей команде. Но очень мало программ работает таким последовательным образом. Обычно в программе есть точки, в которых нужно принять решение о том, какая команда будет выполняться следующей. Это решение может быть:
1) безусловным – в данной точке необходимо передать управление не той команде, которая идет следующей, а другой, которая находится на некотором удалении от текущей команды;
2) условным – решение о том, какая команда будет выполняться следующей, принимается на основе анализа некоторых условий или данных.
Программа представляет собой последовательность команд и данных, занимающих определенное пространство оперативной памяти. Это пространство памяти может быть либо непрерывным, либо состоять из нескольких фрагментов.
То, какая команда программы должна выполняться следующей, микропроцессор узнает по содержимому пары регистров cs:(e)ip:
1) cs – сегментный регистр кода, в котором находится физический (базовый) адрес текущего сегмента кода;
2) eip/ip – регистр указателя команды, в котором находится значение, представляющее собой смещение в памяти следующей команды, подлежащей выполнению, относительно начала текущего сегмента кода.
Какой конкретно регистр будет использоваться, зависит от установленного режима адресации use16 или use32. Если указано use 16, то используется ip, если use32, то используется eip.
Таким образом, команды передачи управления изменяют содержимое регистров cs и eip/ip, в результате чего микропроцессор выбирает для выполнения не следующую по порядку команду программы, а команду в некотором другом участке программы. Конвейер внутри микропроцессора при этом сбрасывается.
По принципу действия команды микропроцессора, обеспечивающие организацию переходов в программе, можно разделить на 3 группы:
1. Команды безусловной передачи управления:
1) команда безусловного перехода;
2) команда вызова процедуры и возврата из процедуры;
3) команда вызова программных прерываний и возврата из программных прерываний.
2. Команды условной передачи управления:
1) команды перехода по результату команды сравнения стр;
2) команды перехода по состоянию определенного флага;
3) команды перехода по содержимому регистра есх/сх.
3. Команды управления циклом:
1) команда организации цикла со счетчиком есх/сх;
2) команда организации цикла со счетчиком есх/сх с возможностью досрочного выхода из цикла по дополнительному условию.
Дата добавления: 2021-09-25; просмотров: 317;