| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
инструкции, а также данные, хранятся в памяти, поэтому данные и
код программы должна помещаться в компьютере РС в память объемом
не более 640К.
В то время как процессор 8086 может адресоваться к памяти
объемом 1 мегабайт, практически не так просто одновременно полу-
чить доступ с более чем 64К (64 килобайта) памяти. Это связано со
специфическим средством, которое называется сегментацией. Сегмен-
тацию мы рассмотрим в последующих разделах ("Сегментные регист-
ры").
Ввод и вывод
-----------------------------------------------------------------
Процессор 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 для своих битовых массивов (массивов, описывающих точки, ко-
торые адаптеры выводят на экран).
Данное устройство может управляться как с помощью адресов
ввода-вывода, так и с помощью адресов отображаемой памяти. Факти-
чески, при работе с дисплейными адаптерами для некоторых функций
используются инструкции ввода-вывода, а для других - адреса памя-
ти.
Регистры
-----------------------------------------------------------------
В процессоре 8086 имеется несколько быстрых элементов памяти
на интегральных схемах, которые называются регистрами. Регистры
можно рассматривать, как ячейки памяти, к которым процессор 8086
может обращаться быстрее, чем к обычной памяти, но это только
часть особенностей регистров. Каждый из регистров имеет уникаль-
ную природу и предоставляет определенные возможности, которые
другими регистрами или ячейками памяти не поддерживаются.
Регистры разбиваются на четыре категории: регистры флагов,
регистры общего назначения, указатель инструкций и сегментные ре-
гистры (см. Рис. 4.4).
Регистр флагов
15 0
--------------------------------------------------------
FLAGS | |
--------------------------------------------------------
Регистры общего назначения
--------------------------------------------------------
AX | AH | AL |
--------------------------------------------------------
--------------------------------------------------------
BX | BH | BL |
--------------------------------------------------------
--------------------------------------------------------
CX | CH | CL |
--------------------------------------------------------
--------------------------------------------------------
DX | DH | DL |
--------------------------------------------------------
--------------------------------------------------------
SI | |
--------------------------------------------------------
--------------------------------------------------------
DI | |
--------------------------------------------------------
--------------------------------------------------------
BP | |
--------------------------------------------------------
--------------------------------------------------------
SP | |
--------------------------------------------------------
Указатель инструкций
--------------------------------------------------------
IP | |
--------------------------------------------------------
Сегментные регистры
--------------------------------------------------------
CS | |
--------------------------------------------------------
--------------------------------------------------------
DS | |
--------------------------------------------------------
--------------------------------------------------------
ES | |
--------------------------------------------------------
--------------------------------------------------------
SS | |
--------------------------------------------------------
Рис. 4.4 Регистры процессора 8086.
Регистр флагов
-----------------------------------------------------------------
Этот 16-разрядный (16-битовый) регистр содержит всю необхо-
димую информацию о состоянии процессора 8086 и результатах пос-
ледних инструкций (см. Рис. 4.5).
15 0
------------------------------------------------------------
| | | | | O | D | T | S | Z | | A | P | P | | C |
------------------------------------------------------------
Битовые флаги:
O - флаг переполнения;
D - флаг направления;
I - флаг прерывания;
T - флаг перехвата;
S - флаг знака;
Z - флаг нуля;
A - флаг дополнительного переноса;
P - флаг четности;
C - флаг переноса.
Рис. 4.5 Регистр флагов процессора 8086.
Например, если вы хотите знать, получен ли при вычитании ну-
левой результат, непосредственно после этой инструкции вам следу-
ет проверить флаг нуля (бит Z в регистре флагов). Если он уста-
новлен (то есть имеет ненулевое значение), это будет говорить о
том, что результат нулевой. Другие флаги, такие, как флаги пере-
носа и переполнения аналогичным образом сообщают о результатах
арифметических и логических операций.
Другие флаги управляют режимом операций процессора 8086.
Флаг направления управляет направлением, в котором строковые
инструкции выполняют перемещение, а флаг прерывания управляет
тем, будет ли разрешено внешним аппаратным средствам, таким, нап-
ример, как клавиатура или модем, временно приостанавливать теку-
щий код для выполнения функций, требующих немедленного обслужива-
|
adfun.ru
|
|
|
|