background image

Vol. 3B 20-9

8086 EMULATION

20.2.6 

Leaving Virtual-8086 Mode

The processor can leave the virtual-8086 mode only through an interrupt or exception. The following are situations 
where an interrupt or exception will lead to the processor leaving virtual-8086 mode (see Figure 20-3):

The processor services a hardware interrupt generated to signal the suspension of execution of the virtual-
8086 application. This hardware interrupt may be generated by a timer or other external mechanism. Upon 
receiving the hardware interrupt, the processor enters protected mode and switches to a protected-mode (or 
another virtual-8086 mode) task either through a task gate in the protected-mode IDT or through a trap or 
interrupt gate that points to a handler that initiates a task switch. A task switch from a virtual-8086 task to 
another task loads the EFLAGS register from the TSS of the new task. The value of the VM flag in the new 
EFLAGS determines if the new task executes in virtual-8086 mode or not.

The processor services an exception caused by code executing the virtual-8086 task or services a hardware 
interrupt that “belongs to” the virtual-8086 task. Here, the processor enters protected mode and services the 

Figure 20-3.  Entering and Leaving Virtual-8086 Mode

Monitor

Virtual-8086

Real Mode

Code

Protected-

Mode Tasks

Virtual-8086

Mode Tasks

(8086

Programs)

Protected-

Mode Interrupt
and Exception

Handlers

Task Switch

1

VM = 1

Protected
Mode

Virtual-8086
Mode

Real-Address
Mode

RESET

PE=1

PE=0 or
RESET

#GP Exception

3

CALL

RET

Task Switch
VM=0

Redirect Interrupt to 8086 Program

Interrupt or Exception Handler

6

IRET

4

Interrupt or
Exception

2

VM = 0

NOTES:

- CALL or JMP where the VM flag in the EFLAGS image is 1.
- IRET where VM is 1 and NT is 1.

4. Normal return from protected-mode interrupt or exception handler.

3. General-protection exception caused by software interrupt (INT n), IRET,

POPF, PUSHF, IN, or OUT when IOPL is less than 3.

2. Hardware interrupt or exception; software interrupt (INT n) when IOPL is 3.

5. A return from the 8086 monitor to redirect an interrupt or exception back

 to an interrupt or exception handler in the 8086 program running in virtual-

6. Internal redirection of a software interrupt (INT n) when VME is 1,

IOPL is <3, and the redirection bit is 1.

IRET

5

8086 mode.

1. Task switch carried out in either of two ways: