Я тут вспомнил просто в связи с предыдущим вопросом
viewtopic.php?p=69830#p69830Есть у нас ещё такая функция
Quote:
======================================================================
============ Функция 35 - прочитать цвет точки на экране. ============
======================================================================
Параметры:
* eax = 35
* ebx = y*xsize+x, где
* (x,y) = координаты точки (считая от 0)
* xsize = размер экрана по горизонтали
конечно, передавать в качестве параметра размер экрана по горизонтали — это немного странно, ядро ведь это и так знает.
Но не в этом дело

Товарищ
barbar89 спрашивал
barbar89 wrote:
как собственно вычленить x и y? Алгебра подсказывает что у этого уравнения множество решений.
Ну, собственно, как раз с помощью деления на этот самый
xsize с помощью инструкции
div, после деления искомые значения(
x и
y) будут содержаться в регистрах
eax и
edx.
Вот как ядро это делает(из
kernel.asm http://websvn.kolibrios.org/filedetails ... #line-5217)
Quote:
syscall_getpixel: ; GetPixel
mov ecx, [_display.width]
xor edx, edx
mov eax, ebx
div ecx
mov ebx, edx
xchg eax, ebx
and ecx, 0xFBFFFFFF ;negate 0x04000000 use mouseunder area
call dword [GETPIXEL]; eax - x, ebx - y
mov [esp + 32], ecx
ret