![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
asm to pas
|
Пользователь Сообщения: 74 |
|
|
------- Отправлено: 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 |
|