{É fácil. Existem duas maneiras de vc trabalhar com ASM no Delphi: 1 - Se toda a rotina form em ASM, crie a função com a directiva assembler.
Dessa maneira, o compilador entenderá que toda a função é escrita em assembler, e você faz exatamente isso, cria toda a função em ASM.
Ex.:}
procedure MinhaFuncao(param1: integer); assembler;
begin
(todo o código deve ser em assembler)
end; {2 - Se apenas parte da rotina for em ASM, use o bloco asm .. end;
Ex.:{
procedure MinhaFuncao(param1: integer);
begin
... (código em Object Pascal) ...
asm
... (código em Assembler) ...
end;
... (código em Object Pascal) ...
end; // fim da rotina {Eu não pretendo me aprofundar muito em ASM, apenas quero aprender a fazer algo como um loop ou um laço e trabalhar com strings e matrizes.
Para fazer um loop basta definir um label e depois fazer um salto para ele. ex.:}
Loop_1:
xxxx
jmp Loop_1
{O ASM não tem suporte para string e matriz, você terá que fazer isto na mão.
A forma mais simples de definir um string é o PChar do delphi.
O PChar é uma seqüência de caracteres terminado com o caractere nulo (#0 ).
Para trabalhar com matriz, você terá que fazer o endereçamento na mão.}
for x := 1 to length(dados) do begin
b := byte(dados[x]);
asm
mov dx,$17
mov al,b
out dx,al
end;
end; //agora:
asm
mov dx,$17
mov al,dados // string contendo as informações
out dx,al
end; //pronto, a rotina tem 50x mais velocidade e funciona com perfeição.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário