8089 I/O Processor

Mumbai University > Computer Engineering > Sem-5 > Microprocessor

Marks: 5

Year: May 2016

1 Answer
  1. 8089 is an I/O processor.

  2. It was available for use with the 8086/8088 central processor.

  3. It uses the same programming technique as 8087 for I/O Operations, such as transfer of data from memory to a peripheral device.


  1. 8089 has very high speed DMA capability.

  2. It has 1 MB address capability.

  3. It is compatible with iAPX 86, 88.

  4. It supports local mode and remote mode I/O processing.

  5. 8089 allows mixed interface of 8-and 16-bit peripherals, to 8-and 16-bit processor buses.

  6. It supports two I/O channels.

  7. Multibus compatible system interface.

  8. Memory based communications with CPU.

Block Diagram:

enter image description here

I) Common Control Unit (CCU):

 8089 I/O Processor has two channels.

 The activities of these two channels are controlled by CCU.

 CCU determines which channel—1 or 2 will execute the next cycle.

 In a particular case where both the channels have equal priority, an interleave procedure is adopted in which each alternate cycle is assigned to channels 1 and 2.

II) Arithmetic & Logic Unit (ALU):

 ALU is used to perform the Arithmetic & Logical operations.

 It performs Arithmetic Operations like Addition, Subtraction & Logical Operations like AND, OR, EX-OR etc.

 ALU looks after the branching decisions.

III) Assembly/Disassembly registers:

 This registers permits 8089 to deal with 8-or 16-bit data width devices or a mix of both.

 In a particular case of an 8–bit width I/O device inputting data to a 16-bit memory interface, 8089 capture two bytes from the device and then write it into the assigned memory locations with the help of assembly/disassembly register.

IV) Bus Interface Unit (BIU):

 Fetch the instruction or data from primary memory.

 Read / Write of data from / to primary memory.

 I/O of data from / to peripheral ports.

 Address generation for memory reference.

V) Instruction Fetch:

 It is used to fetches the instructions from the external memory and stores them in the Queue to be executed further.

Please log in to add an answer.