Всякий раз, когда ваша CleanScreen устанавливает режим видео, AL
содержит значение (оставшееся) 16h, которое равно 22 в десятичном виде.Нет такого видеорежима!
Вы не упоминаете об этом, но я предполагаю, что вы используете видеорежим 13h (320x200).
xor bx, bx
mov ax,05h ; Return button press data
int 33h
shr cx, 1
Эта функция мыши возвращает x, y-координаты в CX
и DX
.
Ваша программа даже не использует y-координату!
И что с этим вычитанием0A000h?Видеопамять находится по адресу сегмента 0A000h, но это не имеет значения в этой программе.
Вам нужно сравнить CX
с левыми и правыми боковыми координатами изображения и сравнить DX
с координатами верхней и нижней сторон вашей фотографии.
cmp cx, [LeftX]
jb outside
cmp cx, [RightX] ; RightX == LeftX + Width - 1
ja outside
cmp dx, [TopY]
jb outside
cmp dx, [BottomY] ; BottomY == TopY + Height - 1
ja outside
;
; Here you're inside the picture
;
outside:
;
; Here you're outside the picture
;