Использование библиотек макроопределений
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 ;Ф-ция вывода символа