Jump to content

Intel 8086: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Line 30: Line 30:
MUL reg: 70..118 cycles
MUL reg: 70..118 cycles


''Andrew was here: time to compute effective address, ranging from 5 to 12 cycles.''
''Andrew was here you all suck


The 8086/8088 could be connected to a mathematical coprocessor to add [[floating point]] capability. The [[Intel 8087]] was the standard math-coprocessor, operating on 80-bit numbers, but manufacturers like [[Weitek]] soon offered higher performance alternatives.
The 8086/8088 could be connected to a mathematical coprocessor to add [[floating point]] capability. The [[Intel 8087]] was the standard math-coprocessor, operating on 80-bit numbers, but manufacturers like [[Weitek]] soon offered higher performance alternatives.

Revision as of 17:47, 12 September 2006

The 8086 is a 16-bit microprocessor chip designed by Intel in 1978, which gave rise to the x86 architecture. The Intel 8088 (released shortly afterwards) was essentially the same chip, but with an external 8-bit data bus, allowing the use of cheaper and fewer supporting logic chips[1]. That 8088 processor is notable as the processor used in the original IBM PC.

The processors were based on the 8080 and 8085 designs with a similar register set — 8086 and 8088 weren't directly source-compatible to the 8085, but they were designed so that assembly language source code for the 8085 could be automatically converted into (sub-optimal) 8086 assembly source, usually with little or no hand-editing. However, the 8086 design was expanded to support full 16-bit processing instead of the fairly basic 16-bit capabilities of the 8080/8085. The Bus Interface Unit fed the instruction stream to the Execution Unit through a 6 byte prefetch queue, so fetch and execution were concurrent – a form of loosely coupled pipelining (8086 instructions varied from 1 to 6 bytes).

Buses:

  • Address Bus - 20-bit address bus. Can access 220 memory locations i.e 1 MB of memory.
  • Data Bus - 16 bit data bus. Can access 16 bit data in one operation. Hence called 16-bit microprocessor.
  • Control buses - Carries the essential signals for various operations.

It featured four 16-bit general registers, which could also be accessed as eight 8-bit registers, and four 16-bit index registers (including the stack pointer). The data registers were often used implicitly by instructions, complicating register allocation for temporary values. It featured 64K 8-bit I/O (or 32K 16 bit) ports and fixed vectored interrupts. Most instructions could only access one memory location, so one operand had to be a register. The result was stored in one of the operands.

There were also four segment registers that could be set from index registers. The segment registers allowed the CPU to access one megabyte + 64 KB - 16 bytes of memory in an odd way. Rather than just supplying missing bytes, as in most segmented processors, the 8086 shifted the segment register left 4 bits and added it to the address. As a result segments overlapped, which most people consider to have been poor design. Although this was largely acceptable (and even useful) for assembly language, where control of the segments was complete, it caused confusion in languages which make heavy use of pointers (such as C). It made efficient representation of pointers difficult, and made it possible to have up to 4096 pointers with different values pointing to the same location. Worse, this scheme made expanding the address space to more than one megabyte + 64 KB - 16 bytes difficult. Effectively, it was expanded by changing the addressing scheme in the 80286.

The processor runs at clock speeds between 4.77 (as with the 8088 version used in the original IBM PC) and 10 MHz. Notable bugs: pre 1982 versions had a somewheat nasty interrupt bug, IBM provided a free of charge upgrade to 1979-1982 copyrighted intel cpu. Early IBM PC's were shipped with a intel 1979 copywrighted cpus, that exhibited the interrupt bug, back then you could exchange them for free for bug free 8088 intel copyrighted 1979 1982 etc. If you find any of them with original 1979 cpu, it may be a collector's item.


Execution times for typical instructions (in clock cycles)

Timings are best case, depending on prefetch status, instruction alignment, and other factors.

MOV reg,reg: 2, reg,im: 4, reg,mem: 8+EA, mem,reg: 9+EA,  mem,im: 10+EA cycles
ALU reg,reg: 3, reg,im: 4, reg,mem: 9+EA, mem,reg: 16+EA, mem,im: 17+EA cycles
JMP reg: 11, JMP label: 15, Jcc label: 16 (cc = condition code)
MUL reg: 70..118 cycles

Andrew was here you all suck

The 8086/8088 could be connected to a mathematical coprocessor to add floating point capability. The Intel 8087 was the standard math-coprocessor, operating on 80-bit numbers, but manufacturers like Weitek soon offered higher performance alternatives.

NEC launched the NEC V20, V25 and V30 more efficiently implemented 8086 compatible processors.

File:Http://mixeurpc.free.fr/SITE Guide CPU/Photos/Grandes/Siemens SAB8086P - haut.jpg


Trivia: 80 Series Intel processors and microprocessors are used by NASA in their onboard flight telemetry processors in most space shuttles and extra-orbit units because of their simplicity and reliability, imagine a 3 billion dollar space shuttle reciving the command error prompt , "Execute Guidance System: Are You Sure?" or "Enable Parachute: Unable To Detect Software!".

Microcomputers using the 8086

The first commercial microcomputer built on the basis of the 8086 was the Mycron 2000.

The IBM Displaywriter word processing machine and Wang Professional Computer also used the 8086. The most influential microcomputer of all, the IBM PC, used the Intel 8088, a version of the 8086 with a narrower memory bus.

Notes and references

  1. ^ It also allowed using earlier 8080-family chips such as 8254 CTC, 8255 PIO, and 8259 PIC which were subsequently used in the IBM PC design.