Está en la página 1de 21

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERA Y ARQUITECTURA


ESCUELA DE INGENIERA ELCTRICA
SISTEMAS DIGITALES PROGRAMABLES.

Laboratorio No 4: Impresora y Ratn


Catedrtico:
Ing. Ricardo Cortez.
Instructor:
Ernesto Cern Rodrguez

Alumnos:
Sagastume Peate, Victor Salomn

Carnet:
SP11024

Ciudad Universitaria, Mayo de 2016

SDG-115

INTRODUCCIN.-

Los perifricos sirven para comunicar la computadora con el exterior, estos logran
captar las seales de entrada a travs de un teclado o un ratn y tambin que
muestren los resultados grficamente ya sea en la pantalla o en forma de impresin.
Los perifricos suelen poder conectarse a los distintos puertos de la computadora.
En general, stos pueden conectarse o desconectarse de la computadora, pero la
misma seguira funcionando, aunque con menos capacidades. Las interrupciones
son parte importante de estos sistemas en forma de software ya que permiten al
usuario interactuar con los perifricos.
El presente reporte de laboratorio inicialmente muestra; la explicacin del
procedimiento correspondiente a la prctica de laboratorio que consiste ensamblar,
enlace y verificacin del funcionamiento de los programas asignados tal como se
realiz en las prcticas anteriores; posteriormente la prctica se profundiza en el
uso del ratn y la impresor con ayuda del lenguaje ensamblador y las interrupciones
que facilitan enormemente la tarea por el hecho de que no es necesario trabajar
directamente con instrucciones para la impresora, sino que con los puertos paralelo
a los que estn conectados. No habiendo ms que agregar, se ha preparado el siguiente
reporte.

Laboratorio No 4.

SDG-115

OBJETIVOS.-

OBJETIVO GENERAL:
Reconocer los conocimientos bsicos sobre control de algunos de los perifricos
ms utilizados en una computadora como lo son ratn, impresora, etc.

OBJETIVOS ESPECFICOS:

Identificar las caractersticas sobre el uso de interrupciones relacionadas con


el manejo del ratn y de la impresora.

Crear cdigos eficaces en lenguaje ensamblador que resuelvan problemas


con el mnimo de instrucciones posibles.

Laboratorio No 4.

SDG-115

MARCO TERICO.
PROGRAMACIN DE E/S:
Definicin de interrupcin Una interrupcin es un estado en el cual el
microprocesador detiene la ejecucin de un programa para atender una peticin
especial solicitada por el propio programa o por un dispositivo fsico conectado al
microprocesador externamente.
Las interrupciones fueron creadas para facilitar al programador el acceso a los
diferentes dispositivos de la computadora (puertos de comunicaciones, terminales,
impresoras, etc.).Ejecucin de una interrupcin Cuando durante la ejecucin de un
programa se produce una interrupcin, el microprocesador realiza los siguientes
pasos:
1. Detiene la ejecucin del programa.
2. Almacena los registros CS, IP y Banderas en la pila
3. Modifica el CS y el IP para que apunten a la direccin donde se encuentra la
rutina de interrupcin.
4. Ejecuta las instrucciones de la rutina de interrupcin.
5. Restablece usando la instruccin RETI los valores originales de los registros CS,
IP y Banderas.

TIPOS DE INTERRUPCIONES:
El microprocesador puede atender dos tipos de interrupciones: interrupciones por
software e interrupciones por hardware. Las interrupciones por software son
llamadas desde los programas y son proporcionadas por el sistema operativo (MSDOS). Existen dos tipos de estas: las interrupciones del DOS y las interrupciones
del BIOS (Basic Input Output System o Sistema Bsico de Entrada/Salida). Estas
interrupciones son invocadas con la instruccin INT del ensamblador. Por otro lado,
las interrupciones por Hardware son proporcionadas por el propio microprocesador
y tambin existen dos tipos: interrupciones por hardware internas y las
interrupciones por hardware externas.
Las interrupciones internas son invocadas por el microprocesador cuando se
produce alguna operacin incorrecta, como por ejemplo, un intento de dividir por
cero o una transferencia de datos entre registros de diferentes longitudes. Las
interrupciones externas son provocadas por los dispositivos perifricos conectados
al microprocesador. Para lograr esto, a cada dispositivo perifrico se le asigna una
lnea fsica de interrupcin que lo comunica con el microprocesador por medio de
un circuito integrado auxiliar, el cual se conoce como controlador programable de
interrupciones (PIC).
Laboratorio No 4.

