EXTENDED INSTRUCTION SET
BOUND (Detect Value Out
of
Range) verifies that the signed value contained
in
the specified register
lies within specified limits. An interrupt
(INT
5)
occurs if the value contained
in
the register
is
less
than the lower bound or greater than the upper bound.
The
BOUND instruction includes
two
operands. The first operand specifies the register being tested.
The second operand contains the effective relative address of the
two
signed BOUND limit values. The
BOUND instruction assumes that it can obtain the upper limit from the memory word that immedi-
ately follows the lower limit. These limit values cannot
be
register operands; if they are, an invalid
opcode exception occurs.
BOUND
is
useful for checking array bounds before using a
new
index value
to
access an element
within the array.
BOUND provides a simple
way
to
check the value of an index register before the
program overwrites information in a location beyond the limit of the array.
The two-word block of memory that specifies the lower and upper limits of an array might typically
reside just before the array itself. This makes the array bounds accessible at a constant offset of
-4
from the beginning of the array. Because the address of the array
will
already
be
present
in
a register,
this practice avoids extra calculations
to
obtain the effective address of the array bounds.
Example:
BOUND
BX,ARRAY-4.
Compares the value
in
BX
with the lower limit
at
address
ARRAY-4
and the upper limit
at
address
ARRAY-2.
If
the signed value
in
BX
is
less
than the lower bound or greater than the upper bound, the interrupt for this instruction
(INT
5) occurs. Otherwise, this instruction has
no
effect.
4-7