User's Manual

80286
BASE ARCHITECTURE
Separate multiplication and division operations are provided for both signed and unsigned binary
numbers. The same addition and subtraction instructions are used with signed or unsigned binary values.
Conditional jump instructions, as
well
as an "interrupt
on
overflow" instruction, can be used following
an unsigned operation on an integer
to
detect overflow into the sign bit.
Unpacked decimal numbers are stored as unsigned byte quantities. One digit
is
stored in each byte.
The magnitude of the number
is
determined from the low-order half-byte; hexadecimal values
0-9
are
valid and are interpreted as decimal numbers. The high-order half-byte must be zero for multiplication
and division; it may contain any value for addition and subtraction.
Arithmetic on unpacked decimal numbers
is
performed in
two
steps. The unsigned binary addition,
subtraction and multiplication operations are used
to
produce an intermediate result. An adjustment
instruction then changes the value to a final correct unpacked decimal number. Division
is
performed
similarly, except that the adjustment
is
carried out
on
the
two
digit numerator operand in register AX
first, followed by an unsigned binary division instruction that produces a correct result.
Unpacked decimal numbers are
similar to the ASCII character representations of the digits
0-9.
Note,
however, that the high-order half-byte of an ASCII numeral
is
always
3.
Unpacked decimal arithmetic
may be performed on ASCII numeric characters under the following conditions:
the high-order half-byte of an ASCII numeral must be set
to
OR
prior to multiplication or division.
unpacked decimal arithmetic leaves the high-order half-byte set
to
OR;
it must be set to 3 to
produce a valid ASCII numeral.
Packed decimal numbers are stored as unsigned byte quantities. The byte
is
treated
as
having one
decimal digit in each half-byte (nibble); the digit in the high-order half-byte
is
the most significant.
Values
0-9
are valid in each half-byte, and the range of a packed decimal number
is
0-99.
Additions
and subtractions are performed
in
two
steps. First, an addition or subtraction instruction
is
used to
produce an intermediate result. Then, an adjustment operation
is
performed which changes the inter-
mediate value to a final correct packed decimal result. Multiplication and division adjustments are
only available for unpacked decimal numbers.
Pointers and addresses are described below in section 2.3.3,
"Index, Pointer, and Base Registers," and
in section 3.8,
"Address Manipulation Instructions."
Strings are contiguous bytes or words from 1 to 64K bytes in length. They generaiiy coniain ASCII
Of
other character data representations. The 80286 provides string manipulation instructions
to
move,
examine, or modify a string (see section 3.7,
"Character Translation and String Instructions").
If
the 80287 numeric processor extension (NPX)
is
present in the system - see the 80287
NPX
book-the
80286 architecture also supports floating point numbers,
32-
and 64-bit integers, and
18-digit BCD data types.
The
80287 Numeric Data Processor supports and stores real numbers
in
a three-field binary format as
required by
IEEE
standard 754 for floating point numerics (see figure
2-3).
The number's significant
digits are held in the significand field, the exponent field locates the binary point within the significant
digits (and therefore determines the number's magnitude), and the sign field indicates whether the
number
is
positive or negative. (The exponent and significand are analogous to the terms "character-
istic"
and "mantissa," typically used
to
describe floating point numbers
on
some computers.) This
format
is
used by the 80287 with various length significands and exponents
to
support single precision,
double precision and extended (80-bit) precision floating point data types. Negative numbers differ
from positive numbers only in their sign bits.
2-6