Sei sulla pagina 1di 18

SISTEMAS DE COMPUTACIÓN II

Módulo I Programar en Assembler

Unidad II Subrutinas e interrupciones

Trabajo práctico Requerido Nº 2.A. Codificación y ejecución en Assembler con


llamado a subrutinas

Presentación
Luego de haber realizado las propuestas de los Trabajos Prácticos anteriores
tiene las herramientas suficientes para poder apropiarse de las “7 notas
musicales” que le permitirán programar en Assembler. Este Trabajo Práctico
tiene como propósito que usted aprenda a trabajar con llamado a subrutinas
con el consiguiente uso de pila, instrucciones PUSH y POP, y el pasaje de
parámetros. Dado que tanto las interrupciones por hardware como las
interrupciones por software son formas de llamado a subrutinas.

Consignas

1) Al igual que lo solicitado en el Trabajo Práctico Requerido Nº 1 llevará a


cabo un ejercicio de llamado a Subrutina. Se realizará en primer lugar el
Ejercicio 32 del libro Assembler desde Cero tal como hemos realizado los
ejercicios del Trabajo Practico 1.

2) Luego, de verificar su funcionamiento con sus nuevas direcciones para


datos e instrucciones, se modificará de forma que el proceso de
conversión ASCCI a Binario, se concentre en una subrutina que se ubicará
a partir de la dirección de memoria 0080h superior a la del programa.

3) Para entender el procedimiento a seguir pueden consultarse los Ejercicios


46a y 46b del libro Assembler desde Cero Edición 3 Mejorada.
Como en Trabajo Practico anterior, direcciones y datos deben provenir
de los números de su DNI.

La estimación de resultados, además de los resultados se debe indicar


como evolucionara la pila, en función de las instrucciones.
Se debe prestar especial atención a como varían los registros SP e IP, y
luego de ejecutar una instrucción que afecte a la pila debe examinar la
memoria para verificar que la pila progrese de acuerdo a lo esperado. A
tal fin, en un ejercicio desarrollado el Debug en la página 58 del mismo
texto, se han subrayado los valores obtenidos que guarda la

Sistemas de Computación II / Pág. 1


pila, obtenidos mediante el comando E así como los valores SP que
interesa ver.

Por otro lado, para orientar la realización y presentación de este trabajo le


facilitamos la siguiente guía:

a. La codificación y ejecución de cada ejercicio los deberá presentar en


formato Word. Es por ello que deberá copiar la pantalla de Debug a un
documento Word u otro procesador de texto.1
b. Antes de la ejecución de cada programa, deberá determinar en un
borrador los valores que espera obtener en memoria como resultado de la
ejecución de dicho programa. Tenga en cuesta este punto porque luego
formará parte importante del Trabajo Práctico.

c. El programa Debug se utiliza de manera similar que en Sistemas de


Computación I. La única diferencia importante, consiste en que el
programa ahora se codifica mediante el comando A, y no con el comando
E.

Para realizar el trabajo solicitado debe realizar la siguiente secuencia de


comandos:

1. Comando E, para ingresar los datos elegidos (direcciones y valores


elegidos de su DNI).

2. Comando A, acompañado con la dirección inicial del programa para


editar el programa en Assembler (dirección inicial elegida del DNI),
cuya ultima instrucción de cada secuencia será INT 20. Por ejemplo, A
3000 si el programa inicia en la dirección 3000.

1
Forma de copiar una pantalla del Debug en el Word

1) Abrir un documento Word para realzar el trabajo paralelamente realizar el ejercicio


solicitado en el programa Debug.
2) Con el botón derecho del mouse hacer clic en la barra superior de la pantalla del DOS
3) Hacer clic en el botón izquierdo del mouse en Editar.
4) Hacer clic con el botón izquierdo en la opción “Seleccionar todo” y posicionar el
mouse en el margen superior izquierdo
5) Mover la flecha del mouse sobre dicho punto y presionar Enter, al realizarlo se
dejará de ver lo seleccionado.
6) Volver al documento creado en Word u otro procesador de texto y presionar las
teclas Ctrl V para copiar lo seleccionado en el punto anterior.

Sistemas de Computación II / Pág. 2


3. Comando U, acompañado con la dirección inicial del programa para
corroborar que el programa ha sido bien escrito.

