Tutorial assembler en Debug - Rocio Balbin Lazo

22
Arquitectura y Tecnología de los Computadores. Departamento de Automática. Universidad de Alcalá. Laboratorio de Estructura de Computadores - 1- 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 <direccion> pudiendo ser la dirección absoluta (a segmento:desplazamiento) o relativa al segmento de código actual (a desplazamiento). Parámetros : <dir_comienzo> Resultados : se pueden escribir instrucciones en ensamblador a partir de la dirección de memoria CS:<dir_comienzo>, hasta que se pulse INTRO. Si no especificamos el parámetro <dir_comienzo> 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

description

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ó

Transcript of Tutorial assembler en Debug - Rocio Balbin Lazo

Arquitectura y Tecnologa de los Computadores. Departamento de Automtica. Universidad de Alcal.

MANUAL BREVE DE DEBUGSe trata de una utilidad muy poco amigable, sin mens y -slo en versiones recientes- con ayuda mnima, 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 parmetros, se carga y pasa a mostrar un lacnico guin, a la espera de rdenes del usuario. Todas -a excepcin de las relativas a operaciones con memoria expandida, que no se vern aqu- constan de una nica letra seguida o no de parmetros. Si se va a desensamblar un programa, se le puede indicar a debug que lo cargue tambin tras cargarse l escribiendo:debug nombre-del-programa argumentos-del-programa

C:\> Debug [Enter] En la siguiente lnea aparecer un guin, ste es el indicador del Debug, en este momento se pueden introducir las instrucciones del Debug. Utilizando los comandos: A: ASSEMBLE Sin parmetros ensambla las instrucciones que se introduzcan, guardndolas en la direccin siguiente a la que se lleg en el ltimo "a". Cuando se utiliza este comando se le puede dar como parmetro la direccin donde se desea que se inicie el ensamblado, si se omite el parmetro el ensamblado se iniciar en la localizacin especificada por CS:IP, usualmente 0100H, que es la localizacin donde deben iniciar los programas con extensin .COM, y ser la localizacin que utilizaremos debido a que debug solo puede crear este tipo especfico de programas. Tambin se le puede decir qu zona se desea ver con a pudiendo ser la direccin absoluta (a segmento:desplazamiento) o relativa al segmento de cdigo actual (a desplazamiento). Parmetros: Resultados: se pueden escribir instrucciones en ensamblador a partir de la direccin de memoria CS:, hasta que se pulse INTRO. Si no especificamos el parmetro se toma como direccin de inicio CS:IP Ejemplo: Vamos a usar la instruccin MOV, que como veremos ms adelante, sirve para copiar datos de la memoria a los registros y viceversa, adems 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 Tecnologa de los Computadores. Departamento de Automtica. 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 ms adelante, la instruccin 'U' sirve para hacer volcados de memoria, pero no viendo el contenido de la misma, sino interpretndola 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 parmetros muestra los primeros 128 bytes a partir de la posicin a la que se lleg en el ltimo "d". Si se le da un rango, mostrar ese rango. Parmetros: ; Direccin de comienzo del volcado [] ; Direccin 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 parmetro, 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....