page25
Команда EX AF,AF' дает возможность программным путем переключать пары регистров A,
F и A', F'. А команда EXX позволяет переключаться на вспомогательный набор РОНов. Эти
команды
длиной
всего
один
байт,
и
время,
необходимое
для
переключения,
сведено
к
минимальному. Т.о. реализовано очень короткое время отклика на прерывание.
Как и 16-битовые команды загрузки, команды обмена не влияют на состояние флагов.
Команды обработки блоков. Команды этой группы (см. таблицу 5.1.3) выполняют две
функции пересылка блоков и поиск байта в блоке данных.
Команды пересылки имеют мнемоники:
LDI
загрузка с инкрементом
LDIR
загрузка с инкрементом до BC=0
LDD
загрузка с декрементом
LDDR
загрузка с декрементом до BC=0
Команда LDI (LDD) пересылает содержимое области памяти, начиная с адреса, указанного
в HL в область памяти с начальным адресом в DE. Затем обе регистровые пары инкрементируются
(декрементируются), и счётчик байтов BC уменьшается на 1.
Команда LDIR (LDDR) выполняется, так же как и LDI (LDD), только обработка сразу
"зацикливается".
Действие
команды
подобно
пересылке
блока
данных
при
ПДП.
Как
для
адресации, так и для счётчика байтов отведено по 16 бит, т.о. могут обрабатываться блоки любой
длины и в любом месте памяти. Блоки данных могут также перекрываться. При HL=DE команда
теряет
смысл
т.к.
источник
и
приёмник
идентичны.
Следует
обратить
внимание,
что
при
обработке команды сначала пересылаются данные, только затем декрементируется ВС, и на
основании этого решается вопрос о цикличности команды, выполнять дальнейшую пересылку
данных либо прекратить команду. После выполнения команды BC=0, что соответствует длине
блока в 2
16
=65536 байт.
Выполнение этих команд влияет на флаги:
Н ← 0
N ← 0
P/V ← 1, при циклическом выполнении команды до пересылки последнего байта
P/V ← 0, когда результат декремента BC достигнет 0.
Поиск данных в блоке выполняют четыре команды:
CPI
сравнение и инкремент
CPIR
сравнение и инкремент до BC=0 или A=(HL)
CPD
сравнение и декремент
CPDR
сравнение и декремент до BC=0 или A=(HL)
При
выполнении
команды
CPI
(CPD)
из
содержимого
аккумулятора
вычитается
содержимое
ячейки памяти с адресом в HL,
зятем декрементируется счетчик байтов
BC, и
инкрементируется
(декрементируется)
HL.
В
соответствии
с
результатом
сравнения
устанавливаются флаги.
Команда CPIR (CPDR) является цикличным повторением команды CPI (CPD) до тех пор,
пока не выполнится одно из условий. Это либо нахождение идентичного байта, либо окончание
просматриваемого блока. Соответственно этому устанавливаются флаги:
S ← 1, когда результат сравнения отрицательный, иначе S ← 0
Z ← 1, когда A=(HL), иначе Z ← 0
H ← 1, когда был перенос в 4-й разряд, иначе Н ← 0
P/V ← 1, при BC≠0
P/V ← 0, когда результат декремента BC достигнет 0
N ← 1
При
каждом
выполнении,
до
P/V=0,
счётчик
команд
дважды
декрементируется,
что
означает вновь обращение к этой команде.
8-битные
арифметические
и
логические
команды.
Команды
этой
группы
отражены
в
таблице
5.1.4.
Они
всегда
используют
аккумулятор
в
качестве
приёмника
результата.
Следовательно, в команде
указывается только источник. В совокупности в этой группе 108
различных кодов, которые имеют следующие мнемоники: