Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler 01.doc
Скачиваний:
19
Добавлен:
09.11.2019
Размер:
727.04 Кб
Скачать

2. Использование параметров в макрокомандах.

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

.286

TITLE MACRO2 (EXE) Использование параметров

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

INIT2 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 ;Конец макрокоманды

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

STAC SEGMENT PARA 'Stac'

DW 32 DUP(?)

STAC ENDS

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

DSEG SEGMENT PARA 'Data'

MESSGE DB 'Test of macro','$'

DSEG ENDS

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

CSEG SEGMENT PARA 'Code'

BEGIN PROC FAR

INIT2 CSEG,DSEG,STAC ;Макрокоманда

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

LEA DX,MESSGE ;Сообщение

INT 21H

RET

BEGIN ENDP

CSEG ENDS

END BEGIN

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

3. Комментарии в макрокомандах.

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

.286

TITLE MACRO3 (EXE) Директивы .LALL и .SALL

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

INIT2 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

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

STAC SEGMENT PARA 'Stac'

DW 32 DUP(?)

STAC ENDS

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

DATA SEGMENT PARA 'Data'

MESSG1 DB 'Customer name?','$'

MESSG2 DB 'Customer address?','$'

DATA ENDS

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

CSEG SEGMENT PARA 'Code'

BEGIN PROC FAR

.SALL

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

PROMPT MESSG1

.LALL

PROMPT MESSG2

RET

BEGIN ENDP

CSEG ENDS

END BEGIN

В программе определены два макроопределения INIT2 и PROMPT. Кодовый сегмент содержит директиву .SALL для подавления распечатки INIT2 и первого расширения PROMPT. Для второго расширения PROMPT директива .LALL указывает ассемблеру на вывод в листинг комментария и макрорасширения.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]