•Operation of basic I/O operations is to act as an interface.
•Decode 8-, 16, and 32-bit addresses for enabling I/O ports
•The basic input device is a set of three-state buffers.
•The basic output device is a set of data latches.
•The term IN refers to moving data from the I/O device into the microprocessor and
•The term OUT refers to moving data out of the microprocessor to the I/O device.
•Handshaking for I/O operations
•Interface and program the 82C55 PPI (programmable parallel interface)
•Using the 82C55 to connect LCDs, LEDs, keyboards, ADCs, DACs, etc. to the processor
•Interface and program the 16550 programmable serial interface adapter
•Interface and program the 8254 programmable interval timer
•Interface DC and stepper motors to the processor
– Transfer data between the processor accumulator (AL, AX, EAX) register and I/O device: IN and OUT
– Transfer string data between memory and I/O device directly: INS and OUTS (for processors above 8086)
IN and OUT:
•The IN instruction (I/O Read): Inputs data from an external I/O device to the accumulator.
•The OUT instruction (I/O Write): Copies the contents of the accumulator out to an external I/O device.
•The accumulator is:
– AL (for 8-bit I/O),
– AX (for 16-bit I/O),
– EAX (for 32-bit I/O).
•As with memory, I/O devices have I/O addresses (addresses for the I/O port)
•Up to 64K I/O bytes can be addressed
•The 16-bit port address appears on address bus bits A15-A0 This allows I/O devices at addresses 0000H-FFFFH
•Two ways to specify an I/O port address:
– An 8-bit immediate (fixed) address (specified as a byte in the instruction): e.g. IN AX, p8 ; Reads a word from port p8
0000H-00FFH (can only see the first 256 addresses)
– A 16-bit address located in register DX (can be easily varied): e.g. OUT DX, AL; outputs the byte in AL to the port whose address is in DX
0000H-FFFFH (upto 16K addresses). i.e. high port addresses are accessible only through DX addressing