logo

Главная Система команд x86 Базовая система команд CPU BOUND
Система команд x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

BOUND

Проверить индекс на выход за границы массива

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

                 

 

Код

Команда

Описание

Проц.

Пример

62 /r

BOUND r16,m16&16

Проверяет индекс r16 на выход за границы массива m16&16

Intel186

bound ax,array

62 /r

BOUND r32,m32&32

Проверяет индекс r32 на выход за границы массива m32&32

Intel386

bound edx,arr

Операция:

IF ( LeftSRC < [RightSRC] OR LeftSRC > [RightSRC + OperandSize/8] )

      (* Под нижней границей или над верхней границей *)

   THEN #BR;

FI;

Описание:

Команда BOUND позволяет убедиться в том, что знаковый индекс массива находится в пределах, определенных в блоке памяти, состоящем из верхней и нижней границ. Каждая граница занимает слово при атрибуте размера операнда равном 16 бит и двойное слово при атрибуте размера операнда равном 32 бита. Первый операнд (всегда регистр) должен быть больше или равен первой границе в памяти (нижней границе) и меньше или равен сумме второй границы в памяти (верхней границы) и количества байт, отведенных размеру операнда. Если значение регистра не находится в пределах границ, то происходит генерация особой ситуации #BR, а сохраняемый при этом CS:EIP указывает на команду BOUND.

Данные структуры пределов границ помещаются обычно непосредственно перед массивом, делая тем самым пределы адресуемыми при помощи постоянного смещения от начала массива.

Особые ситуации защищенного режима:

#BR, если тест на проверку границ потерпел неудачу.
#GP(0), если результат находится в сегменте, запрещенном для записи, а также если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS или GS.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки), страничная ошибка;
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.
#UD, если в команде BOUND поле ModR/M задает регистр в качестве второго операнда (второй операнд должен быть операндом в памяти, но не регистром).

Особые ситуации режима реальной адресации:

#BR, если тест на проверку границ потерпел неудачу.
#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.
#UD, если в команде BOUND поле ModR/M задает регистр в качестве второго операнда (второй операнд должен быть операндом в памяти, но не регистром).

Особые ситуации режима V86:

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память.


Входит в группу команд: Базовая система команд CPU



Все права защищены © 1997-2011 Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Яндекс.Метрика               Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники