• Miércoles 20 de Noviembre de 2024, 12:46

Autor Tema:  Pasos Para Pasar De Com A Exe  (Leído 2553 veces)

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Pasos Para Pasar De Com A Exe
« en: Lunes 19 de Septiembre de 2005, 22:46 »
0
codigo en FASM
Código: Text
  1. bits =16
  2. cad db "prueba",0
  3. org 100h
  4. start:
  5. cld
  6. mov si, cad
  7. call imprimir
  8. ret
  9. imprimir:
  10. mov ah,0eh
  11. caracter:
  12. lodsb
  13. cmp al,0
  14. jz finchar
  15. int 10h
  16. jmp caracter
  17. finchar:
  18. ret
  19.  
  20.  

Este codigo como se ve genera un archivo '.com', me gustaria que me ayudaran indicandome que pasos se deben tener en cuenta para convertirlo en ejecutable '.exe'?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pasos Para Pasar De Com A Exe
« Respuesta #1 en: Lunes 19 de Septiembre de 2005, 23:17 »
0
http://flatassembler.net/docs.php?article=manual#2.4.1

Ahi estan los segmentos, datos y codigo, el punto de entrada start, la inicializacion de ds y la salida a MS-DOS.

Código: Text
  1.  
  2. bits =16
  3. format MZ
  4.  
  5. segment datos
  6. cad db "prueba",0
  7.  
  8. segment codigo
  9.  
  10. entry codigo:start
  11.  
  12. start:
  13. cld
  14. mov ax, datos
  15. mov ds, ax
  16. mov si, cad
  17. call imprimir
  18. mov ah, 4ch
  19. int 21h
  20. ret
  21. imprimir:
  22. mov ah,0eh
  23. caracter:
  24. lodsb
  25. cmp al,0
  26. jz finchar
  27. int 10h
  28. jmp caracter
  29. finchar:
  30. ret
  31.  
  32.  

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.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Pasos Para Pasar De Com A Exe
« Respuesta #2 en: Lunes 19 de Septiembre de 2005, 23:30 »
0
Mil gracias Eternal Idol me has sido de gran ayuda.  :smartass:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pasos Para Pasar De Com A Exe
« Respuesta #3 en: Martes 20 de Septiembre de 2005, 08:26 »
0
Cita de: "JuanK"
Mil gracias Eternal Idol me has sido de gran ayuda.  :smartass:
De nadas y para eso estamos  :devil:  :comp:

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.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Pasos Para Pasar De Com A Exe
« Respuesta #4 en: Martes 20 de Septiembre de 2005, 15:19 »
0
Código: Text
  1.  
  2. bits =16
  3. format MZ
  4. segment datos
  5. cad db "prueba",0
  6.  
  7. segment codigo
  8. entry codigo:start
  9.  
  10. start:
  11. cld
  12. mov ax, datos
  13. mov ds, ax
  14. mov si, cad
  15. call imprimir
  16. ret
  17.  
  18. imprimir:
  19. mov ah,0eh
  20.  
  21. caracter:
  22. lodsb
  23. cmp al,0
  24. jz finchar
  25. int 10h
  26. jmp caracter
  27. finchar:
  28. ret      
  29.  
  30.  
Saludos, ahi voy de nuevo, porque no me funciona este codigo?
es decir la version com de es codigo funcionaba, pero al copnvertirlo a exe ya no me funciona.. porque?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pasos Para Pasar De Com A Exe
« Respuesta #5 en: Martes 20 de Septiembre de 2005, 16:31 »
0
Cita de: "JuanK"
Saludos, ahi voy de nuevo, porque no me funciona este codigo?
es decir la version com de es codigo funcionaba, pero al copnvertirlo a exe ya no me funciona.. porque?
Entre las modificaciones que hice estaba la de devolver el control a MS-DOS que no esta en tu ultimo codigo y si la agregaras funcionaria perfectamente:

Código: Text
  1.  
  2. mov ah, 4ch
  3. int 21h
  4.  
  5.  

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.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Pasos Para Pasar De Com A Exe
« Respuesta #6 en: Martes 20 de Septiembre de 2005, 16:38 »
0
:blink:  pOR SUPUESTO!


y que hace puntualmente ese llamado a la interrupcion, es decir que quiere decir devolverle el control al DOS? porque el archivo COM no lo necesita?'
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pasos Para Pasar De Com A Exe
« Respuesta #7 en: Martes 20 de Septiembre de 2005, 19:53 »
0
Cita de: "JuanK"
y que hace puntualmente ese llamado a la interrupcion, es decir que quiere decir devolverle el control al DOS? porque el archivo COM no lo necesita?

Para empezar yo asumi que ese codigo funcionaba como COM pero no es cierto. ¿Lo ensamblaste y lo probaste? Es imposible que funcione por la simple razon de que sus primeros bytes no son opcodes sino los bytes que corresponden a la cadena prueba ...

Asi si funcionaria como COM:

Código: Text
  1.  
  2. bits =16
  3. org 100h
  4. start:
  5. cld
  6. mov si, cad
  7. call imprimir
  8. ret
  9. imprimir:
  10. mov ah,0eh
  11. caracter:
  12. lodsb
  13. cmp al,0
  14. jz finchar
  15. int 10h
  16. jmp caracter
  17. finchar:
  18. ret
  19. cad db "prueba",0
  20.  
  21.  

En cuanto a la necesidad de avisar al sistema:
http://www.ctyme.com/intr/rb-2974.htm

Cuando haces el ret en un COM salta al codigo que hay en el cs:0, cabe recordar que nuestro ejecutable empieza en cs:100h, dentro de esa posicion hay un int 20h que es la forma antigua de devolver el control al sistema: http://www.ctyme.com/intr/rb-2471.htm en el EXE al hacer ret solo conseguis saltar al principio del codigo y hacer un bucle infinito.

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.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Pasos Para Pasar De Com A Exe
« Respuesta #8 en: Martes 20 de Septiembre de 2005, 20:36 »
0
respecto a lo del com si me funciono pero es que este es el que yo tengo como version COM:
Código: Text
  1.  
  2. bits =16
  3. org 0100h
  4. start:
  5. cld
  6. mov si, cad
  7. call imprimir
  8. ret
  9. imprimir:
  10. mov ah,0eh
  11. caracter:
  12. lodsb
  13. cmp al,0
  14. jz finchar
  15. int 10h
  16. jmp caracter
  17. finchar:
  18. ret
  19. cad db "prueba",0
  20.  
  21.  

No sabia lo del 20H.

Bien gracias!.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pasos Para Pasar De Com A Exe
« Respuesta #9 en: Martes 20 de Septiembre de 2005, 21:21 »
0
Cita de: "JuanK"
respecto a lo del com si me funciono pero es que este es el que yo tengo como version COM
Bueno, es es igual al ultimo que te pase y la diferencia radica en la posicion del mensaje.

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.