Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > ASM y Microcontroladores
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2011
MarkPwn MarkPwn is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 5
Poder: 0
MarkPwn Va por buen camino
ASM En delphi - Me ayudan? (Sleep)

Hola a todos, estaba pasando un codigo de RadASM a delphi, al parecer lo he pasado, mas necesito hacer sleep(10) Entre un codigo y otro

ASM
invoke Sleep,10

delphi
Sleep(10);

como pudiese invocar sleep en delphi en este codigo pro ejemplo :
Código Delphi [-]
begin
  Asm
  mov eax, dword ptr [00851456h]
  mov eax, dword ptr [eax]
  add eax, 1248h
  mov Variable,eax
  push Variable
  call Funcion
  invoke Sleep,10   
  push Valor
  push Variable
end;
///Como declaro Sleep10? lo pongo tal cual y me da error.

Última edición por ecfisa fecha: 05-06-2011 a las 22:28:21. Razón: Etiquetas [DELPHI] [/DELPHI]
Responder Con Cita
  #2  
Antiguo 06-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola MarkPwn.

Código Delphi [-]
...
begin
 asm
   ...
   push 10   // milisegundos 
   call Sleep   
   ...
  end 
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-06-2011 a las 07:39:00. Razón: Añadir comentario
Responder Con Cita
  #3  
Antiguo 29-06-2011
morringo morringo is offline
Registrado
NULL
 
Registrado: may 2011
Posts: 1
Poder: 0
morringo Va por buen camino
Hola ecfisa, una duda:
¿Para C++ builder también sería igual verdad? En cuanto a que metes el 10, ¿en qué parte lo metes? ¿Lo metes en la pila? Disculpa la pregunta, ya que soy nuevo en las dos (C++ y ASM) y según tengo entendido que para meter algo necesitas especificarle si en eax, edx o el registro en el cual lo quieras meter el dato.

Gracias y saludos =).
Responder Con Cita
  #4  
Antiguo 29-06-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Si bien recuerdo, la instrucción Push de ensamblador se usa para agregar datos a la pila.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #5  
Antiguo 30-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola maeyanes.

La memoria no te falla en absoluto.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 30-06-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por morringo Ver Mensaje
[...] metes el 10, ¿en qué parte lo metes? ¿Lo metes en la pila? [...] tengo entendido que para meter algo necesitas especificarle si en eax, edx o el registro en el cual lo quieras meter el dato.
Eso depende de la convención de llamada que emplee la función en cuestión. En el caso de la función Sleep de la API de Windows su convención de llamada es stdcall, lo cual significa (entre otras cosas) que los parámetros son pasados usando la pila y no copiándolos en los registros de la CPU (que sería lo usual con funciones nativas de Delphi). Por ello la sugerencia de ecfisa es correcta.

Código Delphi [-]
Procedure MuestraEntero (I :Integer);
Begin
  ShowMessage (IntToStr (I));
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Asm
    // Llamada a función de estilo "StdCall"
    Push 10
    Call Sleep

    // Llamada a función de estilo "Register" (nativo de Delphi)
    Mov EAX, 20
    Call MuestraEntero
  End;
end;

Te recomiendo leer los temas Calling conventions y Parameter passing de la ayuda de Delphi.

Saludos.

Al González.
Responder Con Cita
  #7  
Antiguo 03-07-2011
MarkPwn MarkPwn is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 5
Poder: 0
MarkPwn Va por buen camino
Gracias a todos amigos! me ha servido!
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sleep/delay? nena_yei OOP 6 22-07-2010 17:41:47
Debe ser elemental pero no encuentro como generar el ejecutable en Delphi,me ayudan? Ale Alvarez Varios 5 05-07-2007 10:22:26
como hago una sopa de letra en delphi me ayudan vicdem Varios 4 29-06-2006 01:58:07
amables programadores me ayudan porfa,, soy nuevo en delphi perudelphi Gráficos 3 06-12-2004 16:04:03
emular SLEEP o wait de C jymy788 Varios 3 18-09-2004 17:31:23


La franja horaria es GMT +2. Ahora son las 19:59:01.


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