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