[PascalInlineAsm] Wywoływanie funkcji Win32 API

Gr33n

Użytkownik
Dołączył
Marzec 10, 2011
Posty
1
Witam,
Mam dosyć spory problem z rozgryzieniem, dlaczego mój prosty kod nie chce działać.
Sprawa wygląda tak:
Kod:
var
 S1  : ShortString;
 H    :  LongWord;
 X4  : Pointer;
begin
 S1:=DeCode(STR1);
 X4:=@H;
 asm
  push X4
  push KEY_WRITE
  push 0
  push offset S1+1
  push DWORD(2147483649)
  call RegOpenKeyExA
  cmp EAX,0
  jz @DALEJ
  jne @KONIEC
 end;
end;

Program wywala access'a, przy funkcji call. Wiele razy sprawdzałem czy podane wartości są odpowiednie i są, ogółem próbowałem na wiele różnych sposobów, ale żaden nie pomógł, dlatego zwracam się do was o pomoc :)

PS. Żeby nie było, to moje ciężkie początki z ASM :)
 

D.F.

Były Moderator
Dołączył
Listopad 4, 2009
Posty
493
Jeżeli chcesz się uczyć Assemblera x86 to raczej nie pisz wstawek w Pascalu, tylko ściągnij np. MASMa (masm32.com). Natomiast jako edytor poleciłbym WinAsm (winasm.net). A ten Twój kod to musisz użyć debuggera (np. OllyDbg), żeby sprawdzić co jest nie tak.
 
Do góry Bottom