ESCRITURAS
DE PROGRAMAS .COM
Las ventajas de programas .COM están en que
son mas pequeños que programas .EXE comparables y son más fáciles de adaptar
para actuar como programas residentes de memoria.
DIFERENCIAS
ENTRE PROGRAMAS .COM Y .EXE
TAMAYO DEL PROGRAMA:
El .EXE puede ser de cualquier Tamaño,
mientras que un programa .COM está restringido a un segmento y a un máximo de
62 k, incluyendo el PSP.
El PSP en un bloque de 256 bytes (100H) que
el DOS inserte antes de los programas .COM y .EXE cuando se carga a la memoria.
Un programa .COM siempre es más pequeño que
su contraparte .EXE; una razón es que el bloque de encabezado de 512 bytes a un
programa .EXE no procede a un programa .COM.
SEGMENTOS
Es más fácil su uso en .COM que el .EXE
SEGMENTO
PILA.- en .EXE se define un segmento de pila, mientras que en .COM se genera
automáticamente una pila. Cuando se escribe un programa en .COM se omite la
definición de la pila. Si no se es suficiente los 64 k que se le asigna el ensamblador
establece la pila fuera del programa, en la memoria superior.
SEGMENTO
DE DATOS.-en .EXE define un segmento de datos e inicializa el registro DS con
la dirección de ese segmento. Como este definido dentro del segmento de código,
tampoco tiene que definir el segmento de datos.
SEGMENTO
DE CÓDIGO.- en .COM completo combina el
PS, la pila, el segmento de datos y el segmento de código es un segmento de
código de un máximo de 64k.
INICIALIZACIÓN
Cuando el DOS carga un programa.COM para ejecución,
inicializa de forma automática todos los registros de segmentos con la
dirección de PSP. Ya que los registros CS yDS contendrán las direcciones de
segmento inicial correcta, su programa no tiene que cargarlos.
La dirección ORG le indica al ensamblador
que empiece la generación del código objeto en un desplazamiento de 100H bytes pasando
el inicio del PSP, en donde el programa .COM real inicia.
CONVERSIÓN A FORMATO .COM
Si su programa fuente ya está escrito en
formato .EXE , puede utilizar un editor para convertir las instrucciones a formato
.COM. Los formatos MASM Y TASM para .COM son idénticos. Cuando la conversión a
.COM esta completa, puede borrar los archivos .OBJ y .EXE.
Conversión con Microsoft
Para ambos programas, con MASM de Microsoft
se ensambla y produce un archivo .OBJ y después se enlaza para producir .EXE.
Si escribió el programa para ejecutarse
como un programa .COM, el enlazador produce un mensaje:
Suponiendo que EXE2BIN está en la unidad
por omisión, y que el archivo enlazado llamado CALC.EXE está en la unidad D,
teclee:
EJEMPLO DE UN PROGRAMA .COM
*No existen definidos una pila o un
segmento de datos.
*Un enunciado ASSUME le indica al ensamblador
que inicie los desplazamientos desde el inicio del segmento de código.
*ORG 100H establece un desplazamiento para
inicio de ejecución.
*Una instrucción JMP transfiere el control
a la ejecución pasando los datos.
LA PILA DE .COM
Aquí están los pasos para convertir el programa MASM y TASM:
Los programas .EXE y .COM son de 792 bytes
y de 24 bytes, respectivamente
PILAS DE .COM
Para un programa .COM,el DOS define de
manera automática una pila y establece la misma dirección de segmento de 64k
para el programa es suficientemente grande, Dos establece la pila al final del
segmento y carga el registro SP con FFFEH, a parte superior de la pila (tope de
la pila).
Su programa es grande, o si la memoria está
limitada, debe tener cuidado al enviar palabras a la pila. El comando DIR
indicada el tamaño de un archivo y dará una idea del espacio disponible para
una pila.
SUGERENCIAS PARA LA DEPURACIÓN
Si ejecuta un programa .COM con el DEBUG, utilice
D CS: 100 para ver los datos e instrucciones. No siga el programa hasta su
terminación; en lugar de eso, utilice el comando Q de DEBUG.
PUNTOS CLAVE
·
Un programa .COM está
restringido a un segmento de 64k.
·
Un programa .COM es las pequeño
que su programa.EXE contraparte.
·
Un programador escritorio para
correr como .COM no define una pila o un segmento de datos ni inicializa el
registro DS.