Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Tecnología del PC

[Home]  [Inicio]  [Índice]


Ejemplo

Puede utilizarse el programa DEBUG ( 1.7.1) para inspeccionar el contenido de los registros de segmento, y del resto.  En este caso invocamos DEBUG solicitándole que cargue el fichero command.com (intérprete de órdenes de MS DOS).  Para ello, desde el propio MS DOS, o desde una ventana DOS de Windows, ejecutamos las órdenes siguientes:

DEBUG command.com

-R

El comando R ordena que muestre el contenido de los registros (el guión "-" previo es el "prompt" de debug).  En este caso, el resultado es el siguiente:

AX=0000 BX=0001 CX=7832 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=17A1 ES=17A1 SS=17B1 CS=17B1 IP=0100 NV UP EI PL NZ NA PO NC

17B1:0100 06         PUSH    ES


El primer comando carga DEBUG, y este carga a su vez el fichero command.com. De forma que quede en memoria a continuación del espacio ocupado por él mismo.  DEBUG ajusta el valor de los registros, de forma que en CX sitúa el tamaño del programa cargado.  Si el tamaño es superior al valor máximo que puede contener el registro, FFFFh (65535 en decimal), utiliza también el registro BX.

En este caso, al valor 7832h de CX hay que sumar un 1en BX, que en este particular sistema de representación equivale a otros FFFFh en CX.  El resultado es que el programa cargado tiene un tamaño de FFFF + 7832 == 17831h == 96.305 bytes (Windows nos informa que el tamaño del fichero es 96.306 bytes).

En el ejemplo vemos también, que tanto el segmento de código, como la pila del programa, están en el mismo segmento de memoria 17B1h, mientras que los datos están en el segmento 17A1.

La última línea señala que la próxima instrucción a ejecutar está en la dirección 0100h (algo que ya sabíamos, por el contenido del puntero de instrucción IP) del segmento 17B1h.  Algo que también sabíamos, porque el segmento de código, CS, tiene este valor.  Esta instrucción es PUSH ES en lenguaje ensamblador y la instrucción 06h (00000110 binario) en lenguaje máquina, representa la orden de introducir en la pila el contenido del registro ES.