80C186 INSTRUCTION SET ADDITIONS AND EXTENSIONS

BOUND register, address

BOUND verifies that the signed value in the specified register lies within specified limits. If the value does not lie within the bounds, an array bounds exception (type 5) occurs. BOUND is useful for checking array bounds before attempting to access an array element. This prevents the pro- gram from overwriting information outside the limits of the array.

BOUND has two operands. The first, register, specifies the register being tested. The second, ad- dress, contains the effective relative address of the two signed boundary values. The lower limit word is at this address and the upper limit word immediately follows. The limit values cannot be register operands (if they are, an invalid opcode exception occurs).

A.2 80C186 INSTRUCTION SET ENHANCEMENTS

This section describes ten instructions that were available with the 8086/8088 but have been en- hanced for the 80C186 Modular Core family.

Data transfer instructions

PUSH

Arithmetic instructions

IMUL

Bit manipulation instructions (shifts and rotates)

SAL

SHL

SAR

SHR

ROL

ROR

RCL

RCR

A.2.1 Data Transfer Instructions

PUSH data

PUSH (push immediate) allows an immediate argument, data, to be pushed onto the stack. The value can be either a byte or a word. Byte values are sign extended to word size before being pushed.

A-8

Page 315
Image 315
Intel 80C186XL, 80C188XL user manual Bound register, address, 80C186 Instruction SET Enhancements