asm to pas
|
Пользователь Сообщения: 74 |
Профиль | Сайт | Отправить PM | Цитировать
|
|
------- Отправлено: 02:25, 16-05-2005 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать |
Отправлено: 03:35, 16-05-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Savant По-моему, "= 1;" не нужно. И приведение к Byte тоже. Да и shr тоже :]
ИМО, что-то типа function KeyPressed(VKey: Integer): LongBool; begin Result := (GetKeyState(VKey) and $0080) <> 0; end; Но ведь смысл не в этом, так? |
Отправлено: 09:42, 16-05-2005 | #3 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать hasherfrog, ни с чем не спорю :]. Cам вижу, что в три ночи спать надо, а не по ИНету шастать
Mavlyudov Кстати говоря: Цитата:
asm // Ассемблерные функции в паскале используют механизм вызова register, // при котором для передачи параметров используются три расширенных // регистра процессора (EAX, EDX и ECX) и только потом стек, поэтому // VKey сразу оказывается в EAX. Команда push eax кладет значение VKey // в стек для функции GetKeyState, которая вызывается по стандартному // в Win методу stdcall push eax // Собственно вызов функции GetKyState call GetKeyState // Функция возвращает свое значение в регистре EAX. В SDK сказано, что // "If the high-order bit is 1, the key is down; otherwise, it is up". // Значит нам надо оставить только 16-й разряд (бит) слева, причем при // использовании операции and eax, 0080h он "останется" с тем же // значением, что и был. and eax, 0080h // А вот здесь я в замешательстве. Эта команда в данном случае просто // бесполезна, так как ничего не меняет в результате и ее можно // спокойно закомментировать // shr al, 7 // Результат выполнения возвращается в EAX end; |
|
Отправлено: 16:54, 16-05-2005 | #4 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Здесь считается, что GetKeyState возвращает signed byte, поэтому код такой странный. Я бы написал (и всегда пишу) так:
или, на ассемблере: Так это обычно делает компилятор C++ в дебуге. |
|
Отправлено: 14:52, 17-05-2005 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - зачем DCC32.EXE нужны system.pas, sysinit.pas, *.dpr ? | akrav | Программирование и базы данных | 4 | 12-05-2008 14:25 | |
Народ помогите разобраться в asm'e! | novichek_new | Программирование и базы данных | 8 | 30-12-2005 18:55 | |
Память, asm и BSD | Guest | Программирование и базы данных | 1 | 19-09-2004 22:40 | |
Asm in freeBSD | Guest | Программирование и базы данных | 1 | 14-06-2004 18:08 | |
pas в модуль exe или com | cheap | Программирование и базы данных | 8 | 26-11-2003 05:32 |
|