![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Low_dword & High_dword
Igit © (2003-01-22 20:35:00)у меня в переменной yx:dword лежат координаты курсора мыши первые 4 байта - по y, последние - по x (например для 1023*1 yx=66559($0001 03ff) ). Как мне получить эти x и у. x я получаю так - word(yx), а x пробовал так - word(yx-word(yx)), но так всегда 0...также пробовал x получить так:
asm
push eax
mov eax, yx
mov x, ax
pop eax
end;
но не получается, и бряки не ставятся (Delphi виснет с компом...)
Anatoly Podgoretsky (2003-01-23 09:32:00) [1]Юрий Зотов © (22.01.03 22:13)
А что теперь скажешь :-)
Igit (2003-01-23 09:07:00) [2]Большое спасибо.... у меня все получилось:
y:=yx shr 16;
x:=word(yx);
а я думал, что shr, 16 поделит нацело на 8...
Юрий Зотов (2003-01-22 22:13:00) [3]Да...
Раньше я думал, что человек, умеющий написать хотя бы одну ассемблерную команду, должен все же знать, что 4+4 будет 8, а не 4. Уж не говоря о знании побитовых операций.
Теперь вижу, что ошибался.
Anatoly Podgoretsky (2003-01-22 20:59:00) [4]dword не может хранить 8 байт
Tux (2003-01-22 20:45:00) [5]lo = yx shr 16;
hi = yx and $ffff0000
Igit (2003-01-22 20:41:00) [6]Или хотябы как передвинуть все байты в право (в асме shr, но только для двоичых...)