Организация микропроцессорных систем. Учебное пособие. Могнонов П.Б. - 74 стр.

UptoLike

Составители: 

не будет выбран другой блок памяти, все переходы осуществляются только в пределах
выбранного блока памяти. Например, если требуемая подпрограмма располагается в другом
блоке памяти, доступ к ней осуществляется парой команд: выбор блока памяти и вызов
подпрограммы. После выполнения подпрограммы для передачи управления в исходный блок
памяти необходимо выполнить команду выбора исходного блока памяти. В том случае, если
в подпрограмме нет этой команды, возврат в исходный блок будет для нее выполнен
правильно, однако любая очередная команда перехода в исходном блоке передает
управление в другой блок. Это особенность является источником большинства ошибок при
программировании.
Команда передачи управления JMPP@A позволяет выполнить переход к ячейке
памяти в зависимости от содержимого аккумулятора. Эта команда может эффективно
использоваться для передачи управления одной из процедур в зависимости от кода символа,
вводимого в аккумулятор с клавиатуры, также эта команда может реализовать механизм
множественных ветвлений по программе в от результатов предыдущих вычислений.
Команда JBBIT ADDR передает управление по заданному адресу ADDR, если
заданный бит аккумулятора имеет значение 1. Шестнадцатеричные коды восьми возможных
команд JBBIT в зависимости от номера тестируемого бита аккумулятора выглядят
следующим образом:
JB7
JB6 JB5 JB4 JB3 JB2 JB1 JB0
F2 D2 B2 92 72 52 32 12
Для организации программных циклов используется команда DJNZ REG, ADDR
(декремент регистра и переход, если не нуль), которая позволяет использовать любой из
восьми рабочих регистров в качестве счетчика и осуществить переход в пределах текущей
страницы памяти программ.
Перечень команд передачи управления и вызова подпрограмм приведен в таблице 4.7.
Таблица 4.7
Мнемоника Код
двоичный
Время
в циклах
Содержание
DJNZ
REG,ADDR
11101REG
aaaaaaaaa
2
(REG)-1
(REG), если REG0, то ADDR(CK),
иначе (CK)+2(CK)
JBBIT ADDR BIT10010
aaaaaaaa
2
BIT=1, то ADDR(CK
0-7
),
иначе (CK)+2(CK)
JFO ADDR 10110110
aaaaaaaa
2
F0=1, то ADDR(CK
0-7
),
иначе (CK)+2(CK)
JF1 ADDR 01110110
aaaaaaaa
2
F1=1, то ADDR(CK
0-7
),
иначе (CK)+2(CK)
JMP ADDR aaa00100
aaaaaaaa
2
(A
8-10
)(CK
8-10
)
(A
0-7
)(CK
0-7
)
DBF(CK
11
)
JMPP @A 10110011 2
((A))(CK
0-7
)
JC ADDR 11110110
aaaaaaaa
2
C=1, то ADDR(CK
0-7
),
иначе (CK)+2(CK)
JNC ADDR 11100110
aaaaaaaa
2
C=0, то ADDR(CK
0-7
),
иначе (CK)+2(CK)
JTO ADDR 00110110
aaaaaaaa
2
TO=1, то ADDR(CK
0-7
),
иначе (CK)+2(CK)
не будет выбран другой блок памяти, все переходы осуществляются только в пределах
выбранного блока памяти. Например, если требуемая подпрограмма располагается в другом
блоке памяти, доступ к ней осуществляется парой команд: выбор блока памяти и вызов
подпрограммы. После выполнения подпрограммы для передачи управления в исходный блок
памяти необходимо выполнить команду выбора исходного блока памяти. В том случае, если
в подпрограмме нет этой команды, возврат в исходный блок будет для нее выполнен
правильно, однако любая очередная команда перехода в исходном блоке передает
управление в другой блок. Это особенность является источником большинства ошибок при
программировании.
      Команда передачи управления JMPP@A позволяет выполнить переход к ячейке
памяти в зависимости от содержимого аккумулятора. Эта команда может эффективно
использоваться для передачи управления одной из процедур в зависимости от кода символа,
вводимого в аккумулятор с клавиатуры, также эта команда может реализовать механизм
множественных ветвлений по программе в от результатов предыдущих вычислений.
      Команда JBBIT ADDR передает управление по заданному адресу ADDR, если
заданный бит аккумулятора имеет значение 1. Шестнадцатеричные коды восьми возможных
команд JBBIT в зависимости от номера тестируемого бита аккумулятора выглядят
следующим образом:

                   JB7   JB6     JB5   JB4   JB3   JB2   JB1    JB0
                   F2    D2      B2    92    72    52    32     12

      Для организации программных циклов используется команда DJNZ REG, ADDR
(декремент регистра и переход, если не нуль), которая позволяет использовать любой из
восьми рабочих регистров в качестве счетчика и осуществить переход в пределах текущей
страницы памяти программ.
      Перечень команд передачи управления и вызова подпрограмм приведен в таблице 4.7.

                                                                           Таблица 4.7
      Мнемоника         Код        Время     Содержание
                     двоичный     в циклах
    DJNZ             11101REG     2        (REG)-1→
    REG,ADDR         aaaaaaaaa             →(REG), если REG≠0, то ADDR→(CK),
                                           иначе (CK)+2→(CK)
    JBBIT ADDR       BIT10010     2        BIT=1, то ADDR→(CK0-7),
                     aaaaaaaa              иначе (CK)+2→(CK)
    JFO ADDR         10110110     2        F0=1, то ADDR→(CK0-7),
                     aaaaaaaa              иначе (CK)+2→(CK)
    JF1 ADDR         01110110     2        F1=1, то ADDR→(CK0-7),
                     aaaaaaaa              иначе (CK)+2→(CK)
    JMP ADDR         aaa00100     2        (A8-10)→(CK8-10)
                     aaaaaaaa              (A0-7)→(CK0-7)
                                            DBF→(CK11)
    JMPP @A          10110011     2        ((A))→(CK0-7)
    JC ADDR          11110110     2        C=1, то ADDR→(CK0-7),
                     aaaaaaaa              иначе (CK)+2→(CK)
    JNC ADDR         11100110     2        C=0, то ADDR→(CK0-7),
                     aaaaaaaa              иначе (CK)+2→(CK)
    JTO ADDR         00110110     2        TO=1, то ADDR→(CK0-7),
                     aaaaaaaa              иначе (CK)+2→(CK)