• Viernes 8 de Noviembre de 2024, 23:05

Autor Tema:  asm en C++(API y variables)  (Leído 1170 veces)

tousan

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
asm en C++(API y variables)
« en: Viernes 3 de Julio de 2009, 18:57 »
0
Hola.
CUando inserto código en ensamblador en C++:
Código: Text
  1. __asm
  2. {
  3. ...
  4. }
  5.  

Cómo puedo llamar desde asm a una API??
Código: Text
  1. __asm
  2. {
  3. MessageBox(eax, NULL, NULL, 1);
  4. ...
  5. }
  6.  

Y finalmente, ¿cómo se utilizan las variables? Con MASM32 por ej. es así: valor dd ? para definir un dword pero en C++??:
Código: Text
  1. __asm
  2. {
  3. valor dd ?
  4. ...
  5. }
  6.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: asm en C++(API y variables)
« Respuesta #1 en: Viernes 3 de Julio de 2009, 19:12 »
0
Aclaro que esto es para VC++ (obviamente que pasando cadenas vacias no funciona):

Código: ASM
  1.  
  2. __asm
  3. {
  4.   push 1
  5.   push NULL
  6.   push NULL
  7.   push eax
  8.   call dword ptr [MessageBoxA]
  9. }
  10.  
  11.  

Las variables declaralas en el codigo de C++.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

tousan

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: asm en C++(API y variables)
« Respuesta #2 en: Viernes 3 de Julio de 2009, 19:40 »
0
Gracias.
Es bastante diferente comparado con MASM32. Voy a intentar enlazar MASM32 con VC++ para que el código asm lo ensamble desde MASM32. estoy seguro que se tiene que poder. si lo consigo lo postearé. gracias

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: asm en C++(API y variables)
« Respuesta #3 en: Viernes 3 de Julio de 2009, 19:44 »
0
En realidad es igual, salvo que en MASM tenes la directiva invoke para hacer las llamadas tipo C/C++.

Podes enlazar codigo objeto (.obj) o librerias estaticas o dinamicas (.lib, de importacion para el segundo caso) escritas en assembly perfectamente.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.