|
Вот
почему в директиве IRP были добавлены угловые скобки.
Однако это объяснение не применимо к строкам! Одиночные кавыч-
ки, в которые заключаются строки, не допускаются, а добавление
еще одного уровня приводит к путанице . Если мы используем опера-
тор define byte (определить байт) так:
db 'dummy' ;добавить элемент
MASM разворачивает строку следующим образом:
2 db 'dummy' ;добавить элемент
что может создать нам довольно много значений dummy, но не
- 1-13 -
сделает то, что мы хотим. Мы можем вызвать использование дей-
ствительного аргумента через
db '&dummy' ;добавить элемент
но MASM развернет эту строку в
2 db "one" ;добавить элемент
Это приведет к появлению специальной ошибки "Чтение текста
после конца". Такая же ошибка возникает, если Вы случайно создали
бесконечный рекурсивный вызов макро. В общем случае MASM выберет
всю память для сохранения всех используемых символов. Будьте вни-
мательны! Это сообщение об ошибке выдается до тех пор, пока Вы не
прекратите работу MASM, нажав "Cоntrоl-C".
Резюме по использованию макро
Из того , что мы изучили, видно - макросы используют некоторый
тип "стенографического" программирования. Так, если вы определили
некоторый блок программы, Вы можете включать его многократно че-
рез простой вызов макро. Мы видели, что макросы определяются при
помощи оператора MACRO, который присваивает макро имя и дополни-
тельно может снабжать его аргументами. Макроописание заканчивает-
ся оператором ENDM. После выполнения макроописания вызов макро
осуществляется по его имени, за которым могут следовать некоторые
параметры.
Мы также видели, как MASM, используя директиву LOCAL, может
вырабатывать уникальные метки и как применяются директивы повто-
рения.
|