Main Page | See live article | Alphabetical index

Intel 8087

The Intel 8087 is a 16-bit floating-point math co-processor or FPU, first announced by Intel in 1980. It was designed to be used in conjunction with Intel's 8088 and 8086 CPUs, providing them with approximately 60 additional instructions for doing floating-point arithmetic. It was the first in the x87 series of co-processors.

Hardware

Physically, the original 8087 chip was designed to be installed in parallel with the 8086 bus lines. As such it could monitor bus activity and intercept instruction codes intended for floating point operations. These eight special codes are found in the 8086 instruction set as "ESC #", covering hexadecimal opcodes D8..DF. In other words, any instruction beginning with an opcode in the range D8..DF cannot be executed by the 8086 but (provided an 8087 is installed) the instruction will be handled automatically by the math coprocessor. Note that this implies there is no immediate improvement gained by installing an 8087; only when its specific instructions are incorporated into a program will it ever come into play. Note that certain programs and packages will test for the presence of an 8087 and invoke different routines accordingly; these program create the false impresssion that the 8087 magically speeds up general purpose computing.

Software

In software, the Intel mnenomics for the 8087 are written to begin with the letter 'F' (no normal 8086 mnemonics begin with 'F'). For example, the mnenomic ADD specifies an 8086-based integer addition, while the mnemonic FADD selects an 8087-based floating point addition.

8087 Capabilities are part of DEBUG and MASM. There is a list of opcodes for the 8087 at " class="external">http://packetstormsecurity.nl/programming-tutorials/Assembly/fpuopcode.html

It may come as a surprise that 8087 instructions are included in DOS DEBUG. Similarly, DOS assemblers (such as MASM) and any software tools can be expected to support the 8087 instruction set. The following experiments use DOS DEBUG to explore the operation of the 8087 Numeric Processor Extension.