Вы находитесь на странице: 1из 6

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ 

FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES 


ORGANIZACIÓN Y ARQUITECTURAS DE COMPUADORAS
DEBUG y Registros Visibles del Procesador (1ra parte)
LABORATORIO #3.

Facilitador: Prof. Sergio Cotes   


 
Integrantes: Camargo, Héctor Cédula: 8-951-641 Grupo:1IL-132  
Martínez, Javier 8-945-369
Meneses, Jomaris    8-956-760 
  Morales, Isaac 8-954-2141
Villamil, Samuel 8-945-1805

Fecha de entrega: 2/10/2020 


       
Objetivos:

 Familiarizarse con el uso del programa DEBUG


 Monitorear el estado de los registros visibles del procesador a través de la ejecución de un programa
pequeño en lenguaje simbólico (ensamblador).
 Visualizar y analizar la variación de las direcciones de memoria y los desplazamientos a través del IP

Informe a entregar:

 Los resultados de los puntos (A), (B), (C), (D), descritos en el procedimiento.

Procedimiento:

1. Ir al DOS (ubíquese en el directorio raíz principalmente. Escriba cd... ENTER varias veces hasta
llegar al mismo).
2. Escriba el comando DEBUG y presione ENTER. Se debe desplegar un guión (-). Este es el
indicador para introducir comandos directos a memoria.
3. Escriba el comando “r” y presione ENTER. Se mostrarán los 4 registros generales del procesador,
los de pila e índices, los 4 registros de segmento, el registro IP (puntero de instrucciones), el
registro de Estado ( ver material de clases - códigos) y alguna instrucción residente en la dirección
del IP ( no es relevante ).
4. Tome nota del estado de los registros visibles y explique la nomenclatura del registro de
Estado. (ver tabla en material teórico) Punto (A).

Prof. Sergio A. Cotes M., 1


UNIVERSIDAD TECNOLÓGICA DE PANAMÁ 
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES 
ORGANIZACIÓN Y ARQUITECTURAS DE COMPUADORAS
DEBUG y Registros Visibles del Procesador (1ra parte)
LABORATORIO #3.

NV: No overflow
UP: Up, incremento
EI: Enabled Interrupt
PL: Plus, positivo
NZ: No zero
NA: No auxiliar
PO: Parity odd, paridad impar
NC: No carry

Nota: Cuando se trabaja con DEBUG, el DOS establece un área denominada PSP (Prefijo de
Segmento de Programa) de 256 bytes (100h) y establece el IP en 100h (el tamaño del PSP),
permitiendo manipular las direcciones siguientes generadas por la combinación CS:IP
(segmento:desplazamiento). Esta posición se considerará como el primer byte de su programa y debe
contener una instrucción ejecutable.

Observe que los registros de segmento tienen toda la misma dirección inicial. Esto sucede sólo
cuando trabajamos bajo esta modalidad, directo en memoria. Aquí, el DOS combina el PSP, la pila,
y los segmentos en un área de 64K como máximo, la cual usted puede manejar como convenga, es
decir, usted debe definir explícitamente cada área a utilizar ( segmentos ).

5. Ahora procederemos a introducir un pequeño programa en el Segmento de Código, en lenguaje


simbólico, para luego ejecutarlo paso a paso. Recuerde que debe estar en modo comando ( - ) y que
nuestras instrucciones deben iniciar a partir de 100h.

6. Para esto, utilizaremos el comando “a” ENTER o “a cs:100” ENTER.

Cada valor después de los (:) se llama desplazamiento y al lado se debe escribir cada instrucción.

Al lado del 0100 escriba la primera instrucción … seguida de


ENTER y así sucesivamente...

xxxx:0100 mov ax, 0125 ENTER ( mueve el valor 0125 a AX )

A partir de aquí, el desplazamiento lo controla DEBUG…ya


que cada instrucción ocupa “n” cantidad de bytes. Continúe
introduciendo las siguientes instrucciones.

Prof. Sergio A. Cotes M., 2


UNIVERSIDAD TECNOLÓGICA DE PANAMÁ 
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES 
ORGANIZACIÓN Y ARQUITECTURAS DE COMPUADORAS
DEBUG y Registros Visibles del Procesador (1ra parte)
LABORATORIO #3.

add bx, 0038 ( suma el valor 0038 a BX )


mov cx, ax ( mueve el contenido de AX a CX )
sub ax, 0050 ( resta 0050 al reg. AX )
mov dx, ax ( mueve AX al reg. DX )
mul dx ( multiplica AX por DX, resultado en AX y borra DX)
div cx ( divide AX entre CX, resultado en AX, residuo en DX )
nop ( no operar )

Después de la última instrucción (nop), vuelva a teclear “enter” dos veces. Esto habilitará la línea
de comando (-) nuevamente. Para verificarlo, asegúrese de ver en pantalla el guión otra vez, tal
como al principio cuando escribió DEBUG...

7. Ahora, proceda a anotar las direcciones ocupadas por cada instrucción de su programa, desde
la primera a la última... Punto - (B).

Para ver su programa en memoria traducido, teclee: u 0100,0111 (es decir, el primer y último
desplazamiento del segmento de códigos donde incluyó su programa). Ahora, podrá apreciar en
pantalla las instrucciones captadas previamente por usted, acompañadas por sus similares en
lenguaje hexadecimal.

Estructura de una instrucción típica:

xxxx : 9999 ABCD99 instruc registros, valores

segm : desplaz Leng. Hex Lenguaje simbólico ( ensamblador )

