S_T_A_S_ invoke ReadFile, hFile, lpBuffer, nNumberOfBytesToRead, esp, lpOverlapped mov eax,[esp-4] ; если нужно кол-во байт А если так? Проблем со стеком вроде быть не должно ...
bogrus а если ты это сделаешь в начае процедуры? то есть, на esp лежит адрес возврата... тогда уж надо invoke ReadFile, hFile, lpBuffer, nNumberOfBytesToRead, esp-4, lpOverlapped
Turkish не пойму, чем твой вариант, кроме 2х лишних команд, от варианта bogrus отличается.. Конечно так лучше, мой код был для общего случая. Хотя я бы не стал полагаться, что правильные данные будут получены - MSVC может использовать место аргументов функций в стеке для хранения временных переменных самих функций!
Код (Text): add edi, 256\4 lea edi, [ebx+edi*4] делает то же самое, что Код (Text): lea edi, [ebx+edi*4+256] но на байт короче, числа, регистры и множитель могут быть другими
Часто используемые параметры функций можно засунуть в esi,edi, а ebp использовать в частных случаях. mov esi,hFayl invoke ReadFile,esi,... invoke GetFileSize,esi invoke CloseHandle,esi
Вместо последовательности invoke DefWindowProc,hwnd,msg,wp,lp ret можно юзать так leave jmp DefWindowProc
Я бы в инете не качал. Всё что я там встречал было сильно урезанными вариантами. Лучше в бумаге последнее издание купить....
качал вот отсюда, pdf 10 метров - качество хорошее, ничего не урезано http://houston.c-books.info/get.php?fi=prg%2FWarrenAlgoritm3.rar&df=b1f2c6e24305943bd2ff5072eeb7e2c5 ps. совсем искать обленились
Аха Это я перепил сегодня, чушь несу. Я имел в виду... Ну, вы поняли короче А еще я иногда делаю вот такую больную штуку: Код (Text): invoke CreateFile, .................. .if eax != -1 mov hFile, eax push eax ; творим че-нить call CloseHandle .endif
Быстрое деление EAX на 10 (про AAM я знаю) SHR EAX,4/MOV EBX,EAX/SHR EAX,1/MOV ECX,EAX/SHR EAX,2/ADD EAX,EBX/ADD EAX,ECX 1/128+1/32+1/16=13/128=0,1015625 почти 0,1