Академический Документы
Профессиональный Документы
Культура Документы
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).
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 ).
Cada valor después de los (:) se llama desplazamiento y al lado se debe escribir cada instrucción.
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.
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).
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.
10. Podemos guardar nuestro programa para revisarlo más adelante y para eso se debe realizar 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.
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.
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.