SDG-115
Las computadoras basadas en el microprocesador 8086/8088 cuentan solamente
con un PIC, con lo cual pueden proporcionar hasta 8 lneas de interrupcin (IRQ),
las cuales son llamadas IRQ0 a IRQ7, por otro lado, las computadoras basadas en
el microprocesador 80286 y posteriores cuentan con dos chips controladores, con
los cuales pueden proporcionar hasta un mximo de 16 lneas IRQ, las cuales son
llamadas IRQ0 a IRQ15.
La siguiente es una lista de las interrupciones por software disponibles por el
sistema operativo. Interrupciones del BIOS Manejo de dispositivos perifricos

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 magntica.
INT 16H Manejo del teclado.
INT 17H Manejo de la impresora
Servicios de fecha y hora:
INT 1AH Manejo del reloj.
Impresin de pantalla:
INT 5H Impresin de la informacin contenida en la pantalla.
Interrupciones del DOS:
INT 20H Termina la ejecucin de un programa.
INT 22H Direccin de terminacin. Guarda la direccin donde se transfiere el
control cuando termina la ejecucin del programa.
INT 23H Direccin de la interrupcin que se ejecuta cuando se presiona CtrlBreak.
INT 24H Manejo de errores crticos.
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 interrupcin proporciona una gran cantidad de funciones, las
cuales deben ser invocadas en conjunto con el registro AH.

Laboratorio No 4.

SDG-115
DESARROLLO DE LA PRCTICA.1. Digite, ensamble y enlace el programa del anexo A. Verifique el
funcionamiento del programa.
El cdigo utilizado fue el siguiente:
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.

; Programa que prueba las capacidades de la impresora.


;---------------- Segmento de datos ---------------DATOS
TEXTO

SEGMENT PARA PUBLIC 'DATA'


DB
DB
DB
DB
FIN

'Este mensaje debe aparecer en la impresora.',0DH,0AH,0AH


'Adems, este otro mensaje debe aparecer en el siguiente rengln'

0DH,0AH,0AH,0AH
9,'Fin',9,'del',9,'texto',0CH
DB 0

DATOS
ENDS
;---------------- Segmento de pila -----------------PILA
SEGMENT PARA STACK 'STACK'
DB
256 DUP (0)
PILA
ENDS
;---------------- Segmento de cdigo ----------------COD
SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:COD,DS:DATOS,SS:PILA
CODIGO
MOV
MOV
MOV
MOV
MOV
SUB
LEA
INT
MOV
INT
CODIGO
COD
END

PROC

FAR

AX,DATOS
DS,AX
AH,40H
BX,4
CX,OFFSET FIN
CX,OFFSET TEXTO
DX,TEXTO
21H
AX,4C00H
21H
ENDP
ENDS
CODIGO

De igual manera que en la prctica anterior se realiz el proceso de ensamblado y


enlace. El resultado se presenta en la siguiente figura:

Laboratorio No 4.

SDG-115

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 nuestro
programa no pudo ejecutarse correctamente, as que para apreciar el resultado lo
ejecutaremos en el emu8086 obteniendo como resultado la siguiente ventana que
se muestra en la figura 2.

Figura 2. Resultado de correr el programa del anexo A


en la impresora del 8086.

Laboratorio No 4.

SDG-115
2. Investigue si su computadora tiene instalado un controlador de ratn
mediante un programa como el procedimiento CHKM en las copias adjuntas.
Si no tiene controlador, es parte de la prctica conseguirlo e instalarlo.
El cdigo utilizado fue el siguiente:
1. ;UN PROGRAMA QUE DESPLIEGA EL NUMERO DE VERSIN 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 versin'
8.
M1
DB '
',13,10,'$'
9.
TYPES DW T1,T2,T3,T4,T5
10.
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.
.STARTUP
19.
CALL CHKM
;Verificacin presencia del ratn
20.
JNC MAIN1
;Si el ratn existe
21.
MOV DX, OFFSET MES1
22.
JMP MAIN2
;Si no hay ratn
23.
MAIN1:
24.
MOV AX,0
25.
INT 33H
;Obtiene la versin del controlador
26.
MOV DI,OFFSET M1
27.
MOV AL,BH
;Guarda versin mayor
28.
CALL DISP
29.
MOV BYTE PTR [DI],'.';Guarda punto
30.
INC DI
31.
MOV AL,BL
;Guarda versin menor
32.
CALL DISP
33.
MOV DX,OFFSET MES2
;Despliega versin
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 MES3
46.
MAIN2:
47.
MOV AH,9
48.
INT 21H
49.
.EXIT
50.
; Un procedimiento que verifica la presencia de un ratn.

Laboratorio No 4.

SDG-115
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.

