Comprender los comandos principales de DEGUG y su uso, preferiblemente con ejemplos.
Depurar
Inicia el depurador, un programa utilizado para probar y depurar archivos ejecutables de MS-DOS.
Depuración
Parámetros
[unidad:][ruta] nombre de archivo
Especifique la ubicación y el nombre del archivo ejecutable que se va a probar .
parámetros
Especifique cualquier información de línea de comando necesaria para que el ejecutable se pruebe.
++
Instrucciones
Utilice el comando debug sin especificar el archivo a probar
Si no especifica la ubicación y nombre de archivo, luego escriba todos los comandos de depuración en respuesta al mensaje de depuración. guión (-).
Comandos de depuración
La siguiente es una lista de comandos de depuración: Muestra la lista de comandos de depuración.
a Recopilación de mnemónicos 8086/8087/8088.
c Compara dos partes de la memoria.
d Muestra el contenido de parte de la memoria.
e Introduzca datos en la memoria a partir de la dirección especificada.
f llena una porción de la memoria con el valor especificado.
g Ejecuta un archivo ejecutable en la memoria.
h realiza operaciones hexadecimales.
i Muestra el valor de 1 byte de un puerto específico.
l Carga el contenido de un archivo o sector del disco en la memoria.
m Copia el contenido de un bloque de memoria.
/n Especifica un archivo para el comando l o w, o especifica parámetros para el archivo que se está probando.
o Envía un valor de 1 byte al puerto de salida.
p Ejecutar un bucle, repetir una instrucción de cadena, una interrupción de software o una subrutina.
q Detener la sesión de depuración.
r Mostrar o cambiar uno o más registros.
s Busca en una porción de la memoria un patrón de uno o más valores de bytes.
t Ejecute una instrucción y luego muestre el contenido de todos los registros, el estado de todos los indicadores y la forma decodificada de la instrucción que el depurador ejecutará a continuación.
u Descompone los bytes y muestra la declaración sin formato correspondiente.
w Escribe el archivo probado en el disco.
xa asigna memoria extendida.
xd libera memoria extendida.
xm asigna páginas de memoria extendida.
xs muestra el estado de la memoria extendida.
Parámetros de comando separados
Todos los comandos de depuración, excepto el comando q, aceptan parámetros. Los parámetros pueden estar separados por comas o espacios, pero estos delimitadores sólo son necesarios entre dos valores hexadecimales. Por lo tanto, los siguientes comandos son equivalentes:
dcs:100 110
d cs:100 110
d,cs:100,110
Especifique una entrada de dirección válida
El parámetro de dirección del comando debug especifica una ubicación de memoria, que puede ser un nombre de dos dígitos o una dirección de campo de cuatro dígitos que contiene un registro de campo alfabético. Los comandos A, G, L, T, U y W están predeterminados en CS, todos los demás comandos están predeterminados en DS y todos los valores están en formato hexadecimal.
Las direcciones válidas son las siguientes:
CS:0100
04BA:0100
Hay dos puntos entre el nombre del segmento y el desplazamiento.
Especificar elementos de rango válidos
El parámetro de rango en el comando de depuración especifica el rango de memoria. Puede elegir entre dos formatos de rango: dirección inicial y dirección final, o dirección inicial y rango de longitud (indicado por l).
Por ejemplo, las dos sintaxis siguientes especifican un rango de 16 bytes que comienza en CS:100:
cs:100 10f
cs:100 l 10
++
Subcomandos de depuración
Seleccione el comando de depuración para obtener más detalles.
Depurar:A (Ensamblaje)
Depurar:C (Comparar)
Depurar (Volcar)
Depurar:E (Tipo)
Depuración:F (Relleno)
Depuración:G (Dirección)
Depuración:H (Hexadecimal)
Depuración:I ( Entrada)
Depurar: L (cargar)
Depurar: M (mover)
Depurar: N (nombre)
Depurar: O (salida)
Depurar: P (ejecutar)
Depurar: Q (salir)
Depurar: r (registro)
Depurar: s (búsqueda)
Depurar: T (rastreo)
Depurar: U (desmontaje)
Depurar: W (escribir)
Depurar:XA (asignar memoria extendida)
Depurar:XD (desasignar memoria extendida)
Depurar:XM (asignar página de memoria extendida)
Depurar: XS (muestra el estado de la memoria extendida)
****************************** Subcomando de depuración**** ******** **********************
Depuración:A (ensamblaje)
Cambie la ayuda de 8086/8087/8088 Los tokens se fusionan directamente en la memoria.
Este comando crea código de máquina ejecutable a partir de declaraciones en lenguaje ensamblador. Todos los valores están en formato hexadecimal y deben ingresarse en incrementos de uno a cuatro caracteres. Especifique un mnemotécnico de prefijo antes del código de operación al que se hace referencia.
a [dirección]
Argumentos
dirección
Especifica la ubicación donde se escriben las instrucciones en lenguaje ensamblador. Utilice valores hexadecimales para las direcciones y escriba todos los valores que no terminen con el carácter "h". Si no se especifica ninguna dirección, a iniciará el ensamblaje desde donde se detuvo por última vez.
Para obtener información sobre cómo ingresar datos en bytes específicos, haga clic en Depurar E (Tipo) en la lista de temas relacionados.
Para obtener información sobre el desensamblaje de bytes, haga clic en Depurar U (Desensamblaje) en la lista de temas relacionados.
Ejemplo
a El comando a a admite todas las formas de comandos de registro indirecto, como se muestra en el siguiente ejemplo:
add bx,34[bp+2] .[si- 1]
pop [bp+di]
push [si] )
Todos los sinónimos de código de operación también son compatibles, como se muestra a continuación ejemplo:
loopz 100
loope 100
ja 200
jnbe 200
Para códigos de operación 8087, el Se debe especificar el prefijo wait o fwait, como se muestra en el siguiente ejemplo:
fwait fadd st,st(3) ; esta línea combina
; > Descripción
Uso de mnemónicos
Los mnemónicos alternativos para segmentos son cs:, ds:, es: y ss:. Los mnemónicos de procesamiento de cadenas deben declarar explícitamente el tamaño de la cadena. Por ejemplo, puede usar movsw para mover una cadena de 16 bits y mov**** (el sistema está enmascarando el texto por algún motivo)*** (el sistema está enmascarando el texto por algún motivo) para mover un 8 -cadena de bits.
Saltos y llamadas del ensamblador
El ensamblador ensambla automáticamente saltos y llamadas cortos, cercanos y lejanos a la dirección de destino en función del reemplazo de bytes.
Estos saltos o llamadas se pueden reemplazar con un prefijo cercano o lejano, como en el siguiente ejemplo:
-a0100:0500
0100:0500 jmp 502 ;
0100:0502 jmp cerca de 505; salto cercano de 3 bytes
0100:0505 jmp lejano 50a; salto lejano de 5 bytes
El prefijo cercano puede ser abreviado a ne.
Distinguir entre ubicaciones de memoria de palabra y byte
Cuando el operando apunta a una ubicación de memoria de palabra o byte, el tipo de datos debe especificarse utilizando el prefijo palabra ptr o el prefijo byte ptr. Las abreviaturas aceptables son poco a poco. El siguiente ejemplo muestra ambos formatos:
dec wo [si]
neg byte ptr [128]
Especificar operandos
Usos de depuración operandos encerrados entre corchetes ([ ]) para hacer referencia a direcciones de memoria. Esto se debe a que Debug no puede distinguir entre operandos inmediatos y operandos de direcciones de memoria. El siguiente ejemplo muestra ambos formatos:
mov ax,21 ; usa 21h para cargar AX
mov ax,[21] usa
; contenido de la ubicación 21h en AX
; contenido de la ubicación de memoria 21h
Uso de directivas
El uso del comando a proporciona dos métodos para hacer referencia a direcciones de memoria.
El uso del comando a proporciona dos directivas de uso común: el código de operación db, que compila valores de bytes directamente en la memoria, y el código de operación dw, que compila valores de palabras directamente en la memoria. 3000. "BACH"
++
Depuración:C (Comparar)
Compara dos partes de la memoria.
c rango de dirección
Argumentos
rango
Especifica la dirección inicial y final de la primera área de memoria que se comparará, O dirección inicial y longitud. Para obtener información sobre valores de rango válidos, haga clic en Notas de depuración en la lista de temas relacionados.
Dirección
Especifica la dirección inicial de la segunda área de memoria que se va a comparar. Para obtener información sobre valores de dirección válidos, haga clic en Notas de depuración en la lista de temas relacionados.
++
Ejemplo
Los siguientes comandos tienen el mismo efecto:
c100,10f 300
c100l10 300
Cada uno de estos comandos compara el bloque de memoria de 100h a 10Fh con el bloque de memoria de 300h a 30Fh.
Debug responde al comando anterior y muestra la siguiente información (asumiendo DS = 197F):
197F:0100 4D E4 197F:0300
197F:0101 67 99 197F:0301
197F:0102 A3 27 197F:
197F:0103 35 F3 197F:0303
197F:0104 97 BD 197F:0304
197F:0105 04 35 197F:0305
197F:0107 76 71 197F:0307
197F:0108 E6 11 197F:0308
197F :0109 19 2C 197F:0309
197F:010A 80 0A 197F:030A
197F:010B 36 7F 197F:030B
197F:010C BE 22 197F :030C
197F:010D 83 93 197F:030D
197F:010E 49 77 197F:030E
197F:010F 4F 8A 197F:030F
Tenga en cuenta que las direcciones 197F:0106 y 197F:0306 faltan en la lista, lo que indica que los valores en estas direcciones son los mismos. son iguales.
++
Explicación
Si el rango y el área de memoria de direcciones son los mismos, Debug devuelve un mensaje de depuración y no muestra nada. Si hay diferencias, Depurar se mostrará en el siguiente formato:
dirección1 byte1 byte2 dirección2
++++
Depuración (volcado)
Muestra el contenido del rango de direcciones de memoria.
d [rango]
Parámetros
rango
Especifica la dirección inicial y final del área de memoria cuyo contenido se va a almacenar. mostrado, O dirección inicial y longitud. Para obtener información sobre valores de rango válidos, haga clic en la descripción de depuración en la lista de temas relacionados. Si no especifica un rango, el depurador muestra 128 bytes a partir del final del rango de direcciones especificado en el comando d anterior.
Para obtener información sobre cómo mostrar el contenido de los registros, haga clic en Depuración de R (Registros) en la lista de temas relacionados.
++
Ejemplo
Supongamos que escribe el siguiente comando:
dcs:100 10f
Depuración el programa El contenido de este rango se mostrará en el siguiente formato:
04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 TOM.SAWYER......
Si escribe el comando d sin parámetros, Debug se mostrará en el formato descrito en el ejemplo anterior. Cada línea de visualización comienza en una dirección 16 bytes mayor que la dirección de la línea anterior (u 8 bytes si se muestra una pantalla de 40 columnas).
Para cada comando d posterior sin argumentos, Debug muestra los bytes inmediatamente posteriores al último comando mostrado.
Si escribe el siguiente comando, el depurador mostrará el contenido de los 20h bytes a partir de CS:100:
dcs:100 l 20
Si Si escribe el siguiente comando, el depurador mostrará el contenido de todos los bytes en el segmento CS 100h a 115h:
dcs:100 115
++
dcs:100 115
La depuración muestra todos los bytes en el segmento CS de 100h a 115h.
++
Descripción
Al usar el comando d, Debug mostrará el contenido de la memoria en dos partes: la parte hexadecimal (cada byte El valor se expresa en formato hexadecimal) y la parte ASCII (el valor de cada byte se expresa en caracteres ASCII). En la parte ASCII de la pantalla, cada carácter que no se imprime está precedido por un punto (.) En la parte ASCII de la pantalla, cada carácter que no se imprime está precedido por un punto (.) Cada línea de la pantalla muestra 16 bytes, un byte 8 y una palabra. es un guión entre las secciones 9. Cada línea de visualización comienza en un límite de 16 bytes
++
Depuración:E (tipo)
Ingresar datos. en la memoria en la dirección especificada
Los datos se pueden escribir en formato hexadecimal o ASCII. Cualquier dato previamente almacenado en la ubicación especificada se perderá por completo.
Parámetros
dirección
Especifica la primera ubicación de memoria de los datos de entrada
lista
Especifica en bytes consecutivos la memoria de entrada
. Para obtener información sobre la memoria integrada, haga clic en Depurar A (Ensamblaje) en la lista de temas relacionados
Para obtener información sobre cómo mostrar la memoria parcial, haga clic en Depurar D (Volcado) en la lista de temas relacionados
++
Ejemplo
Imagínese escribir el siguiente comando:
ecs:100
Debug muestra el contenido del primer byte. en el siguiente formato:
04BA:0100 EB
Para cambiar el valor a 41, en el punto de inserción escriba 41 de la siguiente manera:
04BA: 0100 EB. p>
04BA:0100 EB.41_
Puede usar el comando e para escribir el valor de bytes consecutivos. Presione la tecla BARRA ESPACIADORA en lugar de presionar la tecla ENTER después de escribir. nuevo valor y la depuración mostrará el siguiente valor. En este ejemplo, si presiona la tecla BARRA ESPACIADORA tres veces, la depuración mostrará el siguiente valor:
04BA:0100 EB.41 10.00.BC._.
Para cambiar el valor hexadecimal BC a 42, escriba 42 en el punto de inserción, de la siguiente manera:
04BA:0100 EB 41 10.00.00.BC.42_
.Supongamos que se decide que el valor 10 debe ser 6F. Para corregir este valor, presione la tecla GUIÓN dos veces para regresar a la dirección 0101 (valor 10). El depurador muestra lo siguiente:
04BA: 0100 EB.41 10.00.BC.42-
04BA:0102 00.
04BA:0101 10.6f_
Ingresar en el punto de inserción 6f, cambiar el valor de la siguiente manera:
04BA:0101 10.6f_
Presione la tecla ENTER para detener el comando e y regresar al mensaje de depuración.
El siguiente es un ejemplo de entrada de cadena:
eds:100 "Este es un ejemplo de texto"
La cadena se completará con 24 caracteres a partir de Festival DS:100.
++
Instrucciones
Uso de parámetros de dirección
Si especifica el valor de dirección pero no especifica el valor del parámetro de lista opcional , Debug mostrará la dirección y el contenido, repetirá la dirección en la siguiente línea y luego esperará su entrada. En este punto, puede realizar una de las siguientes acciones:
- Reemplazar el valor del byte. Para hacer esto, escriba el nuevo valor después del valor actual. Si el valor que escribe no es un valor hexadecimal válido, o si el valor contiene más de dos dígitos, Debug no muestra los caracteres no válidos o adicionales.
- Ir al siguiente byte. Para hacer esto, presione la tecla BARRA ESPACIADORA. Para cambiar el valor de este byte, escriba el nuevo valor después del valor actual. Si se excede el límite de 8 bits cuando se presiona la BARRA ESPACIADORA, el depurador muestra una nueva línea con la nueva dirección al principio de la línea.
- Regresar al byte anterior. Para hacer esto, presione la tecla GUIÓN (-). Puede presionar la tecla GUIÓN (-) repetidamente para devolver más de un byte. Cuando se presiona la tecla HYPHEN, Debug comenzará una nueva línea y mostrará la dirección actual y el valor del byte.
- Deja de ejecutar el comando e. Para hacer esto, presione ENTRAR. Puede presionar ENTER en cualquier posición de byte.
Uso de parámetros de lista
Si especifica un valor para un parámetro de lista, los comandos e posteriores reemplazarán el valor del byte existente con el valor de la lista. Si se produce un error, el valor del byte no se cambia.
Los valores de la lista pueden ser bytes hexadecimales o cadenas. Utilice espacios, comas o tabulaciones para separar valores. Las cadenas deben estar entre comillas simples o dobles.
++++
Depuración:F (Rellenar)
Rellena la dirección en el área de memoria especificada con el valor especificado.
Los datos se pueden especificar en formato hexadecimal o ASCII. Se perderán todos los datos previamente almacenados en la ubicación especificada.
f lista de rango
Argumentos
rango
Especifica las direcciones inicial y final del área de memoria que se va a llenar, o la dirección inicial dirección y longitud. Para obtener información sobre valores de rango válidos, haga clic en Notas de depuración en la lista de temas relacionados.
Lista
Especifica los datos a introducir. La lista puede constar de números hexadecimales o cadenas entre comillas.
++
Ejemplo
Imagina escribir el siguiente comando:
f04ba:100l100 42 45 52 54 41
En respuesta, Debug llenará las ubicaciones de memoria de 04BA:100 a 04BA:1FF con el valor especificado.
++
Descripción
Usando el parámetro de rango
Si el número de bytes contenidos en el rango es mayor que el valor en la lista, Debug iterará sobre los valores en la lista de asignación hasta que se llenen todos los bytes del rango.
Si alguna memoria en el rango está dañada o no existe, Debug mostrará un mensaje de error y detendrá el comando f.
Uso de parámetros de lista
Si la lista contiene más valores que el número de bytes en el rango, Debug ignora los valores adicionales en la lista.
++
Depuración:G (dirección)
Ejecuta el programa actualmente en la memoria.
g [=dirección] [puntos de interrupción]
Parámetros
=dirección
Especifica la dirección del programa que se ejecutará en el memoria actual. Si no se especifica ninguna dirección, Windows 2000 comienza la ejecución del programa en la dirección actual en el registro CS:IP.
Puntos de interrupción
Especifique de 1 a 10 puntos de interrupción temporales que se pueden establecer como parte del comando g.
Para obtener información sobre bucles de ejecución, repetición de instrucciones de cadena, interrupciones de software o subrutinas, haga clic en Depuración P en la lista de temas relacionados.
Para obtener información sobre la ejecución de instrucciones, haga clic en Depurar T (Seguimiento) en la lista de temas relacionados.
Ejemplo
Si escribe el siguiente comando:
gcs:7550
Windows 2000 ejecuta el programa en la memoria actual hasta que Se alcanza el segmento CS En un punto de interrupción en la dirección 7550, la depuración muestra el contenido de los registros y el estado de las banderas, y finaliza el comando g.
El siguiente comando establece dos puntos de interrupción:
gcs:7550, cs:8000
Si escribe el comando g nuevamente después de encontrar un punto de interrupción en Debug, comenzará la ejecución desde la instrucción después del punto de interrupción, en lugar de desde la dirección inicial habitual.
++
Explicación
Usar parámetros de dirección
Los parámetros de dirección deben ir precedidos por un signo igual (=) para distinguirlos. dirección inicial y punto de interrupción.
Especificar puntos de interrupción
No importa dónde escriba un punto de interrupción en la lista de puntos de interrupción, el programa se detendrá en el primer punto de interrupción encontrado.
Cuando el programa alcanza un punto de interrupción, Debug restaurará todas las direcciones de los puntos de interrupción a las instrucciones originales y mostrará el contenido de todos los registros, el estado de todos los indicadores y la forma decodificada de la última instrucción ejecutada.
Si no detiene el programa en un punto de interrupción, el programa de depuración no reemplaza el código de interrupción con la instrucción original.
Restricciones en la configuración de puntos de interrupción
Los puntos de interrupción solo se pueden establecer en direcciones que contengan el primer byte del código de operación 8086 (código de operación). Si se establecen más de 10 puntos de interrupción, Debug mostrará el siguiente mensaje:
error de bp
Requisitos para el puntero de pila de usuario
El puntero de pila de usuario debe ser válido Y deben haber 6 bytes disponibles para el comando g. debug establece el puntero de la pila de usuarios y envía indicadores de usuario, registros de segmentos de código y punteros de instrucciones a la pila de usuarios. (El sistema operativo puede fallar si la pila de usuarios no es válida o es demasiado pequeña). La depuración establece un código de interrupción en el punto de interrupción especificado (0CCh).
Reiniciar un programa
No intente reiniciar un programa después de que Windows 2000 muestre el siguiente mensaje:
El programa finalizó correctamente
Para ejecutar el programa correctamente, se debe recargar el programa usando los comandos Debug n (nombre) y l (cargar).
++++
Depuración:H (hexadecimal)
Realiza operaciones hexadecimales en los dos parámetros especificados.
h valor1 valor2
Parámetros
valor1
Representa cualquier número hexadecimal en el rango de 0 a FFFFh.
valor2
Representa el segundo número hexadecimal en el rango de 0 a FFFFh.
++
Ejemplo
Supongamos que escribe el siguiente comando:
h19f 10a
La depuración realiza la operación y Se muestran los siguientes resultados.
02A9 0095
++
Descripción
La depuración primero agrega los dos parámetros especificados y luego comienza desde el primer parámetro Resta el segundo argumento. Los resultados del cálculo se muestran en una línea: primero la suma, luego la diferencia.
++++
Depuración:I (entrada)
Lee y muestra el valor del byte del puerto especificado.
puerto i
Parámetros
puerto
Especifique el puerto de entrada por dirección. Las direcciones pueden ser valores de 16 bits.
Para obtener información sobre el envío de valores de bytes al puerto de salida, haga clic en Depurar O (Salida) en la lista de temas relacionados.
++
Ejemplo
Supongamos que se escribe el siguiente comando:
i2f8
También suponga que el puerto El valor del festival es de 42h.
Debug lee los bytes y muestra el siguiente valor:
42
++
Debug:L (Cargar)
Copia el archivo o El contenido de un sector de disco específico se carga en la memoria.
Para cargar el contenido de un archivo de disco desde la memoria y especificar el número de bytes en el registro BX:CX, utilice la siguiente sintaxis:
l [dirección]
Para omitir el sistema de archivos de Windows 2000 y cargar un sector específico directamente, use la siguiente sintaxis:
l dirección número de inicio de la unidad
Argumentos
dirección
p>especifica la ubicación de memoria desde la cual cargar el contenido del archivo o sector. Si no se especifica ninguna dirección, Debug utilizará la dirección actual en el registro CS.
Unidad
Especifica la unidad que contiene el disco desde el cual se leerán los sectores especificados. El valor es un número: 0 = A, 1 = B, 2 = C, etc.
inicio
Especifica el número hexadecimal del primer sector en el que se cargará el contenido.
número
Especifica el número hexadecimal de sectores contiguos de contenido que se cargarán. Los parámetros de unidad, inicio y número solo se pueden usar si desea cargar el contenido de un sector específico, en lugar del archivo especificado en la línea de comando de depuración o el comando de depuración n(nombre) más reciente.
Para obtener información sobre los archivos especificados para el comando l, haga clic en Depurar n (nombre) en la lista de temas relacionados.
Para obtener información sobre los archivos escritos en el disco para su depuración, haga clic en Depurar w (Escribir) en la lista de temas relacionados.
++
Ejemplo
Imagina que inicias Debug y escribes el siguiente comando:
nfile.com
Ahora puedes cargar File.com escribiendo l.
Supongamos que necesita cargar el contenido de 109 (6Dh) sectores de la unidad C en la memoria en la dirección 04BA:0100, comenzando en el sector lógico 15 (0Fh). Para hacer esto, escriba el siguiente comando:
l04ba:100 2 0f 6d
++
Nota
Usar sin parámetros l comando
Cuando se utiliza el comando l sin parámetros, el archivo especificado en la línea de comando de depuración se cargará en la memoria comenzando en la dirección CS:100. Si no se especifica ningún archivo en la línea de comando de depuración, el archivo cargado será el archivo especificado más recientemente usando el comando n.
Usar el comando 1 con el parámetro de dirección
Si usa el comando l con el parámetro de dirección, el depurador cargará el contenido del archivo o sector especificado comenzando en la ubicación de la memoria DIRECCIÓN.
Utilice el comando l con todos los parámetros
Si utiliza el comando l con todos los parámetros, Debug cargará el contenido del sector del disco especificado en lugar de cargar el archivo.
Carga el contenido de un sector específico. Lee cada sector en el rango especificado desde la unidad. La depuración se carga desde el principio hasta que se carga el contenido del número de sectores especificados.
Cargando archivos .exe
El depurador ignora el parámetro de dirección de los archivos .exe. Si especifica un archivo .exe, Debug reubicará el archivo en la dirección de carga especificada en el encabezado del archivo .exe. El encabezado del archivo en sí se separa del archivo .exe antes de cargarlo en la memoria, por lo que el tamaño del archivo .exe en el disco es diferente al de la memoria. Si desea examinar todo el archivo .exe, cambie el nombre del archivo con una extensión diferente.
Abrir archivos hexadecimales
La depuración considera que los archivos con extensión .hex están en formato hexadecimal. Escriba el comando l sin argumentos para cargar el archivo hexadecimal comenzando en la dirección especificada en el archivo hexadecimal.
Si escribe el comando l con un argumento de dirección, Debug agrega la dirección especificada a la dirección en el archivo hexadecimal para determinar la dirección inicial.
++++
Depurar:M (mover)
Copia el contenido de un bloque de memoria a otro bloque de memoria.
m dirección de rango
Parámetros
rango
Especifica la dirección inicial y final del área de memoria que se va a copiar, o dirección inicial dirección y longitud.
dirección
Especifica la dirección inicial para copiar el contenido del rango.
++
Ejemplo
Supongamos que escribe el siguiente comando:
mcs:100 110 cs:500
Debug copia el contenido de la dirección CS:110 en la dirección CS:510, luego copia el contenido de la dirección CS:10F en la dirección CS:50F, y así sucesivamente hasta que el contenido de la dirección CS:100 se copia en la dirección CS:510 . El contenido de la dirección CS:100 se copia en la dirección CS:500. Para ver los resultados, utilice el comando debug d (volcado) y especifique la dirección de destino con el comando m.
++
Explicación
El impacto de la operación de copia en los datos existentes
Si los nuevos datos no se escriben en el copiado dirección de bloque, los datos de origen permanecen sin cambios. Sin embargo, si el bloque de destino ya contiene datos (como en una operación de copia de sobrescritura), estos datos se sobrescribirán. (La operación de copia de sobrescritura significa que parte del contenido del bloque de datos de destino cubre parte del contenido del bloque de datos original).
Realizar una operación de copia de sobrescritura
El comando m realiza una operación de copia de sobrescritura en la dirección de destino sin perder datos. Primero se copiará el contenido de la dirección sobrescrita. Por lo tanto, si desea copiar datos de una dirección de orden superior a una dirección de orden inferior, la operación de copia comenzará desde la dirección de orden más bajo del bloque de datos original y luego se copiará a la dirección de orden más alto. Por el contrario, si desea copiar datos de una dirección inferior a una dirección superior, la operación de copia comienza desde la dirección más alta del bloque original y luego copia a la dirección más baja.
++++
Depuración:N (nombre)
Especifica el nombre del archivo ejecutable para depurar l (carga) o w (escritura) comando o especifique parámetros para el archivo ejecutable que se está depurando.
n [unidad:][ruta] nombre de archivo
Para especificar parámetros para el archivo ejecutable que se está probando, utilice la siguiente sintaxis:
n file-parameters
parámetros
Sin parámetros, el comando n borra la especificación actual.
[unidad:][ruta] nombre de archivo
Especifica la ubicación y el nombre del archivo ejecutable que se va a probar.
file-parameters
Especifica parámetros y modificadores para el archivo ejecutable que se va a probar.
Para obtener información sobre cómo cargar un archivo o el contenido de un sector de disco específico en la memoria, haga clic en Depurar L en la lista de temas relacionados.
Para obtener información sobre cómo escribir archivos depurados en el disco, haga clic en Depurar W (Escribir) en la lista de temas relacionados.
++
Ejemplo
Supongamos que se inicia el depurador, se carga el programa que se está depurando, Prog.com, y usted decide especificar dos parámetros para Prog.com y ejecute el programa. Aquí está la secuencia de comandos para este ejemplo:
debug prog.com
nparam1 param2
g
En este caso, Debug The El comando g ejecuta el programa como si hubiera escrito los siguientes comandos en el símbolo del sistema de Windows 2000:
prog param1 param2
Por lo tanto, las pruebas y la depuración reflejan el entorno operativo típico de Prog.com. .
En la siguiente secuencia de comandos, el primer comando n especifica File1.exe como el archivo para el siguiente comando l (cargar), que carga File1.exe en la memoria. El segundo comando n especifica los parámetros que utilizará File1.exe. Finalmente, el comando g ejecutará el archivo File1.exe como si ingresara File1 File2.dat File2.dat en la línea de comando de Windows 2000.
nfile1.exe
l
nfile2.dat file3.dat
g
Nota
- No utilice el comando l después de la segunda forma del comando n. También tenga en cuenta que si ahora utiliza el comando w (escribir), Windows 2000 guardará el archivo que está depurando, Archivo1.exe, como Archivo2.dat. Para evitar esto, utilice siempre la primera forma del comando n antes del comando l o w.
++
Descripción
Dos formas de utilizar el comando n
Hay dos formas de utilizar el comando n. Primero, puede usarlo para especificar el archivo que usarán los comandos posteriores l (carga) o w (escritura). Si no le asigna un nombre al archivo de depuración cuando inicia la depuración, debe usar el comando nfilename antes de usar el comando l para cargar el archivo. nfilename está bien formado para el bloque de control de archivos (FCB) de CS:5C. A continuación, puede utilizar el comando n para especificar argumentos y modificadores de línea de comando para el archivo que está depurando.
Área de memoria
Las siguientes cuatro áreas de memoria se ven afectadas por el comando n:
Contenido de ubicación de memoria
Control de archivos CS:5C bloque ( FCB) para el archivo 1
CS: 6C Bloque de control de archivos (FCB) para el archivo 2
CS:80 n Longitud de la línea de comando en caracteres
p >
CS:81 n carácter inicial de línea de comando
El primer nombre de archivo especificado para el comando n se colocará en el FCB en CS:5C. n El número de caracteres escritos en la línea de comando (excepto el primer carácter n) se almacena en la ubicación CS:80. n Los caracteres reales en la línea de comando (nuevamente, excepto la letra n) se almacenan a partir de CS:81. Tenga en cuenta que estos caracteres pueden ser cualquier modificador y delimitador que sea válido en los comandos escritos en el símbolo del sistema de Windows 2000.
++++
Depuración:O (salida)
Envía el valor del byte al puerto de salida.
o puerto byte-valor
Parámetros
puerto
Especifica el puerto de salida por dirección. Las direcciones de puerto pueden ser valores de 16 bits.
valor de byte
Especifica el valor de byte que apunta al puerto.
Para obtener información sobre cómo leer valores de bytes de los puertos de entrada, haga clic en Depurar I (Entrada) en la lista de temas relacionados.
++
Ejemplo
Para enviar el valor del byte 4Fh al puerto de salida en la dirección 2F8h, escriba el siguiente comando:
o2f8 4f
++++
Depuración:P (ejecutar)
Ejecutar un bucle, repetir una instrucción de cadena, una interrupción de software o una subrutina o rastrear cualquier; otras instrucciones.
p [= dirección] [número]
Parámetros
=dirección
Especifica la ubicación de la primera instrucción que se ejecutará. Si no se especifica ninguna dirección, la dirección predeterminada es la dirección actual especificada en el registro CS:IP.
número
Especifica el número de instrucciones que se ejecutarán antes de que el control se devuelva al depurador. El valor predeterminado es 1.
Para obtener información sobre cómo ejecutar el programa actualmente en la memoria, haga clic en Depuración G en la lista de temas relacionados.
Para obtener información sobre la ejecución de instrucciones, haga clic en Depurar T (Seguimiento) en la lista de temas relacionados.
++
Ejemplo
Supongamos que el programa bajo prueba contiene una instrucción de llamada en la dirección CS:143F. Para ejecutar la subrutina en el destino de la llamada y devolver el control al depurador, escriba el siguiente comando:
p=143f
El depurador muestra los resultados en el siguiente formato:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000
DS=2246 ES=2246 SS=2246 CS=2246 IP=1443 NV UP EI PL NZ AC PO NC
2246:1442 7505 JNZ 144A
++
Descripción
Transferir el control a la Prueba programa
Cuando el comando p transfiere el control del depurador al programa bajo prueba, el programa se ejecutará ininterrumpidamente hasta que se complete el bucle, repita la instrucción de cadena, la interrupción del software o la subrutina en la dirección especificada, o hasta que se complete una Se ejecuta un número específico de instrucciones de máquina. El control regresa al depurador.
Restricciones en los parámetros de dirección
Si