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