Flat Assembler 1.64. Мануал программера | страница 17



«>restore» позволяет присвоить назад предыдущее значение переопределенной константы. За ней должно следовать одно или больше имен символьных констант, разделенных запятыми. Так, «>restore d» после предыдущего переопределения вернет константе значение «>edx», следующее применение этой директивы вернет ей значение «>dword», а ещё одно применение восстановит первоначальное значение, как будто такая константа не определялась. Если не константа с заданным именем не определена, то «>restore» не вызовет ошибку, а будет просто проигнорирована.

Символьные константы могут использоваться для адаптации синтаксиса ассемблера к персональным предпочтениям. Например, следующие определения создают удобные ярлыки для всех операторов размера:

>b equ byte

>w equ word

>d equ dword

>p equ pword

>f equ fword

>q equ qword

>t equ tword

>x equ dqword

Так как символьная константа может так же иметь пустое значение, она может использоваться для того, чтобы допустить синтаксис со словом «>offset» перед каким-нибудь значением адреса:

>offset equ

После такого определения «>mov ax, offset char» будет правильной конструкцией, которая будет копировать смещение переменной «>char» в регистр «>ax», так как «>offset» заменяется пустым значением, и поэтому игнорируется.

Символьные константы могут также быть определены директивой «>fix», которая имеет такой же синтаксис, как «>equ», но определяет константы высшего приоритета — они заменяются их символическим значением даже перед совершением директив препроцессора и макроинструкций. Исключением является сама директива «>fix», которая имеет наивысший возможный приоритет, и поэтому допускает переопределение констант, заданных таким путем. Но если такие константы высшего приоритета находятся внутри значения, следующего за директивой «>fix», они заменяются их значениями перед присвоением этого значения новой константе.

Директива «>fix» может использоваться для адаптирования директив препроцессора, что нельзя сделать директивой «>equ». Например:

>incl fix include

определяет короткое имя для директивы «>include», тогда как такое же определение директивой «>equ» не даст такого результата, так как стандартные символьные константы заменяются на из значения после поиска строк с директивами препроцессора.

2.3.3 Макроинструкции

«>macro» позволяет вам определить собственный комплекс инструкций, называемых макроинструкциями. Их использование может существенно упростить процесс программирования. В своей простейшей форме директива похожа на описание символьной константы. Например, следующая строка определяет ярлык для инструкции «