Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Директива очистки





Директива INCLUDE указывает Ассемблеру на включение всех макроопределений из специфицированной библиотеки.

Например, библиотека содержит макросы INIT, PROMPT и DIVIDE, хотя программе требуется только INIT. Директива PURGE позволяет «удалить» нежелательные макросы PROMPT и DIVIDE в текущем ассемблировании:

IF1 INCLUDE MACRO.LIB;Включить всю библиотеку

ENDIF PURGE PROMRT,DIYIDE;Удалить ненужные макросы...

INIT CSEG,DATA,STACK;Использование оставшейся макрокоманды

 

Директива PURGE действует только в процессе ассемблирования и не оказывает никакого влияния на макрокоманды, находящиеся в библиотеке.

Конкатенация (&)

Символ амперсанд (&) указывает Ассемблеру на сцепление (конкатенацию) текста или символов. Следующая макрокоманда MOVE генерирует команду MOVSB или MOVSW:

MOVE MACRO TAG REP MOVS&TAG ENDM

Теперь можно кодировать макрокоманду в виде MOVE B или MOVE W. В результате макрорасширения Ассемблер сцепит параметр с командой MOVS и получит REP MOVSB или REP MOVSW. Данный пример весьма тривиален и служит лишь для иллюстрации.

Директивы повторения: REPT, IRP, IRPC

Директивы повторения заставляют Ассемблер повторить блок операторов, завершаемых директивой ENDM.

Эти директивы не обязательно должны находится в макроопределении, но если они там находятся, то одна директива ENDM требуется для завершения повторяющегося блока, а вторая ENDM — для завершения макроопределения.

REPT: Повторение

Операция REPT приводит к повторению блока операторов до директивы ENDM в соответствии с числом повторений, указанным в выражении:

REPT выражение

 

В следующем примере происходит начальная инициализация значения N=0 и затем повторяется генерация DB N пять раз:

N = 0 REPT 5 N = N + 1 DB N ENDM

В результате будут сгенерированы пять операторов DB от DB 1 до DB 5.

Директива REPT может использоваться таким образом для определения таблицы или части таблицы. Другим примером может служить генерация пяти команд MOVSB, что эквивалентно REP MOVSB при содержимом CX равном 05:

REPT 5 MOVSB ENDM

IRP: Неопределенное повторение

Операция IRP приводит к повторению блока команд до директивы ENDM.

Основной формат:

IRP dummy,<arguments>

Аргументы, содержащиеся в угловых скобках, представляют собой любое число правильных символов, строк, числовых или арифметических констант.

Ассемблер генерирует блок кода для каждого аргумента. В следующем примере Ассемблер генерирует DB 3, DB 9, DB 17, DB 25 и DB 28:

IRP N,<3, 9, 17, 25, 28> DB N

ENDM

IRPC: Неопределенное повторение символа

Операция IRPC приводит к повторению блока операторов до директивы ENDM. Основной формат:

IRPC dummy,string

Ассемблер генерирует блок кода для каждого символа в строке «string». В следующем примере Ассемблер генерирует DW 3, DW 4...
DW 8:

IRPC N,345678 DW N

ENDM

 







Date: 2015-05-22; view: 639; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию