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

If (условие)

. Условный

. блок

ELSE

.

.

ENDIF

Отсутствие директивы ENDIF вызывает сообщение об ошибке. Если проверяемое условие истинно, то ассемблер выполняет условный блок до директивы ELSE или при отсутствии ELSE - до директивы ENDIF. Если условие ложно, то ассемблер выполняет условный блок после директивы ELSE, а при отсутствии ELSE вообще обходит условный блок.

Ниже приведены некоторые условные директивы:

IF выражение - Если выражение не равно нулю, ассемблер обрабатывает операторы в условном блоке.

IFE выражение - Если выражение равно нулю, ассемблер обрабатывает операторы в условном блоке.

IFIDN <арг-1>,<арг-2> - Если строка первого аргумента идентична строке второго аргумента, то ассемблер обрабатывает операторы в условном блоке. Аргументы должны быть в угловых скобках.

IFDIF <арг-1>,<арг-2> - Если строка первого аргумента отличается от строки второго аргумента, то ассемблер обрабатывает операторы в условном блоке. Аргументы должны быть в угловых скобках.

IFDEF идентификатор - Если идентификатор определен в программе, то ассемблер обрабатывает операторы в условном блоке.

IFNDEF идентификатор - Если идентификатор не определен в программе, то ассемблер обрабатывает операторы в условном блоке.

10. Макроопределение может содержать условные директивы, которые проверяют важные условия. Если условие истинно, то ассемблер должен прекратить дальнейшее макрорасширение. Для этого служит директива EXITM:

If (условие)

.

.

.

EXITM

.

.

ENDIF

Как только ассемблер попадает в процессе генерации макрорасширения на директиву EXITM, дальнейшее расширение прекращается и обработка продолжается после директивы ENDM.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ:

1. Простое макроопределение.

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

.286

TITLE MACRO1 (EXE) Макрос для инициализации

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

INIT1 MACRO ;Определить макрос

ASSUME CS:CSEG,DS:DSEG,SS:STACK,ES:DSEG

PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DSEG

MOV DS,AX

MOV ES,AX

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

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

STACK SEGMENT PARA STACK 'Stack'

DW 32 DUP(?)

STACK ENDS

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

DSEG SEGMENT PARA 'Data'

MESSGE DB 'Test of macro-instruction',13

DSEG ENDS

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

CSEG SEGMENT PARA 'Code'

BEGIN PROC FAR

INIT1 ;Макрокоманда

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

MOV BX,01 ;Номер

MOV CX,26 ;Длина

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

INT 21H

RET

BEGIN ENDP

CSEG ENDS

END BEGIN

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

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