Witam!
To pytanie, mimowszystko dotyczy delphi... ;-)
Napisałem taką procedure
var s,pass:string;
lng:cardnial;
begin
s:=edit1.Text;
pass:=edit2.Text;
asm
mov edx, pass // zmienna z haslem do edx
cmp edx,0 // jesli nie ma hasla, to wyjdz
je @koniec //
mov eax, [edx-4] //
mov lng, eax // dlugosc hasla do zmiennej
add lng, edx // do zmiennej koniec hasla
mov eax, s // tekst do eax
cmp eax,0 // jesli nie ma tekstu, to wyjdz
je @koniec //
push ebx // ebx na stos
mov ebx, [eax-4] //
add ebx, eax // koniec tekstu do ebx
jmp @petla
@zeruj:
mov edx, pass // ustawienie na poczatek hasla
ret
@petla:
mov cl, [eax] // odczytanie bajtu tekstu
xor cl, [edx] // szyfrowanie
mov [eax], cl // zapisanie zaszyfrowanego bajtu
inc edx // ustawienie na nastepny bajt hasla
inc eax // -||- -||- -||- -||- tekstu
cmp edx,lng // sprawdzanie, czy koniec hasla
call @zeruj // jesli tak, to ustaw na jego poczatek
cmp eax,ebx // sprawdzanie, czy koniec tekstu
jne @petla // jesli nie, to szyfruj dalej
pop ebx // przywroc ebx
@koniec:
end;
edit1.Text:=s;
edit2.text:=pass;
end;
Wszystko jest ok (nawet dziala :]), tylko że chciałbym z tego zrobić procedure...
Jak to zrobić?? (czytałem kurs asmindelphi, ale nie znalazlem odpowiedzi)
Z góry wielkie dzieki za pomoc!