The 8086 “family” of processors uses segments to control data and code. The later 8086-based processors have larger instruction sets and more memory capacity, but they still use the same segmented architecture. Knowing the differences between the various 8086-based processors can help you select the target processor for your programs.
The instruction set of the 8086 processor is upwardly compatible with its successors. To write code that runs on the widest number of machines, select the 8086 instruction set. By choosing to use the instruction set of a more advanced processor, you increase the capabilities and efficiency of your program, but you also reduce the number of systems on which the program can run.
Table 1.1 lists modes, memory, and segment size of processors on which your application may need to run. Each processor is discussed in more detail below.
Table 1.1 8086 Family of Processors
Processor |
Available Modes |
Addressable Memory |
Segment Size |
8086/8088 | Real | 1 megabyte | 16 bit |
80186/80188 | Real | 1 megabyte | 16 bit |
80286 | Real and Protected | 16 megabytes | 16 bit |
80386 | Real and Protected | 4 gigabytes | 16 or 32 bit |
80486 | Real and Protected | 4 gigabytes | 16 or 32 bit |
Real mode allows only one process to run at a time. The DOS operating system runs in real mode. The OS/2 operating system can execute programs written for DOS, but is designed to provide capabilities available only in protected mode. In protected mode, more than one process can be active at any one time. Memory accessed by these different processes is protected from access by another process.
Protected-mode addresses do not correspond directly to physical memory. Under protected-mode operating systems, the processor allocates and manages memory dynamically. Additional privileged instructions initialize protected mode and control multiple processes. Section 1.1.2 provides more information on operating systems.
The 8086 is faster than the 8088 because of its 16-bit data bus; the 8088 has only an 8-bit data bus. The 16-bit data bus allows you to use EVEN and ALIGN on an 8086 processor to word-align data and thus improve data-handling efficiency. Memory addresses on the 8086 and 8088 refer to actual physical addresses.
These two processors are identical to the 8086 and 8088 except that new instructions have been added and several old instructions have been optimized. These processors run significantly faster than the 8086.
The 80286 processor adds some instructions to control protected mode, and it runs faster. It also provides the optional protected mode that can be used by the operating system to allow multiple processes to run at the same time. The 80286 is the minimum for running 16-bit versions of OS/2.
Unlike its predecessors, the 80386 processor can handle both 16-bit and 32-bit data. It is fully software-compatible with the 80286. It implements many new hardware-level features, including virtual paged memory, multiple virtual 8086 processes, addressing of up to four gigabytes of memory, and specialized debugging registers.
Under DOS, the 80836 supports all the instructions of the 80286 as well as several additional ones. It also allows limited use of 32-bit registers and addressing modes. The 80386 operates at faster processor speeds than the 80286 and is the minimum for running 32-bit versions of OS/2 and other 32-bit operating systems.
The 80486 processor is an enhanced version of the 80386, with instruction “pipelining” that executes many instructions two to three times faster. It incorporates an enhanced version of the 80387 coprocessor, as well as an 8K (kilobyte) memory cache. The 80486 includes several new instructions and is fully compatible with 80386 software.
These math coprocessors work concurrently with the 8086 family of processors. Performing floating-point calculations with math coprocessors is up to 100 times faster than emulating the calculations with integer instructions. Although there are technical and performance differences among the three coprocessors, the main difference to the applications programmer is that the 80287 and 80387 can operate in protected mode. The 80387 also has several new instructions. The 80486 does not use any of these coprocessors; its floating-point processor is built in and is functionally equivalent to the 80387.