Tutorial assembler en Debug - Rocio Balbin Lazo

Arquitectura y Tecnología de los Computadores. Departamento de Automática. Universidad de Alcalá. MANUAL BREVE DE “DEBU

Views 70 Downloads 1 File size 86KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Arquitectura y Tecnología de los Computadores. Departamento de Automática. Universidad de Alcalá.

MANUAL BREVE DE “DEBUG” Se trata de una utilidad muy poco amigable, sin menús y -sólo en versiones recientes- con ayuda mínima, pero una vez aprendidos unos cuantos comandos es extremadamente potente. Hay quien lo considera como el mejor programa que ha hecho Microsoft. Debug, invocado sin parámetros, se carga y pasa a mostrar un lacónico guión, a la espera de órdenes del usuario. Todas -a excepción de las relativas a operaciones con memoria expandida, que no se verán aquí- constan de una única letra seguida o no de parámetros. Si se va a desensamblar un programa, se le puede indicar a debug que lo cargue también tras cargarse él escribiendo: debug nombre-del-programa argumentos-del-programa

C:\> Debug [Enter] En la siguiente línea aparecerá un guión, éste es el indicador del Debug, en este momento se pueden introducir las instrucciones del Debug. Utilizando los comandos: A: ASSEMBLE Sin parámetros ensambla las instrucciones que se introduzcan, guardándolas en la dirección siguiente a la que se llegó en el último "a". Cuando se utiliza este comando se le puede dar como parámetro la dirección donde se desea que se inicie el ensamblado, si se omite el parámetro el ensamblado se iniciará en la localización especificada por CS:IP, usualmente 0100H, que es la localización donde deben iniciar los programas con extensión .COM, y será la localización que utilizaremos debido a que debug solo puede crear este tipo específico de programas. También se le puede decir qué zona se desea ver con a pudiendo ser la dirección absoluta (a segmento:desplazamiento) o relativa al segmento de código actual (a desplazamiento). Parámetros: Resultados: se pueden escribir instrucciones en ensamblador a partir de la dirección de memoria CS:, hasta que se pulse INTRO. Si no especificamos el parámetro se toma como dirección de inicio CS:IP Ejemplo: Vamos a usar la instrucción MOV, que como veremos más adelante, sirve para copiar datos de la memoria a los registros y viceversa, además de copiar datos entre registros, que es justo lo que vamos a usar en el ejemplo. -a 2048:0106 mov ax,bx Laboratorio de Estructura de Computadores

- 1-

Arquitectura y Tecnología de los Computadores. Departamento de Automática. Universidad de Alcalá.

2048:0108 mov bx,cx 2048:010A -u 106 108 2048:0106 89D8 MOV AX,BX 2048:0108 89CB MOV BX,CX Como veremos más adelante, la instrucción 'U' sirve para hacer volcados de memoria, pero no viendo el contenido de la misma, sino interpretándola como instrucciones en lenguaje ensamblador. ; Ejemplo 2 -r cs CS 2048 :2050 -a 200 2050:0200 mov ax,bx 2050:0202 -u 200 200 2050:0200 89D8 MOV AX,BX

D: DUMP Muestra el contenido de una zona de memoria en hexadecimal y en ASCII. Sin parámetros muestra los primeros 128 bytes a partir de la posición a la que se llegó en el último "d". Si se le da un rango, mostrará ese rango. Parámetros: ; Dirección de comienzo del volcado [] ; Dirección final del volcado. Resultado: Presenta por pantalla el contenido de las direcciones de memoria entre DS: y DS: ( si no se ha especificado el segundo parámetro, nos hace un volcado desde Ejemplo: -d 100 2048:0100 2048:0110 2048:0120 2048:0130 2048:0140 2048:0150 2048:0160 2048:0170

92 D3 3D 64 00 77 0B 3D-50 00 73 03 05 64 00 05 ..=d.w.=P.s..d.. 6C 07 A3 BF E1 E8 4C 00-B0 08 F8 5F 34 00 37 20 l.....L...._4.7 FF EB F8 33 C0 51 B9 0A-00 80 3C 30 72 12 80 3C ...3.Q....