Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ассемблер физтех IA-32.pdf
Скачиваний:
144
Добавлен:
10.02.2015
Размер:
489.04 Кб
Скачать

43

3.3 Команды организации циклической обработки. Организация счетных циклов

В качестве счетчика цикла во всех командах циклической обработки используется регистр ECX.

1. Команда организации счетного цикла:

LOOP Адрес перехода

При каждом выполнении команда уменьшает содержимое регистра ECX на единицу и передает управление по указанному адресу, если ECX не равно 0.

Организация счетного цикла. Для организации счетного цикла с использованием команды LOOP необходимо записать количество повторений в регистр счетчика ECX. Тогда команда LOOP будет отсчитывать повторения, вычитая 1 из счетчика.

Примечание. Если перед началом цикла в регистр ECX загружен 0, то цикл выполняется 232 раз. Такая ситуация называется «зацикливанием», поскольку программа надолго «зависает».

mov

ECX,n

;

загрузка счетчика

begin_loop: Операции

;

тело цикла

loop

begin_loop

Пример. Написать фрагмент суммирования чисел от 1 до 10, используя счетный

цикл.

mov

AX,0

;

обнуление суммы

mov

BX,1

;

первое слагаемое

mov

ECX,10

 

; загрузка счетчика

CYCL: add

AX,BX

;

суммирование

inc

BX

;

следующее число

loop

CYCL

;

возврат в цикл

continue: ...

; выход, сумма – в ax

Оглавление

44

2. Команда перехода по обнуленному счетчику.

JCXZ Адрес перехода

Команда передает управление по указанному адресу, если содержимое регистра ECX равно 0.

Организация счетного цикла с проверкой счетчика.

mov

ECX,loop_count

;

загрузка счетчика

jcxz

end_of_loop

;

проверка счетчика

begin_loop: Операции ; тело цикла

loop begin_loop

end_of_loop: ...

3. Команды организации цикла с условием.

LООРE Адрес перехода

LOOPNE Адрес перехода

При выполнении обеих команд содержимое регистра ECX уменьшается на единицу, после чего они передают управление по указанному адресу при условии, что содержимое ECX отлично от нуля, причем LООРE дополнительно требует наличия флага «равно» (ZF=1), а LOOPNE – «не равно» (ZF=0).

Организация цикла со сложным условием. Конструкция Цикл со сложным условием позволяет эффективно реализовать поиск данных:

mov

ECX,loop_count ;

загрузка счетчика

jcxz

end_of_loop

; проверка счетчика

begin_loop: Операции

; тело цикла

cmp

al,100

; проверка содержимого al

loopne begin_loop

end_of_loop: ...

Оглавление