;***Parmetros de salida***
; Acarreo=1, si no hay ratn.
; Acarreo=0, si hay ratn.
CHKM PROC NEAR
MOV AX,3533H
;obtiene el vector INT 33H
INT 21H
;vector en ES:BX
MOV AX,ES
OR AX,BX
;determina si 0000:0000
STC
JZ CHKM1
;si no hay controlador de ratn
CMP BYTE PTR ES: [BX],0CFH
STC
JE CHKM1
;si no hay controlador de ratn
MOV AX,0
INT 33H
;restaura al ratn
CMP AX,0
STC
JZ CHKM1
;si no hay ratn
CLC
CHKM1:
RET
CHKM ENDP
;guarda el numero de versin en el cdigo ASCII
;***Parmetros de entrada***
;AL=versin
;DS:DI=direccin de almacenamiento
;***Parmetros de salida***
;numero de versin ASCII almacenado en DS:DI
DISP PROC NEAR
MOV AH,0
AAM
;convierte a bcd
ADD AX,3030H
CMP AH,30H
;guarda versin ASCII
JE DISP1
;elimina cero
MOV [DI],AH
INC DI
DISP1:
MOV [DI],AL
INC DI
RET
DISP ENDP
END

En la figura 3 se muestra la ejecucin del programa chkm.asm en el EMU8086


obteniendo como resultado el driver y la versin del mouse instalado en nuestra PC.

Laboratorio No 4.

10

SDG-115

Figura 3. Ejecucin del programa chkm.asm


3. Repita el procedimiento del paso anterior para el programa del anexo B.
El cdigo utilizado fue el siguiente:
1. ; Programa que prueba las capacidades del ratn.
2.
IZ EQU 0
3.
DER EQU 1
4.
;---------------- Segmento de datos ---------------5.
DATOS SEGMENT PARA PUBLIC 'DATA'
6.
MENSAJE DB 'ERROR: El ratn no est disponible.',0AH,0DH,'$'
7.
VISIBLE DB 0
8.
DATOS ENDS
9.
;---------------- Segmento de pila -----------------10.
PILA SEGMENT PARA STACK 'STACK'
11.
DB 256 DUP (0)
12.
PILA ENDS
13.
;---------------- Segmento de cdigo ----------------14.
COD SEGMENT PARA PUBLIC 'CODE'
15.
ASSUME CS:COD,DS:DATOS,SS:PILA
16.
CODIGO PROC FAR
17.
MOV AX,DATOS
18.
MOV DS,AX
19.
MOV AX,0
; Inicializar el ratn.
20.
INT 33H
21.
CMP AX,0
; No se inicializ el ratn 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 VISIBLE
30.
LAZO: MOV AX,5 ; Obtener informacin sobre pulsacin del ratn.
31.
MOV BX,IZ
; Botn a detectar: izquierdo.
32.
INT 33H
33.
CMP BL,1
; Se presion el botn izquierdo ?
34.
JNZ PRUEBA2 ; Si no es as, saltar a la otra prueba.

Laboratorio No 4.

11

SDG-115
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.

AND VISIBLE,1 ; Borrar lodos los bits de la variable


;VISIBLE menos el primero.
JZ MOSTRAR
; Si el puntero es invisible, mostrarlo.
MOV AX,2
; Funcin para ocultar el ratn.
JMP SALTO2
MOSTRAR:MOV AX,1 ; Funcin para mostrar el ratn.
SALTO2:INT 33H
INC VISIBLE
PRUEBA2:MOV AX,6 ; Obtener informacin sobre liberacin de botn.
MOV BX,DER
; Botn a detectar: derecho.
INT 33H
CMP BL,1
; Se liber el botn derecho?
JZ OCULTAR
; Si es as, salir del programa.
JMP LAZO
OCULTAR:MOV AX,2 ; Oculta el ratn.
INT 33H
SALIR: MOV AX,4C00H
INT 21H
CODIGO ENDP
COD ENDS
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 ratn desde
una ventana de WINDOWS y desde el MS-DOS. Hay alguna diferencia?
Si corremos el programa directamente desde el archivo .EXE aparece y desaparece
instantneamente la pantalla del DOS, pero si lo corremos desde el MS-DOS
obtenemos lo siguiente:

Figura 5. Programa CHKM desde el MS-DOS.


Laboratorio No 4.

12

SDG-115

5. Ensamble y ejecute el programa del ejemplo 7-26 en el libro de Brey 5 ed..


