Микропроцессор Z80 -основные характеристики

         

Байтовые арифметико-логические операции


ADD A,r          ADD A,n

------T---¬      ---------¬ ----------¬

¦10000¦ r ¦      ¦11000110¦ ¦    n    ¦

L-----+----      L--------- L----------

ADD A,(HL)       ADD A,(IX+d)

---------¬       ---------¬ ---------¬ ----------¬

¦10000110¦       ¦11011101¦ ¦10000110¦ ¦    d    ¦

L---------       L--------- L--------- L----------

ADD A,(IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦10000110¦ ¦    d    ¦

L--------- L--------- L----------

ADC A,r          ADC A,n

------T---¬      ---------¬ ----------¬

¦10001¦ r ¦      ¦11001110¦ ¦    n    ¦

L-----+----      L--------- L----------



ADC A,(HL)       ADC A,(IX+d)

---------¬       ---------¬ ---------¬ ----------¬

¦10001110¦       ¦11011101¦ ¦10001110¦ ¦    d    ¦

L---------       L--------- L--------- L----------

ADC A,(IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦10001110¦ ¦    d    ¦

L--------- L--------- L----------

SUB r            SUB n

------T---¬      ---------¬ ----------¬

¦10010¦ r ¦      ¦11010110¦ ¦    n    ¦

L-----+----      L--------- L----------

SUB (HL)         SUB (IX+d)

---------¬       ---------¬ ---------¬ ----------¬

¦10010110¦       ¦11011101¦ ¦10010110¦ ¦    d    ¦

L---------       L--------- L--------- L----------

SUB (IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦10010110¦ ¦    d    ¦

L--------- L--------- L----------

SBC A,r          SBC A,n

------T---¬      ---------¬ ----------¬

¦10011¦ r ¦      ¦11011110¦ ¦    n    ¦

L-----+----      L--------- L----------

SBC A,(HL)       SBC A,(IX+d)

---------¬       ---------¬ ---------¬ ----------¬

¦10011110¦       ¦11011101¦ ¦10011110¦ ¦    d    ¦

L---------       L--------- L--------- L----------

SBC A,(IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦10011110¦ ¦    d    ¦

L--------- L--------- L----------

AND r            AND n

------T---¬      ---------¬ ----------¬

¦10100¦ r ¦      ¦11100110¦ ¦    n    ¦


L-----+----      L--------- L----------

AND (HL)         AND (IX+d)

---------¬       ---------¬ ---------¬ ----------¬

¦10100110¦       ¦11011101¦ ¦10100110¦ ¦    d    ¦

L---------       L--------- L--------- L----------

AND (IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦10100110¦ ¦    d    ¦

L--------- L--------- L----------

OR r             OR n

------T---¬      ---------¬ ----------¬

¦10101¦ r ¦      ¦11101110¦ ¦    n    ¦

L-----+----      L--------- L----------

OR (HL)          OR (IX+d)

---------¬       ---------¬ ---------¬ ----------¬

¦10101110¦       ¦11011101¦ ¦10101110¦ ¦    d    ¦

L---------       L--------- L--------- L----------

OR (IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦10101110¦ ¦    d    ¦

L--------- L--------- L----------

XOR r            XOR n

------T---¬      ---------¬ ----------¬

¦10110¦ r ¦      ¦11110110¦ ¦    n    ¦

L-----+----      L--------- L----------

XOR (HL)         XOR (IX+d)

---------¬       ---------¬ ---------¬ ----------¬

¦10110110¦       ¦11011101¦ ¦10110110¦ ¦    d    ¦

L---------       L--------- L--------- L----------

XOR (IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦10110110¦ ¦    d    ¦

L--------- L--------- L----------

CP r             CP n

------T---¬      ---------¬ ----------¬

¦10111¦ r ¦      ¦11111110¦ ¦    n    ¦

L-----+----      L--------- L----------

CP (HL)          CP (IX+d)

---------¬       ---------¬ ---------¬ ----------¬

¦10111110¦       ¦11011101¦ ¦10111110¦ ¦    d    ¦

L---------       L--------- L--------- L----------

CP (IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦10111110¦ ¦    d    ¦

L--------- L--------- L----------

INC r             INC (HL)

---T---T---¬      ---------¬

¦00¦ r ¦100¦      ¦00110100¦

L--+---+----      L---------

INC (IX+d)

---------¬ ---------¬ ----------¬

¦11011101¦ ¦00110100¦ ¦    d    ¦

L--------- L--------- L----------



INC (IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦00110100¦ ¦    d    ¦

L--------- L--------- L----------

DEC r             DEC (HL)

---T---T---¬      ---------¬

¦00¦ r ¦101¦      ¦00110101¦

L--+---+----      L---------

DEC (IX+d)

---------¬ ---------¬ ----------¬

¦11011101¦ ¦00110101¦ ¦    d    ¦

L--------- L--------- L----------

DEC (IY+d)

---------¬ ---------¬ ----------¬

¦11111101¦ ¦00110101¦ ¦    d    ¦

L--------- L--------- L----------

DAA           CPL           NEG

---------¬    ---------¬    ---------¬ ---------¬

¦00100111¦    ¦00101111¦    ¦11101101¦ ¦01000100¦

L---------    L---------    L--------- L---------

Инструкция DAA используется для десятичной коррекции результата сложения или вычитания двоично-десятичных чисел с помощью инструкций ADD, ADC, INC, SUB, SBC и DEC. Состояние флажка N определяет, какая именно операция (сложение или вычитание) выполнялась перед командой DAA; при выполнении коррекции анализируется состояние флажков C и H, а также содержимое аккумулятора. После выполнения инструкции DAA аккумулятор будет содержать правильное двоично-кодированное десятичное значение. Значение флажка N не изменяется, остальные флажки устанавливаются или сбрасываются в соответствии с результатом операции (флажок P/V является признаком чётности).

Инструкция CPL инвертирует содержимое аккумулятора. Флажки H и N устанавливаются, состояние остальных флажков не изменяется.

Инструкция NEG меняет знак числа, содержащегося в аккумуляторе. Флажок N устанавливается, остальные флажки устанавливаются или сбрасываются в соответствии с результатом выполнения операции (флажок P/V является признаком переполнения).

Инструкции инкремента и декремента (INC и DEC) соответственно увеличивают или уменьшают на единицу значение своего операнда. Операндом этих инструкций может быть аккумулятор, любой из регистров общего назначения или байт памяти, адресуемый регистровой парой HL или суммой одного из индексных регистров и 8-разрядного смещения.


Состояние флажка C этими инструкциями не изменяется; флажок N сбрасывается при инкременте и устанавливается при декременте; остальные флажки (S, Z, H и P/V) устанавливаются или сбрасываются в соответствии с результатом выполнения операции, флажок P/V при этом служит признаком переполнения.

Остальные инструкции (ADD, ADC, SUB, SBC, AND, OR, XOR и CP) работают с двумя операндами. Первый из них задан неявно – это содержимое аккумулятора. Вторым операндом может быть содержимое аккумулятора или любого из регистров общего назначения, 8-разрядная константа, входящая в состав кода команды, или байт памяти, адресуемый регистровой парой HL или суммой одного из индексных регистров и 8-разрядного смещения. Результат выполнения операции всегда помещается в аккумулятор (инструкция CP не запоминает результат, поэтому в ней содержимое аккумулятора остаётся неизменным). Заметим, что в мнемониках инструкций ADD, ADC и SBC указываются оба операнда, в то время как в остальных пяти двухадресных инструкциях – только второй операнд (аккумулятор подразумевается). Это связано с тем, что в группу двухбайтовых арифметических операций также входят инструкции ADD, ADC и SBC.

Инструкции ADD и ADC выполняют сложение операндов (к аккумулятору прибавляется значение явно заданного операнда). Они отличаются тем, что инструкция ADC дополнительно производит добавление переноса (флажка C), что позволяет организовать сложение чисел с разрядностью, превышающей 8 битов.

Инструкции SUB и SBC выполняют вычитание операндов (из аккумулятора вычитается значение явно заданного операнда. Инструкция SBC дополнительно вычитает значение флажка переноса C.

Инструкции AND, OR и XOR выполняют соответственно операции “И”, “ИЛИ” и “Исключающее ИЛИ” между содержимым аккумулятора и явно заданного операнда.

Инструкция CP выполняет сравнение аккумулятора и явно заданного операнда. Сравнение выполняется путём вычитания значения явно заданного операнда из содержимого аккумулятора. Полученный результат теряется, но производится установка или сброс флажков, отражающих результат операции.

Инструкции ADD, ADC, SUB, SBC и CP оказывают влияние на все флажки, при этом флажок P/V является признаком переполнения, а флажок N сбрасывается в операциях сложения (ADD и ADC) и устанавливается в операциях вычитания (SUB, SBC и CP).

Инструкции AND, OR и XOR также оказывают влияние на все флажки, при этом флажки N и C сбрасываются, флажок H устанавливается, флажок P/V является признаком чётности результата.


Содержание раздела