0% encontró este documento útil (0 votos)
187 vistas

Debug

La depuración de programas es el proceso de identificar y corregir errores de programación. En inglés se conoce como debugging, porque se asemeja a la eliminación de bichos, manera en que se conoce informalmente a los errores de programación

Cargado por

Alexis Peñate
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
187 vistas

Debug

La depuración de programas es el proceso de identificar y corregir errores de programación. En inglés se conoce como debugging, porque se asemeja a la eliminación de bichos, manera en que se conoce informalmente a los errores de programación

Cargado por

Alexis Peñate
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 37

INS TITUTO DE E S TUDIOS

S UPE RIORE S DE CHIA PA S


S alazar Narváez

Ing. S istemas Computacionales

CHA CÓN A GUIRRE PA UL INA


Y A NNETH
A signatura:
Lenguaje
L enguaje Ensamblador
Catedrático:
4to “ A ” Lic. Enrique Martínez Gutiérrez
DEB U
G
es un programa que se utiliza para depurar programas, para conocer lo que
realiza la computadora a nivel de hardware todo lo que ocurre cuando ejecuta
un programa, porque te va mostrando los valores de los registros, localidad de
memoria, etc
Introducción.

E n la siguiente presentación se hablara del programa DE B UG que es un


programa que se encarga de probar y depurar programas ejecutables desde
DOS .

S e hablara de sus características principales cuales son los comandos mas


utilizados y su función, cual es su estructura, como inicializa entre otras
utilerías que ofrece DE B UG.
El programa DEB UG.

El DOS viene con un programa llamado DEB UG que es utilizado para probar y depurar
programas ejecutables.

Características de DE B UG:

• Despliega todo el código del programa y los datos en forma hexadecimal.

• Permite ejecutar un programa en modo de paso sencillo (un paso a la vez) de


manera que se pueda ver el efecto de cada instrucción sobre las localidades de
memoria y los registros.
Comando
Descripción.
.
Ensamblar instrucciones simbólicas y pasarlas a
A código de maquina.
Comandos de DEB UG D M ostrar el contenido de un área de memoria.
Introducir datos en memoria, iniciando en una
E localidad especifica.
L os comandos que proporciona Correr el programa ejecutable que se encuentra
DEB UG nos permiten realizar G en memoria.
diferentes operaciones útiles. N Nombrar un programa.
Proceder a ejecutar un conjunto de instrucciones
P
L a mayoría de los comandos de relacionadas.
DEB UG ejecutan una acción y Q S alir de la selección con DEB UG.
vuelven al indicador, pero si es un R M ostrar el contenido de uno o más registros.
comando largo, como puede ser T Rastrear la ejecución de una instrucción.
mostrar un trozo grande de código, “ Desensamblar” código máquina y pasarlo a
U código simbólico.
puede detenerse pulsando CTRL -
Pausa o interrumpirse con CTRL -C W Escribir o grabar un programa en disco.
para volver. XA A signar memoria expandida.
XD Desasignar memoria expandida.
XM A signar páginas de memoria expandida.
XS M ostrar estados de la memoria expandida.
Reglas de los comandos de DEB UG.

3. No distingue entre letras minúsculas y mayúsculas.


4. S olo se introduce un solo espacio en donde sea necesario separar parámetros en un
comando.
Ejemplos:
Utilizado el comando D de DEB UG para mostrar la misma área de memoria, iniciando en el
desplazamiento 200h en el segmento de datos (S D).

D DS :200 (comando en mayúscula, con un espacio en blanco después de él)


DDS :200 (comando en mayúscula, sin espacio en blanco después de él)
dds:200 (comando en minúsculas, sin espacio en blanco después de él)

Note que especifica segmentos y desplazamientos con dos puntos (:). A demás, DEB UG
supone que todos los números están en formato hexadecimal.
El despliegue del DEB UG
Consiste en tres partes:
3. Representación en A S CII de
1. La dirección hexadecimal del los bytes que contienen
ultimo byte de la izquierda que se características desplegables .
despliega en la forma
segmento:desplazamiento.

<--ASCII--
Dirección <----- Representación Hexadecimal ----->
>
xxxx:xx10 xx ……………. xx-xx ……………. xx x……….x
xxxx:xx20 xx ……………. xx-xx ……………. xx x……….x
xxxx:xx30 xx ……………. xx-xx ……………. xx x……….x

