Теперь относительно условных переходов. Эти
Теперь относительно условных переходов. Эти команды также начинаются с JP или JR, но в поле операндов записывается мнемоника проверки одного из возможных флагов и после запятой - имя метки или абсолютный адрес, например:
JP Z,8252 ;переход по адресу 8252, если ; установлен флаг нуля JR NC,MAIN ;относительный переход на метку MAIN, ; если флаг переноса сброшен
Перечислим мнемоники всех возможных условий:
- Z - если ноль (установлен флаг нуля Z);
- NZ - если не ноль (флаг нуля Z сброшен);
- C - если перенос (установлен флаг переноса CY);
- NC - если нет переноса (флаг переноса CY сброшен);
- M - если отрицательный результат (установлен флаг знака S);
- P - если результат положительный (флаг знака S сброшен);
- PE - если четность или переполнение (установлен флаг P/V);
- PO - если нет четности/переполнения (флаг P/V сброшен).
Для флагов H и N условия отсутствуют, так как они используются только в неявном виде командами коррекции двоично-десятичных чисел.
Здесь нужно еще добавить, что в команде JP возможно применение всех перечисленных мнемоник условий, а с командой JR допускаются только первые четыре: Z, NZ, C и NC.
Зная все это, можно наконец написать цикл. В общем виде он будет выглядеть так:
LD E,N ;заносим в регистр E счетчик ; количества повторений цикла N LOOP PUSH DE ;сохраняем его в стеке ......... ;тело цикла POP DE ;восстановление счетчика DEC E ; и уменьшение его на единицу JR NZ,LOOP ;переход на начало цикла, если счетчик ; не обнулился (в самом общем случае ; здесь может находиться инструкция ; JP NZ,LOOP)
Содержание Назад Вперед