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