Buscar

Como usar assembler com delphi?

Código

{É 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.

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Object pascal
Adicionada dia: 06/06/03
Por: Felipe Monteiro
Visualizada: 2634 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009