User's Manual

PROGRAMMING NUMERIC APPLICATIONS
Whether supplied by the programmer or utilized automatically, the two basic types of operands are
sources and destinations. A source operand simply supplies one of the inputs to an instruction;
it
is
not
altered by the instruction. Even when an instruction converts the source operand from one format to
another (e.g., real to integer), the conversion
is
actually performed in an internal work area
to
avoid
altering the source operand. A destination operand may also provide an input to an instruction.
It
is
distinguished from a source operand, however, because its content may be altered when
it
receives the
result produced by the operation;
that
is,
the destination
is
replaced by the result.
Many instructions allow their operands
to
be coded in more than one way. For example, FADD (add
real) may be written without operands, with only a source or with a destination and a source. The
instruction descriptions in this section employ the simple convention of separating alternative operand
forms with slashes; the slashes, however, are not coded. Consecutive slashes indicate an option of
no
explicit operands. The operands for FADD are thus described
as
//source/destination, source
This means that FADD may be written
in
any of three
ways:
FADD
FAD D
source
FAD D
destination,
source
When reading this section, it
is
important
to
bear in mind that memory operands may be coded with
any of the
CPU's memory addressing modes.
To
review these
modes-direct,
register indirect, based,
indexed, based
indexed-refer
to the 80286 Programmer's Reference Manual. Table 2-17 later in this
chapter also provides several addressing mode examples.
Data Transfer Instructions
These instructions (summarized in table 2-1) move operands among elements of the register stack, and
between the stack top and memory. Any of the seven data types can be converted
to
temporary real
and loaded (pushed) onto the stack in a single operation; they can be stored to memory in the same
manner. The data transfer instructions automatically update the
80287 tag word to reflect the register
contents following the instruction.
FLO
source
FLD (load real) loads (pushes) the source operand onto the top of the register stack. This
is
done by
decrementing the stack pointer
by
one and then copying the content of the source to the
new
stack top.
The source may be a register
on
the stack (ST(i)) or any of the real data types in memory. Short and
long real source operancis are conveneu
lu
lempunuy
fed:
dutvllla.tica.lly.
CGdir:g
FLD
ST(O)
d!!p!!c!!.te~
the stack top.
FST destination
FST
(store real) transfers the stack top
to
the destination, which may be another register
on
the stack
or a short or long real memory operand.
If
the destination
is
short or long real, the significand
is
rounded to the width of the destination according to the RC field of the control word, and the exponent
is
converted
to
the width and bias of the destination format.
2-2