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

         

Операции двухбайтовой пересылки данных


LD rr,nn

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

¦00¦rr¦0001¦ ¦    n    ¦ ¦    n    ¦

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

LD IX,nn

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

¦11011101¦ ¦00100001¦ ¦    n    ¦ ¦    n    ¦

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

LD IY,nn

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

¦11111101¦ ¦00100001¦ ¦    n    ¦ ¦    n    ¦

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

LD HL,(aa)



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

¦00101010¦ ¦    a    ¦ ¦    a    ¦

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

LD rr,(aa)

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

¦11101101¦ ¦01¦rr¦1011¦ ¦    a    ¦ ¦    a    ¦

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

LD IX,(aa)

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

¦11011101¦ ¦00101010¦ ¦    a    ¦ ¦    a    ¦

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

LD IY,(aa)

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

¦11111101¦ ¦00101010¦ ¦    a    ¦ ¦    a    ¦

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

LD (aa),HL

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

¦00100010¦ ¦    a    ¦ ¦    a    ¦

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

LD (aa),rr

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

¦11101101¦ ¦01¦rr¦0011¦ ¦    a    ¦ ¦    a    ¦

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

LD (aa),IX

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

¦11011101¦ ¦00100010¦ ¦    a    ¦ ¦    a    ¦

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

LD (aa),IY

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

¦11111101¦ ¦00100010¦ ¦    a    ¦ ¦    a    ¦

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

LD SP,HL        LD SP,IX                 LD SP,IY

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

¦11111001¦      ¦11011101¦ ¦11111001¦    ¦11111101¦ ¦11111001¦

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

PUSH rr         PUSH IX                  PUSH IY

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


¦11¦rr¦0101¦    ¦11011101¦ ¦11100101¦    ¦11111101¦ ¦11100101¦

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

POP rr          POP IX                   POP IY

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

¦11¦rr¦0001¦    ¦11011101¦ ¦11100001¦    ¦11111101¦ ¦11100001¦

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

Все инструкции этой группы пересылают 16-разрядную величину в или из двухбайтового регистра или регистровой пары. Обеспечивается загрузка регистра или регистровой пары непосредственным значением или содержимым двухбайтовой области памяти (байты операнда хранятся в порядке “младший–старший”), а также запись содержимого регистра или регистровой пары в двухбайтовую область памяти. Имеются также инструкции, пересылающие содержимое регистровой пары HL или регистров IX и IY в регистр указателя стека SP.

В инструкциях LD rr,nn, LD rr,(aa) и LD (aa),rr используются определяемые с помощью регистровой адресации регистровые пары BC, DE, HL или регистр SP. В других инструкциях с мнемоникой LD применяется неявная адресация используемых регистров или регистровых пар.

Заметим, что для команд LD HL,(aa) и LD (aa),HL имеются по два возможных формата команды: трёх- и четырёхбайтовый. Транслятор языка ассемблера всегда сгенерирует более короткий трёхбайтовый вариант; при необходимости четырёхбайтовый вариант в программе можно построить вручную. Наличие двух форматов для по существу одной и той же инструкции объясняется тем, что трёхбайтовый формат (оперирующий только с регистровой парой HL) присутствовал в системе команд микропроцессора Intel 8080, а четырёхбайтовый формат (оперирующий с регистром SP и регистровыми парами BC, DE и HL) был введён в микропроцессоре Zilog Z80.

Инструкции PUSH и POP обеспечивают соответственно занесение содержимого регистровой пары в стек и загрузки его оттуда. Адрес вершины стека находится в регистре SP. При записи байта в стек содержимое SP уменьшается на единицу, после чего производится запись; при выборке байта из стека сначала читается содержимое байта по адресу, находящемуся в SP, а затем значение SP увеличивается на единицу.Поскольку микропроцессор Z80 всегда записывает или извлекает из стека по два байта информации, в результате выполнения любой операции со стеком содержимое SP увеличивается или уменьшается на 2.

Инструкции PUSH и POP используют регистровую адресацию, чтобы определить регистровую пару, которая участвует в операции. Помимо “традиционных” регистровых пар BC, DE и HL, в операции может участвовать регистровая пара AF. Старшим её байтом является содержимое регистра-аккумулятора, младшим – содержимое регистра флагов F.

Все инструкции этой группы, за исключением POP AF, не изменяют состояние флажков. Команда POP AF полностью загружает содержимое регистра флагов из стека.


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