Команды бинарных операций
Арифметические и логические операции над 8-разрядными операндами
В качестве приемника в этой группе команд всегда служит аккумуля-
тор, а символом s обозначены операнды — А, В, С, D, Е, Hf L, n, (HL), (IX+d),
(IY+d).![]()
Сравнение. Выполняет-
ся аналогично коман-
де SUB f, но результат
вычитания не запи-
сывается, а только в
соответствии с ним
изменяются биты
флагового регистра. В
табл. 6 приведены со-
стояния флагов, соот-
ветствующие результа-
там сравнения, а также
мнемоники условий,
при выполнении кото-
рых будет осуществ-
ляться переход в коман-
дах условного перехода.![]()
Дрифметичесш и логические действия над 16-разрядными операндами
Дрифметичесш и логические действия над 16-разрядными операндами
![]()
Команды унарных операций
В трех следующих командах преобразования производятся над чис-
лом, записанным в аккумулятор.![]()
Преобразование числа в упакованный двоично-десятичный формат. Исполь-
зуется обычно после операций над двоично-десятичными числами*.Преобразование числа в упакованный двоично-десятичный формат. Исполь-
зуется обычно после операций над двоично-десятичными числами*.Пусть, например, нужно сложить два двоично-десятичных числа 15 и 39
(00010101 и 00111001 соответственно).LD А,%00010101
LD Cf%00111001
ADD А,С ;А=%01001110
DAA ; А=%01010100
Согласно правилам двоичной арифметики в результате сложения в
аккумулятор будет помещено число #4Е, однако операция DAA скоррек-
тирует это значение, и конечный результат составит 54.![]()
Преобразование числа в обратный код (все биты инвертируются).
Преобразование числа в обратный код (все биты инвертируются).
*) В двоично-десятичных числах цифры от 0 до 9 кодируются четырьмя
битами, причем комбинации 1010...1111 не используются. Таким обра-
зом в одном байте может быть записано только две цифры. Это расточи-
тельно с точки зрения экономии памяти, но гарантирует отсутствие
ошибки «машинного» округления.![]()
Команды сдвига
В следующих четырех командах операция сдвига осуществляется над
числом, записанным в аккумулятор.![]()
В следующих семи командах операция сдвига осуществляется над
числом, записанным в одном из операндов — А, В, С, D, Е, Н, L, (HL), (IX+d),
(IY+d), обозначенных символом $.![]()
Команды циклического переноса
![]()
Левый арифметический циклический перенос тетрады из аккумулятора в
ячейку памяти, адресуемую регистром HL. Старшая тетрада (биты 7 ...4) ячейки
памяти переносится в младшую тетраду аккумулятора (биты 3...0), младшая
тетрада аккумулятора переносится в младшую тетраду ячейки памяти, а
младшая тетрада ячейки памяти — в старшую тетраду ячейки памяти.Левый арифметический циклический перенос тетрады из аккумулятора в
ячейку памяти, адресуемую регистром HL. Старшая тетрада (биты 7 ...4) ячейки
памяти переносится в младшую тетраду аккумулятора (биты 3...0), младшая
тетрада аккумулятора переносится в младшую тетраду ячейки памяти, а
младшая тетрада ячейки памяти — в старшую тетраду ячейки памяти.![]()
Правый арифметическии циклическим перенос тетрады из аккумулятора
в ячейку памяти, адресуемую регистром HL. Старшая тетрада (биты 7...4)
ячейки памяти переносится в младшую (биты 3...0), младшая тетрада
ячейки памяти переносится в младшую тетраду аккумулятора, а младшая
тетрада аккумулятора — в старшую тетраду ячейки памяти.Команды операций нал отдельными битами
![]()
Проверка состояния бита, номер которого задается числом b в пределах
от 0 (младший) до 7 (старший). Результат проверки помещается в бит Z
регистра флагов (если проверяемый бит равен нулю, то Z=l).![]()
Команды управления процессором
![]()
Нет операции. Регистры и флаги не изменяются (за исключением реги-
стров PC и R), процессор переходит к выполнению следующей за NOP
команды.![]()
Останов процессора. Выполнение команды HALT эквивалентно бесконечному
выполнению команды NOP, но без изменения значения регистра счетчика
команд PC. Выход из состояния останова происходит либо при аппаратном
сбросе процессора, либо с приходом сигнала маскируемого или немаскиру-
емого прерывания. После выполнения программы обработки прерывания,
управление будет передано на ячейку, следующую за командой HALT.В ZX Spectrum команда HALT обычно используется для синхронизации
выполнения программы относительно полукадровых прерываний, про-
исходящих каждое 1/50 секунды.![]()
Команды для работы с подпрограммами
![]()
*) Более подробно о командах, обслуживающих прерывания, см. «Архитек-
тура ZX Spectrum».**) Следует отметить, что при выполнении команды EI запрещаются маски-
руемые прерывация на время между этой и следующей командами.![]()
Команды условного н безусловного перехода
Команды условного н безусловного перехода
Условный переход по относительному адресу при ненулевом счетчике.
Значение регистра В уменьшается на единицу. Если при этом В#0, то
осуществляется переход по адресу РС+е , в противном случае управление
передается следующей команде программы. Команда удобна для органи-
зации циклов, счетчиком повторения в которых служит регистр В.

