You are on page 1of 12

Universidad Estatal Pennsula de Santa Elena

LABORATORIO DE MICROPROCESADORES

EL MICROPROCESADOR BASICO 8086/8088


Arquitectura Interna

PRACTICA # 01
Familiarizacin con el programa Debug

INTEGRANTES:

Gabriel Romn Lanez.

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.

Los comandos ms tiles y ms usados en DEBUG son:

A direccin Ensamblar (convierte lenguaje simblico en cdigo de mquina)

D direccin cantidad Mostrar en pantalla datos en la memoria

E direccin Editar memoria desde direccin

F direc1 direc2 valor Llenar memoria desde direc1 hasta direc2 con el dato valor

G direccin Ir (durante la ejecucin) hasta la direccin direccin

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

P cant Salta procedimientos, cant es # instrucciones que ejecuta

Q Sale de Debug

T cant Entra a procedimientos, cant es # instrucciones que ejecuta

U direc cant Desensambla cant bytes a partir de la direccin direc

? Presenta en pantalla el listado de todos los comandos

Para invocar el programa DEBUG abrir la ventana del MSDOS, en directorio raz entrar
lo siguiente:

C:\> debug <enter>


DEBUG responde con el indicador guin -. El indicador guin indica nivel de
comandos del programa debug. El ? visualiza en pantalla todos los comandos del debug.

Visualizar todos los comandos:

-? <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.

EJERCICIO 1: Instruccin de suma ADD:


Ahora, vamos a instruir al procesador para que ejecute la suma de dos cantidades
colocando instrucciones de mquina en el segmento de cdigo.
La operacin deseada es AX AX + BX. Con el comando A ensamble las 5
instrucciones siguientes en CS: 200.

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.

Ingrese el dato 2143 hex con el comando E DS: 200 ENTER.


Luego inicialice AX con 1538 hex. Con el comando A ensamble en segmento de cdigo
CS: 100, las 3 instrucciones siguientes:
NOP
ADD AX, [200]
NOP

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?

Verifique manualmente la suma hexadecimal


2143 + 1538 = 367B

**********************************************************************
EJERCICIO 3:

Sumar dos cantidades de 16 bits residentes en el segmento de datos DS y dejar el resultado


en el registro BX.

El primer dato es:


DS: 150 12
DS: 151 34
El segundo dato es:
DS: 200 56
DS: 201 78

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.

Escriba el contenido final de BX =

El resultado de la suma es:

*********************************************************************
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

Verifique IP=100. Ejecute cada instruccin paso a paso con el comando P.

Qu pasa en pantalla cuando el procesador ejecuta por primera vez la instruccin


INT 21?
Al ejecutar por primera vez la funcin INT 21 nos muestra el signo $ correspondiente
al valor que se le asign a DL que ser 24 en hexadecimal.
Qu pasa cuando ejecuta INT 21 por segunda vez?
Cuando se hizo uso del comando INT 21 por segunda vez nos imprime el smbolo &
que corresponde al valor que se le asign posteriormente a DL que ser 26 en
hexadecimal.

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

Ahora, para ejecutar el programa use el comando: G ENTER.


Qu se imprimi? Explique!

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!

Observe que el comando G ejecuta las instrucciones a velocidad de mquina desde la


localidad inicial CS: 100 hasta encontrar INT 20, esta instruccin ejecuta el regreso
automtico al nivel de comandos del programa debug.

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,$

Verifique que IP=200. Ejecute el programa paso a paso con el comando P.

Observe Pantalla y explique.

Terminada la ejecucin paso a paso, recargue nuevamente IP con 200 y ejecute el


programa con el comando G ENTER.
Investigue:
1) Qu accin ejecuta?
MOV AH, 0
Mover a la ubicacin A alta el valor de 0
INT 21
La funcin int accede a funciones especiales guardadas en memoria segn el
nmero que se le asigne,

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.

2) Funcin 9 de MSDOS. Qu papel desempea $?


La funcin 9 nos muestra una serie de caracteres impresos en pantalla y el smbolo
$ nos muestra el final de impresin.

3) La directiva DB.
DB asigna el tipo de dato que va a ingresar.

4) Significado de los caracteres de control 0D y 0A.


0D = el cursor regresa a su primera lnea
0A = el cursor salta a la lnea prxima.

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

Ensamble en CS: 100 las instrucciones siguientes:

NOP
MOV AH, 9
MOV DX, 0200
INT 21
INT 20
NOP

Asegurar que IP = 0100. Corra el programa con G ENTER.


Qu IMPRIME?
Ok! vizualiza el menraje grabado en memoria Ok!

NOTA: ingrese mal el assci de la s en la palabra mensaje.


Visualice cdigo de mquina en segmento de cdigo, use el comando siguiente
U CS: 100 109.

Escriba el cdigo de mquina de cada instruccin:


NOP
MOV AH, 9
MOV DX, 0200
INT 21
INT 20
NOP
Ahora visualice la memoria de datos con el comando D DS: 200 231.

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.

You might also like