Микропроцессор Z80



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


¦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 полностью загружает содержимое регистра флагов из стека.




Содержание  Назад  Вперед