¿Qué es el software de depuración?
Uso de DEBUG.
DEBUG es una utilidad de DOS y una herramienta de depuración de programas para programadores. Puede usarse para verificar bytes en cualquier lugar de la memoria y modificar bytes en cualquier lugar. Se puede utilizar para ejecutar un programa paso a paso para verificar la corrección del programa. También puede rastrear el proceso de ejecución, comparar valores antes y después de la ejecución de instrucciones, comparar y mover rangos de datos en la memoria y leer y escribir archivos y sectores del disco.
La depuración trata todos los datos como una secuencia de bytes. Entonces puede leer cualquier tipo de archivo. DEBUG puede reconocer dos tipos de datos: datos hexadecimales y caracteres de código ASCⅱⅱ. Su formato de visualización es el valor hexadecimal de cada byte y el carácter de código ASCⅱII correspondiente al byte con valor entre 32 y 126.
Hay dos formas de ingresar datos en la depuración: modo de solicitud y modo sin solicitud. Cuando se utiliza el método de solicitud, el usuario ingresa un comando para ingresar datos, seguido de la dirección donde se ingresarán los datos. Luego, el usuario puede ver el contenido existente y dos puntos en este lugar. En este punto, el usuario puede ingresar un nuevo valor en el mensaje o presionar Intro o CTRL+C para regresar al mensaje horizontal corto (-). Cuando se utiliza el método sin solicitud, el usuario puede ingresar la dirección de almacenamiento de los datos que se ingresarán y los bytes que se ingresarán. Sin embargo, a diferencia de cuando se usa un procesador de textos o un editor de texto, cuando se usa DEBUG, el usuario no puede mover directamente el cursor a un punto de entrada para ingresar o modificar datos, sino que ingresa uno o varios bytes a la vez.
Cuando se utiliza DEBUG, solo se pueden involucrar datos en la memoria, por lo que generalmente se especifica la dirección de memoria a procesar. El formato de entrada de la dirección es: [dirección del segmento]: [desplazamiento]. Si no se ingresa ninguna dirección, la depuración utilizará el segmento de memoria actual, comenzando desde el byte en la dirección 100H. Los primeros 100H bytes están reservados para el prefijo del segmento del programa. Esta área especial se utiliza para establecer la conexión entre DOS y el programa. DEBUG siempre utiliza cuatro dígitos hexadecimales para representar direcciones. Utilice dos dígitos para representar datos hexadecimales.
En este punto, todos deberían tener una comprensión preliminar de DEBUG, pero saber esto no es suficiente. A continuación, hablaré sobre el formato de comando y los comandos de DEBUG. Al escribir
Depuración
Cuando se llama al depurador, aparecerá un breve mensaje horizontal y el usuario podrá ingresar los comandos del depurador después de este breve mensaje horizontal. Algunos comandos de depuración muestran direcciones de memoria y generan dos puntos como indicaciones. Después de estas indicaciones, el usuario puede ingresar un nuevo valor para cambiar el valor original de la posición mostrada. Si el usuario presiona Enter o CTRL+C en lugar de ingresar un nuevo valor, el valor original no cambia.
Normalmente no es necesario separar la dirección del nombre del comando. Por ejemplo, para usar el comando de volcado d para ver los datos en la dirección 100, puede ingresar el comando en cualquiera de las siguientes situaciones:
D100
D 100
d . 100
d, 100
Si hay un error en el comando de entrada, DEBUG marcará la posición donde se enfrenta el error en la siguiente línea, por ejemplo. :
-s100 d 12
Error
Los comandos y funciones de depuración son los siguientes:
*Un comando de ensamblaje [dirección]
Función: ensambla las instrucciones directamente en el código de la máquina, ingresa a la memoria.
Nota: Se utiliza para ensamblar programas pequeños y modificar programas de destino. Todos los números ingresados están en hexadecimal y las declaraciones ensambladas cargadas en la memoria por el usuario se almacenan continuamente. Si no se especifica ninguna dirección y el comando ensamblador no se ha utilizado antes, la declaración modificada se ensamblará en el área CS:0100.
* C[rango de direcciones de origen][dirección de destino] comando de comparación
Función: compara el contenido de dos áreas de almacenamiento y muestra sus direcciones y contenidos si son diferentes.
* Comando de volcado D[dirección] o D[dirección de inicio][dirección de destino].
Función: Muestra la información de la memoria en forma de imágenes de memoria.
Descripción: Dump muestra el contenido de la imagen de la memoria en dos partes: caracteres hexadecimales a la izquierda y caracteres ASCII a la derecha. Todos los caracteres no imprimibles se expresan con puntos (.). Cada línea muestra 16 bytes, con un guión entre el octavo y el noveno bytes; la dirección de segmento implícita en este comando es el valor de DS.
Si no se especifica ninguna dirección inicial, el comando D comenzará a mostrarse desde la celda al lado de la última celda mostrada. Si el comando D no se ha utilizado antes, la visualización comenzará a partir del contenido del registro de segmento inicializado, más el desplazamiento de dirección 0100H.
* E[dirección][cadena de bytes] comando de modificación de memoria
Función: Modifica el valor de la memoria desde la dirección especificada.
Nota: Si solo se ingresa el desplazamiento en la parte de la dirección, el comando e pensará que el segmento está contenido en el registro DS. Hay dos formatos de comando: uno es reemplazar el contenido de varios bytes a partir de la dirección especificada con la cadena de bytes contenida en el comando, en segundo lugar, si no hay una cadena de bytes después del comando, se permite mostrar y modificar los bytes; de manera secuencial. Presione la barra espaciadora para mostrar el contenido del siguiente byte. Si desea modificarlo, puede ingresar directamente el valor correspondiente.
* F[rango de direcciones][byte o cadena de bytes] comando de llenado
Función: Llena la memoria especificada por el rango de direcciones con los bytes o cadena de bytes a llenar.
* G[=dirección de inicio][[punto de interrupción]...] ejecuta el comando.
Función: ejecutar el programa que se está depurando, detener la ejecución cuando se alcanza el punto de interrupción y mostrar el indicador de registro y el siguiente comando a ejecutar.
Nota: Si no se especifica ninguna dirección inicial, la dirección de instrucción actual está determinada por el contenido de los registros CS e IP. Si el usuario especifica una dirección inicial, la ejecución comenzará en la dirección inicial especificada. Si se especifica un punto de interrupción, la ejecución se detendrá cuando la instrucción alcance la dirección de instrucción y se mostrará el contenido de cada bit de indicador de registro y el siguiente comando a ejecutar. El usuario puede configurar hasta 10 puntos de interrupción.
* H[valor numérico][valor numérico] Comando de operación aritmética hexadecimal
Función: muestra la suma de dos números hexadecimales y el primer número y el segundo número respectivamente. número.
Descripción: Completa operaciones simples con números hexadecimales para los usuarios.
* I[dirección del puerto]
Función: Entrada y visualización (hexadecimal) de un byte desde el puerto especificado.
* L[dirección][número de disco:][número de sector lógico][número de sector]
Función: Cargar los sectores absolutos de un archivo o disco en la memoria.
Nota: Un solo comando L puede cargar hasta 80H sectores, donde los números de disco son 0, 1, 2, 3... representando respectivamente A, B, C,... errores de lectura de disco. y se muestra un mensaje de error.
* M[rango de direcciones][dirección de inicio] comando de transferencia de datos
Función: mueve el contenido de la unidad de almacenamiento dentro del rango de direcciones a la dirección especificada de la dirección de inicio.
Nota: Durante el proceso de transferencia, el área de origen y el área de destino pueden superponerse parcialmente; los datos del área de origen permanecen sin cambios después de la transferencia.
* N[número de disco:][ruta][nombre de archivo][extensión]
Función: Definir el nombre del archivo de operación.
Nota: Se pueden definir dos archivos de operación al mismo tiempo, y los bloques de control de archivos formados se pueden configurar en las memorias CS:5C y CS:6C para operaciones de comando L y W posteriores.
* O[dirección de puerto][datos] comando de salida
Función: Enviar bytes al puerto de salida especificado.
* P[=dirección][datos] comando de procesamiento
Función: detener una instrucción de llamada de subrutina, una instrucción de bucle, una instrucción de interrupción o la siguiente instrucción de una instrucción de cadena repetida.
Descripción: Al ejecutar una instrucción de llamada de subrutina, una instrucción de bucle, una instrucción de interrupción o una instrucción de cadena repetida, emita el comando P para ejecutar las instrucciones relevantes y regresar a la siguiente instrucción a ejecutar. El comando p tiene la misma sintaxis que el comando t.
*Comando Q salir.
* Comando de registro R[register]
Función: 1. Muestra el contenido de un único registro y proporciona funciones de modificación. En segundo lugar, se muestra el contenido de todos los registros, además del estado de las banderas de letras y la siguiente instrucción a ejecutar. En tercer lugar, muestra el estado de 8 banderas y proporciona funciones de modificación.
* S[rango de direcciones][cadena]
Función: encuentra la cadena dada en el rango de direcciones especificado.
Descripción: se utiliza para especificar una cadena dentro del rango de direcciones de búsqueda. Si se encuentra, se mostrará la dirección; de lo contrario, se mostrará el mensaje de depuración directamente. La dirección implícita es el valor del segmento DS.
* T[=dirección][número de instrucciones] comando de seguimiento
Función: realizar un seguimiento de la ejecución del programa una por una. Después de ejecutar cada instrucción, se muestra el contenido de cada registro. se mostrará.
Nota: normalmente se realiza un seguimiento de una instrucción, pero el usuario también puede configurar el número de instrucciones para realizar un seguimiento de varias instrucciones a la vez. Después de ejecutar cada instrucción, se muestran los contenidos de todos los registros y el estado de las banderas.
* U[dirección de inicio] o [rango de direcciones]
Función: Convertir el contenido de la memoria en declaraciones ensambladoras.
Nota: La cantidad de bytes desensamblados depende del modo de visualización del sistema del usuario y de las opciones utilizadas en el comando u.
* W[dirección][número de unidad:][sector inicial][número de sector] comando de escritura
Función: Escribe los datos modificados en el disco.
Nota: Puede comenzar a escribir datos desde la dirección de memoria especificada en el disco, o puede escribir el archivo de depuración en el disco sin especificar parámetros ni parámetros de dirección.