zdar zdar
Urcite ste si vsimli, ze ma Delphi hrozne omezenej assembler(BASM). A je hafo dobrych zdrojaku v TASM. Abych se pri jejich kradeni(teda kopirovani) nemusel votravovat prepisovanim do pascalu, musim je do Delphi vkladat pres .obj soubory. Googlil sem jak malej, abych zistil jak na to. Vsude popisovali jak se to dela v HLA a ze musim mit TASM v5.3 a jiny kecy. Zkusil sem tedy HLA, ale hazelo mi to naky chyby. Prosel sem co HLA vytvoril, hodne upravil, zjednodusil a vysledkem je funkcni implementace .obj do Delphi.
1) Vytvorime ASM2OBJ.asm s nasledujicim obsahem.
;ASM2OBJ.asm
.586p
.model flat, syscall
option noscoped
.data
db ?
.code
public setREG, checkREG ;je dulezity kompileru rict, ze nase fcn sou public
setREG proc near32
mov eax, 0ffh
ret
setREG endp
checkREG proc near32
cmp eax, 0ffh
mov eax, 0h
jnz exit
mov eax, 1h
exit:
ret
checkREG endp
end
setREG a checkREG sou funkce, ktery budem volat z Delphi. jejich obsah je jasny.
2) vytvorime ASM2OBJ.obj soubor z ASM2OBJ.asm pomoci prikazove radky tasm32 ASM2OBJ.asm
3) zdrojak v Delphi, ktery vola nase funkce
.
.
.
implementation
{$R *.dfm}
{$L ASM2OBJ.obj } // loadneme si nas .obj
procedure setREG; external; // urcime co z .obj chcem pouzit
function checkREG: boolean; external;
procedure TForm1.FormCreate(Sender: TObject);
var
s : string;
begin
s := 'tady si zastavte v olly';
asm
pushad
call setREG
popad
end;
if checkREG then ShowMessage('OK');
end;
.
.
.
Tot vse, ani to nebolelo.
btw: vite proc se nezobrazi hlaska "OK" ?? :rolleyes: