Макрокоманды повторения

    Для тех случаев, когда нужно несколько раз повторять один и тот же

    фрагмент программы в макроассемблере имеется несколько специальных

    макрокоманд. Это операторы 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 Макрокоманды повтора