miércoles, 10 de abril de 2013

Saltos


Screenshoots





Codigo

title jejgjne
.model small
.stack 64
.data
.code
start:
MOV AX,1111h
MOV BX,1112h
CMP AX,BX
JB tirapalante
HLT
tirapalante: DEC BX
CMP AX,BX
JNE Acaba 
JE Continua
Continua: DEC BX
CMP AX,BX
JE Acaba ; No son iguales, por tanto no saltará
JB Acaba ; No es menor, tampoco salta
JG Acaba ; Es mayor, ahora SI saltará
Acaba: XOR AX,AX.
End

lunes, 8 de abril de 2013

Programa 5-6


Codigo:

title codigo506(EXE)
.MODEL SMALL
.STACK 64
.CODE
BEGIN PROC FAR
MOV AL ,40H
SHL AL,1
MOV BL,22H
MUL BL
MOV AX ,4C00H
INT 21H
BEGIN ENDP
END BEGIN

Corriendo el programa en MASM:


Debug and Link del programa:







domingo, 7 de abril de 2013

Resumen Capitulo 7



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.