Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорний конспект лекцій_ Асемблер.Docx
Скачиваний:
0
Добавлен:
20.02.2020
Размер:
506.89 Кб
Скачать
      1. Директиви компіляції по умові

Дозволяють організовувати вибіркову трансляцію програми. Є 10 типів умовних директив компіляції, які можна об’єднати в 4 групи:

o директиви IF і IFE – умовна трансляція по результату обчислення логічного виразу;

o директиви IFDEF і IFNDEF – умовна трансляція по факту визначення символічного імені;

o директиви IFB і IFNB – умовна трансляція по факту визначення фактичного аргументу при виклику макрокоманди.

Умовні директиви компіляції мають однаковий синтаксис:

IFxxx логічний_вираз або аргументи фрагмент програми_1

ELSE

фрагмент програми_2 ENDIF

IF (E) логічний_вираз фрагметн_програми_1 ELSE

фрагметн_програми_2 ENDIF

        1. Директиви if і ife

Якщо в директиві IF логічний вираз істинний (фальш – нуль, істина – не нуль) то транслюється фрагметнт_програми_1, інакше – фрагметнт_програми_2.

Якщо в директиві IFE логічний вираз фальш (фальш – нуль, істина – не нуль) то транслюється фрагметнт_програми_1, інакше – фрагметнт_програми_2.

        1. Директиви ifdef і ifndef

IF(N)DEF символічне_ім’я фрагметн_програми_1 ELSE

фрагметн_програми_2 ENDIF

Директива IFDEF перевіряє чи описане в програмі символічне_ім’я і якщо так, то транслюється фрагметн_програми_1, інакше - фрагметн_програми_2.

Дія IFNDEF обернена до IFDEF.

        1. Директиви ifb і ifnb

IF(N)B аргумент фрагметн_програми_1 ELSE

фрагметн_програми_2 ENDIF

Директиви перевіряють фактичні параметри, що передаються в макрос. Директива IFB перевіряє рівність аргументів пропуску. Аргументом може бути ім’я або число. Якщо аргумент дорівнює пропуску (тобто аргумент не був заданий при виклику макрокоманди), то транслюється фрагмент_програми_1, інакше – фрагмент_програми_2.

Дія IFBN обернена до IFB.

        1. Директиви ifidn, ifidni, ifdif і ifdifi

Директиви дозволяють не тільки перевірити наявність або значення аргументів, но і виконати їх ідентифікацію як строк символів.

IFIDN(I) аргуменm_1, аргумент_2

фрагметн_програми_1

ELSE

фрагметн_програми_2 ENDIF

IFIDN(I) аргуменm_1, аргумент_2

фрагметн_програми_1

ELSE

фрагметн_програми_2 ENDIF

Директива IFIDN порівнює символьні значення аргумент_1 і аргумент_2 з врахуванням великих і малих букв. Якщо строки співпадають, то транслюється фрагмент_програми_1, інакше – фрагмент_програми_2. Дія IFDIF обернена до IFIDN.

Директиви IFIDNI, IFDIFI аналогічні до вищенаведених, але не враховують різниці між великими і малими буквами.

9.4. Директиви генерації помилок

Директиви генерації помилок поділяються на дві групи:

  • безумовні директиви, які генерують помилку трансляції без перевірки яких небудь умов;

  • умовні директиви, які генерують помилку трансляції після перевірки певних умов.

Директива безумовної генерації помилки – ERR (.ERR). Набір умов, на які реагують директиви умовної генерації помилок, такий же, як і для директив умовної компіляції.

Директиви .ERRB (ERRIFB) і .ERRNB (ERRIFNB):

.ERRB (ERRIFB) <ім’я_формального_параметра> - генерація помилки, якщо

<ім’я_формального_параметра> пропущено.

.ERRNB (ERRIFNB) <ім’я_формального_параметра> - генерація помилки, якщо

<ім’я_формального_параметра> присутнє.

Директиви .ERRDEF(ERRIFDEF) і .ERRNDEF(ERRIFNDEF):

.ERRDEF(ERRIFDEF) символічне_ім’я – якщо вказане символічне_ім’я визначене до видачі директиви, то генерується помилка;

.ERRNDEF(ERRIFNDEF) символічне_ім’я – якщо вказане символічне_ім’я не визначене до видачі директиви, то генерується помилка.

Директиви .ERRDIF (ERRIFDIF) і .ERRIDN (ERRIFIDN):

.ERRDIF (ERRIFDIF) <строка_1><строка_2> - генерується помилка, якщо дві строки, з врахуванням різниці великих і малих букв, не співпадають.

.ERRIDN (ERRIFIDN) <строка_1><строка_2> - генерується помилка, якщо дві строки, з врахуванням різниці великих і малих букв, співпадають.

.ERRIFDIFI (ERRIFIDNI) – аналогічні вищенаведеним, але ігнорується різниця великих і малих букв.

Директиви .ERRE(ERRIFE) і .ERRNZ(ERRIF):

.ERRE(ERRIFE) константний_вираз – генерується помилка, якщо константний_вираз

фальшивий (дорівнює нулю).

.ERRNZ(ERRIF) константний_вираз – генерується помилка, якщо константний_вираз

істинний (не дорівнює нулю).

Директиви DISPLAY і %OUT – виводять повідомлення під час трансляції програми.

Наприклад:

display недопустимы аргументи макрокоманди!