Curso de Asembler - Estructura EXE

12 - Estructura EXE

[editar]
Curso gratis creado por Pablo Barrón Ballesteros ( Wintermute ).
04 de Noviembre de 2005
Los ficheros EXE tienen una estructura diferente a los Com. Aparte de

tener una cabecera especial, pueden ocupar m s de un segmento, diferenci n-

dose segmentos de datos, código y pila.

La cabecera EXE va como sigue ( no es necesario para hacer uno, pero

tampoco se le tienen que hacer ascos a la información ;D )

Offset  Descripción

00    Marca de EXE (MZ = 4D5A). Es obligatorio que ‚stos dos bytes sean

MZ o ZM, sino no funcionar

02   Número de bytes en la últ­ma p g­na del programa

Todas las p ginas son de 512 bytes, menos la última que ser  menos.

04   Número total de paginas de 512 bytes

06   Número de elementos de la tabla de elementos reubicables.

08   Tama¤o de la cabecera en p rrafos de 16 bytes.

0A   Mínimo de memoria requerido adem s de la necesaria para cargar

el programa.

0C   M ximo de memoria requerido. Normalmente los linkadores ponen

FFFFh aquí para que el DOS de toda la memoria disponible al

programa.

0E   SS inicial

10   SP inicial

12   Checksum: complemento a 1 de la suma de los valores de 16 bits del

programa, excluido este campo.

14   IP inicial

16   CS inicial

18   Offset de la Tabla de Reubicación

1A   Número de Overlays generados. S­ es 0 es un único EXE.

Visto ‚sto, símplemente que os qued‚is con los offset 14 y 16, que son

CS:IP del EXE donde empieza la ejecución. Ahora pongo un listado de

típico EXE:

; LISTADO DE EJEMPLO DE EXE

PILA    SEGMENT STACK 'STACK'

DW 150 DUP (?)          ; Ponemos 150 palabras ( 300 bytes ) de

;pila

PILA    ENDS                    ; Esto ha sido el segmento dedicado a

;la pila

DATOS   SEGMENT 'DATA'          ; Abre ahora el segmento de datos

Mensa   DB 'Esto es un ejemplo EXE$'      ; ­ El $ al final, recordad !

DATOS   ENDS

CODIGO  SEGMENT 'CODE'          ; Vamos con el de código

ASSUME  CS:CODIGO,DS:DATOS,SS:PILA

Entrada PROC

mov     ax,DATOS                ; Valor del segmento DATOS

mov     ds,ax                   ; Ahora queda en DS

lea     dx,mensa                ; Desplazamiento del mensaje

mov     ah,9                    ; Servicio 9 de la int 21h

int     21h                     ; Imprime el mensaje

mov     ax,4C00h                ; Servicio 4Ch, retorna al DOS

int     21h

Entrada ENDP                            ; Cierra el procedimiento Entrada

CODIGO  ENDS

END Entrada                     ; Fin del programa
[editar]

7 opiniones

Opinión.

Obsoleto. Poco práctico. Inservible. Para un museo puede estar bien. Jajaja no sería obsoleto si fueras a programar un sistema operativo , es un lenguaje muy poderoso , en el que está hecho parte de windows , y de linux

saludos.
Felicitaciones.

Excelente explicacion gracias.
Bueno.

El curo esta bueno pero necesito tener mas informacion para crear programas.
Mvp.

Excelente.
Bueno.

Excelente trabajo. Siga adelante.
1 2 | siguiente >

Cursos gratis relacionados con 'Curso de Asembler'

Completo curso de lenguaje ensamblador.

Autor y licencia de 'Curso de Asembler'


Curso gratis de Pablo Barrón Ballesteros ( Wintermute ). Extraido de: CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.