2. Representación hexadecimal del


área desplegada.
Inicio con DEB UG.
Para empezar con DEB UG, coloque el sistema en el directorio del disco duro que
contenga DEB UG. Para iniciar el programa, teclee la palabra DEB UG y presione un
Enter.

DEB UG debe cargarse al disco de la memoria.


Cuando el indicador (-), aparezca en la pantalla. DEB UG está listo para recibir sus
comando.
Visualización de las localidades de memoria.
El único comando por el cual nos interesaremos es D (Display, mostrar), el cual lista ocho
líneas de 16 bytes cada una y muestra su representación hexadecimal y A S CCI

Verificación del equipo del sistema.


V amos a determinar el B IOS que tiene instalado su equipo. Estas palabra está en las
localidades 410H-411H, que puede ver desde DEB UG por medio de una dirección de dos
partes: 40 para la dirección de segmentos y 10 para el desplazamiento desde la dirección del
segmento.
Teclear correctamente 40:10
A hora agarramos la primera línea algo así:
0040:0010 23 C8 F0 80 .. .. .. ..
En este ejemplo, los dos bytes en la palabra del estado del equipo contienen los valores
hexadecimales 23 C8. invierta los bytes (C8 23) y conviértalos a binario:

Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Binario: 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1

A continuación está una explicación del código hexadecimal.

