|
Вы помните, что символы определяются при помощи опера-
тора equ или =. Затем эти символы вычисляются MASM и заменяются
их значениями. Иногда случается, что программист забывает, что
аргументы макро не являются символами и наоборот. Согласно Руко-
водству по MASM аргументы макро заменяются действительными пара-
метрами с использованием подстановки "один к одному". Аргументы
макро могут создаваться в одном макро и, используя возможность
текстовой подстановки, передаваться как составная строка текста в
другое макро. Это невозможно с символами. Символам может быть
присвоено текстовое значение при помощи оператора equ, что не
позволяет модифицировать их впоследствии. Только оператор = раз-
решает присваивать символам цифровые значения или атрибуты TYPE.
Пример такого ограничения и один из способов его обхода представ-
лен при рассмотрении операторов структурного управления.
Листинг 1-13. Пример расширения обобщенного макро @PushOp
-----------------------------------------------------------------
dat_seg SEGMENT
datq dq 4040414142424343h
dat_seg ENDS
.
.
.
start:
@PushOp ax ;сохранение общего регистра
1 push ax
@PushOp cs ;сохранение регистра сегмента
1 push cs
@PuchOp al ;сохранение короткого регистра
2 push ax... ;сделать общий регистр
@PushOp 01234h ;сохранить константу
2 push bp
2 mov bp,sp
2 push ax
2 mov ax,01234h
2 xchg [bp],ax
2 mov bp,ax
2 pop ax
@PushOp 'A' ;сохранение константы
2 push bp
2 mov bp,sp
2 push ax
- 1-31 -
2 mov ax,'A'
2 xchg [bp],ax
2 mov bp,ax
2 pop ax
@PushOp start ;сохранить смещение програм.метки
2 push bp
2 mov bp,sp
2 push ax
2 mov ax,offset start
2 xchg [bp],ax
2 mov bp,ax
2 pop ax
@PushOp datq ;сохранить четверную переменную
2 push ?argadd ;1-ое слово
2 push ?argadd ;2-ое слово
2 push ?argadd ;3-ое слово
2 push ?argadd ;4-ое слово
.
.
.
----------------------------------------------------------------
Структурные операторы управления в языке Ассемблер
Теперь, когда мы имеем все необходимые средства для построения
структурных операторов управления, разрешите приступить к этому.
Наиболее часто употребимые операторы структурного управления
представлены в Табл.
|