Vota por nosotros en el ranking web que participamos

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Octubre 14, 2008, 05:56:44
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: como poner un codigo assambler en un copido en C? 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: 1 [2] Ir Abajo Imprimir
Autor Tema: como poner un codigo assambler en un copido en C?  (Leído 1836 veces)
dreams_eater
Habitual
*****
Desconectado Desconectado

Mensajes: 180



Ver Perfil
« Respuesta #15 en: Diciembre 16, 2007, 10:13:25 »

dejo un link, para los que saben sintaxis intel y no at&t como yo...

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
http://asm.sourceforge.net/articles/linasm.html


Que diablos haces ven0m?
Código:
#include <stdio.h>

int main()
{
    __asm{
                .model tiny                                      ; Se podria incluir
                code segment                                 ;todo esto
                assume cs:code,ds:code                 ;<------
                org 100h                                          ;<-- sin que el MSVC me de 
                                                                         ;errores?
                 
                 mov ah,3ch         ; el mismo code de arriba
}
return 0;
}
el modelo de memoria lo hace automatico el compilador, hasta algunos te deja elegilo:
Busca y eligelo si tienes tanta obseción por el.
Estas organizando donde van los datos y eso lo hace el compilador (no me sorprenderia que no funcionase).

final en assembly ¿Para que?
Código:
#include <stdio.h>

int main()
{

   __asm{
              mov ah,3ch
              lea dx,file
              xor cx,cx
              int 21h
              mov ah,3eh
              int 21h
              mov ax,4c00h
              int 21h
              file db 'C:\file.txt',0
             }
return 0;
}
Este tipo de codigos me despierta la curiosidad...
¿que diablos retorna DarkIker?
¿Como capturo lo que retorna un programa? Necesitare ayuda de un buen bachero.

Código:
#include <stdio.h>

void hola()
{
   puts("hola");
}
int main()
{
  __asm{
                call hola;
            }
  return 0;
}
Este tipo de codigos tambien me despierta la curiosidad...
¿funcionará, ya que no recive argumentos o tomara la direccion de retorno (y sera un caos aleatoreo)?
« Última modificación: Diciembre 16, 2007, 10:16:05 por dreams_eater » En línea



"La juventud envejece, la inmadurez se supera, la ignorancia puede educarse, y la borrachera desperjarse, pero la estupidez dura para siempre" - Aristófanes
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 264


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #16 en: Diciembre 16, 2007, 11:53:34 »

en asm no se pueden llamar a las funciones con prototipos como tal, si no que sus parametros se pasan en ebp + X, normalmente o por medio de la pila, para que una funcion pueda retornar desde asm, debe tene run prejifo naked que significara que todo lo manejara en asm directamente, asi que no te hagas ilusiones con esa funcion, si le pones el prefijo debes mover el valor a retornar a eax y luego la instruccione ret, no debes definir el modelo de memoria y demas ya que este va en el la cabecera del binario la cual no sera modificada por el codigo en asm, si no en los famosos #pragma que te los dejo de tarea aprender  Cheesy, normalmente el valor de retorno de un programa solo le interesa al sistema, ya que puede informar de posibles errores( naaaaa ), de restoa estudiar interrupciones y los diferentes valores que se le deben de pasar en los registros "menores"( nu me acuerdo como se llaman, si si  esos que son ax, bx, etc.. y que solo son de 16 bits ).

PD: Saludos Mancurtex xDD.

Att: DarkIker
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
_kernel
Colaborador
*****
Desconectado Desconectado

Mensajes: 780


<3 lisa

x_0@hotmail.de
Ver Perfil Email
« Respuesta #17 en: Diciembre 17, 2007, 07:19:35 »

Pos dreams_eater hola Cheesy hehe bueno te digo que esos codigos los saque de una pagina de programadores alemanes.. habia un chico que hizo la misma pregunta que mi amigo Ni0... y las respuestas que le dieron fueron basadas al compilador MSVC++ de mocosoft... bueno yo me baje ese compi para probar esos codigos.. pero ese compilador es una *ierda...  todavia no se si funcionan.. mejor me quedo con mi querido DEV C++.. y veo como agregar el primer hola mundo a C con AT&T...

PS: Los codigos que postee arriba segun estos alemanes compilan y corren sin error...

oye DarkIker.. estoy leyendo sobre #pragma.. esto encontre

Para todos --- >
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

salud0s
En línea

R-E-S-P-E-C-T, find out what it means to me
_kernel
Colaborador
*****
Desconectado Desconectado

Mensajes: 780


<3 lisa

x_0@hotmail.de
Ver Perfil Email
« Respuesta #18 en: Diciembre 17, 2007, 10:40:19 »

Bueno al darme cuenta que MSVC++ es una *ierda.. me quedo con el DEV C++ ya que entendi la sintasis del  AT&T... ( eso creo.. )... y para comprobarlo dejo un code..

Código:

#include <stdio.h>

int xwin;

int main()
{
    asm("movl $0x3c, %eax");
    asm("leal _xwin, %edx");
    asm("xorl %ecx, %ecx");
    asm("int $0x21");
    asm("movl $0x3e, %eax");
    asm("int $0x21");
    asm("movl $0x4c, %eax");
    asm("int $0x21");
   
   
}

lo posteo y pregunto una cosita que no se como hacer con C y ASM...
lo que quiero es que que xwin se cree en C:\... en asm intel se como hacerlo..

Código:
.model tiny
code segment
assume cs:code,ds:code
org 100h

start:
  mov ah,3ch              ;Creamos xwin    
  lea dx,xwin          ;Puntero para nombre del archivo
   xor cx,cx ;Mire abajo
  int 21h                               
  mov ah,3eh                            ;Cerramos por ahora..                             
  int 21h
ende:
  mov ax,4c00h                          ;Le deja el control a dos :D
  int 21h

xwin db 'C:\xWin.com',0                 ;Definimos o creamos el archivo en C:\
code ends
end start

Como podria crear xwin en el directorio de mi elegir ?? ?? tendria que crear una funcion en C para que xwin se cree alli y llamar esa funcion desde asm ?? o como se hace ??

salud0s
En línea

R-E-S-P-E-C-T, find out what it means to me
dreams_eater
Habitual
*****
Desconectado Desconectado

Mensajes: 180



Ver Perfil
« Respuesta #19 en: Diciembre 17, 2007, 11:32:46 »

Citar
en asm no se pueden llamar a las funciones con prototipos como tal, si no que sus parametros se pasan en ebp + X, normalmente o por medio de la pila,
Quieres decir que los argumentos estan guardados en la pila (seguido de la direccion de retorno)
igualás ebp=esp, y accedes a los argumentos, sin la necesidad de engorrosos push y pop.
Citar
para que una funcion pueda retornar desde asm, debe tene run prejifo naked que significara que todo lo manejara en asm directamente, asi que no te hagas ilusiones con esa funcion, si le pones el prefijo debes mover el valor a retornar a eax y luego la instruccione ret,
prefijo??

Evidentemente no tengo nada que hacer aca, ya que, no se nada de asm modo protregido. (solo modo real).
En línea



"La juventud envejece, la inmadurez se supera, la ignorancia puede educarse, y la borrachera desperjarse, pero la estupidez dura para siempre" - Aristófanes
Páginas: 1 [2] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: como poner un codigo assambler en un copido en C? « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.6 | SMF © 2006-2007, Simple Machines LLC