Você está na página 1de 2

procedure SuaFuncao(param1: integer); Assembler;

begin
(Aqui todo o código deve ser em Assembler)
end;
procedure SuaFuncao(param1: integer);
begin
(codigo em Pascal)
asm
(codigo em Assembler)
end;
(codigo em Pascal)
end;

{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 vc 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
//... (codigo em Object Pascal) ...
asm
//... (codigo em Assembler) ...
end;
//... (codigo em Object Pascal) ...
end; // fim da rotina
{Eu nao pretendo me aprofuncar 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, vc terá que fazer isto na mão.
A forma mais simples de definir um string é o PChar do delphi.
O PChar é uma sequencia de caracteres terminado com o caracter nulo (#0 ).
Para trabalhar com matriz, vc terá que fazer o endereçamento na mão.
> Estao se eu for ler todos os conceitos do ASM e todo o material que tem por ai
eu perderia muito tempo, entao o melhor para resolver meu caso sao exemplos mes
mo.
Se vc não quer "perder tempo" não utilize ASM, pois qualquer coisa que vc for fazer é
demorado para implementar. Qualquer erro, por menor que seja, em ASM pode travar
a máquina.
Pesquisando por ai olha oque eu consegui fazer....
antes:}
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 informacoes
out dx,al
end;
{pronto, minha rotina tem 50x mais velocidade e funcionou com perfeicao...baixei
uma apostila que sitava alguns exemplos e resolvi dar uma tentada e deu certo..
..
Bom um problema eu resolvi, faltam outros...hehehe
Quanto a problemas de travar, estou trabalhando em um sistema grande que opera e
m maquinas de todos os tipo, portanto tenho de montar rotinas complexas e rapida
s, isso me obriga a ir muitas vezes buscar ajuda no ASM que tem me motrado muita
s solucoes para meus problemas de performance.
O meu maior problema e que nao posso pedir ao cliente para trocar a maquina e si
m eu tenho que me adaptar.
Bom, vom continuar estudando, se alguem tiver mais material me mande que eu agra
deco.
Gostaria de agradecer tambem a todos os emails que foram enviados com este topic
o.}