![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Программы, в которых все команды выполняются последовательно одна за другой (линейно), встречаются очень редко. Обычно в программах есть точки, в которых нужно принять решение о том, какая команда будет выполняться следующей. Это решение может быть:
· безусловным – когда необходимо передать управление не следующей команде, а другой, находящейся на некотором удалении от текущей;
· условным – решение о том, какая команда будет выполняться следующей, принимается на основе анализа некоторых условий.
То, какая команда будет выполняться следующей, процессор узнаёт по содержимому регистров 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
Дата публикования: 2014-12-08; Прочитано: 361 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!