laboratorio1.pdf

2
Curso: Programación de Bajo Nivel (Assembler) Ing. de Sistemas UNA-Puno Prof: Ing. MSc. Henry I. Condori A. Semestre: Otoño 2004 LABORATORIO 1 Para el presente laboratorio se utilizara SIMX86.EXE, que es un simulador assembler, se puede encontrarse en la página de curso, luego sigue los pasos de instalación. (leer el archivo readme). Además de los archivos que requiere cada Parte. Parte I: 1. Carga SIMX86, encontraras tres ventanas básicas de trabajo: - un editor: donde se escribe el programa en assembler. - La memoria que muestra la codificación de las instrucciones a código máquina, así como los datos. - El emulador, que permite ejecutar los programas paso a paso (step). 2. Ubica el menú de opciones (File:Load) y carga el programa “EX1.X86”, ensámblalo. Ejecuta las instrucciones paso a paso y observa el trabajo de los registros y flags. Qué hace el programa, analiza el código máquina, cual es la dirección base, y qué significan los valores finales? 3. Ahora ingreso los siguientes valores a las direcciones de memoria [1000] 34, [1001] 12, [1002] 01, [1003] 02. Qué se observa y cual es el resultado? Parte II: 1. Carga el archivo “EX2.X86”, aquí se introducen nuevos conceptos por lo que es necesario estudiar el código. 2. Que indican esas dos cadenas “a:” y “b:”? 3. Describir como trabaja cada una de las instrucciones, prueba con diversos valores que ocurre? 4. Prueba la opción RUN que ocurre? Parte III. 1. Carga el archivo “EX3.X86”, aquí se introducen conceptos de mapeo de direcciones I/O. 2. Describe como trabaja el programa, además prueba combinando los switchs FFF0 Aa FFF6, que ocurre con los leds (FFF8 a FFFE? Por que no se puede editar éstas direcciones de memoria? Parte IV 1. Carga el archivo “EX4.X86”, aquí se muestran conceptos de DMA. 2. Colocar el valor 5 a la dirección [1000].Luego ejecuta el programa. Describe como trabaja el programa, Qué ocurre? 3. Que ocurre si colocamos el valor 12 en la dirección antes mencionada (1000h)?, explicar de acuerdo al tracing del programa. Parte V: 1. Para esta parte necesitarás cargar dos archivos “EX5a.X86” y “EX5b.X86”, aquí se muestran conceptos de Vectores de Interrrupción. 2. Carga el primer programa partiendo dela dirección 0, y ensamblalo, luego carga el segundo en la dirección 100h que será en código de nuestra interrupción. Una vez ensamblados no olvidar activar el vector de interrupción a 100h., finalmente asegúrate que el switch FFF0 está en off. Cuando se este ejecutando activa la interrupción y observa que pasa. 3. Explica el funcionamiento del programa. Además detalla los pasos para emplear la dirección 2000h para la interrupción en vez de la 100h. 4. Escribe una rutina de interrupción que haga algo simple, verifica que funcione.

Transcript of laboratorio1.pdf

  • Curso: Programacin de Bajo Nivel (Assembler) Ing. de Sistemas UNA-Puno Prof: Ing. MSc. Henry I. Condori A. Semestre: Otoo 2004

    LABORATORIO 1

    Para el presente laboratorio se utilizara SIMX86.EXE, que es un simulador assembler, se puede encontrarse en la pgina de curso, luego sigue los pasos de instalacin. (leer el archivo readme). Adems de los archivos que requiere cada Parte. Parte I:

    1. Carga SIMX86, encontraras tres ventanas bsicas de trabajo: - un editor: donde se escribe el programa en assembler. - La memoria que muestra la codificacin de las instrucciones a cdigo mquina, as como los

    datos. - El emulador, que permite ejecutar los programas paso a paso (step).

    2. Ubica el men de opciones (File:Load) y carga el programa EX1.X86, ensmblalo. Ejecuta las

    instrucciones paso a paso y observa el trabajo de los registros y flags. Qu hace el programa, analiza el cdigo mquina, cual es la direccin base, y qu significan los valores finales?

    3. Ahora ingreso los siguientes valores a las direcciones de memoria [1000] 34, [1001] 12, [1002] 01, [1003] 02. Qu se observa y cual es el resultado?

    Parte II:

    1. Carga el archivo EX2.X86, aqu se introducen nuevos conceptos por lo que es necesario estudiar el cdigo.

    2. Que indican esas dos cadenas a: y b:? 3. Describir como trabaja cada una de las instrucciones, prueba con diversos valores que ocurre? 4. Prueba la opcin RUN que ocurre?

    Parte III.

    1. Carga el archivo EX3.X86, aqu se introducen conceptos de mapeo de direcciones I/O. 2. Describe como trabaja el programa, adems prueba combinando los switchs FFF0 Aa FFF6, que

    ocurre con los leds (FFF8 a FFFE? Por que no se puede editar stas direcciones de memoria? Parte IV

    1. Carga el archivo EX4.X86, aqu se muestran conceptos de DMA. 2. Colocar el valor 5 a la direccin [1000].Luego ejecuta el programa. Describe como trabaja el

    programa, Qu ocurre? 3. Que ocurre si colocamos el valor 12 en la direccin antes mencionada (1000h)?, explicar de acuerdo

    al tracing del programa. Parte V:

    1. Para esta parte necesitars cargar dos archivos EX5a.X86 y EX5b.X86, aqu se muestran conceptos de Vectores de Interrrupcin.

    2. Carga el primer programa partiendo dela direccin 0, y ensamblalo, luego carga el segundo en la direccin 100h que ser en cdigo de nuestra interrupcin. Una vez ensamblados no olvidar activar el vector de interrupcin a 100h., finalmente asegrate que el switch FFF0 est en off. Cuando se este ejecutando activa la interrupcin y observa que pasa.

    3. Explica el funcionamiento del programa. Adems detalla los pasos para emplear la direccin 2000h para la interrupcin en vez de la 100h.

    4. Escribe una rutina de interrupcin que haga algo simple, verifica que funcione.

  • Curso: Programacin de Bajo Nivel (Assembler) Ing. de Sistemas UNA-Puno Prof: Ing. MSc. Henry I. Condori A. Semestre: Otoo 2004

    Parte VI:

    1. Empleando las tcnicas de codificacin de instrucciones realiza la conversin de las siguientes instrucciones ensamblador a lenguaje mquina (realzalo manualmente).

    Cdigo Asm Opcode binario Hex1 Hex2 mov cx,0 a: get put add ax,ax put add ax,ax put add ax,ax put add cx,1 cmp cx,4 jb a Halt

    Parte VII:

    1. Para este ejercicio debes cargar EX6.X86, donde se muestra un ejemplo de cdigo auto modificable. 2. Ejecuta el programa, que pasa?. Escribe el cdigo assembler generado en la direccin 100. Explica el

    proceso.

    Adicionales con simx86:

    1. Escribe un programa assembler en simx86 para leer un array de words que comienzan en la direccin 1000h de un tamao dado (especificado en cx), y localiza el mximo valor del array y mustralo.

    2. Escribe un programa que calcule el complemento a dos visto en clase (se sugiere emplear arrays).

    3. Escribe un programa para realizar un juego de luces secuencial utilizando los leds de simx86 (FFF8-

    FFFE).