OUT
Salida a Puerto
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
E6 ib | OUT imm8, AL | I | Valido | Valido | Entrada de salida en AL a la dirección de puerto I/O imm8. |
E7 ib | OUT imm8, AX | I | Valido | Valido | Palabras de salida en AX a dirección portuaria I/O imm8. |
E7 ib | OUT imm8, EAX | I | Valido | Valido | Espada doble de salida en EAX a dirección portuaria I/O imm8. |
EE | OUT DX, AL | ZO | Valido | Valido | Entrada de salida en AL a la dirección portuaria I/O en DX. |
EF | OUT DX, AX | ZO | Valido | Valido | Palabras de salida en la dirección de puerto AX a I/O en DX. |
EF | OUT DX, EAX | ZO | Valido | Valido | Espada doble de salida en EAX a dirección portuaria I/O en DX. |
Codificacion de operandos
Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.
I
imm8byte inmediato que sigue a la instruccion
Coste medido
Cargando las mediciones de arch-data...
Descripción
Copie el valor del segundo operando (operando de origen) al puerto I/O especificado con el operando de destino (primer operando). El operando de origen se puede registrar AL, AX, o EAX, dependiendo del tamaño del puerto que se accede (8, 16, o 32 bits, respectivamente); el operando de destino puede ser un byte-immediate o el registro DX. Utilizando un byte inmediato permite acceder a las direcciones de puerto I/O 0 a 255; utilizando el registro DX como un operando de origen permite acceder a puertos I/O de 0 a 65.535.
El tamaño del puerto I/O que se accede es determinado por el código de operación para un puerto I/O de 8 bits o por el atributo el operando de tamaño de la instrucción para un puerto I/O de 16 o 32 bits.
En el nivel de código de máquina, las instrucciones I/O son más cortas al acceder a puertos I/O de 8 bits. Aquí, las ocho partes superiores de la dirección del puerto serán 0.
Esta instrucción sólo es útil para acceder a los puertos I/O ubicados en el espacio de dirección I/O del procesador. Ver el capítulo 20, "Input/Output", en el Manual de Software de Arquitecturas Intel(R) 64 e IA-32, Volumen 1, para obtener más información sobre el acceso a puertos I/O en el espacio de direcciones I/O.
La operación de esta instrucción es la misma en modos no-64-bit y modo 64-bit.
Compatibilidad de arquitectura IA-32
Después de ejecutar una instrucción OUT, el procesador Pentium(R) garantiza que el pin EWBE# haya sido muestreado activo antes de comenzar a ejecutar la siguiente instrucción. (Nota que la instrucción puede ser prefetched si EWBE# no es activa, pero no se ejecutará hasta que el pin EWBE# se muestre activo.) Sólo la familia procesadora de Pentium tiene el pin EWBE#.
Operación
IF ((PE = 1) and ((CPL > IOPL) or (VM = 1)))
THEN (* Protected mode with CPL > IOPL or virtual-8086 mode *)
IF (Any I/O Permission Bit for I/O port being accessed = 1)
THEN (* I/O operation is not allowed *)
#GP(0);
ELSE ( * I/O operation is allowed *)
DEST := SRC; (* Writes to selected I/O port *)
FI;
ELSE (Real Mode or Protected Mode with CPL IOPL *)
DEST := SRC; (* Writes to selected I/O port *)
FI;Banderas afectadas
None.
Excepciones
Modo protegido
#GP(0) | Si el CPL es mayor que (tiene menos privilegio) el nivel de privilegios I/O (IOPL) y cualquiera de los bits de permiso I/O correspondientes en TSS para el puerto I/O que se accede es 1. |
#UD | Si se utiliza el prefijo LOCK. |
Modo real
#UD | Si se utiliza el prefijo LOCK. |
Modo virtual-8086
#GP(0) | Si alguno de los bits de permiso I/O en el TSS para el puerto I/O que se accede es 1. #PF(fault-code) Si un fallo de pagina ocurre. |
#UD | Si se utiliza el prefijo LOCK. |
Modo de compatibilidad
| Igual que las excepciones modo protegido. |
Modo de 64 bits
| Igual que las excepciones modo protegido. |