El primer paso es iniciar el Debug, este paso consiste únicamente en teclear debug [Enter] en el prompt del sistema operativo.

En la siguiente linea aparecerá un guión, éste es el indicador del Debug, en este momento se pueden introducir las instrucciones del Debug. Utilizando el comando:

Se desplegaran todos los contenidos de los registros internos de la UCP; una forma alternativa de mostrarlos es usar el comando "r" utilizando como parametro el nombre del registro cuyo valor se quiera visualizar. Por ejemplo:
- rbx

Esta instrucción desplegará unicamente el contenido del registro BX y cambia el indicador del Debug de " - " a " : "
Para ensamblar un programa en el Debug se utiliza el comando "a" (assemble); cuando se utiliza este comando se le puede dar como parametro la dirección donde se desea que se inicie el ensamblado, si se omite el parametro el ensamblado se iniciará en la localidad especificada por CS:IP, usualmente 0100H, que es la localidad donde deben iniciar los programas con extensión .COM, y sera la localidad que utilizaremos debido a que debug solo puede crear este tipo específico de programas.
Aunque en este momento no es necesario darle un parametro al comando "a" es recomendable hacerlo para evitar problemas una vez que se haga uso de los registros CS:IP, por lo tanto tecleamos:
- a0100 [Enter]

Al hacer ésto aparecerá en la pantalla algo como: 0C1B:0100 y el cursor se posiciona a la derecha de estos números, nótese que los primeros cuatro dígitos (en sistema hexagesimal) pueden ser diferentes, pero los últimos cuatro deben ser 0100, ya que es la dirección que indicamos como inicio.
Ahora podemos introducir las instrucciones:
0C1B:0100 mov ax,0002 ;coloca el valor 0002 en el registro ax
0C1B:0103 mov bx,0004 ;coloca el valor 0004 en el registro bx
0C1B:0106 add ax,bx ;le adiciona al contenido de ax el contenido de bx
0C1B:0108 int 20 ; provoca la terminación del programa.
0C1B:010A
No es necesario escribir los comentarios que van despues del ";". Una vez digitado el último comando, int 20, se le da [Enter] sin escribir nada mas, para volver al prompt del debuger.

No es necesario escribir los comentarios que van despues del ";".
Una vez digitado el último comando, int 20, se le da [Enter] sin escribir nada mas, para volver al prompt del debuger.
Para ejecutar el programa que escribimos se utliza el comando "g", al utilizarlo veremos que aparece un mensaje que dice: "Program terminated normally".
Naturalmente con un mensaje como éste no podemos estar seguros que el programa haya hecho la suma, pero existe una forma sencilla de verificarlo, utilizando el comando "r" del Debug podemos ver los contenidos de todos los registros del procesador, simplemente teclee:
- r [Enter]

Cargar y Guardar el programa
Al terminar de ensamblar el programa se vería así:

Para obtener la longitud de un programa se utiliza el comando "h", el cual nos muestra la suma y resta de dos números en hexadecimal.
Para obtener la longitud del nuestro le proporcionamos como parámetros el valor de la dirección final de nuestro programa (10A) y el valor de la dirección inicial (100).
El primer resultado que nos muestra el comando es la suma de los parámetros y el segundo es la resta.
El comando "n" nos permite poner un nombre al programa.
El comando "rcx" nos permite cambiar el contenido del registro CX al valor que obtuvimos del tamaño del archivo con "h", en este caso 000a, ya que nos interesa el resultado de la resta de la dirección inicial a la dirección final.
Por último el comando w escribe nuestro programa en el disco, indicandonos cuantos bytes escribió.
Para cargar un archivo ya guardado son necesarios dos pasos:
Proporcionar el nombre del archivo que se cargará.
Cargarlo utilizando el comando "l" (load).
Para obtener el resultado correcto de los siguientes pasos es necesario que previamente se haya creado el programa anterior.
Dentro del Debug escribimos lo siguiente:
- n prueba.com
- l
- u 100 109
0C3D:0100 B80200 MOV AX,0002
0C3D:0103 BB0400 MOV BX,0004
0C3D:0106 01D8 ADD AX,BX
0C3D:0108 CD20 INT 20
El último comando, "u", se utiliza para verificar que el programa se cargó en memoria, lo que hace es desensamblar el código y mostrarlo ya desensamblado. Los parámetros le indican a Debug desde donde y hasta donde desensamblar.

No hay comentarios:
Publicar un comentario