Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Equipo de Cátedra
Ing. Pablo Cayuela
Ing. Norma Mascietti
Ing. Luis Oliva Sevilla
Se recomienda el uso de una máquina virtual o emulador DOSBOX que nos permite
aislarnos de la computadora y sistema operativo real que estemos corriendo, para evitar
dañarlos y para mostrar la estructura más simple y primitiva de las actuales PCs, teniendo
control directo del hardware virtual subyacente.
Esto convierte a los contenidos del directorio real c:\debugx en el disco virtual c: del
DOSBOX. Allí podremos ejecutar debug de manera directa sin afectar la PC real.
Pag.-1-
FACULTAD REGIONAL CÓRDOBA
En la barra superior aparecerá el ícono del teclado que lo hará aparecer en pantalla para
ingresar comandos en la línea de comandos del DOS.
Introducción
Comandos de DEBUG.
A Ensamblar instrucciones simbólicas y pasarlas a código máquina
D Mostrar el contenido de un área de memoria
E Introducir datos en memoria, iniciando en una localidad específica
Pag.-2-
FACULTAD REGIONAL CÓRDOBA
G Correr el programa ejecutable que se encuentra en memoria
N Nombrar un programa
P Proceder o ejecutar un conjunto de instrucciones relacionadas
Q Salir de la sesión o entorno DEBUG
R Mostrar el contenido de uno o más registros
T Rastrear la ejecución de una instrucción
U Desensamblar código máquina y pasarlo a código simbólico
W Escribir o grabar un programa en disco
D 40:10 [ Enter ]
0040:0010 63 44
En este ejemplo, los 2 bytes en la palabra del estado del equipo contienen los valores
hexadecimales 63 y 44. Invierta el orden de los bytes(44 63) y conviértalos a binario:
Bit : 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1
BITs DISPOSITIVO
15-14 Número de puertos paralelos para impresoras conectados = 1 (binario 01)
11-09 Número de puertos seriales conectados = 2 (binario 010)
07-06 Número de dispositivos de disco flexible = 2 (donde 00 = 1, 01 = 2, 10 = 3 y 11
= 4)
05-04 Modo inicial de video = 10 (donde 01 = 40 x 25 en color, 10 = 80 x 25 en color y
11 = 80 x 25 monocromático)
1 1 = coprocesador matemático está presente
1 = unidad de disco flexible está presente
Pag.-3-
FACULTAD REGIONAL CÓRDOBA
Los primeros dos bytes mostrados en el desplazamiento 0013H son los KB de memoria en
hexadecimal, con los bytes en secuencia inversa.
Ejemplo:
HEXADECIMAL INVERSO HEXADECIMAL CORREGIDO VALOR DECIMAL(K)
00 02 02 00 512
80 02 02 80 640
Ahora que ya sabe cómo usar el comando para desplegar información, puede ver el
contenido de cualquier localidad de almacenamiento. También puede avanzar por la
memoria con sólo presionar D de forma repetida: DEBUG muestra de manera sucesiva 8
líneas, continuando a partir de la última operación D.
Para finalizar, teclee Q (quit), para salir de DEBUG, ó continúe con la siguiente práctica.
Pag.-4-
FACULTAD REGIONAL CÓRDOBA
Cómo introducir un programa simbólico
El Comando A
El comando A (Assemble, ensamblar) le dice a DEBUG que acepte instrucciones simbólicas
en ensamblador y las convierta a lenguaje de máquina.
Pag.-5-
FACULTAD REGIONAL CÓRDOBA
Obtener el número de versión del DOS
La instrucción que entrega el número de versión es INT 21h del DOS, función 30h; esto es,
cargue 30h en el registro AH y solicite INT 21h.
a). Ingrese el comando
A 100 (de DEBUG)
b). Ingrese las instrucciones en ensamblador:
MOV AH,30
INT 21
NOP (seguido por un [enter] adicional)
Para rastrear la ejecución de las instrucciones, primero ingrese R para ver los registros y T
para rastrear MOV. En lugar de rastrear la instrucción INT, ingrese P (proceed, proceder)
para ejecutar toda la rutina del DOS. El proceso termina con la instrucción NOP.
Ahora puede ver en AL el número principal de la versión del DOS, como X en DOS X.20, y
en AH el número secundario de la versión, como 14H (o 20) en DOS X.20. Presione Q para
salir.
Pag.-6-
FACULTAD REGIONAL CÓRDOBA
Práctica
1.- Se pide sumar los valores (200 y FFF). Ingrese el siguiente código y comente a
continuación de cada línea cual es su función:
Luego analice:
a) Antes de correr el programa, realice la operación de manera manual en papel.
b) Verifique el tamaño de las instrucciones y explique por qué hay diferencias.
c) Verifique el modo en que se almacena en memoria los números y código en relación
a la dirección de memoria. Esquematice.
d) Ejecute el programa paso a paso (comando T) y observe el registro de banderas.
Explique si hubo cambios y lo que estos indican.
2.- Modifique el código anterior para que se realice las mismas operaciones para llegar al
mismo resultado, pero obteniendo los datos de la memoria y no de los registros.
a) Observe su ejecución paso a paso anotando los cambios de la memoria y los registros
3.- Especifique y compruebe en el debug, tres o más modos de poner a cero el registro AX
haciendo uso del mismo y sin importar su contenido. Use para ello, operaciones
aritméticas y lógicas. Ejecute el código y anote los cambios ocurridos en el registro de
banderas.
4.- Escriba el código que permita sumar el contenido de una dirección y de una constante.
Luego ejecútelo paso a paso observando cada resultado.
5.- Escriba un código que permita obtener la diferencia entre dos números utilizando
registros siendo el primero menor que el segundo. Explique por que es necesario el cambio
que se produce en el registro de estado.
6.- Se pide multiplicar valores de 8 bits sin signo. Ingrese el siguiente código y comente a
continuación de cada línea cual es su función:
MOV AL,08
MOV CL,FE
MUX CL,AL
INT 20
Pag.-7-
FACULTAD REGIONAL CÓRDOBA
7.- Se pide la multiplicación de valores con signo. Ingrese el siguiente código y comente a
continuación de cada línea cuál es su función:
-a
1987:0100 mov al,8
1987:0102 mov cl,-2
1987:0104 imul cl
1987:0106 int 20
1987:0108
-u 0100 0108
1987:0100 B008 MOV AL,08
1987:0102 B1FE MOV CL,FE
1987:0104 F6E9 IMUL CL es igual que decir mul ax,cl
1987:0106 CD20 INT 20
1987:0108 CC INT 3
a) Determine (anote) cuales son los resultados y que es lo que el uP ejecutó. ¿Cuáles son las
razones de lo sucedido?
b) ¿Qué pasa si se toma AX en lugar de AL?
c) ¿Qué sucedió con los bits de bandera?
d) ¿Están correctos o hay errores en ellos?
13.- Para realizar este ejercicio vamos a utilizar una nueva instrucción que es XCHG, que
realiza el pasaje del contenido entre dos registros. No importa la manera en que se
especifiquen los registros en la instrucción. Para ello damos el siguiente ejemplo para
analizar:
C:\>debug
Pag.-9-
FACULTAD REGIONAL CÓRDOBA
-a 100
1987:0100 mov ax,333
1987:0103 mov bx,222
1987:0106 xchg bx,ax
1987:0107 int 20
1987:0109
Pag.-10-