Иллюстрированный самоучитель по Assembler


Циклы - часть 4


Команда loop внутреннего цикла передает управление на саму себя, т.е. тело внутреннего цикла состоит из единственной команды loop. В этом нет ничего незаконного. Любая команда, в том числе и loop, требует какого-то времени для своего выполнения, и повторение 64 К раз команды loop дает некоторую временную задержку (на современных процессорах порядка тысячной доли секунды).

Перейдем теперь к рассмотрению команд условных переходов.

В приведенном выше фрагменте для реализации длинного цикла использовалась команда условного перехода по равенству je. В системе команд МП 86 имеется свыше трех десятков команд условных переходов, позволяющих осуществлять переходы при наличии разнообразных условий: равенства, неравенства, положительности или отрицательности результата и проч. При выполнении всех этих команд процессор анализирует содержимое регистра флагов и осуществляет (или не осуществляет) переход на указанную метку в зависимости от состояния отдельных флагов или их комбинаций. Поскольку на состояние регистра флагов влияют многие команды процессора, командами условных переходов можно пользоваться не только после команд сравнения или анализа, но и после многих других команд, если внимательно изучить влияние этих команд на флаги процессора. Приведем несколько абстрактных примеров.

cmp AX,BX          ;Сравнение двух регистров

je equal                 ;Переход, если AX=BX

cmp SI,mem        ;Сравнение регистра и ячейки памяти

jne notequ            ;Переход, если SI<>mem

int 21h                  ;Вызов DOS

jc syserr               ;Переход, если была ошибка

                             ;и флаг CF=1




- Начало -  - Назад -  - Вперед -



Книжный магазин