Operation
IF AddressSize = 16
THEN use DI for dest-index;
ELSE (* AddressSize = 32 *)
use EDI for dest-index;
FI;
IF (PE = 1) AND ((VM = 1) OR (CPL>IOPL))
THEN (* Virtual 8086 mode, or protected mode with CPL>IOPL *)
IF NOT I-O-Permission (SRC, width(SRC))
THEN #GP(0);
FI;
FI;
IF byte type of instruction
THEN
ES:[dest-index] [DX]; (* Reads byte at DX from I/O address space *)
IF DF = 0 THEN IncDec 1 ELSE IncDec -1; FI;
FI;
IF OperandSize = 16
THEN
ES:[dest-index] [DX]; (* Reads byte at DX from I/O address space *)
IF DF = 0 THEN IncDec 2 ELSE IncDec -2; FI;
FI;
IF OperandSize = 32
THEN
ES:[dest-index] [DX]; (* Reads dword at DX from I/O address space *)
IF DF = 0 THEN IncDec 4 ELSE IncDec -4; FI; FI;
dest-index dest-index + IncDec;
[Back: Description]
[Next: Protected Mode Exceptions]