Assembler для начинающих

Префикс REP


    Существует специальный случай использования строковых команд.  Есть
    префикс, специально предназначенный для строковых команд.  Также
    как префикс подавления сегментации, используемый для порождения
    специальной сегментной адресации, он предшествует обычной команде и
    модифицирует ее работу.  А именно, этот префикс вводит строковую
    команду в цикл.  Мнемоника префикса REP происходит от английского
    слова Repeat - повторить.  Микропроцессор 8088 использует этот
    префикс в тесной связи с регистром CX, который указывает число
    повторений команды.
 
      Примером является команда STOSB. Команда
 


      REP STOSB
 
      есть специальная форма команды записи байта. Эта команда
    повторяется до тех пор, пока содержимое регистра CX не уменьшится
    до 0. Команда STOSB записывает байт из регистра AL в ячейку памяти,
    которая указывается парой регистров ES:DI, а затем увеличивает или
    уменьшает регистр DI на единицу так же, как и обычная команда
    STOSB. Затем префикс REP уменьшает регистр CX, и если он теперь не
    нуль, повторяет всю команду целиком. Запись строки повторяется до
    тех пор, пока регистр CX не достигнет нуля.
 
      Такая возможность превращает команду STOS в команду заполнения.
    Программа помещает заполнитель в регистр AL, счетчик байта в
    регистр CX, адрес блока в пару регистров ES:DI и сбрасывает флаг
    направления. Затем команда REP STOSB заполняет блок памяти
    значением из регистра AL. Такой фрагмент кода показан на Фиг. 4.23.

          Microsoft (R) Macro Assembler Version 5.00              1/1/80 04:01:31
          Фиг. 4.23 Заполнение области памяти               Page  1-1
 
 
                                        PAGE    ,132
                                        TITLE   Фиг. 4.23 Заполнение области памяти
           0000                   CODE    SEGMENT
                                        ASSUME  CS:CODE,DS:CODE,ES:CODE
 
                                  ;--------------------------------------



Содержание раздела