"РЛ" - НАЧИНАЮ Щ ИМ
I
Таблица 10. Варианты команд переходов
№ п/п
Мнемоника
команды
Чиспо машинных
циклов
Длина команды,
байт
Изменяемые
флаги PSW
1
S J M P R E L
2
2
2
A J M P D 1 1
2
2
3
L J M P D 1 6
2
3
4
J M P @ A + D P T R
2
1
5
J Z R E L
2
2
6
J N Z R E L
2
2
7
J C R E L
2
2
8
J N C R E L
2
2
9
J B B i t , R E L
2
3
10
J N B B i t , R E L
2
3
11
J B C B i t , R E L
2
3
12
C J N E A , M , R E L
2
3
C Y
13
C J N E A , # D 8 , R E L
2
3
C Y
14
C J N E R n , # D 8 , R E L
2
3
C Y
15
C J N E @ R * , # D 8 , R E L
2
3
C Y
16
D J N Z M , R E L
2
3
17
D J N Z R n , R E L
2
2
экономии отдельных байтов ©, то
придется самостоятельно задавать
нужные наиболее короткие команды.
Правда, это требуется крайне редко.
Как и ранее рассмотренная команда
ACALL, команда AJMP позволяет
“прыгнуть” на 1024 байта в любую
сторону относительно текущего зна-
чения PC, a LJMP, точно так же как и
LCALL - в любую точку всего имею-
щегося адресного пространства 64К.
Еще раз посоветую - используйте
псевдокоманду JMP, и пусть у вас
голова не болит ©.
Команда в строке 4 - это тоже
команда безусловного перехода,
только, как вы уже наверняка дога-
дались по характерному символу @,
косвенного перехода относительно
базового адреса в DPTR.
При выпол-
нении этой команды в PC будет за-
несен адрес, вычисленный по фор-
муле PC=DPTR+A. Помните команду
MOVC A, @A+DPTR? Эта команда
поступает аналогично, только вычис-
ленный адрес заносится в PC. Назна-
чение этой команды - осуществле-
ние
табличных
или, иначе говоря,
вы-
числяемых
переходов. Разумеется, в
свое время я познакомлю вас с ха-
рактерными задачами, при решении
которых используется эта команда.
Начийая с пятой строки
т а б л и ц ы
10,
представлены команды
условных пе-
реходов,
т.е. переходов, которые вы-
полняются только в случае, когда вы-
полняется определенное условие.
Команда JZ выполняет переход в
случае, если содержимое
а к к у м у л я -
т о р а р а в н о н у л ю
(Jump if Zero -
прыгнуть, если ноль). Если же содер-
жимое аккумулятора
не равно нулю,
то переход не производится, и выпол-
няется следующая команда.
Команда JNZ наоборот, выполня-
ет переход в случае, когда содержимое
а к к у м у л я т о р а н е р а в н о н у л ю
(Jump
if Not Zero - прыжок, если не ноль).
Команды JC и JNC выполняют
переход, если установлен или сбро-
шен флаг CY соответственно. А ко-
манды JB и JNB позволяют осуще-
ствить переход по значению указан-
ного в первом операнде бита - JB
выполняет переход, если
бит уста-
новлен,
a JNB - если
сброшен.
Команда JBC - по своему уни-
кальна, она выполняет сразу два
действия: проверяет
значение ука-
занного в первом операнде бита и,
если он равен 1, сбрасывает
его
в 0
и осуществляет переход.
Если бит
равен 0 - выполняется следующая
команда.
Следующая команда CJNE - это
команда
проверки значения.
Как ви-
дите, у нее целых три операнда: пер-
вый операнд - проверяемое значе-
ние, второй - значение, на равен-
ство которому проверяется первый
операнд, а третий - зто адрес, куда
будет осуществлен переход, если
первый операнд окажется не рав-
ным второму (Compare and Jump if
Not Equal - сравнить и перейти,
если не равно). Думаю, способы ад-
ресации операндов уже нет смыс-
ла вам объяснять. Зато обращаю
ваше внимание на то, что зта ко-
манда -
единственная
команда пе-
рехода, изменяющая значение фла-
га CY. Дело в том, что сравнение ре-
ализуется путем
вычитания второ-
го операнда из первого,
а флаг CY
устанавливается, если происходит
заем при вычитании, т.е. первый
операнд оказывается меньше, чем
второй. Такая особенность коман-
ды CJNE позволяет реализовать не
только проверку на равенство, но и
на
больше-меньше,
что, разумеет-
ся, расширяет возможности про-
граммирования. Поясню на следу-
ющем примере:
CJNE
А, #15, NEQ_15
; сравним аккумулятор с числом 15
; сюда мы попадем, если А = 15
; выполняем обработку ситуации "равно"
NEQ_15:
; сюда попадаем, если А не равно 15
JC
BELOW 15
; если флаг CY стоит, то А < 15
; а сюда мы попадаем в случае, если А > 15
; обрабатываем ситуацию "больше"
BELCWJL5:
; сюда попадаем, если А < 15
; обрабатываем ситуацию "меньше"
U
Радиолюбитель - 0 6 /2 0 0 7
предыдущая страница 38 Радиолюбитель 2007-06 читать онлайн следующая страница 40 Радиолюбитель 2007-06 читать онлайн Домой Выключить/включить текст