Haga correcciones si hay errores de codificacin.
El cdigo 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.
.STARTUP
13.
CALL TM_ON
14.
JC MAIN4
15.
MAIN1:
16.
MOV AX,3
17.
INT 33H
18.
CMP BX,1
19.
JE MAIN3
20.
CMP CX,X
21.
JNE MAIN2
22.
CMP DX,Y
23.
JE MAIN1
24.
25.
MAIN2:
26.
MOV X,CX
27.
MOV Y,DX
28.
MOV DI, OFFSET MX
29.
MOV AX,CX
30.
CALL PLACE
31.
MOV DI,OFFSET MY
32.
MOV AX,Y
33.
CALL PLACE
34.
MOV AX,2
35.
INT 33H
36.
MOV AH,9
37.
MOV DX,OFFSET MES
38.
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.
.EXIT
49.
50.
CHKM PROC NEAR
51.
MOV AX,3533H

Laboratorio No 4.

13

SDG-115
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.

INT 21H
MOV AX,ES
OR AX,BX
STC
JZ CHKM1
CMP BYTE PTR ES:[BX],0CFH
STC
JE CHKM1
MOV AX,0
INT 33H
CMP AX,0
STC
JZ CHKM1
CLC
CHKM1:
RET
CHKM ENDP
TM_ON PROC NEAR
CALL CHKM
JC TM_ON1
MOV AX,1
INT 33H
CLC
TM_ON1:
RET
TM_ON ENDP
PLACE PROC NEAR
MOV CX,0
MOV BX,10
PLACE1:
MOV DX,0
DIV BX
PUSH DX
INC CX
CMP AX,0
JNE PLACE1
PLACE2:
MOV BX,5
SUB BX,CX
PLACE3:
POP DX
ADD DL,30H
MOV [DI],DL
INC DI
LOOP PLACE3
CMP BX,0
JE PLACE5
MOV CX,BX
PLACE4:
MOV BYTE PTR [DI],20H
INC DI
LOOP PLACE4
PLACE5:
RET
PLACE ENDP
END

Laboratorio No 4.

14

SDG-115
En la figura siguiente se muestra el ensamblado del cdigo del ejemplo 726 y
tambin se muestra el resultado del programa al ejecutarlo; el cual desarrolla un
programa que lee la posicin del ratn mientras se encuentre dentro del terminal,
muestra las coordenadas x e y en la que se encuentra el ratn en ese momento. El
resultado se muestra en la siguiente imagen:

Figura 6: Resultado de ensamblado y ejecucin del Eje726.asm.

ASIGNACIONES.
Disear un programa que sea capaz de detectar el click derecho, el
click izquierdo u otro del mouse y que imprima en pantalla el nombre
del botn oprimido.
El cdigo es el siguiente:

Laboratorio No 4.

15

SDG-115

Figura 7: Resultado de ejecucin del Asignacin 1.

Desarrolla un programa que muestre toda la informacin posible del


mouse (posicin x, posicin y, cantidad de botones del mouse, botn
presionado, etc) al hacer click derecho y que salga del programa al
hacer click izquierdo.
El cdigo es el siguiente:

Laboratorio No 4.

16

SDG-115

Laboratorio No 4.

17

SDG-115

Laboratorio No 4.

18

SDG-115

Figura 8: Resultado de ejecucin de Asignacin 2.

Realizar la impresin de la portada de su reporte haciendo uso de las


instrucciones de salto de lnea y las interrupciones necesarias.
El cdigo es el siguiente:

Laboratorio No 4.

19

SDG-115

Figura 9: Impresin de Asignacin 3.

Laboratorio No 4.

20

SDG-115

Disear un programa que sea capaz de imprimir en una pgina de


papel caracteres ASCII similar al desarrollado en el apndice b del
Laboratorio 2, y anexar la pgina impresa.
El codigo es el siguiente

Laboratorio No 4.

21

SDG-115

Figura 10:Impresin de Asignacin 4..


CONCLUSIONES.-

En base al conocimiento adquirido con la investigacin terica y su correspondiente


aplicacin prctica, se llegaron a las siguientes conclusiones:

Es importante reconocer los estndares para los diferentes puertos de una


PC y poseer una mejor comprensin de su funcionamiento. Existen
simuladores para usar dichos puertos como el MASM y el emu8086, pero se
debe tomar en cuenta se necesita tener los controladores necesarios para
cada perifrico de e/s utilizado.

El uso de instrucciones en lenguaje ensamblador y del manejo de


interrupciones puede adquirir un control de manera ms personalizada con
los perifricos de entrada y salida de una PC, tal como se presentan en el
desarrollo de las asignaciones en las cuales se controlaron el ratn y la
impresora por medio de las direcciones de los puertos.

Laboratorio No 4.

También podría gustarte