Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Условные директивы





 

Помимо использования команд сравнения (cmp…) и различных команд условного перехода (j…) в ассемблере может использоваться конструкция IF, подобная аналогичным операторам из высокоуровневых языков программирования.

.IF выражение....ENDIF

Если значение выражения — ноль (ложь), весь участок программы между IF и ENDIF игнорируется. Директива IF может также сочетаться с ELSE и ELSEIF:

.IF выражение... .ELSE... .ENDIF

Если значение выражения — ноль, ассемблируется участок программы от ELSE до ENDIF, в противном случае — от IF до ELSE.

IF выражение1... ELSEIF выражение2... ELSEIF выражение3... ELSE... ENDIF

Так, если, например, выражение 2 не равно нулю, будет ассемблироваться участок программы между первой и второй директивой ELSEIF. Если все три выражения равны нулю, ассемблируется фрагмент от ELSE до ENDIF. Данная структура директив может использоваться в частном случае аналогично операторам switch/case языков высокого уровня, если выражения — проверки некоторой целочисленной константы на равенство.

Кроме общих директив IF и ELSEIF ассемблеры поддерживают набор специальных команд, каждая из которых проверяет специальное условие:

IF1/ELSEIF1 — если ассемблер выполняет первый проход ассемблирования;

IF2/ELSEIF2 — если ассемблер выполняет второй проход ассемблирования (часто не работает на современных ассемблерах);

IFE выражение/ELSEIFE выражение — если выражение равно нулю (ложно);

IFDEF метка/ELSEIFDEF метка — если метка определена;

IFNDEF метка/ELSEIFNDEF метка — если метка не определена;

IFB < аргумент> /ELSEIFB < аргумент> — если значение аргумента — пробел (эти и все следующие директивы используются в макроопределениях для проверки параметров);

IFNB < аргумент> /ELSEIFNB < аргумент> — если значение аргумента — не пробел (используется в макроопределениях для проверки переданных параметров);

IFDIF < арг1>, < арг2> /ELSEIFDIF < арг1>, < арг2> — если аргументы отличаются (с различием больших и маленьких букв);

IFDIFI < арг1>, < арг2> /ELSEIFDIFI < арг1>, < арг2> — если аргументы отличаются (без различия больших и маленьких букв);

IFIDN < арг1>, < арг2> /ELSEIFIDN < арг1>, < арг2> — если аргументы одинаковы (с различием больших и маленьких букв);

IFIDNI < арг1>, < арг2> /ELSEIFIDNI < арг1>, < арг2> — если аргументы одинаковы (без различия больших и маленьких букв).

Иногда директивы условного ассемблирования используются для того, чтобы прервать ассемблирование программы, если обнаружилась какая-нибудь ошибка. Для таких случаев предназначены директивы условной генерации ошибок.

Пример. if $ gt 65535; Если адрес вышел за пределы сегмента..err endif

Встретив директиву.ERR, ассемблер прекратит работу с сообщением об ошибке. Аналогично командам условного ассемблирования существуют модификации команды.ERR:

.ERR1 — ошибка при первом проходе ассемблирования;

.ERR2 — ошибка при втором проходе ассемблирования;

.ERRE выражение — ошибка, если выражение равно нулю (ложно);

.ERRNZ выражение — ошибка, если выражение не равно нулю (истинно);

.ERRDEF метка — ошибка, если метка определена;

.ERRNDEF метка — ошибка, если метка не определена;

.ERRB < аргумент> — ошибка, если аргумент пуст (эта и все следующие директивы используются в макроопределениях для проверки параметров);

.ERRNB < аргумент> — ошибка, если аргумент не пуст;

.ERRDIF < арг1>, < арг2> — ошибка, если аргументы различны;

.ERRDIFI < арг1>, < арг2> — ошибка, если аргументы отличаются (сравнение не различает большие и маленькие буквы);

.ERRIDN < арг1>, < арг2> — ошибка, если аргументы совпадают;

.ERRIDNI < арг1>, < арг2> — ошибка, если аргументы совпадают (сравнение не различает большие и маленькие буквы).

Пример использования директивы IF.

.586







Дата добавления: 2014-11-10; просмотров: 641. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Концептуальные модели труда учителя В отечественной литературе существует несколько подходов к пониманию профессиональной деятельности учителя, которые, дополняя друг друга, расширяют психологическое представление об эффективности профессионального труда учителя...

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Упражнение Джеффа. Это список вопросов или утверждений, отвечая на которые участник может раскрыть свой внутренний мир перед другими участниками и узнать о других участниках больше...

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

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

Studopedia.info - Студопедия - 2014-2026 год . (0.014 сек.) русская версия | украинская версия