Академический Документы
Профессиональный Документы
Культура Документы
LABORATORIO DE MICROPROCESADORES
PRACTICA # 01
Familiarizacin con el programa Debug
INTEGRANTES:
Curso:
8/1 Electrnica y Telecomunicaciones
Fecha:
25 de mayo del 2017.
Familiarizacin con el programa Debug
DEBUG forma parte del sistema operativo MS-DOS bajo Windows. DEBUG
originalmente diseado para depurar programas escritos en lenguaje ensamblador, es
rudimentario pero til para entender el funcionamiento del microprocesador. El lenguaje
ensamblador est ntimamente ligado con la arquitectura interna del procesador. Muchas
tareas elementales del procesador pueden ejecutarse usando comandos bsicos del
programa DEBUG. El objetivo de esta primera prctica es aprender a usarlo para
examinar y alterar el contenido de: registros, localidades de memoria, registro de estado,
y ejecucin paso a paso de instrucciones. En muchos de los casos es muy conveniente
imprimir la informacin mostrada en pantalla. Es importante que cada uno de los
miembros del grupo entienda cada paso de la prctica puesto que en las lecciones o
exmenes se plantearn temas basados en estas experiencias.
F direc1 direc2 valor Llenar memoria desde direc1 hasta direc2 con el dato valor
H valor1 valor2 Muestra el resultado de la suma y resta hexadecimal entre valor1 valor2
M direc1 direc2 direc3 Mueve el bloque de memoria direc1- direc2 a partir de direc3
Q Sale de Debug
Para invocar el programa DEBUG abrir la ventana del MSDOS, en directorio raz entrar
lo siguiente:
-? <enter
Observe que los comandos se invocan con letras simples y algunos requieren argumentos
adicionales.
1. Registros :
Para examinar el contenido de los registros internos del procesador ingrese:
-R<enter>
Este comando R visualiza en pantalla los registros del procesador, as como tambin las
banderas de estado en la parte inferior derecha.
Para examinar y cambiar el contenido de un registro, el comando R usa el nombre de un
registro como argumento.
Ejemplo, ingrese lo siguiente:
-R AX <enter>
AX 0000
: FFFF <enter>
Examine nuevamente el registro con el comando R. Usted ver que el registro AX ahora
contiene FFFF.
Recuerde, estos procesadores usan dos registros especiales CS: IP para apuntar
instrucciones. CS contiene el segmento de cdigo e IP un desplazamiento. Si es necesario
use el comando R para cargar IP con el desplazamiento deseado.
NOP
MOV AX, 062D
MOV BX, 034C
ADD AX, BX
NOP
Observe que el registro AX se inicializa con 062D y BX con 034C. Con el comando T
ejecute paso a paso las 5 instrucciones. Antes de ejecutar T asegure que IP contenga el
valor 200, es decir que apunte a la primera instruccin NOP.
Cul es el resultado de la suma que la instruccin ADD deja en el operando destino AX?
Verifique la suma hexadecimal manualmente: 062D + 034C = 979
*********************************************************************
2. Datos en memoria.
EJERCICIO 2:
Ahora, sumemos el dato 2143 hex, residente en la localidad de memoria DS: 200, con un
dato en AX. Para ingresar 2143 hex al segmento de datos use el comando E, ste comando
espera el ingreso de un byte, con la barra espaciadora se incrementa direcciones de
izquierda a derecha, se sale con ENTER. Recuerde el ordenamiento del pequeo indio,
en debug las direcciones crecen de izquierda a derecha, es decir primero ingresa 43 y
luego 21.
Con el comando T ejecute paso a paso las tres instrucciones. Cul es el resultado de la
suma que la instruccin ADD AX, [200] deja en su operando destino AX?
**********************************************************************
EJERCICIO 3:
El segmento de cdigo es CS: 100. Escriba una secuencia de instrucciones que sume los
dos nmeros de 16 bits y deje el resultado en el registro BX. Con T ejecute sus
instrucciones paso a paso y verifique el contenido final de BX.
*********************************************************************
OJO: El formato general de T es
T=direccin inicial nmero de instrucciones <enter>.
Si no se especifica la direccin inicial no es necesario el signo =, por defecto la direccin
inicial est dada por CS: IP. Si no se especifica ninguno de los parmetros, T ejecuta la
instruccin apuntada por CS: IP, es decir T ENTER ejecuta la instruccin actual apuntada
por CS: IP.
*********************************************************************
3. Usando Funciones del MS-DOS:
La instruccin INT n (n=tipo de interrupcin) permite el acceso a programas especiales
que estn presentes en memoria y que se cargan durante el arranque de la mquina. Por
ahora, podramos pensar en INT n como un llamado de funcin.
EJERCICIO 4:
Con el comando A ensamble en CS: 100, las instrucciones siguientes:
NOP
MOV AH, 02
MOV DL, 24
INT 21
MOV DL, 26
INT 21
NOP
El 02 en AH dirige al MS DOS para que ejecute una subrutina que imprime un carcter
en la pantalla de texto. El carcter que imprime se especifica con cdigo ASCII
almacenado en el registro DL del CPU.
Investigue la diferencia entre T y P.
T: TRACE es el encargado de ejecutar una o ms instrucciones comenzando con la
direccin actual del apuntador de instrucciones.
P: STEP esta funcin ejecuta una instruccin a la vez y empieza en la direccin actual
del apuntador de instrucciones.
4. Mecanismo de salida:
Cuando un programa en lenguaje ensamblador termina su ejecucin, debe permitirse el
regreso al sistema operativo. Una forma de lograr esto es con la funcin INT 20. En los
programas de nivel alto, tal como C, el compilador automticamente inserta INT 20 al
final del programa. Aqu, en nivel bajo, depende del programador si incluye o no el
comando INT 20, con debug es mandatorio incluir INT 20 al final de los programas.
EJERCICIO 5:
Ensamble en CS: 100 las instrucciones siguientes:
NOP
MOV AH, 2
MOV DL, 24
INT 21
MOV DL, 26
INT 21
INT 20
NOP
El programa imprime en pantalla los simbolos $ y & ya que existe ah=02 y la funcion
int 21 en el codigo q exhibe los simbolos en pantalla. Los datos 24 y 26 en dl son los
valores hexadecimales de dichos simbolos. Finalizando el programa se codifica la funcion
int 20 , este da un mensaje al final que indica que el programa ha terminado.
OJO NO use el comando G sin la instruccin INT 20 al final del programa!
EJERCICIO 6:
Usando el comando A ensamble en CS: 200 el programa siguiente:
NOP
MOV AH, 9
MOV DX, 020C
INT 21
MOV AH, 0
INT 21
DB 0D, 0A, CADENA DE CARACTES,0D, 0A,$
Para este caso cuando estas dos funciones trabajan juntas hacen el
equivalente al INT 20 el cual no accede a la funcin asignada y nos
muestra error.
3) La directiva DB.
DB asigna el tipo de dato que va a ingresar.
EJERCICIO 7:
Con el comando E ingrese al segmento de datos DS: 0200 los valores
hexadecimales siguientes:
0D-0A-4F-4B-21-0D-0A-21
56-69-73-75-61-6C-69-7A-61-20
4D-65-6E-73-61-6A-65-20
67-72-61-62-61-64-6F-20
65-6E-20-6D-65-6D-6F-72-69-61-20-0D-0A-4F-4B-21-24
NOP
MOV AH, 9
MOV DX, 0200
INT 21
INT 20
NOP
Conclusin:
Como nica conclusin tenemos que el lenguaje ensamblador es una herramienta muy
til y sencilla al momento de programar el microprocesador, se debe tener en cuenta que
esta prctica nos familiariza con las asignaciones de datos en memoria y la ejecucin de
funciones para futuras evaluaciones.
Recomendaciones:
Se debe ingresar bien los valores a mostrar en vista que despus del enter en la
mayora de los casos ya no se puede regresar a la lnea de cdigo y solo quedara
volver a escribir.
Tener en cuenta que este simulador no haya la funcin INT 20 lo cual causa que el
proceso se detenga.