➔
при их использовании необходимо до начала цикла
(метка_перехода) в этот регистр задать нужное число
повторов.
Недостаток команд цикла – реализация только коротких
переходов. Для длинных циклов нужно использовать
комбинации команд условного / безусловного переходов.
Рассмотрим пример в контексте
подсчета количества
нулевых, положительных и отрицательных элементов
вектора (одномерного массива) из 1Б чисел.
Пример
описания переменных сегмента данных вектора:
mas db -1, 0, 3, -8, 0, 9, -6, 1, 2, -5 ; заданный вектор
len_mas =$-mas ; количество элементов в векторе
sch_0 db 0
; счетчик нулевых элементов вектора
sch_pol db 0
; счетчик пол. элементов вектора
sch_otr db 0
; счетчик отр. элементов вектора.
Тогда фрагмент сегмента кода для подсчета элементов:
mov cx, len_mas
; инициализация счетчика цикла
xor si,si
;инициализация индексного регистра
cycl: cmp mas[si],0
; сравниваем элемент вектора с 0
jz zero
; 0-элементы считаем в блоке zero
jg pol
;>0-элементы считаем в блоке pol
inc Sch_otr
; увеличиваем счетчик элементов <0
jmp kon_cycl
zero: Inc Sch_0
;увеличиваем счетчик 0-элементов
jmp kon_cycl
pol: Inc Sch_pol ;увеличиваем счетчик элементов >0
kon_cycl: inc si
; переходим к след. элементу вектора
loop cycl
; завершаем цикл.
Результат работы программы из примера:
0>
Достарыңызбен бөлісу: