Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Fuentes assembler o .asm (https://www.clubdelphi.com/foros/showthread.php?t=20540)

Leomedellin 18-04-2005 20:47:17

Fuentes assembler o .asm
 
Hola a todos,

Hace días no les escribía pero hoy tengo una duda, tengo unos programas en assembler (.asm) y quiero saber si los puedo compilar con Delphi y como lo puedo hacer.

Es posible hacerlo de esta manera?.

Gracias a todos por la respuestas que me puedan guiar.


Saludos

Leonardo.

Leomedellin 18-04-2005 21:13:51

Puedo compilar assembler con Delphi?
 
Hola a todos,

Nuevamente hago la pregunta, tengo unos códigos fuente en assembler (.asm) y quiero saber si los puedo compilar con Delphi o con Borland C++.

Gracias a todos


Leonardo

marcoszorrilla 18-04-2005 21:39:45

Los puedes compilar con Delphi sin ningún problema.

Un Saludo.

marcoszorrilla 18-04-2005 21:41:23

Añado un ejemplo que no encontraba:
Código Delphi [-]
 unit Hex2Dec;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls;
  function Base10(Base2:Integer) : Integer; assembler;
 type
   TForm1 = class(TForm)
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
 
 var
   Form1: TForm1;
 
 implementation
 
 {$R *.DFM}
 
 function Base10(Base2:Integer) : Integer; assembler;
 asm
   cmp    eax,100000000            // check upper limit
   jb     @1                       // ok
   mov    eax,-1                   // error flag
   jmp    @exit                    // exit with -1
 @1:
   push   ebx                      // save registers
   push   esi
   xor    esi,esi                  // result = 0
   mov    ebx,10                   // diveder base 10
   mov    ecx,8                    // 8 nibbles (10^8-1)
 @2:
   mov    edx,0                    // clear remainder
   div    ebx                      // eax DIV 10, edx mod 10
   add    esi,edx                  // result = result + remainder[i]
   ror    esi,4                    // shift nibble
   loop    @2                       // loop for all 8 nibbles
   mov    eax,esi                  // function result
   pop    esi                      // restore registers
   pop    ebx
 @exit:
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 showmessage(InTtostr(base10(41)));
 end;
 
 end.

Un Saludo.

Leomedellin 18-04-2005 21:55:54

Cita:

Empezado por marcoszorrilla
Añado un ejemplo que no encontraba:
Código Delphi [-]
unit Hex2Dec;
 
interface
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
function Base10(Base2:Integer) : Integer; assembler;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
function Base10(Base2:Integer) : Integer; assembler;
asm
cmp eax,100000000 // check upper limit
jb @1 // ok
mov eax,-1 // error flag
jmp @exit // exit with -1
@1:
push ebx // save registers
push esi
xor esi,esi // result = 0
mov ebx,10 // diveder base 10
mov ecx,8 // 8 nibbles (10^8-1)
@2:
mov edx,0 // clear remainder
div ebx // eax DIV 10, edx mod 10
add esi,edx // result = result + remainder[i]
ror esi,4 // shift nibble
loop @2 // loop for all 8 nibbles
mov eax,esi // function result
pop esi // restore registers
pop ebx
@exit:
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(InTtostr(base10(41)));
end;
 
end.

Un Saludo.

Hola marcoszorrila,

Muchas gracias por tu respuesta, el tamaño de los archivos serán muy grandes?. Al compilar los assembler que tengo me generan el form o tengo que hacerlos?.

Saludos

Leonardo

marcoszorrilla 18-04-2005 22:06:14

Pues depende de lo que pretendas, si lo que quieres es incluir ciertas funciones que tienes en Assembler, puedes ponerlas todas en una Unidad y luego en tus programas haces un "Use" de esa unidad y así puedes utilizar esas funciones, y aunque algo más complicado crear una Dll.

Un Saludo.

Leomedellin 18-04-2005 23:07:34

Cita:

Empezado por Leomedellin
Hola marcoszorrila,

Muchas gracias por tu respuesta, el tamaño de los archivos serán muy grandes?. Al compilar los assembler que tengo me generan el form o tengo que hacerlos?.

Saludos

Leonardo

El programa que tu anexas que función hace especificamente.

Saludos

Leonardo

marcoszorrilla 19-04-2005 07:09:33

Como puede verse se trata de una función en ensamblador que pasa números decimales a binarios y un ejemplo de como usarla y llamarla desde Delphi.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 04:35:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi