С помощью команд перехода можно реализовать любые разветвления и циклы:
Для организации цикла с заранее известным числом повторений можно использовать
1. В качестве счетчика — только регистр СХ;2. Начальное значение СХ задавать до цикла;3. Реализуется только короткий (30-40) переход;4. При возможном СХ=0 надо выполнить обход цикла:
команду LOOP, действие которой можно описать так:
CX:=CX – 1; If CX<>0 Then goto <метка>
Пример Вычислить N! (N – байтовая, <=8) и результат записать в АХ. При N=0 цикл не должен выполняться.
Параметр цикла I можно менять и в обратном направлении, а т.к. именно так и меняется СХ, то его можно использовать не только как счетчик, но и как параметр:
MOV AX, 1
MOV CL, N
MOV CH, 0
JCXZ F1
MOV SI, 1
F: MUL SI
INC SI
LOOP F
F1:
MOV AX, 1
MOV CL, N
MOV CH, 0
JCXZ F1
MOV SI, 1
F: MUL CX
LOOP F
F1:
Для организации цикла с известным числом повторений, из которого возможен досрочный выход, используются команды:
LOOPNE / LOOPNZ
CX:=CX –1; if (CX<>0) and (ZF=0) then goto <метка>
Используется для поиска элемента последовательности, имеющего заданную величину
LOOPE / LOOPZ
CX:=CX –1; if (CX<>0) and (ZF=1) then goto <метка>
Используется для поиска 1-го элемента последовательности, отличного от заданной величины
Пример Записать в BL наименьшее число из [2, К], на которое не делится число N (K, N – байтовые переменные, 2<=K<N) или записать 0, если такого числа нет.
lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.)
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав