Команды ввода и вывода

Наряду с процессором и памятью к основным элементам микро-ЭВМ можно отнести внешние устройства. Внешние устройства – это те устройства для управления которыми рассчитана микро-ЭВМ: клавиатура, дисплей, динамик, накопители внешней памяти и так далее, включая управляемые объекты систем автоматического управления. Подключение таких различных устройств к одной общей универсальной шине микро-ЭВМ реализуется через интерфейсы. Интерфейс представляет собой совокупность аппаратных и программных средств, обеспечивающих сопряжение внешних устройств с микро-ЭВМ. Элементы аппаратных средств интерфейса (контроллеры) содержат в своём составе программно-доступные регистры, в которые можно записывать байты данных из процессора или из которых можно читать байты данных в процессор. Регистры контроллеров обеспечивают буферное хранение информации на пути между процессором и внешним устройством, поэтому их ещё часто называют портами внешних устройств.

Взаимодействие процессора 8080 с портами внешних устройств отличается от взаимодействия процессора с ячейками памяти. Адреса портов не 16-разрядные, а 8-разрядные. Адресное пространство портов, не является составной частью общего адресного пространства микро-ЭВМ. Вместо этого, в микро-ЭВМ с процессором 8080 имеется два адресных пространства:

· для адресации памяти на основе 16-разрядных адресов в объёме 216=65536 возможных адресов;

· для адресации портов интерфейсов внешних устройств на основе 8-разрядных адресов в объёме 28=256 возможных адресов.

Для обеспечения обмена процессора с портами в составе системы команд имеются всего две команды: одна для чтения порта (чтобы не путать эту операцию с чтением памяти, её называют вводом) и одна для записи в порт (вывод). В обеих случаях со стороны процессора в обмене участвует аккумулятор.

Команда IN port обеспечивает выполнение операции ввода в аккумулятор процессора байта из порта port прямо адресованного вторым байтом команды. В процессе выполнения этой двухбайтной по формату команды в рамках машинного цикла ввода происходит следующее. Сначала второй байт команды устанавливается на адресные линии в качестве адреса, причём, этот байт дублируется как в старших так и в младших восьми разрядах адресных линий: ABport. Этот адрес дешифрируется логикой микро-ЭВМ. Затем соответствующий выбранный порт устанавливает байт своего содержимого на линии данных, а процессор этот байт принимает в свой аккумулятор:(A)DB.

Пример1.51

Требуется ввести в аккумулятор содержимое порта, имеющего адрес F1h.

Адрес Число Мнемокод Комментарий

0800 DB F1 IN F1 ;

Команда OUT port обеспечивает выполнение операции вывода байта из аккумулятора процессора в порт port прямо адресованный вторым байтом команды. В процессе выполнения этой двухбайтной по формату команды в рамках машинного цикла вывода происходит следующее. Сначала второй байт команды устанавливается на адресные линии в качестве адреса, причём, этот байт дублируется как в старших так и в младших восьми разрядах адресных линий: ABport. Вместе с ним на линии данных устанавливается байт из аккумулятора процессора: DB(A). Адрес дешифрируется логикой микро-ЭВМ. Затем соответствующий выбранный порт принимает байт с линий данных в свой регистр.

Пример1.52

Требуется вывести число 13h в порт, имеющий адрес F3h.

Адрес Число Мнемокод Комментарий

0800 3E 13 MVI A,13 ; подготовка числа в аккумуляторе

0802 D3 F3 OUT F3 ; вывод из аккумулятора в порт F3