Описание слайда:
Пример обычного обработчика прерывания ( команда BOUND – INT 5 )
BOUND reg, mem ; проверка нахождения индекса вектора, заданного в регистре (16, 32), ; внутри диапазона, заданного значениями двух последовательных ; слов (двойных слов) в памяти по адресу второго операнда. Эти значения являются , соответственно, нижней и верхней границей индекса массива. Они должны быть помещены предварительно в память. Н: mem dd 00000014h , где 0000 – нижняя граница и 0014h – верхняя граница ( допустимые) проверяемого индекса. Если значение индекса в регистре находится в диапазоне, то выполняется следующая команда после BOUND, иначе генерируется прерывание 5 ( int 5).
Пример: Нахождение минимального и максимального значения элементов в массиве слов, адрес которого задан в DS:DX, количество элементов в СХ. Результат – в АХ максимальный элемент, в ВХ – минимальный элемент.
minmax proc near
push 0 ; mov ax, 3505h
pop es ; int 21h
mov eax, dword ptr es: [5*4] ; mov word ptr old_int5, bx
mov dword ptr old_int5, eax ; mov word ptr old_int5 +2, es
mov word ptr es: [5*4], offset new_5 ; mov ax, 2505h
mov word ptr es: [5*4] + 2, cs ; mov dx, offset new_5
; push ds push cx pop ds для сом. не нужны
mov ax, [bx] ; int 21h
mov word ptr min, ax ; pop ds - для сом. не нужна
mov word ptr max, ax
mov di, 2