Difference between revisions of "Assembler:Commands:IN"
m |
|||
(One intermediate revision by the same user not shown) | |||
Line 12: | Line 12: | ||
At the machine code level, I/O instructions are shorter when accessing 8-bit I/O ports. Here, the upper eight bits of the port address will be 0. | At the machine code level, I/O instructions are shorter when accessing 8-bit I/O ports. Here, the upper eight bits of the port address will be 0. | ||
− | This instruction is only useful for accessing I/O ports located in the processor's I/O address space. | + | This instruction is only useful for accessing I/O ports located in the processor's I/O address space. |
+ | |||
+ | For more information on accessing I/O ports in the I/O address space, see: [https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf 64-ia-32-architectures-software-developer-vol-1-manual.pdf] | ||
[http://c9x.me/x86/html/file_module_x86_id_139.html c9x.me/x86/html/file_module_x86_id_139.html] | [http://c9x.me/x86/html/file_module_x86_id_139.html c9x.me/x86/html/file_module_x86_id_139.html] |
Latest revision as of 02:55, 25 January 2018
command in destination, source
Input from Port. Copies the value from the I/O port specified with the second operand (source operand) to the destination operand (first operand).
Copies the value from the I/O port specified with the second operand (source operand) to the destination operand (first operand). The source operand can be a byte-immediate or the DX register; the destination operand can be register AL, AX, or EAX, depending on the size of the port being accessed (8, 16, or 32 bits, respectively). Using the DX register as a source operand allows I/O port addresses from 0 to 65,535 to be accessed; using a byte immediate allows I/O port addresses 0 to 255 to be accessed.
When accessing an 8-bit I/O port, the opcode determines the port size; when accessing a 16- and 32-bit I/O port, the operand-size attribute determines the port size.
At the machine code level, I/O instructions are shorter when accessing 8-bit I/O ports. Here, the upper eight bits of the port address will be 0.
This instruction is only useful for accessing I/O ports located in the processor's I/O address space.
For more information on accessing I/O ports in the I/O address space, see: 64-ia-32-architectures-software-developer-vol-1-manual.pdf
Command Parameters[edit]
Parameter | Description |
---|---|
destination | The destination of the byte(s) read |
source | The I/O port number to read |