Prof. Sergio A. Cotes M., 3


UNIVERSIDAD TECNOLÓGICA DE PANAMÁ 
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES 
ORGANIZACIÓN Y ARQUITECTURAS DE COMPUADORAS
DEBUG y Registros Visibles del Procesador (1ra parte)
LABORATORIO #3.

8. Tome nota de las instrucciones de lenguaje hexadecimal para cada instrucción en lenguaje
simbólico que se introdujo a la memoria y calcule cuántos bytes ocupa su programa. Cada dos
caracteres en lenguaje hexadecimal equivale a un byte... Punto - (C).

Por ejem: 166B:0104 2D5003 (6 caracteres) SUB AX,0350 = 3 bytes

Teclee el comando “r” y verifique los registros... Notará que la nueva instrucción ubicada en el
desplazamiento 0100 es la primera de su programa, es decir, lo que indica el registro IP, obsérvelo
en pantalla. Ya no es la misma de la primera vez porque utilizamos esa dirección.

9. Vamos a ejecutar nuestro programa... La instrucción a ejecutarse será la que indique el registro IP.

Para eso teclee el comando “t” y pulse ENTER... Este comando permite ejecutar y esperar. Después
de cada ejecución, anote los cambios en todos los registros... Punto - (D).

Continúe tecleando “t” hasta que termine el programa después de ejecutar (nop). Recuerde que la
memoria contiene otras instrucciones que no nos interesan, ubicadas después de nuestro programa.
No las ejecute!.

Si desea volver a ejecutar su programa debe limpiar los reg. Ax, Bx, Cx, Dx y el IP. Para esto,
utilice el comando “r” seguido por el reg. ( ejm: r ax ). Aparecerán (:). Escriba cero (enter). Haga
lo mismo para los otros registros mencionados y asigne 0100 al IP.

El registro IP siempre indicará la instrucción a ejecutarse inmediatamente, por eso debe


redireccionarse a 0100 para que se ubique en el desplazamiento de nuestra primera instrucción. Si no
lo hace, se ejecutarán otras instrucciones posteriores en memoria, y puede causar error.

10. Podemos guardar nuestro programa para revisarlo más adelante y para eso se debe realizar lo
siguiente:

 Asegúrese de estar en modo comando (-).


 Póngale un nombre válido al programa (8 caracteres máx): teclee N nombre.COM
(ENTER)
La extensión debe ser .COM ( bajo esta modalidad )
 Se debe definir el tamaño del programa en bytes (sólo usted sabe) y para eso haga lo siguiente:

- Primero utilice el comando “r bx” para mostrar su contenido e ingrese 0 para limpiar el
registro bx.
- Ahora utilice el comando “r cx” y póngale como valor el tamaño de su programa en Hex.
Transfórmelo de decimal a hexadecimal. ( use la calculadora ) No se equivoque!
- Debug utiliza estos dos registros para guardar las direcciones extremas de su programa.

Prof. Sergio A. Cotes M., 4


UNIVERSIDAD TECNOLÓGICA DE PANAMÁ 
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES 
ORGANIZACIÓN Y ARQUITECTURAS DE COMPUADORAS
DEBUG y Registros Visibles del Procesador (1ra parte)
LABORATORIO #3.

 Grabe su programa tecleando el comando “w”. Observará un mensaje que indica que se
grabaron “n” bytes de su programa en hexadecimal. No debe ser cero!.

Para verificar esto salga de DEBUG tecleando el comando “q”. Observe el directorio donde está
ubicado. Allí debe estar guardado su programa. El tamaño que presente debe ser el mismo que
calculó a lo interno del DEBUG en decimal.

Para cargarlo entonces teclee: DEBUG nombre.COM y verifique el mismo...

Nota: Comando “g desplazamiento final”…ejecuta todo el programa y muestra el resultado final.

Prof. Sergio A. Cotes M., 5


UNIVERSIDAD TECNOLÓGICA DE PANAMÁ 
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES 
ORGANIZACIÓN Y ARQUITECTURAS DE COMPUADORAS
DEBUG y Registros Visibles del Procesador (1ra parte)
LABORATORIO #3.

Fin del Procedimiento


Entregue un informe de resultados con los puntos A, B, C, D resueltos. ( 60 ptos ).

Investigue y responda: ( 40 ptos )

1. ¿Cuál es la diferencia entre una instrucción simbólica y una hexadecimal?


2. ¿Cómo está compuesta una dirección de memoria? ¿Qué indica cada parte?
3. Explique los dos métodos para calcular el tamaño de un programa
4. Resuma para qué se utilizaron los comandos: r, a, u, t, n, w, q, g del DEBUG.

NOTA: El informe se entrega en un folder sencillo con gancho en el centro. Debe contener:

- Página de presentación ( títulos, nombre y número del lab, profesor, integrantes, cédulas, grupo,
año, etc. )
- Cada punto A, B, C, D resuelto y debidamente identificado con su letra y cualquier explicación
pertinente.
- Las preguntas con sus respectivas respuestas, claramente explicadas y sustentadas. Si utilizó
bibliografía o internet, anótela.
- Un comentario o conclusión original del grupo sobre la experiencia del laboratorio.

ADVERTENCIA: De encontrarse dos proyectos iguales, ambos serán calificados con cero. Esto
no se aplica a los resultados en sí, sino a las respuestas de las preguntas, conclusiones, presentación,
etc.

Prof. Sergio A. Cotes M., 6

Вам также может понравиться