Programar Con Debug

Páginas: 26 (6498 palabras) Publicado: 31 de octubre de 2012
Posiblemente sea el debug el depurador más rudimentario que existe; pero el hecho que desde el principio haya sido provisto con el sistema operativo, nos permite encontrarlo hoy en cualquier máquina DOS o Windows. Muchas tareas elementales pueden realizarse sin otra ayuda que el Debug y por eso vamos a ver algunos comandos básicos. Incluso es posible correr programas cargados en memoriautilizando breakpoints elementales, ejecutar paso a paso, saltar sobre procedimientos, editar programas en hexa y muchas más cosas. Ya hemos dicho cómo podemos arrancarlo desde una ventana DOS, y usando el comando R (mostrar registros) nos mostrará algo similar a esto:
AX=0000   BX=0000   CX=0000   DX=0000   SP=0000   BP=0000   SI=0000   DI=0000
DS=1332    ES=1332    SS=1332    CS=1332    IP=0100    NVUP EI PL NZ NA PO NC
1332:0100 C3 RET .
Esto muestra el contenido de los registros del procesador incluyendo varias banderas: en el ejemplo, y en el mismo orden tenemos: V=0, D=0, I=1, S=0, Z=0, AC=0, P=0 y C=0
Si ponemos después de la R el nombre de un registro, es posible modificar su contenido. Por ejemplo, para editar el contenido de CX, hay que poner el comando RCX. Debug nos presenta elcontenido actual del registro y la posibilidad de ingresar un nuevo valor para sustituirlo.
Los comandos L y W se utilizan para leer y escribir en archivos de disco. La cantidad de bytes transferida en cada operación es el contenido de BX:CX. Previamente es necesario darle un nombre al archivo con el comando N. Se puede especificar la dirección a partir de la que se desea transferir datos o bienusar el vector por defecto DS:DX.
Los comandos más útiles y más usados en Debug son:
A | dirección | Ensamblar (ingresar código assembly) |
D | dirección cantidad | Mostrar en pantalla direcciones de memoria en presentación hexa |
E | dirección | Editar memoria desde dirección |
F | direc1 direc2 valor | Llenar memoria desde direc1 hasta direc2 con el dato valor |
G | dirección | Ir(durante la ejecución) a la dirección dirección |
H | valor1 valor2 | Muestra el resultado de la suma y resta hexadecimal entre valor1 valor2 |
I | puerto | Obtiene una entrada desde el puerto puerto |
M | direc1 direc2 direc3 | Mueve el bloque de memoria direc1- direc2 a partir de direc3 |
P | cant | Salta sobre procedimientos cant de veces o hasta dirección direc |
Q |   | Sale de Debug |S | direc1 direc2 valores | Busca en bloque de memoria desde direc1 hasta direc2 los bytes valores |
T | cant | Igual que P pero son instrucciones simples |
U | direc cant | Desensambla cant bytes a partir de la dirección direc |
XS |   | Muestra estado de memoria expandida |
? |   | Presenta pantalla de ayuda |
 
Nuestro primer programa
Usaremos el Debug para ensamblar un programa querealice algo tan útil (?) como dejar en alguna parte de la memoria el nombre de nuestra escuela ECCE. Para sacar algo a pantalla, debemos leer el tutorial de +gthorne, que será nuestro paso siguiente. Por ahora sólo queremos practicar  de manera que abramos una ventana DOS y escribamos DEBUG (enter). Nos proponemos hacer que ECCE sea escrito en memoria, en el offset 200h de nuestro segmento dedatos DS. Sabemos que los códigos ASCII son E=45h y C=43h, de manera que nuestro programa puede lucir así:
a 100
1322:0100 | mov ax,4543 | ;cargamos el registro AX con el dato 4543 (EC en ASCII) |
1322:0103 | mov bx,4345 | ;cargamos BX con "CE" en ASCII |
1322:0106 | mov [200],ax | ;ponemos AX en la dirección de memoria 200 |
1322:0109 | mov [202],bx | ;idem para BX, pero en la 202 (AXocupó la 200 y 201) |
1322:010D | int 20 | ;finalizar y salir a Debug |
1322:010F
Al apretar "enter" una vez más, Debug nos devuelve su prompt "-" y ya estamos listos para nuestro próximo comando. Podemos ver algunas curiosidades del listado anterior: 1) Debug asume que los números que le damos, sean direcciones o datos, son hexadecimales. 2) A medida que vamos ingresando el programa, nos va...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Programas debug
  • Realizacion de programas en debug lenguaje de bajo nivel
  • programa de Calculadora en debug
  • Debug
  • Debug
  • Debug
  • Uso de debug
  • Uso del Debug

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS