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.}