El formato ejecutable de DOS MZ es el formato de archivo ejecutable utilizado para. Archivos EXE en DOS .
Extensión de nombre de archivo | |
---|---|
Tipo de medio de Internet | aplicación / x-dosexec, aplicación / x-msdos-program |
número mágico | MZ o ZM |
Tipo de formato | Binario , ejecutable |
Extendido a | Nuevo ejecutable ejecutable lineal ejecutable portátil |
El archivo se puede identificar por la cadena ASCII "MZ" ( hexadecimal : 4D 5A) al principio del archivo (el " número mágico "). "MZ" son las iniciales de Mark Zbikowski , uno de los principales desarrolladores de MS-DOS . [1]
El archivo ejecutable MZ DOS es más nuevo que el formato ejecutable COM y difiere de él. El encabezado ejecutable de DOS contiene información de reubicación , lo que permite que se carguen múltiples segmentos en direcciones de memoria arbitrarias, y admite ejecutables de más de 64k; sin embargo, el formato aún requiere límites de memoria relativamente bajos. Posteriormente, estos límites se pasaron por alto utilizando extensores de DOS .
Manejo de segmentos
El entorno de un programa EXE ejecutado por DOS se encuentra en su Prefijo de segmento de programa .
Los archivos EXE normalmente tienen segmentos separados para el código, los datos y la pila. La ejecución del programa comienza en la dirección 0 del segmento de código , y el registro del puntero de la pila se establece en cualquier valor que esté contenido en la información del encabezado (por lo tanto, si el encabezado especifica una pila de 512 bytes, el puntero de la pila se establece en 200h). Es posible no usar un segmento de pila separado y simplemente usar el segmento de código para la pila si lo desea.
El registro DS ( segmento de datos ) normalmente contiene el mismo valor que el registro CS (segmento de código) y no se carga con la dirección de segmento real del segmento de datos cuando se inicializa un archivo EXE; es necesario que el programador lo configure él mismo, generalmente a través de las siguientes instrucciones:
MOV AX , @ DATA MOV DS , AX
Terminación
En la API de DOS 1.x original, también era necesario que el registro DS apuntara al segmento con el PSP al finalizar el programa; esto se hizo a través de las siguientes instrucciones:
PUSH DS XOR AX , HACHA PUSH AX
Luego, la terminación del programa se realizaría mediante una instrucción RETF, que recuperaría la dirección del segmento original con el PSP de la pila y luego saltaría a la dirección 0, que contenía una instrucción INT 20h.
La API de DOS 2.x introdujo una nueva función de terminación del programa, INT 21h Function 4Ch, que no requiere guardar la dirección del segmento de PSP al inicio del programa, y Microsoft desaconsejó el uso del método anterior de DOS 1.x.
Compatibilidad
Los ejecutables de MZ DOS se pueden ejecutar desde sistemas operativos basados en DOS y Windows 9x . Los sistemas operativos basados en Windows NT de 32 bits pueden ejecutarlos utilizando su máquina virtual DOS incorporada (aunque algunos modos gráficos no son compatibles). Las versiones de 64 bits de Windows no pueden ejecutarlas. Las formas alternativas de ejecutar estos ejecutables incluyen DOSBox , DOSEMU , Wine y Cygwin .
Los ejecutables de MZ DOS pueden ser creados por enlazadores, como Digital Mars Optlink , MS enlazador , VALX o WLINK de Open Watcom ; además, FASM puede crearlos directamente.
Ver también
Otras lecturas
- Paul, Matthias R. (7 de octubre de 2002) [2000]. "Re: ejecutar un archivo COM" . Grupo de noticias : alt.msdos.programmer . Archivado desde el original el 3 de septiembre de 2017 . Consultado el 3 de septiembre de 2017 .
- [1]
Referencias
- ^ Dentro de Windows: una mirada en profundidad al formato de archivo ejecutable portátil Win32 - Revista MSDN, febrero de 2002 . "Cada archivo PE comienza con un pequeño ejecutable de MS-DOS. ... Los primeros bytes de un archivo PE comienzan con el encabezado tradicional de MS-DOS, llamado IMAGE_DOS_HEADER. Los únicos dos valores de importancia son e_magic y e_lfanew ... . El campo e_magic (una PALABRA) debe establecerse en el valor 0x5A4D. ... En representación ASCII, 0x5A4D es MZ, las iniciales de Mark Zbikowski, uno de los arquitectos originales de MS-DOS ".
enlaces externos
- Una mirada más cercana al stub de DOS de EXE