|
Для каждой закодированной команды ассемблер генерирует одну команду на машинном языке. Ассемблер имеет также макросредства, но макросы в нём определяются программистом. Для этого задаётся имя макроса, директива MACRO, различные ассемблерные команды, которые должны генерировать данный макрос, и для завершения макроопределения – директива ENDМ. Затем в любом месте программы, где необходимо выполнение определённых в макрокоманде команд, достаточно закодировать имя макроса.
Примерами макрокоманд могут быть операции ввода-вывода, связанные с инициализацией регистров и выполнением прерываний, преобразования ASCII- и двоичного форматов данных, арифметические операции над длинными полями и т.д.
Макроопределение должно находиться до определения сегментов и определяется форматом:
Имя-макроса MACRO [формальные-параметры]
.
.; тело макроса
.
ENDM
Формальные параметры в макроопределении указывают ассемблеру на соответствие их имён любым аналогичным именам в теле макроопределения. Формальные параметры могут иметь любые правильные ассемблерные имена, не обязательно совпадающие с именами в сегменте данных. В одной макрокоманде может быть определено любое число формальных параметров, разделённых запятыми, вплоть до 120-й колонки в строке.
Макроопределение может содержать ссылку на другое макроопределение.
В некоторых макрокомандах требуется определять элементы данных или метки команд. При использовании такой макрокоманды в программе более одного раза происходит также неоднократное определение одинаковых полей данных или меток, что приводит к ошибке. Поэтому для обеспечения уникальности генерируемых в каждом макрорасширении имён используется директива LOCAL, которая кодируется непосредственно после директивы MACRO. Формат директивы следующий:
LOCAL имя1, имя2, …
ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА
Имена регистров
AH BH CH DH CS SS BP
AL BL CL DL DS SI SP
AX BX CX DX ES DI
Мнемокоды
AAA DIV JLE JS OR SBB
AAD ESC JMP JZ OUT SCAS
AAM HLT JNA LAHF POP SHL
AAS IDIV JNAE LDS POPF SHR
ADC IMUL JNB LEA PUSH STC
ADD IN JNBE LES PUSHF STD
AND INC JNE LOCK RCL STI
CALL INT JNG LODS RCR STOS
CBW INTO JNGE LOOP REP SUB
CLC IRET JNL LOOPE REPE TEST
CLD JA JNLE LOOPNE REPNE WAIT
CLI JAE JNO LOOPNZ REPNZ XCHG
CMC JB JNP LOOPZ REPZ XLAT
CMP JBE JNS MOV RET XOR
CMPS JCXZ JNZ MOVS ROL
CWD JE JO MUL ROR
DAA JG JP NEG SAHF
DAS JGE JPE NOP SAL
DEC JL JPO NOT SAR
Директивы Ассемблера
Дата добавления: 2014-12-19; просмотров: 99 | Поможем написать вашу работу | Нарушение авторских прав |
|