Использование библиотек макроопределений

6.1. Составить в текстовом редакторе следующую программу в ЕХЕ-формате:

 

.286

TITLE MACRO6 (EXE) Проверка директивы INCLUDE

;--------------------------------------------

INCLUDE D:MACRO.LIB

;--------------------------------------------------------

STAC SEGMENT PARA 'Stac'

DW 32 DUP(?)

STAC ENDS

;---------------------------------------------------

DATA SEGMENT PARA 'Data'

MESSGE DB 'Test of macro','$'

DATA ENDS

;---------------------------------------------------

CSEG SEGMENT PARA 'Code'

BEGIN PROC FAR

INIT CSEG,DATA,STAC ;Макрокоманда

PROMPT MESSGE

RET

BEGIN ENDP

CSEG ENDS

END BEGIN

 

Программа содержит директивы IF1, INCLUDE и ENDIF. В LST-файл ассемблер выводит только директиву ENDIF. Обе макрокоманды в кодовом сегменте INIT и PROMPT закатологизированы в файле MACRO.LIB, т.е. просто записаны друг за другом на дисковый файл по имени MACRO.LIB с помощью текстового редактора.

Расположение директивы INCLUDE не критично, но она должна появиться ранее любой макрокоманды из включаемой библиотеки.

6.2. Записать с помощью текстового редактора библиотечный файл MACRO.LIB:

 

INIT MACRO CSNAME,DSNAME,SSNAME

ASSUME CS:CSNAME,DS:DSNAME

ASSUME SS:SSNAME,ES:DSNAME

PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DSNAME

MOV DS,AX

MOV ES,AX

ENDM ;Конец макрокоманды

PROMPT MACRO MESSAGE

; Макрокоманда выводит на экран любые сообщения

;; Генерирует команды вызова DOS

MOV AH,09 ;Вывод на экран

LEA DX,MESSAGE

INT 21H

ENDM

 

6.3. Выполнить ассемблирование и компоновку программы. Запустить программу из панели NORTON. Просмотреть листинг программы и записать его в отчет.

 

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

7.1. Ввести в текстовый редактор файл fcbcre.asm из библиотеки ASMLIB. Выполнить ассемблирование и компоновку программы этого файла, запустить загрузочный модуль из панели NORTON и просмотреть результат выполнения программы.

7.2. Ввести в файл директиву:

 

INCLUDE D:macro.lib

 

Заменить блок команд:

 

ASSUME .................

.................

.................

MOV ES,AX

 

на макрокоманду:

 

INIT CODESG,DATASG,STACKSG

 

Заменить команду REP STOSW в процедуре D10PROC на макрокоманду:

 

STOE W

 

Стереть в файле macro.ib макрокоманду PROMPT. Ввести в файл macro.ib макрокоманду:

 

STOE MACRO TAG

REP STOS&TAG

ENDM

7.3. Выполнить ассемблирование и компоновку программы fcbcre.asm. Запустить программу из панели NORTON. Просмотреть листинг программы и записать его в отчет.

 

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

8.1. Ввести в текстовый редактор файл allasc.asm из библиотеки ASMLIB. Выполнить ассемблирование и компоновку программы этого файла, запустить загрузочный модуль из панели NORTON и просмотреть результат выполнения программы.

8.2.Изменить процедуру D10DISP в файле allasc.asm следующим образом:

 

D10DISP PROC

MOV CX,256 ;256 итераций

D20: REPT 5

LEA DX,CTR ;Адрес счетчика D20

MOV AH,09 ;Ф-ция вывода символа