Шаг 25.
Организация переходов в Ассемблере. Команда LOOP

    На этом шаге мы рассмотрим организацию цикла.

    Приведенная на предыдущем шаге программа реализует бесконечный цикл, однако на практике количество выполнений тела цикла должно быть ограничено. В этом случае можно использовать команду LOOP, общий вид которой следующий:

     <метка>
           <тело цикла>
           LOOP <метка>

    Количество повторений тела цикла указывается в регистре CX. По достижению команды LOOP содержимое этого регистра автоматически уменьшается на 1. Пока содержимое регистра CX не равно нулю, управление передается на метку, указанную в операнде. В противном случае управление передается на следующую после LOOP команду. Исправим предыдущую программу, реализовав в ней конечный цикл.

         PAGE 60,132
         TITLE  Пример использования команды LOOP.
CODESG   SEGMENT  PARA
         ASSUME CS: CODESG, DS: CODESG, SS: CODESG
         ORG 100h
BEGIN    PROC
         MOV AX,01 ;Инициализация регистров AX,
         MOV BX,01 ;BX,
         MOV DX,01 ;DX.
         MOV CX,7  ;Число повторений тела цикла.
A20:
         INC AX    ;Увеличить AX на 1.
         ADD BX,AX ;Прибавить AX к BX.
         SHL DX,1  ;Удвоить DX.
         LOOP A20  ;Уменьшить CX и повторить  цикл, если не нуль.
         ;--------- Вывести на экран число, полученное в AX.
         MOV DX,AX ;Поместить число в DX.
         MOV AH,02H
         ADD DL,30H;Получить код выводимой цифры.
         INT 21H   ;Воспользоваться прерыванием INT 21H.
         RET
BEGIN    ENDP
CODESG   ENDS
         END BEGIN
Текст этой программы можно взять здесь.


    Замечание. Расстояние от метки до команды LOOP должно быть в пределах от -128 до +127 байтов. Если расстояние выходит за эти границы, то появляется сообщение: Relative jump out of range ("Превышение относительной границы перехода").

    Отметим, что при выполнении приведенной программы на экране появится число 8 (начальное значение в AX равно 1, а цикл, в теле которого к AX прибавляется 1, выполнится 7 раз). Как же получить исполняемый файл, чтобы самостоятельно убедиться в этом? Ответ на этот вопрос можно найти в следующем шаге, который является необходимым отступлением в дальнейшем изложении материала.

    На следующем шаге мы рассмотрим ассемблирование и компоновку программы.


Предыдущий шаг Содержание Следующий шаг