Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПТСПЦУВСБ / 11. Условные директивы в ассемблеры

..docx
Скачиваний:
49
Добавлен:
27.12.2015
Размер:
28.86 Кб
Скачать

11. Условные директивы в ассемблеры.

Позволяют при трансляции программы просмотреть или пропустить фрагмент программы в зависимости от проверки условия.

  1. Директивы условной трансляции.

  2. Директивы условной генерации ошибок (позволяет выдать соответствующее сообщение об ошибках на этапе трансляции).

Назначение директивы условной трансляции:

  1. Написание отладочных версии программ, в которых после завершения отладки можно протранслировать код без соответствующих операторов

(Например Debug = 1).

  1. Написание универсальных макросов, настраевымых на систему.

IF xxx

Операторы (Тело 1)

[ ELSE

Операторы (Тело 2) ]

ENDIF

xxx – некоторое выражение, проверка которого должна давать булевский результат

xxx = 0 Ложь

xxx  0 Истина

Допускается 255 уровневое вложение.

Существуют предопределенные операторы IF:

IF1 Его тело транслируется только на первом проходе.

Пример:

IF1

INCLUDE MYLIB

ENDIF

IFE xxx Транслируется, если выражение (xxx) равно нулю.

ALLOC MACRO LENGHT

VALUE

REPT LENGTH

IFE VALUE – 0FFh

EXITM

ENDIF

VALUE = VALUE + 1

ENDM

ENDM

EXITM – Выход из макроса

Написанный макрос обеспечивает заполнение памяти целыми числами от 1 и далее длиной не более 256 байт.

II.

IFDET / IFNDEF имя _ переменной

Тело выполняется, если определено / не определено имя _ переменной.

Пример (задает возможность проверки дисплея):

IFDEF Disptest

; часть первой общей проверки дисплея

IFCOLOR

; часть проверки цветного дисплея

ELSE

; часть проверки монохромного дисплея

ENDIF

; часть второй общей проверки

ELSE

; код, выполнения при отсутствие проверки

ENDIF

IFB / IFNB <аргумент> Проверяет имеется или отсутствует аргумент

(IF Blank – если отсутствует)

Применяется:

  1. Для выдачи подсказок об отсутствия аргументов.

  2. Для разработки рекурсивных макросов с переменным числом в параметрах.

Пример:

I способ применения

Make _ Pasc _ String Macro Id, Msg

Local MsgLen, Endstr

Ifb <id>

Display ‘Задать переменную id’

ExitM

IFB <Msg>

Display ‘Задать преобразованную строку’

ExitM

Else

Id Db Endstr-id-1,’&Msg&’

Label EndStr Byte

EndIf

EndIf

EndM

II способ применения

PushReg Macro R1, R2, R3, R4, R5, R6

Ifnb <R1>

Push R1

PushReg R2, R3, R4, R5, R6

Endif

EndM

Отличительные признаки рекурсивного вызова макроса:

  1. Должен быть вызов заново себя с количеством элементов меньше на единицу.

  2. Предусмотрен контроль аргумента с помощью директивы Ifnb.

Способы использования макросов.

  1. Непосредственное размещение макроопределения в тексте программы (Оно размещается в самом начале, обычно после заголовка.).

Применение:

  1. Создание макробиблиотеки с последующим подключение ее к программе. Библиотека строится как обычный файл. В основной файл добавляются следующие команды.

IF1

Include My _ Maclib

EndIf

Можно исключить некоторые макросы из библиотеки если они не нужны.

Purge Mac1, Mac2, Mac7