logo

Главная Система команд x86 Базовая система команд CPU OUT

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

OUT

Вывод в порт

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

E6 ib

OUT imm8,AL

Вывести байт из AL в порт в/в по адресу imm8

8086

out 60h,al

E7 ib

OUT imm8,AX

Вывести слово из AX в порт в/в по адресу imm8

8086

out 00h,ax

E7 ib

OUT imm8,EAX

Вывести двойное слово из EAX в порт в/в по адресу imm8

Intel386

out 81h,eax

EE

OUT DX,AL

Вывести байт из AL в порт в/в по адресу в DX

8086

out dx,al

EF

OUT DX,AX

Вывести слово из AX в порт в/в по адресу в DX

8086

out dx,ax

EF

OUT DX,EAX

Вывести двойное слово из EAX в порт в/в по адресу в DX

Intel386

out dx,eax

Описание:

Команда OUT пересылает байт, слово или двойное слово данных из регистра AL, AX или EAX в порт вывода, заданный первым операндом. Адрес порта может задаваться непосредственным операндом imm8 или содержимым регистра DX. Таким образом, возможно обращение к 256 портам, адреса которых фиксированы в программе (байт imm8), или к 65536 портам, адреса которых могут изменяться путем перезагрузки содержимого регистра DX.

При работе с 16-разрядными данными число адресуемых портов уменьшается вдвое, а их адресация обычно производится четными числами — 0, 2, 4, ... 254 при адресации непосредственным операндом и 0, 2, 4, ... 65534 при адресации через регистр DX. Соответственно, для 32-разрядных данных число портов сокращается еще вдвое, а их адресация производится числами кратными четырем 0, 4, 8, ... 252, ... 65532. Таким образом, номера портов должны быть выровнены по границам передаваемых данных согласно их разрядности (1, 2 или 4 байта). В этом случае пересылка осуществляется за один цикл. Если заданный номер 16- или 32-разрядного порта имеет невыровненное значение, то для передачи данных требуется дополнительный цикл шины.

Операция:

IF (PE = 1) AND ((VM = 1) OR (CPL > IOPL))

  THEN (* Виртуальный-8086 режим, или защищенный режим с CPL > IOPL *)

     IF NOT I-O-Permission(DEST, width(DEST))

        THEN #GP(0);

     FI;

FI;

[DEST] = SRC; (* Запись в пространство ввода-вывода *)

Особые ситуации защищенного режима:

#GP(0), если значение текущего уровня привилегий CPL больше по значению уровеня привилегий ввода-вывода IOPL и любой из соответствующих порту битов разрешения ввода-вывода в TSS равен 1.

Особые ситуации режима реальной адресации:

Нет.

Особые ситуации режима V86:

#GP(0), если любой из соответствующих порту битов разрешения ввода-вывода в TSS равен 1.

Замечание:

По окончании выполнения команды OUT процессоры, начиная с Pentium, проверяют, установлен ли сигнал на выводе EWBE# в активное состояние, задерживая выполнение следующей команды до его установления. Заметьте, что команда может быть выбрана с упреждением, даже если EWBE# не активен, но она не выполняется до тех пор, пока сигнал отсутствует. В более ранних моделях процессоров вывод EWBE# отсутствует и никаких задержек не производится.


Входит в группу команд: Базовая система команд CPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники