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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2011
MarkPwn MarkPwn is offline
Registrado
 
Registrado: Apr 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 21:28:21. Razón: Etiquetas [DELPHI] [/DELPHI]
Responder Con Cita
  #2  
Antiguo 06-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.983
Poder: 28
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 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 06:39:00. Razón: Añadir comentario
Responder Con Cita
  #3  
Antiguo 29-06-2011
morringo morringo is offline
Registrado
 
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.727
Poder: 17
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 29-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.983
Poder: 28
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 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.503
Poder: 22
Al 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.
__________________
Twitter
Código
Blog
WhatsApp para consultas rápidas y asesorías profesionales: +52 1 2711260117
Responder Con Cita
  #7  
Antiguo 03-07-2011
MarkPwn MarkPwn is offline
Registrado
 
Registrado: Apr 2011
Posts: 5
Poder: 0
MarkPwn Va por buen camino
Gracias a todos amigos! me ha servido!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 16:41:47
Debe ser elemental pero no encuentro como generar el ejecutable en Delphi,me ayudan? Ale Alvarez Varios 5 05-07-2007 09:22:26
como hago una sopa de letra en delphi me ayudan vicdem Varios 4 29-06-2006 00:58:07
amables programadores me ayudan porfa,, soy nuevo en delphi perudelphi Gráficos 3 06-12-2004 15:04:03
emular SLEEP o wait de C jymy788 Varios 3 18-09-2004 16:31:23


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


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