Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

МАКРОКОМАНДЫ

Для каждой закодированной команды ассемблер генерирует одну команду на машинном языке. Ассемблер имеет также макросредства, но макросы в нём определяются программистом. Для этого задаётся имя макроса, директива 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 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав