![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Организовать циклическое выполнение некоторого фрагмента программы можно, к примеру, используя команды условной передачи управления или команду безусловного перехода JMP.
Например, подсчитаем количество нулевых байтов в области mas.
model small
.stack 100h
.data
len equ 10;количество элементов в mas
mas db 1,0,9,8,0,7,8,0,2,0;инициализируем массив
.code
start:
mov ax,@data
mov ds, ax
mov сx, len;длину поля mas в сх
xor ax,ax;обнуляем ax
xor si,si;обнуляем si
cycl:
jcxz exit;проверка сх на 0, если 0, то выход
cmp mas[si],0;сравнить элемент mas с 0
jne ml;если не равно 0, то на ml
inc al;в al - счетчик нулевых элементов
ml:
inc si;перейти к следующему элементу
dec сх;уменьшить сх на 1
jmp cycl;переход на метку cycl
exit:
mov ax,4c00h
int 21h
end start
Цикл организован тремя командами, JCXZ, DEC и JMP. Команда JCXZ выполняет здесь две функции: предотвращает выполнение «пустого» цикла (когда счетчик цикла в СХ равен нулю) и отслеживает окончание цикла после обработки всех элементов поля mas. Команда DEC после каждой итерации цикла уменьшает значение счетчика в регистре СХ на 1.
Команда LOOP также позволяет организовать циклы (loops), подобные циклам for в языках высокого уровня с автоматическим уменьшением счетчика цикла. Синтаксис команды:
Дата публикования: 2014-12-08; Прочитано: 294 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!