Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ЭВМ и ПУ.doc
Скачиваний:
64
Добавлен:
16.03.2015
Размер:
1.16 Mб
Скачать

2.5.1.3. Команды ввода-вывода.

Для связи с разными частями ЭВМ и управления ими микропроцессор использует порты ввода-вывода. Лю­бой порт идентифицируется шестнадцатиразрядным номером порта в диапазоне от 0 до 65535. Как и при доступе к памяти, процессор для связи использует шины данных и адреса. При доступе к порту он посылает сначала по управляющей шине сигнал, который оповещает все устройства ввода-вывода, что адрес на шине является адресом определенного порта, а затем посылает сам адрес. То устройство, адрес порта которого совпадает, дает ответ. Номер порта - это адрес ячейки памяти, являющейся частью устройства ввода-вывода, а не частью основной памяти. Для указания на доступ к порту и пересылки информации к устройствам ввода-вывода и обратно, используются специальные команды ввода-вывода.

IN - передает данные (байт, слово или двойное слово ) из исходного порта в аккумулятор (AL, AX или EAX).

OUT - передает данные из аккумулятора в исходный порт.

Номер порта можно указывать либо в самой команде, либо в регистре DX(0-65535).

Примеры использования команд ввода-вывода приведены в таблице 2.5.

Таблица 2.5. Примеры использования команд ввода-вывода.

Команда

Байт

Слово

Дв. Слово

IN

(непосредственная, операнд)

IN AL, 20h

IN AX, 20h

IN EAX, 20h

OUT(непосредственная, операнд)

OUT 20h, AL

OUT 20h, AX

OUT 20h, EAX

IN (регистр)

IN AL, DX

IN AX, DX

IN EAX, EDX

OUT(регистр)

OUT DX, AL

OUT DX, AX

OUT EDX, EAX

2.5.1.4. Адресные команды (пересылки адреса)

В микропроцессоре существуют три основные команды пересылки адреса: LEA, LDS, LES.

LEA - загрузить смещение в регистр. Форматы команды:

LEA

LDS -загрузить полный адрес в DS и регистр;

LES - загрузить полный адрес (указатель) в ES и регистр.

С микропроцессора 80386 в систему команд добавляются команды LSS, LFS, LGS, которые используются для загрузки полного адреса в регистр-приемник и регистры SS, FS, GS соответственно. Форматы команд LDS, LES, LSS, LFS, LGS:

Каждая из команд имеет два операнда - один в памяти, другой в 16-битном регистре или 32-битном регистре. Примеры использования команд:

LEABX,MEMLOC=MOVBX,OFFSETMEMLOC

LDSCX,MEMLOC

LESDX,MEMLOC

LEA вычисляет 16-битное или 32-битное смещение операнда-источника и загружает его в любой 16-битный или 32-битный регистр общего назначения или в регистр смещения ( кроме IP). Она удобна для передачи смещения переменной в качестве параметра из одной процедуры в другую. В качестве операнда-источника в команде LEA может быть элемент массива, например: LEA BX, TABLE[DI].

LDS передает полный адрес операнда-источника в 16-битный или 32-битный регистр (любой регистр общего назначения) и в регистр DS.

HERE DB 100

==

MOV BX, OFFSET HERE

LDS BX, HERE

MOV AX, SEG HERE

MOV DS, AX

LES, LSS, LFS, LGS аналогичны LDS, но загружают адрес сегмента в регистры ES, SS, FS, GS соответственно.

Замечание: 32-разрядная адресация используется только в защищенном режиме работы микропроцессора. В реальном режиме работы команды используют только 16-битные регистры.