Ромашка, тогда не совсем понял, что такое C при вызове макроса:
NAME C, 'СDAB'
Единственное, что смог предположить, что C - это и есть шаблон (в примере - 'ABCDEF').
Если так, то вот что у меня получилось (написал на примере своих исходников, когда ну очень давно тренировался писать макросы

)
Кстати, NAME - нехорошее имя для макроса. Походу, есть такое зарезервированное слово в ассемблере. Так что заменил его на Call_NAME
Код: Выделить всё
Call_NAME Macro PATTERN, EXAMPLE
; перебираем посимвольно параметр EXAMPLE
IRPC CHAR_OF_EXAMPLE, <EXAMPLE>
; перебираем посимвольно параметр PATTERN
IRPC CHAR_OF_PATTERN, <PATTERN>
; сравниваем текущий символ EXAMPLE и PATTERN
; если равны, создаем байт памяти с этим символом, иначе
; создаем байт памяти с пробелом
IfIDNI <CHAR_OF_EXAMPLE>, <CHAR_OF_PATTERN>
db '&CHAR_OF_PATTERN&'
Else
db ' '
EndIf
EndM ; IRPC CHAR_OF_PATTERN, <PATTERN>
EndM ; of IRPC CHAR_OF_EXAMPLE, <EXAMPLE>
EndM
; далее - пример вызова
.model tiny
.code
ORG 100h
start:
Call_NAME ABCDEF, CDAB
end start
ПРИМЕЧАНИЕ. Возможно, я не совсем "правильным" макросом перебирают строку параметра. Как ты видишь, при вызове макроса ABCDEF, CDAB записаны БЕЗ кавычек. Это не ошибка, это так и нужно. Если сделать вызов с кавычками:
Call_NAME 'ABCDEF', 'CDAB'
то кавычки также будут восприняты как еще один символ строк передаваемых параметров.
Вообще, это можно отследить в макросе. Хотя я не увререн, правильный ли это путь. Т.е. я имею в виду, возможно есть какая-то команда макроязыка, которая будет перебирать символы, интерпретируя параметр макроса именно как строку, а не как "набор символов". Во всяком случае, вот пример с "отбрасыванием" символом двойной и одинарной кавычки (кстати, не только первой и последней, но и на любой позиции, если они встретятся внутри строки).
Код: Выделить всё
Call_NAME Macro PATTERN, EXAMPLE
IRPC CHAR_OF_EXAMPLE, <EXAMPLE>
IRPC CHAR_OF_PATTERN, <PATTERN>
IFDifI <CHAR_OF_EXAMPLE>, <'>
IFDifI <CHAR_OF_EXAMPLE>, <">
IFDifI <CHAR_OF_PATTERN>, <'>
IFDifI <CHAR_OF_PATTERN>, <">
IfIDNI <CHAR_OF_EXAMPLE>, <CHAR_OF_PATTERN>
db '&CHAR_OF_PATTERN&'
Else
db ' '
EndIf
EndIf
EndIf
EndIf
EndIf
EndM ; of "IRPC"
EndM ; of "IRPC"
EndM
.model tiny
.code
ORG 100h
start:
Call_NAME 'ABCDEF', 'CDAB'
end start
ПРИМЕЧАНИЕ. Пробовал этот текст компилировать TASM-ом. Компилируется без ошибок.