Bits Dispositivo
15, 14 Número de puertos paralelos para impresora conectados = 3 (binario 11)
11, 9 Número de puertos seriales conectados = 4 (binario 100)
7, 6 Número de dispositivos de disco flexible = 1 (donde 00 = 1, 01 = 2, 10 = 3 y 11 = 4)
Modo inicial de video = 10 (donde 01 = 40 X 25 en color, 10 = 80 X 12 25 en color y 11
5, 4
= 80 X 12 25 monocromático.
1 1 = coprocesador matemático está presente
0 1 = unidad de disco flexible está presente
Verificar el tamaño de la memoria.
A quí se calculara la cantidad de memoria que el DOS piensa que tiene instalada. Depende
del modelo de la computadora, el valor puede estar basado en interrupciones internos y
puede indicar menos memoria de la que realmente este instalada. El valor esta en área de la
B IOS en las localidades 413H y 414H.

Teclee correctamente D 40:13


A parecerá 0040:0010 .. .. .. 80 02 .. .. ..
Los dos primeros bytes mostrados en el desplazamiento 0010H son los kilobytes de
memoria en hexadecimal, con los bytes en secuencia inversa.
Ejemplo:

Hexadecimal
Hexadecimal Inverso Corregido Decimal (k)
80 02 02 80 640
Verificación del número de serie y de la nota de derechos
reservados.
El numero de la serie de la computadora está alojado en el ROM de B IOS en la localidad
FE000H.
Para visualizarlo teclee D FE00:0

L a pantalla muestra un número de series de siete dígitos seguido , en maquinas


convencionales, de una nota de derechos reservados. Para seguir checando los derechos
reservado basta con poner D y un Enter.
Verificación de la fecha en la ROM BIOS
L a fecha de fabricación de su ROM B IOS inicia en la totalidad FFFF5H, registrada como
mm/dd/aa. Par verla teclee:
D FFFF:5 (Enter)

Esta fecha nos puede determinar la edad de la computadora y su modelo.


Verificación de la identidad del modelo.
Y a después de la fecha de fabricación del ROM B IOS está la identificación del modelo en la
localidad FFFFEH ó FFFF:E

Código Modelo
F8 PS /2 M odelos 70 y 80
F9 PC Convertible
A quí algunos de FA PS /2 M odelo 30
los modelos. FB PC-X T (1986)
FC PC-A T (1984), PC-X T M odelo 286 PS /2 M odelos 50 y 60, etc.
FE PC-X T (1982), Portátil (1982)
FF Primera IB M PC
Ejercicio 1 de lenguaje máquina: DATOS INMEDIATOS.
A continuación se usara DEB UG para introducir un programa directamente en memoria y
rastrear su ejecución. Este programa mostrara un sencillo código de lenguaje maquina, como
aparece en el almacenamiento principal y los efectos de su ejecución.
Programa Datos Inmediatos, datos definidos como parte de una instrucción. S e muestra el
lenguaje máquina en formato hexadecimal y para legibilidad en código simbólico, junto con
explicación .
Para la primera instrucción, el código simbólico es M OV A X,0123, lo cual mueve (o copia) el
valor 0123H al registro A X.
M OV es la instrucción, el registro A X es el primer operando y el valor inmediato 0123H es el
segundo operando.

Instrucción de máquina Código simbólico Explicación


B 82301 M OV A X ,0123 M over el valor 0123H a A X
052500 A DD A X ,0025 S umar el valor 0025H a A X
B D8 M OV B X ,A X M over el contenido de A X a B X
03D8 A DD B X ,A X S umar el contenido de A X a B X
8B CB M OV CX ,B X M over el contenido de B X a CX
2B C8 S UB CX ,A X Restar el contenido de A X a CX
2B C0 S B U A X ,A X Restar A X de A X (limpiar A X )
90 NOP No operación (no hace nada)
Las instrucciones de máquina pueden tener uno, dos o tres bytes de longitud. El primer
byte es la operación real y cualesquiera otros bytes, si están presentes, son operandos:
referencia a un valor de inmediato, un registro o una localidad de memoria.

La ejecución del programa empieza con la primera instrucción de máquina y avanza


por cada instrucción, una después de otra.

A l llegar ha este punto no esperamos que tenga mucho sentido el código de máquina.
Introducir instrucciones de programa.
Para iniciar.
Teclee el comando DEB UG y presione Enter.
Cuando DEB UG este cargado por completo,
despliega su indicador (-).

Para introducir el programa directamente en memoria, solo teclee la parte del lenguaje máquina
pero no el código simbólico o la explicación.
Teclee el siguiente comando E (Enter) con los espacios en blanco que se indican.
E CS :100 B 8 23 01 05 25 00

CS :100 indica la dirección de memoria


inicial donde se almacenaran los datos
-100H (256) bytes siguiendo al inicio del
segmento de código.
El comando E hace que DEB UG cada par
de dígitos hexadecimales en un byte de
memoria, desde CS :100 hasta CS :105.
El siguiente comando E almacena 6 bytes, empezando en CS :106 a 107, 108, 109, 10A y
10B :
E CS :106 8B D8 03 D8 8B CB
El ultimo comando E almacena 5 bytes, empezando en CS :10C a 10D, 10E, 10F y 110:
E CS :10C 2B C8 2B C0 90

S i teclea algún comando de manera incorrecta, solo repítalo con los valores correctos.
Comandos
Rastreo de la instrucción de máquina. Regresar
Formato hexadecimal
Registros de banderas

Registro IP
Ejecución de instrucción de programa.

Es algo sencillo ejecutar las instrucciones anteriores, una a la vez.


L os comandos DEB UG que nos conciernen aquí son R (registro) y T (rastreo).
Para ver los contenidos iniciales de los registros y las banderas. Teclee el comando R.
DEB UG muestra el contenido de los registros en forma hexadecimal.
El registro IP muestra IP=0100, indicando que la ejecución de la instrucción inicia 100H
bytes después del inicio del segmento del código.
En el registro de las banderas muestra la siguiente configuración:

NV UP EI PL NZ NA PO NC

Esta configuración significa: no desbordamiento, dirección hacia arriba/abajo, interrupción


habilitada, signo positivo, no cero, no acarreo auxiliar, paridad impar y no acarreo.

V er figura.
El comando R también muestra el desplazamiento 0100H la primera instrucción que es
ejecutada. Note que en la figura el registro CS contiene 21C1. Y a que es seguro que su
dirección de segmento CS , difiera de esta, la mostramos como xxxx para las instrucciones:
xxxx:0100 B 82301 M OV A X,0123
• xxxx indica el inicio del segmento del código como xxxx[0]. El valor xxxx:0100
significa desplazarse 100H bytes después de la dirección del segmento CS xxxx[0].
• B 82301 es el código de máquina que usted introdujo en CS :100.
• M OV A X,0123 es la instrucción simbólica en ensamblador para el código máquina.
Esta instrucción significa, en realidad, mover el valor inmediato 0123H al registro A X.
En este momento, la instrucción M OV no ha sido ejecutada. Para ese propósito se teclea T,
luego Enter. El código de maquina es B 8 (mover al registro A X) seguido por 2301. la
operación mueve el 23 a la mitad baja (A L ) del registro A X y el 01 a la mitad alta (A H) del
registro A X:
AH AL
AX

01 23
DEB UG muestra los resultados en los registros. El contenido del registro IP es 0103H, que
indica la ubicación del desplazamiento en el segmento del código de la siguiente
instrucción que será ejecutada a saber:
xxxx:0103 052500 A DD A X,0025
Para ejecutar esta instrucción, introduzca otra T. la instrucción A DD suma 25H a la mitad
baja del registro A X y 00H a la mitad alta, en realidad suma 0025H al A X. A hora A X
contiene 0148H y el IP contiene 016H para la siguiente instrucción que se ejecutara:
xxxx:0106 8B D8 M OV B X,A X.
Teclee T. la instrucción M OV mueve el contenido del registro A X a B X. Después de
mover B X contiene 0148H A X aun contiene 0148H ya que M OV copia en el lugar de
mover los datos de esa localidad a otra.
A hora teclee T hasta pasar por el resto de las instrucciones. L a instrucción A DD suma el
contenido de A X a B X, dando 0290H en B X. Después el programa mueve el contenido de
B X a CX, resta a A X de CX y resta A X de el mismo. Después de la ultima operación la
bandera de cero se cambia de NZ a ZR para indicar que el resultado de la ultima operación
fue cero.
A continuacion se muetra todos los pasos.
Mostrar el contenido de memoria
Para mostrar la ultima instrucción NOP presione T, pero esta instrucción no realiza cosa
alguna.
En lugar de eso para ver el programa en lenguaje de máquina en el segmento del código
requiere el siguiente despliegue:
D CS :100

DEB UG muestra 16 bytes de datos en cada línea. A la derecha esta la representación A S CII de
cada byte.
L a primera línea del despliegue inicia en el desplazamiento 100H del segmento del código y
representa el contenido de CS :100 hasta CS :10F.
L a segunda línea representa el contenido CS :110 hasta CS :11F.
Corregir una entrada.

S i se introduce un valor erróneo en el segmento de datos o en el segmento de código,


reintroducir el comando E para corregirlo. También se reanuda la ejecución en la primera
instrucción indicando el registro IP con 0100. se teclea el comando R seguido por el
registro designado, esto es, R IP [Enter]. DEB UG muestra el contenido de IP y espera por
una entrada. S e teclea el valor 0100, Enter, después se teclea R.
DEB UG muestra los registros, banderas y la primera instrucción que será ejecutada. Y a se
puede usar T para volver a rastrear las instrucciones paso a paso.
Introducir un programa simbólico en ensamblador.

El ejercicio de programa fue en formato de lenguaje máquina, también puede utilizar


DEB UG para ingresar instrucciones simbólicas en lenguaje ensamblador.
A hora examinaremos como introducir enunciados en lenguaje ensamblador.
El comando A.
A (ensamblar) le dice a DEB UG que acepte instrucciones simbólicas en ensamblador y las
convierte en lenguaje maquina. Inicialice la dirección de inicio en el segmento de código
con desplazamiento 100H para sus instrucciones como:
A 100 (Enter)

DEB UG muestra el
valor del segmento de
código y el
desplazamiento como
xxxx:0100
A continuación se teclea cada una e las siguientes instrucciones seguido de un Enter.
M OV A L ,25
M OV B L ,32
A DD A L ,B L
NOP
DEB UG muestra lo siguiente:

Puede ver que DEB UG ha terminado la localidad de inicio de cada instrucción. Pero antes
de ejecutar el programa usemos el comando U (desensamblar) de DEB UG para examinar el
lenguaje de máquina generado.
El comando U
M uestra el código de máquina para sus instrucciones en lenguaje ensamblador. S e puede
usar este comando para indicarle a DEB UG las localidades de la primera y ultima instrucción
que quiere ver, en este caso, 100H y 106H. Teclee
U 100,106 (Enter)
Y la pantalla muestra:

A hora rastree le ejecución del programa, el código de máquina es lo que realmente se ejecuta.
Introducir R para desplegar los registros y la primera instrucción , después T sucesivamente
para rastrear las instrucciones subsecuentes. Cuando se llega a NOP se puede continuar con la
siguiente instrucción si no presionar Q para salir.
La instrucción INT
A continuación se muestra como accesar el DOS y el B IOS para enviar información acerca
del sistema, por el cual se utiliza la instrucción INT (interrupción) la cual sale de un
programa, ingresa una rutina del DOS o de B IOS , realiza la función solicitada y regresa a
su programa.
Usaremos el comando P (proceder) de DEB UG para ejecutar toda la rutina de interrupción.
Obtener el numero de versión del DOS.
A veces es necesario saber cual es la versión del DOS que la computadora esta corriendo.
L a instrucción que entrega el numero de versión es INT 21H del DOS , función 30H; esto
es, cargue 30H en el registro A H y solicite INT 21H.
Ingrese A 100 de DEB UG y las siguientes instrucciones en ensamblador:

M OV A H,30
INT 21
NOP (Enter adicional)
Para rastrear la ejecución de las instrucciones primero ingresar R para ver los
registros y T para rastrear M OV . En lugar de rastrear la instrucción INT, ingrese P
para ejecutar toda la rutina del DOS . El proceso termina con la instrucción NOP.
A hora se ve el A L el numero principal de la versión DOS como X en DOS X.20, y en
el A H el numero secundario de la versión, como 14H (o 20) en DOS X.20
Guardar un programa desde DEBUG

S e puede guardar un programa en disco bajo dos circunstancias:

5. Para leer el programa, modificarlo y después guardarlo:


• Lea el programa bajo su nombre: DEB UG n:nombredearchivo.
• Utilice el comando D para ver el programa en lenguaje de maquina y use E para
ingresar los cambios.
• Utilice el comando W (escribir) para grabar el programa revisado.
1. Usar DEB UG para escribir un pequeño programa en lenguaje de máquina
que ahora quiera guardar:

• S olicite el programa DEB UG.

• Utilice A (ensamblar) y E (ingresar) para crear el programa.

• Ponga nombre al programa N nombredearchivo.COM la extensión del


programa debe ser .COM

• Cuando termine el programa en realidad, indique a DEB UG el tamaño del


programa en bytes

• Utilice R B X para mostrar el B X, e ingrese 0 para limpiarlo

• A hora use R CX para mostrar el registro CX

• Grabe el programa revisado: W (Enter)


Lenguaje ensamblador: Operador PTR

A quí otro programa que introduce algunas características nuevas, donde se mueven y se
suman datos entre las localidades de memoria y registro. Instrucciones:

100 M OV A X,[11A ]
103 A DD A X,[11C]
107 A DD A X,25
10A M OV [11E],A X
10D M OV WORD PTR [120],25
113 M OV B Y TE PTR [122],30
118 NOP  
119 NOP  
11A DB 14 23
11C DB 05 00
11E DB 00 00
120 DB 00 00 00
Una explicación de las instrucciones es:

Mueve el contenido de las localidades de memoria 11A H-11B H al A X. L os


100
corchetes indican una dirección de memoria y no valores

103 S uma el contenido de todas las localidades de memoria 11CH-1DH al A X


107 S uma el valor inmediato 25H al A X
10A Mueve el contenido de A X a las localidades de memoria 11EH-11EF
Mueve el valor inmediato 25H a las localidades de memoria 120h-121H. El
10D operador WORD PTR indica a DEB UG que debe mover el 25H a una palabra de
memoria
Mueve el valor inmediato 30H a la localidad de memoria 122H. Queremos mover
113
un byte y el operador B Y TE PTR indica longitud.
Define los valores de bytes 14H y 23H. DB (definir bytes) le permite definir
11A
datos que sus instrucciones están referenciado.
11C, 11E y 120 Define otros valores de bytes para uso en el programa.

S e sigue el mismo procedimiento teclear A 100, después todas las instrucciones y un Enter de
más. S e introduce R para mostrar el registro y la primera instrucción, después T
sucesivamente. S alir de la ejecución cuando se llega a NOP en 118. teclear D 110 para
mostrar los contenidos combinados de A X (233E) y de las localidades 11EH-11EF (3e23),
120H-121H (2500) y 122H (30)
Conclusión.

DE B UG puede ser uno de los programas mas antiguas que hay pero todavía
realiza lo que se le indica.

Como se dijo es útil para probar y depurar programas escritos en lenguaje


máquina y en lenguaje ensamblador.

S e espera que lo investigado sea de gran utilidad para investigaciones futuras.


B ibliografía.

L ibro:
L enguaje ensamblador y programación para IB M PC
compatibles.

A utor:
A bel Peter

Editorial:
Pearson Educación

También podría gustarte