Programar Con Debug
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...
Regístrate para leer el documento completo.