The 8086 is a 16-bit microprocessor chip designed by Intel in 1978, which gave rise to the x86 architecture. Intel 8088, released in 1979, was essentially the same chip, but with an external 8-bit data bus and is notable as the processor used in the original IBM PC.
Buses and operation
=> All internal registers as well as internal and external data buses are 16 bits wide, firmly establishing the "16-bit microprocessor" of the 8086.
=> A 20-bit external address bus gives a 1 MiB (segmented) physical address space
=>16-bit I/O addresses give 64 KiB of separate I/O space
=>The control pins carry the essential signals for all kinds of operations.
=>The control pins carry the essential signals for all kinds of operations.
Intel 8086 microprocessor is a first member of x86 family of processors. The 8086 was not object code compatible with Intel 8080 and intel 8085. The 8086 has complete 16-bit architecture - 16-bit internal registers, 16-bit data bus, and 20-bit address bus .Because the processor has 16-bit index registers and memory pointers, it can effectively address only 64 KB of memory. To address memory beyond 64 KB the CPU uses segment registers - these registers specify memory locations for code, stack, data and extra data 64 KB segments. The segments can be positioned anywhere in memory, and user programs can change their position.
This addressing method has an advantage - it is very easy to write memory-independent code when the size of code, stack and data is smaller than 64 KB each.
The complexity of the code and programming increases when the size of stack, data and/code is larger than 64 KB. To support different variations of this awkward memory addressing scheme many 8086 compilers included 6 different memory models: tiny, small, compact, medium, large and huge. 64 KB direct addressing limitation was eliminated with the introduction of the 32-bit protected mode in Intel 80386 processor.
Intel 8086 instruction set includes a few very powerful string instructions. When these instructions are prefixed by REP instruction, the CPU will perform block operations - move block of data, compare data blocks, set data block to certain value, etc, that is one 8086 string instruction with a REP prefix could do as much as a 4-5 instruction loop on some other processors.
The 8086 microprocessor provides support for Intel 8087 numeric co-processor. The CPU recognizes all Floating-Point instructions. When the FP instructions reference the memory, the CPU calculates memory address and performs dummy memory read. The calculated address, and possibly read data, is captured by the FPU. After that the CPU proceeds to the next instruction, while the FPU executes the floating-point instruction. Thus, both integer and floating-point instructions can be executed concurrently.
Intel 8086 instruction set includes a few very powerful string instructions. When these instructions are prefixed by REP instruction, the CPU will perform block operations - move block of data, compare data blocks, set data block to certain value, etc, that is one 8086 string instruction with a REP prefix could do as much as a 4-5 instruction loop on some other processors.
The 8086 microprocessor provides support for Intel 8087 numeric co-processor. The CPU recognizes all Floating-Point instructions. When the FP instructions reference the memory, the CPU calculates memory address and performs dummy memory read. The calculated address, and possibly read data, is captured by the FPU. After that the CPU proceeds to the next instruction, while the FPU executes the floating-point instruction. Thus, both integer and floating-point instructions can be executed concurrently.