КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ

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

· безусловным – когда необходимо передать управление не следующей команде, а другой, находящейся на некотором удалении от текущей;

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

То, какая команда будет выполняться следующей, процессор узнаёт по содержимому регистров CS:IP. Таким образом, команды передачи управления изменяют содержимое регистров CS и IP.

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

Как и переменной, метке транслятор присваивает три атрибута:

- имя сегмента кода, где метка описана;

- смещение (в байтах) от начала сегмента;

- тип (атрибут расстояния), который может принимать два значения:

o near – переход на метку возможен только в пределах сегмента кода, в котором она описана, то есть достаточно изменить IP;

o far – переход на метку возможен в результате межсегментной передачи управления, врезультате изменяется содержимое CS и IP.

Метку можно определить двумя способами:

- оператором : (двоеточие) – только метку ближнего типа near;

- директивой LABEL – тип метки при этом может быть как near так и far.

Например:

M1:

mov ax, pole

или

M1 label near

mov ax, pole