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

         

Операции ввода-вывода


IN A,(n)                 IN r,(C)

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

¦11011011¦ ¦   n   ¦     ¦11101101¦ ¦01¦ r ¦000¦

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

INI                      INIR

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

¦11101101¦ ¦10100010¦    ¦11101101¦ ¦10110010¦

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

IND                      INDR

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

¦11101101¦ ¦10101010¦    ¦11101101¦ ¦10111010¦

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

OUT (n),r                OUT (C),r



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

¦11010011¦ ¦   n   ¦     ¦11101101¦ ¦01¦ r ¦001¦

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

OUTI                     OTIR

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

¦11101101¦ ¦10100011¦    ¦11101101¦ ¦10110011¦

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

OUTD                     OTDR

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

¦11101101¦ ¦10101011¦    ¦11101101¦ ¦10111011¦

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

Набор операций ввода-вывода по сравнению с системой команд микропроцессора Intel 8080 был существенно расширен.

Инструкции IN A,(n) и OUT (n),A – единственные команды ввода-вывода, реализованные в микропроцессоре 8080. Они обеспечивают соответственно ввод байта информации из порта и вывод информации в порт. Младший байт адреса порта содержится в коде команды – это константа n. Старший байт адреса порта содержится в аккумуляторе. (Микропроцессор 8080 всегда использовал 8-разрядный адрес порта, содержащийся в коде команды.) Значение, читаемое из порта инструкцией IN, заносится в аккумулятор; значение, заносимое в порт инструкцией OUT, находится в аккумуляторе. Эта пара инструкций на флажки влияния не оказывает.

Инструкции IN r,(C) и OUT (C),r  осуществляют ввод байта из порта или его вывод в порт. Адрес порта находится в регистровой паре BC; данные, читаемые из порта или выводимые в порт, находятся в регистре r.
Команда IN устанавливает или сбрасывает флажки S, Z и P/V в соответствии со значением прочитанного значения (флажок P/V является признаком чётности) и сбрасывает флажки H и N; значение флажка C не изменяется. Команда OUT на флажки влияния не оказывает. Заметим, что если в поле r кода команды IN задана комбинация 110, то прочитанное значение вызовет соответствующую установку или сброс флажков, но не будет сохранено. Действия микропроцессора для этой комбинации в команде OUT в фирменной документации не определены. По-видимому, в порт будет записано случайное значение.

Оставшиеся инструкции (INI, INIR, IND, INDR, OUTI, OTIR, OUTD и OTDR) обеспечивают ввод или вывод нескольких байтов информации. В регистровой паре HL содержится адрес области памяти, в которую будут заноситься вводимые данные или из которой будут извлекаться выводимая информация. После ввода или вывода очередного байта информации содержимое HL увеличивается или уменьшается на 1 (если третья буква мнемоника кода команды – I, то осуществляется инкремент этой регистровой пары; если D – то декремент). В качестве адреса порта используется содержимое регистровой пары BC. Кроме того, содержимое регистра B используется в качестве счётчика; оно уменьшается на единицу после ввода или вывода каждого байта информации. Инструкции, мнемоники которых заканчиваются на букву R (INIR, INDR, OTIR и OTDR), производят ввод или вывод данных до тех пор, пока регистр B не будет обнулён. Инструкции, мнемоники которых не содержат буквы R (INI, IND, OUTI и OUTD), выполняют одиночную операцию ввода или вывода байта. После выполнения этих инструкций значение флажка C не изменяется; флажок N устанавливается; флажок Z сбрасывается, если содержимое регистра B отлично от нуля, и устанавливается при обнулении регистра B (таким образом, в инструкциях с автоматическим повторением – INIR, INDR, OTIR и OTDR – флажок Z будет установлен); состояние остальных флажков непредсказуемо.


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