4. Comando RIP, para que el IP apunte a la dirección de la primera


instrucción.

5. Comando R, para verificar que la primera instrucción a ejecutar sea la


correcta.

6. Sucesión de comandos T hasta que la próxima instrucción a ejecutar


sea INT 20, la cual no debe ser ejecutada, para evitar que se pierda
el programa editado en pantalla. Cada vez, que se hace un comando T
debe observar que los registros cambien de la forma esperada, y que la
próxima instrucción sea la correcta. Deberá identificar como cambian
los registros con flechas. Éstas pueden comenzar en: el número
(constante) que acompaña la instrucción, en otro registro, en memoria
o en la dirección indicada por Debug. Y terminar en el registro que la
instrucción ordeno que cambie (usted puede visualizar un ejemplo de
los solicitado en el ejercicio N°13 del libro de Asembler desde cero)

7. Antes de ejecutar una instrucción de salto se debe aclarar en el


documento del TP si el salto se va a producir o no en función del valor
que tengan los flags antes de dicha ejecución. Para ello deberá escribir
al lado de la instrucción de salto que tiro el debug si el valor de los
flags permiten o no que se produzca el salto. Además, deberá unir con
una flecha (generada con el dibujador del Word) el valor anterior del IP
con el nuevo valor luego de ejecutar la instrucción.

8. Asimismo, en las instrucciones de salto se deben resaltar el valor de los


flags intervinientes para el caso que se produzca el salto. Identifique
con un resaltador si existen la coincidencia, entre la dirección que se
quiere saltar (indicada en la instrucción de salto) y la dirección que le
sigue (indicada por el IP).

9. Una vez ejecutado el programa, mediante el comando E, se debe


examinar los resultados obtenidos en memoria en las direcciones que
corresponda, éstos deben coincidir con los resultados esperados,
estimados en el paso 0.
Si esta verificación no es correcta debe encontrar la fuente de error y
realizarlo nuevamente.
10. En la presentación del TP deberá mostrar el desarrollo de la ejecución
del programa indicando gráficamente, cada vez, que un registro o flag
cambia de valor.

Sistemas de Computación II / Pág. 3


Criterios de corrección

En la corrección de este Trabajo Práctico, tendremos en cuenta los siguientes


criterios:
a. La claridad del Trabajo entregado y su encuadre en cuanto a
consignas de formato general.
b. La precisión de los resultados
c. La comprensión demostrada en la justificación de resultados y
pasos intermedios.
d. El cumplimiento del plazo previsto para su entrega.

Utilice estos criterios para anticiparse a los resultados de la evaluación.


Adecue su producción a los parámetros señalados. Si tiene dudas, consulte a
su tutor.

Sistemas de Computación II / Pág. 4


Ejercicio 31 (en mi libro, el ejercicio 31 es el que corresponde con ASCII a binario):

Diagrama y tabla de resultados:

DIRECCIÓN VALOR
2000 04
2001 30
2002 34
2003 39
2004 41
3001 00 (00000000)
3002 04 (00000100)
3003 09 (00001001)
3004 0A (00001010)

Sistemas de Computación II / Pág. 5


Cargando datos y codificando (sin sub-rutina):

Sistemas de Computación II / Pág. 6


Ejecutando programa:

Sistemas de Computación II / Pág. 7


Sistemas de Computación II / Pág. 8
Sistemas de Computación II / Pág. 9
Sistemas de Computación II / Pág. 10
Comprobando resultados:

Sistemas de Computación II / Pág. 11


Ejercicio 31 (con sub-rutinas):

Diagrama y tabla de resultados:

DIRECCIÓN VALOR
2000 04
2001 30
2002 34
2003 39
2004 41
3001 00 (00000000)
3002 04 (00000100)
3003 09 (00001001)
3004 0A (00001010)

Sistemas de Computación II / Pág. 12


Cargando datos:

Codificando:

Sistemas de Computación II / Pág. 13


Ejecutando programa:

Sistemas de Computación II / Pág. 14


Sistemas de Computación II / Pág. 15
Sistemas de Computación II / Pág. 16
Sistemas de Computación II / Pág. 17
Comprobando resultados:

Sistemas de Computación II / Pág. 18

Potrebbero piacerti anche