Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 23 -Макросы.ppt
Скачиваний:
42
Добавлен:
18.02.2023
Размер:
199.68 Кб
Скачать

Директивы генерации ошибок

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

безусловные директивы, генерирующие ошибку трансляции без проверки каких-либо условий;

условные директивы, генерирующие ошибку трансляции после проверки определенных условий.

Безусловные директивы генерации ошибки

Директива ERR (.ERR) – генерирует пользовательскую ошибку

my_macro

MACRO reg

IFDIFI

<al>, <reg>

GOTO M_AL

 

ELSE

 

 

IFDIFI

<ah>, <reg>

GOTO M_AH ELSE

.ERR

ENDIF

ENDIF

:M_AL

:M_AH

ENDM

Условная генерация пользовательской ошибки

.ERRB (ERRIFB) <имя_формального_аргумента> - генерация пользовательской ошибки, имя <имя_формального_аргумента> пропущено;

.ERRNB (ERRIFNB) <имя_формального_аргумента> - генерация пользовательской ошибки, имя <имя_формального_аргумента> присутсвует;

cls_reg

MACRO

reg

.ERRB <reg>

 

 

 

xor

reg, reg

 

ENDM

 

 

 

 

 

 

Условная генерация пользовательской ошибки

.ERRDEF (ERRIFDEF) символическое_имя – если указанное имя определено до момента обработки этой директивы в программе, то генерируется пользовательская ошибка.

.ERRNDEF (ERRIFNDEF) символическое_имя – если указанное имя не определено до момента обработки этой директивы в программе, то генерируется пользовательская ошибка.

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

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

ERRIFDIFI – аналогично ERRIFDIF, но не различает регистра букв.

ERRIFIDNI – аналогично ERRIFIDN, но не различает регистра букв.

Условная генерация пользовательской ошибки

.ERRE (ERRIFE) константное выражение – директива вызывает ошибку, если константное выражение ложно.

.ERRNZ (ERRIF) константное выражение – директива вызывает ошибку, если константное выражение истинно (не равно нулю).

Константное выражение не может содержать компонентов, являющихся ссылками вперед.

Операторы выражения:

EQ – равно, NE – не равно, LT – меньше, LE – меньше или равно, GT – больше, GE – больше или равно, NOT - логическое отрицание, AND – логическое И, OR – логическое ИЛИ, XOR – логическое исключающее ИЛИ

Пример с использованием константных выражений

.data

 

 

 

mas

db

1,2,3,4,5

 

len

dd

20

 

 

 

 

.code

 

 

 

 

 

 

.erre

(len – mas) LT 10

;Генерация ошибки, если длина

 

 

 

;области mas меньше 10 байт