8086 programs running as V86 tasks are able to take advantage of the new applications-oriented instructions added to the architecture by the introduction of the 80186/80188, 80286 and 80386:
Because of the possibility of a carry, the resulting linear address may contain up to 21 significant bits. An 8086 program may generate linear addresses anywhere in the range 0 to 10FFEFH (one megabyte plus approximately 64 Kbytes) of the task's linear address space.
V86 tasks generate 32-bit linear addresses. While an 8086 program can only utilize the low-order 21 bits of a linear address, the linear address can be mapped via page tables to any 32-bit physical address.
Unlike the 8086 and 80286, 32-bit effective addresses can be generated (via the address-size prefix); however, the value of a 32-bit address may not exceed 65,535 without causing an exception. For full compatibility with 80286 real-address mode, pseudo-protection faults (interrupt 12 or 13 with no error code) occur if an address is generated outside the range 0 through 65,535.
up:
Chapter 15 -- Virtual 8086 ModeFigure 15-1. V86 Mode Address Formation
19 3 0
+---------------------------------+---------+
BASE | 16-BIT SEGMENT SELECTOR | 0 0 0 0 |
+---------------------------------+---------+
+
19 15 0
+---------+---------------------------------+
OFFSET | 0 0 0 0 | 16-BIT EFFECTIVE ADDRESS |
+---------+---------------------------------+
=
20 0
LINEAR +---------------------------------------------+
ADDRESS | X X X X X X X X X X X X X X X X X X X X X X |
+---------------------------------------------+
prev:
Chapter 15 -- Virtual 8086 Mode
next: 15.2 Structure of a V86 Task