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

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

Как уже отмечалось в разд.2 адрес следующей подлежащей выполнению команды хранится в паре регистров CS:IP. В сегментном регистре CS содержится физический адрес начала сегмента кода, в регистре указателе команд IP содержится смещение в памяти следующей подлежащей выполнению команды относительно начала сегмента кода. Следовательно, команды передачи управления модифицируют регистры CS и IP, в результате чего МП выбирает для выполнения не следующую по порядку команду, а команду в каком-либо другом месте программы. В дальнейшем мы будем рассматривать только те команды, которые реализуют внутрисегментные переходы (сам сегмент не изменяется и регистр CS также не изменяется).

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

1. Команды безусловной передачи управления:

– команда безусловного перехода;

– команды вызова процедуры и возврата из процедуры;

2. Команды условной передачи управления:

– команды перехода по результату команды сравнения;

– команды перехода по состоянию определенного флага;

– команда перехода по содержимому регистра CX.

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

То место, куда необходимо передать управление определяется с помощью метки. Метка – символическое имя, обозначающее определенную ячейку памяти, куда необходимо осуществить переход и предназначенное для использования в качестве операнда в командах передачи управления. Сам адрес перехода транслятор рассчитывает самостоятельно.

Метку можно описать, используя оператор «:» (двоеточие). Формат описания приведен на рис.9.1.

команды передачи управления - student2.ru

Рис. 9.1. Формат описания метки

Например:

m1: MOV AX,BX

m2:

LEA DX

Наши рекомендации