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
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 02:46:54.


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