Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: asm to pas
Показать сообщение отдельно

Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


hasherfrog, ни с чем не спорю :]. Cам вижу, что в три ночи спать надо, а не по ИНету шастать

Mavlyudov
Кстати говоря:
Цитата:
не понимаю что здесь написано!!
function KeyPressed(VKey: Integer): LongBool;
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

Название темы: asm to pas