Процессор 8086 поддерживает устройства ввода-вывода двумя способами: с помощью инструкций ввода-вывода и через адреса памяти. Некоторые устройство ввода вывода управляются с помощью портов, которые представляют собой специальные адреса ввода-вывода в отдельном от 1 мегабайта адресном пространстве в 64К (см. Рис. 4.3).
Адрес памяти Адрес ввода-вывода (порт)
00000 | | 0000 | |
00001 | | 0001 | |
00002 | | 0002 | |
00003 | | 0003 | |
00004 | | 0004 | |
00005 | | 0005 | |
00006 | | 0006 | |
00007 | | 0007 | |
00008 | | 0008 | |
00009 | | 0009 | |
0000A | | 000A | |
| ||
.
.
.
| ||
FFFF5 | | FFF5 | |
FFFF6 | | FFF6 | |
FFFF7 | | FFF7 | |
FFFF8 | | FFF8 | |
FFFF9 | | FFF9 | |
FFFFA | | FFFA | |
FFFFB | | FFFB | |
FFFFC | | FFFC | |
FFFFD | | FFFD | |
FFFFE | | FFFE | |
FFFFF | | FFFF | |
Рис. 4.3 Память и адреса ввода-вывода процессора 8086.
Адресов ввода-вывода у процессора 8086 намного меньше, чем адресов памяти. В то время как технически возможно реализовать 64К адресов ввода-вывода, практически имеются только 4К адресов ввода-вывода. К тому же адреса ввода-вывода не используются для хранения значений, а служат для управления и передачи данных в каналы устройств ввода-вывода. Например, последовательные устройства, такие, как модемы, управляются целиком с помощью нескольких адресов ввода-вывода.
Доступ к адресам ввода-вывода можно получить с помощью двух специальных инструкций, IN и OUT, которые больше ни для чего не используются. Например, инструкция:
out dx,al
посылает содержимое регистра AL в порт ввода-вывода, определяемый регистром DX. К инструкциям IN и OUT мы вернемся в Главе 5 «Основные элементы программы на Ассемблере».
Некоторые устройства ввода-вывода представляют собой устройства с отображаемой памятью. Это означает, что они управляются через обычные адреса памяти, а не адреса ввода-вывода. Особенно это относится к дисплейным адаптерам, которые могут использовать 16К, 32К или даже 256К пространства адресов памяти процессора 8086 для своих битовых массивов (массивов, описывающих точки, которые адаптеры выводят на экран).
Данное устройство может управляться как с помощью адресов ввода-вывода, так и с помощью адресов отображаемой памяти. Фактически, при работе с дисплейными адаптерами для некоторых функций используются инструкции ввода-вывода, а для других адреса памяти.
