Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-04-2005
Leomedellin Leomedellin is offline
Miembro
 
Registrado: mar 2005
Posts: 18
Poder: 0
Leomedellin Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 18-04-2005
Leomedellin Leomedellin is offline
Miembro
 
Registrado: mar 2005
Posts: 18
Poder: 0
Leomedellin Va por buen camino
Thumbs up 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
Responder Con Cita
  #3  
Antiguo 18-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Los puedes compilar con Delphi sin ningún problema.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 18-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 18-04-2005
Leomedellin Leomedellin is offline
Miembro
 
Registrado: mar 2005
Posts: 18
Poder: 0
Leomedellin Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 18-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 18-04-2005
Leomedellin Leomedellin is offline
Miembro
 
Registrado: mar 2005
Posts: 18
Poder: 0
Leomedellin Va por buen camino
Thumbs up

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
Responder Con Cita
  #8  
Antiguo 19-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:42:14.


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
Copyright 1996-2007 Club Delphi