Vol. 3 17-1
CHAPTER 17
8086 EMULATION
IA-32 processors (beginning with the Intel386 processor) provide two ways to
execute new or legacy programs that are assembled and/or compiled to run on an
Intel 8086 processor:
• Real-address mode.
• Virtual-8086 mode.
Figure 2-3 shows the relationship of these operating modes to protected mode and
system management mode (SMM).
When the processor is powered up or reset, it is placed in the real-address mode.
This operating mode almost exactly duplicates the execution environment of the
Intel 8086 processor, with some extensions. Virtually any program assembled and/or
compiled to run on an Intel 8086 processor will run on an IA-32 processor in this
mode.
When running in protected mode, the processor can be switched to virtual-8086
mode to run 8086 programs. This mode also duplicates the execution environment of
the Intel 8086 processor, with extensions. In virtual-8086 mode, an 8086 program
runs as a separate protected-mode task. Legacy 8086 programs are thus able to run
under an operating system (such as Microsoft Windows*) that takes advantage of
protected mode and to use protected-mode facilities, such as the protected-mode
interrupt- and exception-handling facilities. Protected-mode multitasking permits
multiple virtual-8086 mode tasks (with each task running a separate 8086 program)
to be run on the processor along with other non-virtual-8086 mode tasks.
This section describes both the basic real-address mode execution environment and
the virtual-8086-mode execution environment, available on the IA-32 processors
beginning with the Intel386 processor.
17.1 REAL-ADDRESS MODE
The IA-32 architecture’s real-address mode runs programs written for the Intel 8086,
Intel 8088, Intel 80186, and Intel 80188 processors, or for the real-address mode of
the Intel 286, Intel386, Intel486, Pentium, P6 family, Pentium 4, and Intel Xeon
processors.
The execution environment of the processor in real-address mode is designed to
duplicate the execution environment of the Intel 8086 processor. To an 8086
program, a processor operating in real-address mode behaves like a high-speed
8086 processor. The principal features of this architecture are defined in
Chapter 3,
“Basic Execution Environment”, of the Intel® 64 and IA-32 Architectures Software
Developer’s Manual, Volume 1.