Урок 103. Макрокоманды повторения
Для тех случаев, когда нужно несколько разповторять один и тот же
— — — фрагмент программы в макроассемблереимеется несколько специальных
— — — макрокоманд. Это операторы REPT, IRT иIRPC. Каждый из них
— — — действует как макрокоманда в макрокомандеи приводит к генерации
— — — следующего за ним участка программы, покаассемблеру не встретится
— — — операнд ENDM.
—
— — — — — Для простого повторения — последрвательности команд используется
— — — макрокоманда REPT. Последовательность
—
— — — — — REPT — выражение
— — — — — -… тело макрокоманды REPT
— — — — — ENDM
—
— — — — дублирует команды, составляющих телоданной макрокоманды. Значение
— — — выражения определяет число повторенийтекста.
—
— — — — — С помощью макрокоманды IRP можно прикаждом повторении
— — — использовать разные параметры. При использованииконструкции
—
— — — — — IRP — — -фиктивный параметр,<-список>-
— — — — — -… тело макрокоманды IRP
— — — — — ENDM
—
— — — ассемблер осуществляет столько проходовтела макрокоманды,
— — — сколько указано элементов в списке. Прикаждом проходе ассемблер
— — — подставляет вместо фиктивного параметраследующий по порядку
— — — элемент списка. Элементы списка должныбыть числовыми выражениями.
— — — — — Если вы хотите использовать в спискесимвольные значения,
— — — применяйте макрокоманду IRPC.Последователность
— — — — — IRPC — — — -фиктивный параметр, строкасимволов
— — — — — -… тело макрокоманды IRPC
— — — — — ENDM
—
— — — осуществляет по одному проходу теламакрокоманды для каждого
— — — символа. При этом фиктивный параметрассемблер каждый раз заменяет
— — — следующим по порядку символом из строки.На Фиг. 6.7 показаны
— — — примеры применения описанных макрокомандповтора.
— — — — — — — — — — -Microsoft (R) Macro Assembler Version 5.00 — — — — — — — — — — — — 4/2/89 16:06:54
— — — — — — — — — — -Фиг. 6.7 Макроповторения — — — — — — — — — — — — — — — — — — — — — — — -Page — — — -1-1
—
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — PAGE — — -,132
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — TITLE — -Фиг. 6.7 Макроповторения
—
— — — — — — — — — — — 0000 — — — — — — — — — — — — — — — — — — — CODE — — -SEGMENT
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ASSUME -CS:CODE,DS:CODE
—
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — REPT — — -3 — — — — Повторить команду 3 раза
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — INC — — — -AX
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ENDM
— — — — — — — — — — — 0000 — 40 — — — — — — — — — — — — 1 — — — — — — INC — — — -AX
— — — — — — — — — — — 0001 — 40 — — — — — — — — — — — — 1 — — — — — — INC — — — -AX
— — — — — — — — — — — 0002 — 40 — — — — — — — — — — — — 1 — — — — — — INC — — — -AX
—
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — IRP — — — -VALUE,<-5,10,15,20>-
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ADD — — — -AX,VALUE
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ENDM
— — — — — — — — — — — 0003 — 05 0005 — — — — — — — — — — — — — 1 — — — — — — ADD — — — -AX,5
— — — — — — — — — — — 0006 — 05 000A — — — — — — — — — — — — — 1 — — — — — — ADD — — — -AX,10
— — — — — — — — — — — 0009 — 05
000F — — — — — — — — — — — — — 1 — — — — — — ADD — — — -AX,15
— — — — — — — — — — — 000C — 05 0014 — — — — — — — — — — — — — 1 — — — — — — ADD — — — -AX,20
—
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — IRPC — — -CHAR, ABCD
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ADD — — — -AX,CHAR&-X
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ENDM
— — — — — — — — — — — 000F — 03 C0 — — — — — — — — — 1 — — — — — — ADD — — — -AX,AX
— — — — — — — — — — — 0011 — 03 C3 — — — — — — — — — 1 — — — — — — ADD — — — -AX,BX
— — — — — — — — — — — 0013 — 03 C1 — — — — — — — — — 1 — — — — — — ADD — — — -AX,CX
— — — — — — — — — — — 0015 — 03 C2 — — — — — — — — — 1 — — — — — — ADD — — — -AX,DX
—
— — — — — — — — — — — 0017 — — — — — — — — — — — — — — — — — — — CODE — — -ENDS
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — END
— — — — — — — — — — — — — — — — — Фиг. 6.7 Макрокоманды повтора