Директивы IFIDN, ifidni, IFDIF и ifdifi

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

Синтаксис этих директив:

IFIDN(I) аргумент_1,аргумент_2фрагмент_программы_1 ELSEфрагмент_программы_2ENDIF IFDIF(I) аргумент_1,аргумент_2фрагмент_программы_1 ELSEфрагмент_программы_2ENDIF

В этих директивах проверяются аргумент_1 и аргумент_2 как строки символов. Какой именно код — фрагмент_программы_1 или фрагмент_программы_1 — будет транслироваться по результатам сравнения, зависит от кода директивы. Парность этих директив объясняется тем, что они позволяют учитывать либо не учитывать различие строчных и прописных букв. Так, директивы IFIDNI и IFDIFI игнорируют это различие, а IFIDN и IFDIF — учитывают.

Директива IFIDNI сравнивает символьные значения аргумент_1 и аргумент_2. Если результат сравнения положительный, то фрагмент_программы_1 транслируется и помещается в объектный модуль. В противном случае, при наличии директивы ELSE, в объектный код помещается фрагмент_программы_1. Если же директивы ELSE нет, то вся часть программы между директивами IFIDNI и ENDIF игнорируется и в объектный модуль не включается.

Действие IFDIFI обратно IFIDNI. Если результат сравнения отрицательный (строки не совпадают), транслируется фрагмент_программы_1. В противном случае все происходит аналогично рассмотренным ранее директивам.

Как мы уже упоминали, эти директивы удобно применять для проверки фактических аргументов макрокоманд. К примеру, проверим, какой из регистров — al или ah — передан в макрос в качестве параметра (проверка проводится без учета различия строчных и прописных букв):

show macro rgifdifi,goto M_alelseifdifi,goto M_ahelseexitmendifendif:M_al...:M_ah...endmENDIF

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: