Prev: 15.7 Differences From 80286 Real-Address Mode

Next: 16.1 How the 80386 Implements 16-Bit and 32-Bit Features

Chapter 16 Mixing 16-Bit and 32 Bit Code


The 80386 running in protected mode is a 32-bit microprocessor, but it is designed to support 16-bit processing at three levels:

  1. Executing 8086/80286 16-bit programs efficiently with complete
          compatibility.
    
  2. Mixing 16-bit modules with 32-bit modules.

  3. Mixing 16-bit and 32-bit addresses and operands within one module.

The first level of support for 16-bit programs has already been discussed in Chapter 13, Chapter 14, and Chapter 15. This chapter shows how 16-bit and 32-bit modules can cooperate with one another, and how one module can utilize both 16-bit and 32-bit operands and addressing.

The 80386 functions most efficiently when it is possible to distinguish between pure 16-bit modules and pure 32-bit modules. A pure 16-bit module has these characteristics:

A pure 32-bit module has these characteristics:

Pure 16-bit modules do exist; they are the modules designed for 16-bit microprocessors. Pure 32-bit modules may exist in new programs designed explicitly for the 80386. However, as systems designers move applications from 16-bit processors to the 32-bit 80386, it will not always be possible to maintain these ideals of pure 16-bit or 32-bit modules. It may be expedient to execute old 16-bit modules in a new 32-bit environment without making source-code changes to the old modules if any of the following conditions is true:

On the 80386, 16-bit modules can be mixed with 32-bit modules. To design a system that mixes 16- and 32-bit code requires an understanding of the mechanisms that the 80386 uses to invoke and control its 32-bit and 16-bit features.


Prev: 15.7 Differences From 80286 Real-Address Mode

Next: 16.1 How the 80386 Implements 16-Bit and 32-Bit Features