Debug
Debug
El DOS viene con un programa llamado DEB UG que es utilizado para probar y depurar
programas ejecutables.
Características de DE B UG:
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
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
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.
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
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.
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
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.
NV UP EI PL NZ NA PO NC
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.
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
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:
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.
L ibro:
L enguaje ensamblador y programación para IB M PC
compatibles.
A utor:
A bel Peter
Editorial:
Pearson Educación