LAB4SDG115

Embed Size (px)

Citation preview

  • 8/17/2019 LAB4SDG115

    1/21

    UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERÍA Y ARQUITECTURA

    ESCUELA DE INGENIERÍA ELÉCTRICASISTEMAS DIGITALES PROGRAMABLES.

    Laboratorio No 4: “ Impresora y Ratón”

    Catedrático:

    Ing. Ricardo Cortez.

    Instructor:

    Ernesto Cerón Rodríguez

    Alumnos: Carnet:Sagastume Peñate, Victor Salomón SP11024

    Ciudad Universitaria, Mayo de 2016

  • 8/17/2019 LAB4SDG115

    2/21

    SDG-115

    L aboratorio No 4.

    INTRODUCCIÓN.-

    Los periféricos sirven para comunicar la computadora con el exterior, estos lograncaptar las señales de entrada a través de un teclado o un ratón y también quemuestren los resultados gráficamente ya sea en la pantalla o en forma de impresión.Los periféricos suelen poder conectarse a los distintos puertos de la computadora.En general, éstos pueden conectarse o desconectarse de la computadora, pero lamisma seguiría funcionando, aunque con menos capacidades. Las interrupcionesson parte importante de estos sistemas en forma de software ya que permiten alusuario interactuar con los periféricos.

    El presente reporte de laboratorio inicialmente muestra; la explicación delprocedimiento correspondiente a la práctica de laboratorio que consiste ensamblar,enlace y verificación del funcionamiento de los programas asignados tal como serealizó en las prácticas anteriores; posteriormente la práctica se profundiza en eluso del ratón y la impresor con ayuda del lenguaje ensamblador y las interrupcionesque facilitan enormemente la tarea por el hecho de que no es necesario trabajardirectamente con instrucciones para la impresora, sino que con los puertos paraleloa los que están conectados. No habiendo más que agregar, se ha preparado el siguientereporte.

  • 8/17/2019 LAB4SDG115

    3/21

    SDG-115

    L aboratorio No 4.

    OBJETIVOS.-

    OBJETIVO GENERAL:

    Reconocer los conocimientos básicos sobre control de algunos de los periféricosmás utilizados en una computadora como lo son ratón, impresora, etc.

    OBJETIVOS ESPECÍFICOS: Identificar las características sobre el uso de interrupciones relacionadas con

    el manejo del ratón y de la impresora.

    Crear códigos eficaces en lenguaje ensamblador que resuelvan problemascon el mínimo de instrucciones posibles.

  • 8/17/2019 LAB4SDG115

    4/21

    SDG-115

    L aboratorio No 4.

    MARCO TEÓRICO.

    PROGRAMACIÓN DE E/S:

    Definición de interrupción Una interrupción es un estado en el cual elmicroprocesador detiene la ejecución de un programa para atender una peticiónespecial solicitada por el propio programa o por un dispositivo físico conectado almicroprocesador externamente.

    Las interrupciones fueron creadas para facilitar al programador el acceso a losdiferentes dispositivos de la computadora (puertos de comunicaciones, terminales,impresoras, etc.).Ejecución de una interrupción Cuando durante la ejecución de unprograma se produce una interrupción, el microprocesador realiza los siguientespasos:

    1. Detiene la ejecución del programa.2. Almacena los registros CS, IP y Banderas en la pila3. Modifica el CS y el IP para que apunten a la dirección donde se encuentra larutina de interrupción.4. Ejecuta las instrucciones de la rutina de interrupción.5. Restablece usando la instrucción RETI los valores originales de los registros CS,IP y Banderas.

    TIPOS DE INTERRUPCIONES:

    El microprocesador puede atender dos tipos de interrupciones: interrupciones porsoftware e interrupciones por hardware. Las interrupciones por software sonllamadas desde los programas y son proporcionadas por el sistema operativo (MS-DOS). Existen dos tipos de estas: las interrupciones del DOS y las interrupcionesdel BIOS (Basic Input Output System o Sistema Básico de Entrada/Salida). Estasinterrupciones son invocadas con la instrucción INT del ensamblador. Por otro lado,las interrupciones por Hardware son proporcionadas por el propio microprocesadory también existen dos tipos: interrupciones por hardware internas y lasinterrupciones por hardware externas.

    Las interrupciones internas son invocadas por el microprocesador cuando seproduce alguna operación incorrecta, como por ejemplo, un intento de dividir porcero o una transferencia de datos entre registros de diferentes longitudes. Lasinterrupciones externas son provocadas por los dispositivos periféricos conectadosal microprocesador. Para lograr esto, a cada dispositivo periférico se le asigna unalínea física de interrupción que lo comunica con el microprocesador por medio deun circuito integrado auxiliar, el cual se conoce como controlador programable deinterrupciones (PIC).

  • 8/17/2019 LAB4SDG115

    5/21

    SDG-115

    L aboratorio No 4.

    Las computadoras basadas en el microprocesador 8086/8088 cuentan solamentecon un PIC, con lo cual pueden proporcionar hasta 8 líneas de interrupción (IRQ),las cuales son llamadas IRQ0 a IRQ7, por otro lado, las computadoras basadas enel microprocesador 80286 y posteriores cuentan con dos chips controladores, conlos cuales pueden proporcionar hasta un máximo de 16 líneas IRQ, las cuales sonllamadas IRQ0 a IRQ15.

    La siguiente es una lista de las interrupciones por software disponibles por elsistema operativo. Interrupciones del BIOS Manejo de dispositivos periféricos

    INT 10H Manejo de la pantalla. INT 13H Manejo de unidades de disco. INT 14H Manejo de los puertos de comunicaciones (RS232). INT 15H Manejo de cinta magnética.

    INT 16H Manejo del teclado. INT 17H Manejo de la impresoraServicios de fecha y hora:

    INT 1AH Manejo del reloj.Impresión de pantalla:

    INT 5H Impresión de la información contenida en la pantalla .Interrupciones del DOS:

    INT 20H Termina la ejecución de un programa. INT 22H Dirección de terminación. Guarda la dirección donde se transfiere el

    control cuando termina la ejecución del programa. INT 23H Dirección de la interrupción que se ejecuta cuando se presiona Ctrl-

    Break. INT 24H Manejo de errores críticos. INT 25H Lectura directa de sectores del disco. INT 26H Escritura directa de sectores del disco. INT 27H Terminar un programa y devolver el control al DOS sin borrar el

    programa de la memoria. INT 21H Esta interrupción proporciona una gran cantidad de funciones, las

    cuales deben ser invocadas en conjunto con el registro AH.

  • 8/17/2019 LAB4SDG115

    6/21

    SDG-115

    L aboratorio No 4.

    DESARROLLO DE LA PRÁCTICA.-

    1. Digite , ensamble y enlace el programa del anexo “A”. Verifique elfuncionamiento del programa.

    El código utilizado fue el siguiente:

    1. ; Programa que prueba las capacidades de la impresora. 2. ;---------------- Segmento de datos ---------------- 3. 4. DATOS SEGMENT PARA PUBLIC 'DATA' 5. 6. TEXTO DB 'Este mensaje debe aparecer en la impresora.' , 0DH, 0AH, 0AH 7. DB 'Además, este otro mensaje debe aparecer en el siguiente renglón' 8. DB 0DH, 0AH, 0AH, 0AH 9. DB 9 , 'Fin' , 9 , 'del' , 9 , 'texto' , 0CH 10. FIN DB 0

    11. 12. DATOS ENDS13. ;---------------- Segmento de pila ------------------ 14. PILA SEGMENT PARA STACK 'STACK' 15. DB 256 DUP ( 0 ) 16. PILA ENDS17. ;---------------- Segmento de código ----------------- 18. COD SEGMENT PARA PUBLIC 'CODE' 19. ASSUME CS : COD, DS : DATOS, SS : PILA20. 21. CODIGO PROC FAR22. 23. MOV AX , DATOS24. MOV DS , AX 25. MOV AH , 40H 26. MOV BX , 4 27. MOV CX , OFFSET FIN28. SUB CX , OFFSET TEXTO29. LEA DX, TEXTO30. INT 21H 31. MOV AX , 4C00H 32. INT 21H 33. 34. CODIGO ENDP35. COD ENDS36. END CODIGO

    De igual manera que en la práctica anterior se realizó el proceso de ensamblado yenlace. El resultado se presenta en la siguiente figura:

  • 8/17/2019 LAB4SDG115

    7/21

    SDG-115

    L aboratorio No 4.

    Figura 1: Resultado de ensamblado y enlace del archivo AnexoA.asm.

    Como se puede observar en la figura 1 nuestro programa fue ensamblado y

    enlazado correctamente pero debido a que no se cuenta con una impresora nuestroprograma no pudo ejecutarse correctamente, así que para apreciar el resultado loejecutaremos en el emu8086 obteniendo como resultado la siguiente ventana quese muestra en la figura 2.

    Figura 2. Resultado de correr el programa del anexo A

    en la impresora del 8086.

  • 8/17/2019 LAB4SDG115

    8/21

    SDG-115

    L aboratorio No 4.

    2. Investigue si su computadora tiene instalado un controlador de ratónmediante un programa como el procedimiento CHKM en las copias adjuntas.Si no tiene controlador, es parte de la práctica conseguirlo e instalarlo.

    El código utilizado fue el siguiente:

    1. ;UN PROGRAMA QUE DESPLIEGA EL NUMERO DE VERSIÓN DEL 2. ;CONTROLADOR DEL RATON Y EL TIPO DE RATON INSTALADO 3. 4. . MODEL SMALL 5. .DATA 6. MES1 DB 13 , 10 , 'NO MOUSE/MOUSE DRIVER found.$' 7. MES2 DB 13 , 10 , 'Mouse driver versión' 8. M1 DB ' ' , 13 , 10 , '$' 9. TYPES DW T1 , T2 , T3 , T4 , T510. T1 DB 'Bus$' 11. T2 DB 'Serial$' 12. T3 DB 'InPort$' 13. T4 DB 'PS/2$' 14. T5 DB 'HP$' 15. MES3 DB 'mouse installed.' , 13 , 10 , '$' 16. 17. . CODE 18. . STARTUP19. CALL CHKM ;Verificación presencia del ratón 20. JNC MAIN1 ;Si el ratón existe 21. MOV DX, OFFSET MES122. JMP MAIN2 ;Si no hay ratón 23. MAIN1: 24. MOV AX , 0 25. INT 33H ;Obtiene la versión del controlador 26. MOV DI , OFFSET M1

    27. MOV

    AL

    ,BH

    ;Guarda versión mayor 28. CALL DISP29. MOV BYTE PTR [ DI ] , '.' ;Guarda punto 30. INC DI 31. MOV AL , BL ;Guarda versión menor 32. CALL DISP33. MOV DX, OFFSET MES2 ;Despliega versión 34. MOV AH , 9 35. INT 21H 36. MOV SI , OFFSET TYPES ;Apunta hacia tipos 37. MOV AH , 0 38. MOV AL , CH 39. DEC AX 40. ADD SI , AX 41. ADD SI , AX 42. MOV DX, [ SI ] ;Despliega tipos 43. MOV AH , 9 44. INT 21H 45. MOV DX, OFFSET MES346. MAIN2: 47. MOV AH , 9 48. INT 21H 49. . EXIT50. ; Un procedimiento que verifica la presencia de un ratón.

  • 8/17/2019 LAB4SDG115

    9/21

    SDG-115

    L aboratorio No 4.

    51. ;***Parámetros de salida*** 52. ; Acarreo=1, si no hay ratón. 53. ; Acarreo=0, si hay ratón. 54. 55. CHKM PROC NEAR56. MOV AX , 3533H ;obtiene el vector INT 33H 57. INT 21H ;vector en ES:BX 58. MOV AX , ES 59. OR AX , BX ;determina si 0000:0000 60. STC 61. JZ CHKM1 ;si no hay controlador de ratón 62. CMP BYTE PTR ES : [ BX] , 0CFH 63. STC 64. JE CHKM1 ;si no hay controlador de ratón 65. MOV AX , 0 66. INT 33H ;restaura al ratón 67. CMP AX , 0 68. STC 69. JZ CHKM1 ;si no hay ratón 70. CLC

    71. CHKM1: 72. RET 73. CHKM ENDP74. ;guarda el numero de versión en el código ASCII 75. ;***Parámetros de entrada*** 76. ;AL=versión 77. ;DS:DI=dirección de almacenamiento 78. ;***Parámetros de salida*** 79. ;numero de versión ASCII almacenado en DS:DI 80. DISP PROC NEAR81. MOV AH , 0 82. AAM ;convierte a bcd 83. ADD AX , 3030H 84. CMP AH , 30H ;guarda versión ASCII 85. JE DISP1 ;elimina cero 86. MOV [ DI ] , AH 87. INC DI 88. DISP1 : 89. MOV [ DI ] , AL 90. INC DI 91. RET 92. DISP ENDP93. END

    En la figura 3 se muestra la ejecución del programa chkm.asm en el EMU8086obteniendo como resultado el driver y la versión del mouse instalado en nuestra PC.

  • 8/17/2019 LAB4SDG115

    10/21

    SDG-115

    L aboratorio No 4.

    1

    Figura 3. Ejecución del programa chkm.asm

    3. Repita el procedimiento del paso anterior para el programa del anexo “B”. El código utilizado fue el siguiente:

    1. ; Programa que prueba las capacidades del ratón. 2. IZ EQU 0 3. DER EQU 1 4. ;---------------- Segmento de datos ---------------- 5. DATOS SEGMENT PARA PUBLIC 'DATA' 6. MENSAJE DB 'ERROR: El ratón no está disponible.' , 0AH, 0DH, '$' 7. VISIBLE DB 0 8. DATOS ENDS9. ;---------------- Segmento de pila ------------------ 10. PILA SEGMENT PARA STACK 'STACK' 11. DB 256 DUP ( 0 ) 12. PILA ENDS13. ;---------------- Segmento de código ----------------- 14. COD SEGMENT PARA PUBLIC 'CODE' 15. ASSUME CS : COD, DS : DATOS, SS : PILA16. CODIGO PROC FAR17. MOV AX , DATOS18. MOV DS , AX 19. MOV AX , 0 ; Inicializar el ratón. 20. INT 33H 21. CMP AX , 0 ; ¿No se inicializó el ratón exitosamente? 22. JNE SALTO ; Si hubo éxito, saltar. 23. MOV AH , 9 24. LEA DX, MENSAJE

    25. INT 21H ; Desplegar mensaje de error. 26. JMP SALIR ; Saltar al fin del programa. 27. SALTO: MOV AX , 1 ; hacer visible el apuntador. 28. INT 33H 29. INC VISIBLE30. LAZO: MOV AX , 5 ; Obtener información sobre pulsación del ratón. 31. MOV BX , IZ ; Botón a detectar: izquierdo. 32. INT 33H 33. CMP BL , 1 ; ¿ Se presionó el botón izquierdo ? 34. JNZ PRUEBA2 ; Si no es así, saltar a la otra prueba.

  • 8/17/2019 LAB4SDG115

    11/21

    SDG-115

    L aboratorio No 4.

    1

    35. AND VISIBLE , 1 ; Borrar lodos los bits de la variable 36. ;VISIBLE menos el primero. 37. JZ MOSTRAR ; Si el puntero es invisible, mostrarlo. 38. MOV AX , 2 ; Función para ocultar el ratón. 39. JMP SALTO240. MOSTRAR: MOV AX , 1 ; Función para mostrar el ratón. 41. SALTO2 : INT 33H 42. INC VISIBLE43. PRUEBA2: MOV AX , 6 ; Obtener información sobre liberación de botón . 44. MOV BX , DER ; Botón a detectar: derecho. 45. INT 33H 46. CMP BL , 1 ; ¿Se liberó el botón derecho? 47. JZ OCULTAR ; Si es así, salir del programa. 48. JMP LAZO49. OCULTAR: MOV AX , 2 ; Oculta el ratón. 50. INT 33H 51. SALIR : MOV AX , 4C00H 52. INT 21H 53. CODIGO ENDP54. COD ENDS

    55. END CODIGO

    De la misma manera que en el paso 1 se realizó el proceso de ensamblado y enlace.El resultado se presenta en la siguiente figura:

    Figura 4: Resultado de ensamblado y enlace del archivo AnexoB.asm.

    4. Describa qué sucede al ejecutar el programa controlador del ratón desdeuna ventana de WINDOWS y desde el MS-DOS. ¿Hay alguna diferencia?

    Si corremos el programa directamente desde el archivo .EXE aparece y desapareceinstantáneamente la pantalla del DOS, pero si lo corremos desde el MS-DOSobtenemos lo siguiente:

    Figura 5. Programa CHKM desde el MS-DOS.

  • 8/17/2019 LAB4SDG115

    12/21

    SDG-115

    L aboratorio No 4.

    1

    5. Ensamble y ejecute el programa del ejemplo 7-26 en el libro de Brey 5ª ed..Haga correcciones si hay errores de codificación.El código utilizado fue el siguiente:

    1. ;ejemplo 7-26 del libro 2. . MODEL SMALL 3. .DATA 4. MES DB 13 , 'X POSITION= ' 5. MX DB ' ' 6. DB 'Y POSITION= ' 7. MY DB ' $' 8. X DW ?9. Y DW ?10. 11. . CODE 12. . STARTUP13. CALL TM_ON14. JC MAIN4

    15. MAIN1: 16. MOV AX , 3 17. INT 33H 18. CMP BX , 1 19. JE MAIN320. CMP CX , X21. JNE MAIN222. CMP DX, Y23. JE MAIN124. 25. MAIN2: 26. MOV X , CX 27. MOV Y , DX 28. MOV DI , OFFSET MX29. MOV AX , CX 30. CALL PLACE31. MOV DI , OFFSET MY32. MOV AX , Y33. CALL PLACE34. MOV AX , 2 35. INT 33H 36. MOV AH , 9 37. MOV DX, OFFSET MES38. INT 21H 39. MOV AX , 1 40. INT 33H 41. JMP MAIN1

    42. 43. MAIN3: 44. MOV AX , 0 45. INT 33H 46. 47. MAIN4: 48. . EXIT49. 50. CHKM PROC NEAR51. MOV AX , 3533H

  • 8/17/2019 LAB4SDG115

    13/21

    SDG-115

    L aboratorio No 4.

    1

    52. INT 21H 53. MOV AX , ES 54. OR AX , BX 55. STC 56. JZ CHKM157. 58. CMP BYTE PTR ES : [ BX] , 0CFH 59. STC 60. JE CHKM161. MOV AX , 0 62. INT 33H 63. CMP AX , 0 64. STC 65. JZ CHKM166. CLC 67. CHKM1: 68. RET 69. CHKM ENDP70. TM_ON PROC NEAR71. CALL CHKM

    72. JC TM_ON173. MOV AX , 1 74. INT 33H 75. CLC 76. TM_ON1: 77. RET 78. TM_ON ENDP79. PLACE PROC NEAR80. MOV CX , 0 81. MOV BX , 10 82. PLACE1 : 83. MOV DX, 0 84. DIV BX 85. PUSH DX 86. INC CX 87. CMP AX , 0 88. JNE PLACE189. PLACE2 : 90. MOV BX , 5 91. SUB BX , CX 92. PLACE3 : 93. POP DX 94. ADD DL , 30H 95. MOV [ DI ] , DL 96. INC DI 97. LOOP PLACE398. CMP BX , 0

    99. JE PLACE5100. MOV CX , BX 101. PLACE4 : 102. MOV BYTE PTR [ DI ] , 20H 103. INC DI 104. LOOP PLACE4105. PLACE5 : 106. RET 107. PLACE ENDP108. END

  • 8/17/2019 LAB4SDG115

    14/21

    SDG-115

    L aboratorio No 4.

    1

    En la figura siguiente se muestra el ensamblado del código del ejemplo 726 ytambién se muestra el resultado del programa al ejecutarlo; el cual desarrolla unprograma que lee la posición del ratón mientras se encuentre dentro del terminal,muestra las coordenadas x e y en la que se encuentra el ratón en ese momento. Elresultado se muestra en la siguiente imagen:

    Figura 6: Resultado de ensamblado y ejecución del Eje726.asm.

    ASIGNACIONES. Diseñar un programa que sea capaz de detectar el click derecho, el

    click izquierdo u otro del mouse y que imprima en pantalla el nombredel botón oprimido.

    El código es el siguiente:

  • 8/17/2019 LAB4SDG115

    15/21

    SDG-115

    L aboratorio No 4.

    1

    Figura 7: Resultado de ejecución del Asignación 1.

    Desarrolla un programa que muestre toda la información posible delmouse (posición x, posición y, cantidad de botones del mouse, botónpresionado, etc) al hacer click derecho y que salga del programa alhacer click izquierdo.

    El código es el siguiente:

  • 8/17/2019 LAB4SDG115

    16/21

    SDG-115

    L aboratorio No 4.

    1

  • 8/17/2019 LAB4SDG115

    17/21

    SDG-115

    L aboratorio No 4.

    1

  • 8/17/2019 LAB4SDG115

    18/21

    SDG-115

    L aboratorio No 4.

    1

    Figura 8: Resultado de ejecución de Asignación 2.

    Realizar la impresión de la portada de su reporte haciendo uso de lasinstrucciones de salto de línea y las interrupciones necesarias.

    El código es el siguiente:

  • 8/17/2019 LAB4SDG115

    19/21

    SDG-115

    L aboratorio No 4.

    1

    }

    Figura 9: Impresión de Asignación 3.

  • 8/17/2019 LAB4SDG115

    20/21

    SDG-115

    L aboratorio No 4.

    2

    Diseñar un programa que sea capaz de imprimir en una página depapel caracteres ASCII similar al desarrollado en el apéndice b delLaboratorio 2, y anexar la página impresa.

    El codigo es el siguiente

  • 8/17/2019 LAB4SDG115

    21/21

    SDG-115

    L aboratorio No 4.

    2

    Figura 10:Impresión de Asignación 4..

    CONCLUSIONES.-

    En base al conocimiento adquirido con la investigación teórica y su correspondienteaplicación práctica, se llegaron a las siguientes conclusiones:

    Es importante reconocer los estándares para los diferentes puertos de unaPC y poseer una mejor comprensión de su funcionamiento. Existensimuladores para usar dichos puertos como el MASM y el emu8086, pero sedebe tomar en cuenta se necesita tener los controladores necesarios paracada periférico de e/s utilizado.

    El uso de instrucciones en lenguaje ensamblador y del manejo deinterrupciones puede adquirir un control de manera más personalizada conlos periféricos de entrada y salida de una PC, tal como se presentan en eldesarrollo de las asignaciones en las cuales se controlaron el ratón y laimpresora por medio de las direcciones de los puertos.