logo

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

Система команд 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

OUTS

Вывод строки в порт

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

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

6E

OUTS DX,m8

Вывести байт из ячейки памяти DS:(E)SI в порт в/в по адресу в DX

Intel286

outsb

6F

OUTS DX,m16

Вывести слово из ячейки памяти DS:(E)SI в порт в/в по адресу в DX

Intel286

outsw

6F

OUTS DX,m32

Вывести двойное слово из ячейки памяти DS:(E)SI в порт в/в по адресу в DX

Intel386

outsd

6E

OUTSB

Вывести байт из ячейки памяти DS:(E)SI в порт в/в по адресу в DX

Intel286

outsb

6F

OUTSW

Вывести слово из ячейки памяти DS:(E)SI в порт в/в по адресу в DX

Intel286

outsw

6F

OUTSD

Вывести двойное слово из ячейки памяти DS:(E)SI в порт в/в по адресу в DX

Intel386

outsd

Описание:

Команда OUTS пересылает байт, слово или двойное слово из ячейки памяти, адресуемой индексным регистром-источником, в порт вывода, адресуемый регистром DX. Если атрибута размера адреса для этой команды равен 16 бит, то в качестве индексного регистра-источника используется регистр SI. Если атрибута размера адреса равен 32 бита, то в качестве индексного регистра-источника используется регистр ESI.

Команда OUTS не позволяет указывать номер порта в качестве непосредственного значения. Порт может адресоваться только через регистр DX. Адрес источника данных определяется содержимым индексного регистра-источника (E)SI и сегментным регистром DS. Сегментный регистр может быть переопределен префиксом замещения сегмента.

После пересылки данных индексный регистр-источник автоматически изменяется. Если флаг DF равен 0 (была выполнена команда CLD), то регистр увеличивается, если флаг DF равен 1 (была выполнена команда STD), то регистр уменьшается. Увеличение или уменьшение происходит на 1, если пересылается байт, на 2, если пересылается слово, на 4, если пересылается двойное слово.

Мнемоники OUTSB, OUTSW и OUTSD являются синонимами команды OUTS для байта, слова и двойного слова соответственно.

Команде OUTS может предшествовать префикс REP для вывода блока из (E)CX байтов, слов или двойных слов.

Операция:

IF AdressSize = 16

  THEN Использовать SI для source-index;

  ELSE (* AdressSize = 32 *)

     Использовать ESI для source-index;

FI;

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;

IF (Команда байтового типа)

  THEN

     [DX] = [source-index]; (* Записать байт в простанство ввода-вывода *)

     IF DF = 0 THEN IncDec = 1 ELSE IncDec = -1; FI;

  ELSE

     IF OperandSize = 16

     THEN

        [DX] = [source-index]; (* Записать слово в простанство ввода-вывода *)

           IF DF = 0 THEN IncDec = 2 ELSE IncDec = -2; FI;

     ELSE (* OperandSize = 32 *)

        [DX] = [source-index]; (* Записать двойное слово в простанство адрес ввода-вывода *)

        IF DF = 0 THEN IncDec = 4 ELSE IncDec = -4; FI;

     FI;

FI;

source-index = source-index + IncDec;

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

#GP(0), если значение текущего уровня привилегий CPL больше по значению уровеня привилегий ввода-вывода IOPL и любой из соответствующих порту битов разрешения ввода-вывода в TSS равен 1.
#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

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

#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.

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

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

Замечание:

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


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




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

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

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