Beruflich Dokumente
Kultur Dokumente
Laboratorio #4
Impresora y Ratn
AS08005
INTRODUCCION
Nuestra computadora esta repleta de tantos dispositivos de E/S como nuestras necesidades de
trabajo nos lo demanden, as pues para algunos un scanner podra ser sumamente importante y
vital y para otros ni siquiera tendra utilidad alguna, pero independiente si utilizamos algunos
perifricos que otros usan o no existen algunos dispositivos E/S que sin lugar a dudas son
fundamentales para cualquier persona que utiliza una computadora y desee tanto brindarle
informacin de su equipo y as mismo obtener resultados de manera tangible a partir de su
esquipo. De manera que dos de los perifricos mas importantes que nos permiten recibir y
brindarle informacin a la computadora sern de nuestro particular inters en la presenta
practica, adems de utilizarlos en el MS-DOS, se le agrega el hecho de poder recolectar
informacin sobre dichos dispositivos que son el ratn y la impresora, por consiguiente lo que
buscaremos obtener a travs de la implementacin de programas en ensamblador ser la
informacin pertinente sobre la ubicacin en el mapa de memoria de nuestra computadora de los
anteriores dispositivos mencionados,a travs de ello nos introducimos al tema de el manejo de
estos perifricos debido a que posteriormente se desarrollara un proyecto donde el manejo de
puertos ser un tema esencial, con el desarrollo de la presente practica se empezara a formar la
base de conocimientos que nos sern necesarios implementar en nuestro proyecto, razn por lo
cual esta practica es de suma importancia para la correcta implementacin de nuestro proyecto.
OBJETIVOS
OBJETIVO GENERAL
Aplicar los conceptos vistos en clase sobre el trato de los perifricos: mouse e impresora
de manera que se logre la recoleccin de datos relacionados a dichos perifricos.
OBJETIVOS ESPECIFICOS
Indagar sobre las interrupciones disponibles para el mouse y la impresora y aplicar dichos
conocimientos en el desarrollo de los problemas planteados como asignacin
Implementar un programa en ensamblador para obtener los datos pertinentes respecto al
ratn sobre su ubicacin (coordenadas X, Y).
Implementar un programa para obtener datos sobe la versin de driver de nuestro mouse.
Implementar un programa que imprima la portada del reporte en la impresora virtual del
EMU 8086 V4.05 en delante.
PROCEDIMIENTO DE LA PRACTICA
1. Digite, ensamble y enlace el programa del anexo A. Verifique el funcionamiento del
programa
Debido a que no contamos con una impresora matricial para la cual este programa esta
diseado incluimos la correspondiente captura de la impresora simulada por el EMU 8086 en
la cual podemos observar el correcto funcionamiento del programa del anexo A, que prueba
las capacidades de la impresora.
ACLARACION: TODOS LOS ARCHIVOS .LST solicitados se han incluido en un anexo para
evitar una mala apariencia del reporte al tenerlo incrustados en la explicacin y realizacin de
los correspondientes programas asignados.
Dicho lo anterior pasamos al procedimiento de la practica.
A. Pasamos el programa del Anexo A a un editor de texto y lo guardamos en
C:\MASM611\BIN como .ASM
;Universidad de El Salvador
;Escuela de IngenieraElctrica
;Sistemas Digitales Programables I
;Arriola Suarez, Jaime Javier AS08005
;programa que da informacin sobre el mouse
.MODEL SMALL
.DATA
M1 DB 10,13,'NO TIENE UN CONTROLADOR DE MOUSE!!$'
M2 DB 10,13,'SU VERSION DE DRIVER ES:$'
M3 DB '
',10,13,'$'
M4 DW T1,T2,T3,T4,T5
T1 DB 'BUS$'
T2 DB 'SERIAL$'
T3 DB 'INPORT$'
T4 DB 'PS/2$'
T5 DB 'HP$'
M5 DB 'MOUSE INSTALADO',13,10,'$'
.CODE
.STARTUP
CALL CHEK ;VERIFICAMOS SI HAY RATON
JNC MAIN1;SI HAY VAMOS A MAIN1
LEA DX,M1
JMP MAIN2;SI NO HAY VAMOS A MAIN2
MAIN1:
MOV AX,24H;OBTIENE VERSION DEL DRIVER
INT 33H
LEA DI,M3
MOV AL,BH;GUARDA VERSION MAYOR
CALL DISP
MOV BYTE PTR [DI],'.'
MOV AL,BL;GUARDA VERSION MENOR
CALL DISP
LEA DX,M5
MOV AH,09H
INT 21H
LEA DX,M2;DESPLIEGA VERSION
MOV AH,09H
INT 21H
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
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.
MOV AH,0
AAM
;CONVIERTE A BCD
ADD AX,3030H
CMP AH,30H ;GUARDA VERSION ASCII
JE DISP1 ;ELIMINA 0
MOV [DI],AH
INC DI
DISP1:
MOV [DI],AL
INC DI
RET
DISP ENDP
END
CAPTURA DE ENSAMBLE, LINKEO Y EJECUCIN DEL PROGRAMA
B. Luego pasamos al MASM donde lo ensamblamos y likeamos generando asi mismo los
correspondientes archivos .OBJ, .LST y .EXE
D. Por ltimo pasamos de nuevo al MASM donde corremos el programa digitando ANEXB.EXE
y al presionar el botn derecho del raton obtendremos los correspondientes resultados
que ser el mensaje SE DETECTO EL BOTON DERECHO DEL RATON , caso contario no se
mostrara el mensaje si no hasta presionar el botn y similarmente el programa no
terminara su ejecucin si no hasta que el botn derecho se presione.
4. Describa qu sucede al ejecutar el programa controlador del ratn desde una ventana de
WINDOWS y desde el MS-DOS. Hay alguna diferencia?
Lo que sucede sencillamente es lo siguiente:
Cuando tenemos activa la ventana del DOS y hacemos click izquierdo o derecho el programa
detecta dicha accin y hace lo que hemos predispuesto har, para el caso utilice el programa del
anexo B por que lo que nos interesa saber es nicamente saber que pasa al ejecutar sobre una
ventana Windows o una de DOS, as pues las siguientes capturas muestran lo ocurrido:
En la primer imagen se puede apreciar la ventana de Windows seleccionada y sobre se hace click
izquierdo no obtenindose respuesta alguna de parte del programa RATON.EXE
En la siguiente imagen se ha seleccionado la ventana del DOS y sobre ella se hace click izquierdo
obtenindose como respuesta el mensaje SE DETECTO BOTON DERECHO DEL RATON
Por tanto podemos concluir que solo en la venta de DOS se puede hacer uso de este programa y no
al tener activa una ventana de Windows .
DESARROLLO DE LA ASIGNACION
1. Programa que sea capaz de obtener toda la informacin posible de su ratn(como el
ejemplo 7-26 ) y que adems pueda desplegarla en pantalla al oprimir alguno de sus
botones, as como permita la salida del programa al presionar otro botn del ratn.
CODIGO SOLUCION
1) ;UNIVERSIDAD DE EL SALVADOR
2) ;ESCUELA DE INGENIERAELCTRICA
3) ;SISTEMAS DIGITALES PROGRAMABLES I
4) ;ARRIOLA SUAREZ, JAIME JAVIER AS08005
5) ;PROGRAMA QUE PROPORCIONA INFORMACIN SOBRE EL MOUSE:
6) ;NUMERO DE BOTONES,POSICION Y TIPO DE MOUSE INSTALADO.
7) .MODEL SMALL
8) .DATA
9) M1 DB 'HA SELECCIONADO NO OBTENER INFORMACION DEL MOUSE!!$'
10) M2 DB 10,13,'SU VERSION DE DRIVER ES:$'
11) M3 DB '
',10,13,'$'
12) M4 DW T1,T2,T3,T4,T5
13) T1 DB 'BUS$'
14) T2 DB 'SERIAL$'
15) T3 DB 'INPORT$'
16) T4 DB 'PS/2$'
17) T5 DB 'HP$'
18) M5 DB 'MOUSE INSTALADO!!$'
19) M6 DB 'COORDENADA X:',10,13,'$'
20) POSX DB ' ',10,13
21) DB 'COORDENADA Y:',10,13,'$'
22) POSY DB '
$'
23) IZ EQU 0
24) DER EQU 1
25) VISIBLE DB 0
26) BOTONES DB 10,13,'EL NUMERO DE BOTONES ES: ','$'
27) .CODE
28) .STARTUP
29) CALL HABILITAME
30) JC FINALIZA
31) LAZO:
32) MOV AX,03H ;GUARDA EN CX POSICION HORIZONTAL Y EN DX POSICION
VERTICAL
33) INT 33H
34) MOV AX,CX
35) AAM
36) OR AX,3030H
37) LEA SI,POSX
38) MOV DS:[si],AX
39) MOV AX,DX
40) AAM
41) OR AX,3030H
42) LEA SI,POSY
94) RET
95) CHEKA ENDP
96) INFORMAME PROC NEAR
97) MOV AX,0;INICIALIZA EL MOUSE
98) INT 33H;DEJA EN EL BL EL NUMERO DE BOTONES
99) MOV AL,BL
100)
AAM
101)
OR AL,30H
102)
LEA SI,BOTONES
103)
MOV [SI+26],AL
104)
MOV AX,24H;OBTIENE VERSION DEL DRIVER
105)
INT 33H
106)
LEA DI,M3
107)
MOV AL,BH;GUARDA VERSION MAYOR
108)
CALL DISP
109)
MOV BYTE PTR [DI],'.'
110)
MOV AL,BL;GUARDA VERSION MENOR
111)
CALL DISP
112)
LEA DX,M5
113)
MOV AH,09H
114)
INT 21H
115)
LEA DX,M2;DESPLIEGA VERSION
116)
INT 21H
117)
LEA SI,M4;APUNTA A LA TABLA DE TIPOS
118)
MOV AH,0
119)
MOV AL,CH
120)
DEC AX
121)
ADD SI,AX
122)
ADD SI,AX
123)
MOV AH,09H
124)
MOV DX,[SI];DESPLIEGA TIPO
125)
INT 21H
126)
LEA DX,M3
127)
INT 21H
128)
LEA DX,M6
129)
INT 21H
130)
LEA DX,POSX
131)
INT 21H
132)
LEA DX,POSY
133)
INT 21H
134)
LEA DX,BOTONES
135)
INT 21H
136)
INFORMAME ENDP
137)
DISP PROC NEAR
138)
MOV AH,0
139)
AAM
;CONVIERTE A BCD
140)
ADD AX,3030H
141)
CMP AH,30H ;GUARDA VERSION ASCII
142)
JE DISP1 ;ELIMINA 0
143)
MOV [DI],AH
144)
INC DI
145)
146)
147)
148)
149)
150)
DISP1:
MOV [DI],AL
INC DI
RET
DISP ENDP
END
CAPTURAS DE ENSAMBLE, LINKEO Y CORRIDA DEL PROGRAMA
CONCLUSIONES
El manejo de puertos es sin duda alguna una tarea que amerita de nuestra especial
atencin ya que a travs de estos nuestros programas interactan con el mundo exterior
en el caso con el usuario de una manera mas amigable recibiendo datos no solo a travs
del teclado si no tambin del mouse y de otros tantos dispositivos para los cuales har
falta conocer su puerto de conexin como as mismo las acciones que este realizara,
similarmente con los puertos o dispositivos de salida obtenemos una manera de poder
tener en fsico los resultados de nuestros programas en el caso nos interesara imprimirlos,
la limitante es nicamente que para los programas aqu planteados se necesitara una
impresora matricial.
Nuevamente el uso de las interrupciones vuelve a ser un factor que no debe faltar dado
que sin ellas no podramos lograr la comunicacin con el mundo exterior aunque
tuviramos los puertos en nuestro sistema, as que es necesario que podamos acceder a la
informacin respectiva de las interrupciones de cada dispositivo para poder utilizarlo, y
por cierto esa fue en esencia la dificultad mas grande en este laboratorio el poder indagar
las diferentes interrupciones tanto para el mouse como para la impresora, pero con ese
inconveniente resuelto todo es cuestin de lgica de programacin.
Los programas en cuanto mas control tratan de obtener del hardware tienden a ser
lgicamente mas extensos y complicados de entender si estos no se documentan
adecuadamente, razn por lo cual hubo un programa llamado MUSE.EXE para el cual se
recurri una buena cantidad de procedimientos los cuales facilitaron en gran medida la
comprensin de lo que se estaba haciendo , sobre todo al momento de depurar los
errores que presento el programa en el proceso de la escritura del mismo , puesto que
solo se corra el cdigo en el EMU 8086 y se poda identificar el procedimiento que
generaba los resultados no deseados.
ANEXO
1. ARCHIVO .LST APENDICE A
Microsoft (R) Macro Assembler Version 6.11
APENA.ASM
05/16/12 14:45:08
Page 1 - 1
DB
FIN
DB
DB
0DH,0AH,0AH,0AH
9,'Fin',9,'del',9,'texto',0CH
DB
DATOS ENDS
PILA
0000 0100 [
00
]
0100
PILA
ENDS
COD
0000
CODIGO
0000 B8 ---- R
0003 8E D8
MOV
0005
0007
000A
000D
0011
0015
B4 40
BB 0004
B9 0080 R
81 E9 0000 R
8D 16 0000 R
CD 21
0017 B8 4C00
001A CD 21
AX,DATOS
MOV DS,AX
MOV
MOV
MOV
SUB
LEA
INT
AH,40H
BX,4
CX,OFFSET FIN
CX,OFFSET TEXTO
DX,TEXTO
21H
MOV
INT
AX,4C00H
21H
001C
CODIGO
ENDP
001C
COD
ENDS
END
CODIGO
05/16/12 14:45:08
Symbols 2 - 1
Size
COD . . . . . . . . . . . . . . 16 Bit
DATOS . . . . . . . . . . . . . 16 Bit
PILA . . . . . . . . . . . . . . 16 Bit
Para
Para
Para
Public 'CODE'
Public 'DATA'
Stack 'STACK'
Type
CODIGO . . . . . . . . . . . . . P Far
Value Attr
0000
Symbols:
Name
Type
FIN . . . . . . . . . . . . . . Byte
TEXTO . . . . . . . . . . . . . Byte
Value Attr
0080
0000
DATOS
DATOS
0 Warnings
0 Errors
2. ARCHIVO .LST APENDICE B
Microsoft (R) Macro Assembler Version 6.11
ANEXB.ASM
05/18/12 07:12:45
Page 1 - 1
IZ
DER
EQU
EQU
0
1
0000 45 52 52 4F 52 3A
disponible.',0AH,0DH,'$'
20 45 6C 20 72 61
74 F3 6E 20 6E 6F
20 65 73 74 E1 20
64 69 73 70 6F 6E
69 62 6C 65 2E 0A
0D 24
0026 00
MENSAJE
VISIBLE DB
0027
DATOS ENDS
DB
PILA
0000 0100 [
00
]
0100
PILA
ENDS
COD
0000
0000 B8 ---- R
0003 8E D8
CODIGO
PROC FAR
MOV AX,DATOS
MOV DS,AX
0005 B8 0000
0008 CD 33
000A 83 F8 00
000D 75 0A
SEGMENT
ASSUME
MOV
INT
CMP
JNE
AX,0
33H
; Inicializar el ratn.
000F B4 09
0011 8D 16 0000 R
0015 CD 21
MOV
LEA
INT
AH,9
DX,MENSAJE
21H
; Desplegar mensaje de error.
0017 EB 3F
JMP
0019 B8 0001
001C CD 33
001E FE 06 0026 R
SALTO:MOV
INT
INC
0022 B8 0005
ratn.
0025 BB 0000
0028 CD 33
LAZO: MOV
AX,5
MOV
INT
BX,IZ
33H
002A 80 FB 01
002D 75 15
prueba.
CMP
BL,1
JNZ
002F 80 26 0026 R 01
AND
VISIBLE,1
0034 74 05
mostrarlo.
JZ
MOSTRAR
0036 B8 0002
0039 EB 03
MOV
JMP
AX,2
SALTO2
003B B8 0001
ratn.
MOSTRAR:MOV
003E CD 33
0040 FE 06 0026 R
SALTO2:INT
INC
0044 B8 0006
botn.
0047 BB 0001
004A CD 33
PRUEBA2:MOV AX,6
004C 80 FB 01
004F 74 02
CMP
0051 EB CF
0053
0056
0058
005B
B8 0002
CD 33
B8 4C00
CD 21
MOV
INT
AX,1
33H
VISIBLE
; Obtener informacin sobre liberacin de
BL,1
JZ
OCULTAR
JMP
LAZO
005D
CODIGO
ENDP
005D
COD
ENDS
END
CODIGO
0000
0000 0A 0D 4E 4F 20 54
MOUSE!!$'
49 45 4E 45 20 55
4E 20 43 4F 4E 54
52 4F 4C 41 44 4F
52 20 44 45 20 4D
4F 55 53 45 21 21
24
0025 0A 0D 53 55 20 56
45 52 53 49 4F 4E
20 44 45 20 44 52
49 56 45 52 20 45
53 3A 24
0040 20 20 20 20 20 20
20 0A 0D 24
004A 0054 R 0058 R 005F R
0066 R 006B R
0054 42 55 53 24
0058 53 45 52 49 41 4C
24
005F 49 4E 50 4F 52 54
24
0066 50 53 2F 32 24
006B 48 50 24
05/15/12 18:42:28
Page 1 - 1
;Universidad de El Salvador
;Escuela de Ingenieria Electrica
;Sistemas Digitales Programables I
;Arriola Suarez,Jaime Javier AS08005
;programa que da informacion sobre el mouse
.MODEL SMALL
.DATA
M1 DB 10,13,'NO TIENE UN CONTROLADOR DE
M3 DB '
',10,13,'$'
M4 DW T1,T2,T3,T4,T5
T1 DB 'BUS$'
T2 DB 'SERIAL$'
T3 DB 'INPORT$'
T4 DB 'PS/2$'
T5 DB 'HP$'
006E 4D 4F 55 53 45 20
49 4E 53 54 41 4C
41 44 4F 0D 0A 24
0000
M5 DB 'MOUSE INSTALADO',13,10,'$'
.CODE
.STARTUP
CALL CHEK ;VERIFICAMOS SI HAY RATON
JNC MAIN1;SI HAY VAMOS A MAIN1
LEA DX,M1
JMP MAIN2;SI NO HAY VAMOS A MAIN2
MAIN1:
MOV AX,24H;OBTIENE VERSION DEL DRIVER
INT 33H
0017
001A
001C
0020
0022
0022
0025
E8 004D
73 06
8D 16 0000 R
EB 3D
0027
002B
002D
0030
8D 3E 0040 R
8A C7
E8 0057
C6 05 2E
LEA DI,M3
MOV AL,BH;GUARDA VERSION MAYOR
CALL DISP
MOV BYTE PTR [DI],'.'
0033
0035
0038
003C
003E
0040
0044
0046
8A C3
E8 004F
8D 16 006E R
B4 09
CD 21
8D 16 0025 R
B4 09
CD 21
0048
004C
004E
0050
0051
0053
0055
0057
0059
005B
005F
005F
0061
8D 36 004A R
B4 00
8A C5
48
03 F0
03 F0
8B 14
B4 09
CD 21
8D 16 0040 R
B8 0024
CD 33
B4 09
CD 21
;**PARAMETROS DE SALIDA**
;ACARREO =1 NO HAY RATON
;ACARREO =0 SI HAY RATON
CHEK PROC NEAR
0067
0067 B8 3533
006A CD 21
006C
006E
0070
0071
MOV AX,ES
OR BX,AX;COMPRUEBA SI 0000:0000
STC
JZ CHEK1;SI NO HAY DRIVER DE RATON
8C C0
0B D8
F9
74 13
0073 26: 80 3F CF
0077 F9
0078 74 0C
007A B8 0000
007D CD 33
007F 83 F8 00
0082 F9
0083 74 01
0085 F8
0086
0086 C3
0087
0087
0087
0089
008B
008E
0091
0093
0095
0096
B4 00
D4 0A
05 3030
80 FC 30
74 03
88 25
47
0096 88 05
0098 47
0099 C3
MOV [DI],AL
INC DI
RET
009A
DISP ENDP
END
Microsoft (R) Macro Assembler Version 6.11
MOUKSE.ASM
05/15/12 18:42:28
Symbols 2 - 1
Size
DGROUP . . . . . . . . . . . . .
GROUP
_DATA . . . . . . . . . . . . . 16 Bit 0080 Word Public 'DATA'
_TEXT . . . . . . . . . . . . . 16 Bit 009A Word Public 'CODE'
Procedures, parameters and locals:
Name
Type
Value Attr
Symbols:
Name
Type
@CodeSize . . . . . . . . . . .
@DataSize . . . . . . . . . . .
@Interface . . . . . . . . . . .
@Model . . . . . . . . . . . . .
@Startup . . . . . . . . . . . .L Near
@code . . . . . . . . . . . . . Text
@data . . . . . . . . . . . . . Text
@fardata? . . . . . . . . . . .
@fardata . . . . . . . . . . . . Text
@stack . . . . . . . . . . . . . Text
CHEK1 . . . . . . . . . . . . . L Near
DISP1 . . . . . . . . . . . . . L Near
M1 . . . . . . . . . . . . . . . Byte
M2 . . . . . . . . . . . . . . . Byte
Value Attr
Number
0000h
Number
0000h
Number
0000h
Number
0002h
0000 _TEXT
_TEXT
DGROUP
Text
FAR_BSS
FAR_DATA
DGROUP
0086 _TEXT
0096 _TEXT
0000 _DATA
0025 _DATA
M3 . . . . . . . . . . . . . . .
M4 . . . . . . . . . . . . . . .
M5 . . . . . . . . . . . . . . .
MAIN1 . . . . . . . . . . . . .
MAIN2 . . . . . . . . . . . . .
T1 . . . . . . . . . . . . . . .
T2 . . . . . . . . . . . . . . .
T3 . . . . . . . . . . . . . . .
T4 . . . . . . . . . . . . . . .
T5 . . . . . . . . . . . . . . .
Byte
Word
Byte
L Near
L Near
Byte
Byte
Byte
Byte
Byte
0040
004A
006E
0022
005F
0054
0058
005F
0066
006B
_DATA
_DATA
_DATA
_TEXT
_TEXT
_DATA
_DATA
_DATA
_DATA
_DATA
0 Warnings
0 Errors
Microsoft (R) Macro Assembler Version 6.11
ANEXB.ASM
05/18/12 07:12:45
Symbols 2 - 1
Size
COD . . . . . . . . . . . . . . 16 Bit
DATOS . . . . . . . . . . . . . 16 Bit
PILA . . . . . . . . . . . . . . 16 Bit
Para
Para
Para
Public 'CODE'
Public 'DATA'
Stack 'STACK'
Type
CODIGO . . . . . . . . . . . . . P Far
Value Attr
0000
Symbols:
Name
Type
Value Attr
DER . . . . . . . . . . . . . . Number
IZ . . . . . . . . . . . . . . .
Number
LAZO . . . . . . . . . . . . . . L Near 0022
MENSAJE . . . . . . . . . . . .
Byte
MOSTRAR . . . . . . . . . . . .
L Near
OCULTAR . . . . . . . . . . . .
L Near
PRUEBA2 . . . . . . . . . . . .
L Near
0001h
0000h
COD
0000
003B
0053
0044
DATOS
COD
COD
COD
SALIR . . . . . . . . . . . . .
SALTO2 . . . . . . . . . . . . .
SALTO . . . . . . . . . . . . .
VISIBLE . . . . . . . . . . . .
L Near
L Near
L Near
Byte
0058
003E
0019
0026
COD
COD
COD
DATOS
0 Warnings
0 Errors
4. Archivo .LST DEL PROGRAMA MUSE.EXE
Microsoft (R) Macro Assembler Version 6.11
05/18/12 05:25:16
MUSE.ASM
Page 1 - 1
.MODEL SMALL
0000
0000 48 41 20 53 45 4C
INFORMACION DEL MOUSE!!$'
.DATA
M1
DB
45 43 43 49 4F 4E
41 44 4F 20 4E 4F
20 4F 42 54 45 4E
45 52 20 49 4E 46
4F 52 4D 41 43 49
4F 4E 20 44 45 4C
20 4D 4F 55 53 45
21 21 24
0033 0A 0D 53 55 20 56
45 52 53 49 4F 4E
20 44 45 20 44 52
49 56 45 52 20 45
53 3A 24
004E 20 20 20 20 20 20
M3 DB '
',10,13,'$'
20 0A 0D 24
0058 0062 R 0066 R 006D R
M4 DW T1,T2,T3,T4,T5
0074 R 0079 R
0062 42 55 53 24
0066 53 45 52 49 41 4C
T1 DB 'BUS$'
T2 DB 'SERIAL$'
24
006D 49 4E 50 4F 52 54
T3 DB 'INPORT$'
24
0074 50 53 2F 32 24
T4 DB 'PS/2$'
0079 48 50 24
T5 DB 'HP$'
007C 4D 4F 55 53 45 20
M5 DB 'MOUSE INSTALADO!!$'
49 4E 53 54 41 4C
41 44 4F 21 21 24
008E 43 4F 4F 52 44 45
M6 DB 'COORDENADA X:',10,13,'$'
4E 41 44 41 20 58
3A 0A 0D 24
009E 20 20 20 20 20 20
POSX DB '
',10,13
0A 0D
00A6 43 4F 4F 52 44 45
DB 'COORDENADA Y:',10,13,'$'
4E 41 44 41 20 59
3A 0A 0D 24
00B6 20 20 20 20 20 20
POSY DB '
20 24
= 0000
IZ EQU 0
= 0001
DER EQU 1
00BE 00
VISIBLE DB 0
$'
00BF 0A 0D 45 4C 20 4E
','$'
55 4D 45 52 4F 20
44 45 20 42 4F 54
4F 4E 45 53 20 45
53 3A 20 20 20 24
0000
.CODE
.STARTUP
0017 E8 0055
CALL HABILITAME
001A 72 4A
JC FINALIZA
001C
LAZO:
001C B8 0003
DX POSICION VERTICAL
001F CD 33
INT 33H
0021 8B C1
MOV AX,CX
0023 D4 0A
AAM
0025 0D 3030
OR AX,3030H
0028 8D 36 009E R
LEA si,POSX
002C 89 04
MOV DS:[si],ax
002E 8B C2
MOV AX,DX
0030 D4 0A
AAM
0032 0D 3030
OR AX,3030H
0035 8D 36 00B6 R
LEA si,POSY
0039 89 04
mov DS:[si],ax
003B B8 0005
003E BB 0000
MOV BX,00H
0041 CD 33
INT 33H
0043 80 FB 01
CMP BL,1
0046 74 02
JZ FIN1
0048 75 0A
JNZ OTRO
004A
FIN1:
004A 8D 16 0000 R
LEA DX,M1
004E B4 09
MOV AH,09H
0050 CD 21
INT 21H
0052 EB 12
JMP FINALIZA
0054
OTRO:
0054 B8 0005
0057 BB 0001
MOV BX,01H
005A CD 33
INT 33H
005C 80 FB 01
CMP BL,1
005F 74 02
JZ MOSTRAR
0061 EB B9
JMP LAZO
0063
MOSTRAR:
0063 E8 0035
0066
FINALIZA:
0066 B8 0002
0069 CD 33
INT 33H
.EXIT
006F
006F E8 0009
CALL CHEKA
0072 72 06
JC NADA
0074 B8 0001
MOV AX,1
0077 CD 33
INT 33H
0079 F8
CLC
007A
NADA:
007A C3
RET
007B
HABILITAME ENDP
007B
007B B8 3533
MOV AX,3533H
007E CD 21
INT 21H
0080 8C C0
MOV AX,ES
0082 0B C3
OR AX,BX
0084 F9
STC
0085 74 13
JZ CHEKA1
0087 26: 80 3F CF
008B F9
STC
008C 74 0C
JE CHEKA1
008E B8 0000
MOV AX,0
0091 CD 33
INT 33H
0093 83 F8 00
CMP AX,0
0096 F9
STC
0097 74 01
JZ CHEKA1
0099 F8
CLC
009A
CHEKA1:
009A C3
RET
009B
CHEKA ENDP
009B
009B B8 0000
009E CD 33
00A0 8A C3
MOV AL,BL
00A2 D4 0A
AAM
00A4 0C 30
OR AL,30H
00A6 8D 36 00BF R
LEA SI,BOTONES
00AA 88 44 1A
MOV [SI+26],AL
00AD B8 0024
00B0 CD 33
INT 33H
00B2 8D 3E 004E R
LEA DI,M3
00B6 8A C7
00B8 E8 0047
CALL DISP
00BB C6 05 2E
00BE 8A C3
00C0 E8 003F
CALL DISP
00C3 8D 16 007C R
LEA DX,M5
00C7 B4 09
MOV AH,09H
00C9 CD 21
INT 21H
00CB 8D 16 0033 R
00CF CD 21
INT 21H
00D1 8D 36 0058 R
00D5 B4 00
MOV AH,0
00D7 8A C5
MOV AL,CH
00D9 48
DEC AX
00DA 03 F0
ADD SI,AX
00DC 03 F0
ADD SI,AX
00DE B4 09
MOV AH,09H
00E0 8B 14
00E2 CD 21
INT 21H
00E4 8D 16 004E R
LEA DX,M3
00E8 CD 21
INT 21H
00EA 8D 16 008E R
LEA DX,M6
00EE CD 21
INT 21H
00F0 8D 16 009E R
LEA DX,POSX
00F4 CD 21
INT 21H
00F6 8D 16 00B6 R
LEA DX,POSY
00FA CD 21
INT 21H
00FC 8D 16 00BF R
LEA DX,BOTONES
0100 CD 21
INT 21H
0102
INFORMAME ENDP
0102
0102 B4 00
MOV AH,0
0104 D4 0A
AAM
0106 05 3030
ADD AX,3030H
0109 80 FC 30
010C 74 03
JE DISP1 ;ELIMINA 0
010E 88 25
MOV [DI],AH
0110 47
INC DI
0111
;CONVIERTE A BCD
DISP1:
0111 88 05
MOV [DI],AL
0113 47
INC DI
0114 C3
RET
0115
DISP ENDP
END
05/18/12 05:25:16
MUSE.ASM
Symbols 2 - 1
Size
DGROUP . . . . . . . . . . . . .
GROUP
_DATA . . . . . . . . . . . . . 16 Bit
00DD
_TEXT . . . . . . . . . . . . . 16 Bit
0115
Type
Value Attr
DISP . . . . . . . . . . . . . .
P Near 0102
HABILITAME . . . . . . . . . . .
P Near 006F
INFORMAME . . . . . . . . . . .
P Near 009B
Symbols:
Name
Type
Value Attr
@CodeSize . . . . . . . . . . .
Number
0000h
@DataSize . . . . . . . . . . .
Number
0000h
@Interface . . . . . . . . . . .
Number
0000h
@Model . . . . . . . . . . . . .
Number
0002h
_TEXT
@code . . . . . . . . . . . . . Text
_TEXT
@data . . . . . . . . . . . . . Text
DGROUP
@fardata? . . . . . . . . . . .
Text
@fardata . . . . . . . . . . . . Text
FAR_DATA
FAR_BSS
@stack . . . . . . . . . . . . . Text
DGROUP
BOTONES . . . . . . . . . . . .
Byte
00BF
_TEXT
DER . . . . . . . . . . . . . .
0001h
Number
_TEXT
FIN1 . . . . . . . . . . . . . .
L Near 004A
_TEXT
_TEXT
IZ . . . . . . . . . . . . . . .
0000h
Number
_TEXT
M1 . . . . . . . . . . . . . . .
Byte
0000
_DATA
M2 . . . . . . . . . . . . . . .
Byte
0033
_DATA
M3 . . . . . . . . . . . . . . .
Byte
004E
_DATA
M4 . . . . . . . . . . . . . . .
Word
0058
_DATA
M5 . . . . . . . . . . . . . . .
Byte
007C
_DATA
M6 . . . . . . . . . . . . . . .
Byte
008E
_DATA
MOSTRAR . . . . . . . . . . . .
L Near 0063
_TEXT
_TEXT
POSX . . . . . . . . . . . . . . Byte
009E
_DATA
POSY . . . . . . . . . . . . . . Byte
00B6
_DATA
T1 . . . . . . . . . . . . . . .
Byte
0062
_DATA
T2 . . . . . . . . . . . . . . .
Byte
0066
_DATA
T3 . . . . . . . . . . . . . . .
Byte
006D
_DATA
T4 . . . . . . . . . . . . . . .
Byte
0074
_DATA
T5 . . . . . . . . . . . . . . .
Byte
0079
_DATA
VISIBLE . . . . . . . . . . . . Byte
00BE
_DATA
_DATA
_TEXT
0 Warnings
0 Errors
5. ARCHIVO .LST DEL PROGRAMA PORTADA.EXE
Microsoft (R) Macro Assembler Version 6.11
05/18/12 06:47:57
PORTADA.ASM
Page 1 - 1
.MODEL SMALL
0000
.DATA
0000 004D [
M1 DB 77 dup (02Ah)
2A
]
004D 0A 0D 2A
004B [
20
] 2A
009C 0A 0D 2A
SALVADOR',24 DUP (' '),42
0019 [
20
] 55 4E 49 56 45
52 53 49 44 41 44
20 44 45 20 45 4C
20 53 41 4C 56 41
44 4F 52
0018 [
20
] 2A
DB
10,13,42,25
DUP
('
'),'UNIVERSIDAD
DE
EL
00EB 0A 0D 2A
ELECTRICA',22 DUP (' '),42
0016 [
20
] 45 53 43 55 45
4C 41 20 44 45 20
49 4E 47 45 4E 49
45 52 49 41 20 45
4C 45 43 54 52 49
43 41
0016 [
20
] 2A
013A 0A 0D 2A
PROGRAMABLES I',21 DUP (' '), 42
0015 [
20
] 53 49 53 54 45
4D 41 53 20 44 49
47 49 54 41 4C 45
53 20 50 52 4F 47
52 41 4D 41 42 4C
45 53 20 49
0015 [
20
] 2A
DB
10,13,42,21
DUP
('
'),'SISTEMAS
DIGITALES
0189 0A 0D 2A
004B [
20
] 2A
01D8 0A 0D 2A 20 4C 61
62 6F 72 61 74 6F
72 69 6F 20 23 20
34 20 22 49 6D 70
72 65 73 6F 72 61
20 79 20 72 61 74
6F 6E 22
0027 [
20
] 2A
0227 0A 0D 2A
004B [
20
] 2A
0276 0A 0D 2A 20 50 72
6F 66 65 73 6F 72
3A 20 49 6E 67 2E
20 52 69 63 61 72
64 6F 20 43 6F 72
74 65 7A 2E
002C [
20
] 2A
02C5 0A 0D 2A
004B [
20
] 2A
0314 0A 0D 2A 20 49 6E
Romero',25 DUP (' '),42
73 74 72 75 63 74
6F 72 3A 42 72 2E
20 47 75 69 6C 6C
65 72 6D 6F 20 41
6C 65 78 61 6E 64
65 72 20 45 73 63
6F 62 61 72 20 52
6F 6D 65 72 6F
0019 [
20
] 2A
0363 0A 0D 2A
004B [
20
] 2A
03B2 0A 0D 2A 20 52 65
DB 10,13,42,' Responsable del trabajo:
Suarez AS08005',13 DUP (' '),42
73 70 6F 6E 73 61
62 6C 65 20 64 65
6C 20 74 72 61 62
61 6A 6F 3A 20 20
4A 61 69 6D 65 20
4A 61 76 69 65 72
20 41 72 72 69 6F
6C 61 20 53 75 61
72 65 7A 20 41 53
30 38 30 30 35
000D [
20
] 2A
0401 0A 0D 2A
004B [
20
] 2A
0450 0A 0D 2A
004B [
20
] 2A
049F 0A 0D 2A
mayo 2012',19 DUP (' '),42
0014 [
20
] 43 69 75 64 61
64 20 55 6E 69 76
65 72 73 69 74 61
72 69 61 20 31 37
20 64 65 20 6D 61
79 6F 20 32 30 31
32
0013 [
20
] 2A
04EE 0A 0D 2A
004B [
20
] 2A
053D 0A 0D 2A
004B [
20
] 2A
058C 0A 0D 2A
004B [
20
] 2A
05DB 0A 0D 2A
004B [
20
] 2A
062A 0A 0D
004D [
2A
] 24
067A 0A 0D 45 4C 20 50
LPT$'
55 45 52 54 4F 20
44 45 20 4C 41 20
49 4D 50 52 45 53
4F 52 41 20 45 53
3A 20 4C 50 54 24
069E 0A 0D 6C 41 20 44
DIR
49 52 45 43 43 49
4F 4E 20 44 45 4C
20 50 55 45 52 54
4F 20 45 53 3A 20
24
06BD 0A 0D 55 53 54 45
ERROR DB 0AH,0DH,'USTED NO TIENE INSTALADA UNA
IMPRESORA EN SU SISTEMA O NO ESTA ENCENDIDA$',0AH
44 20 4E 4F 20 54
49 45 4E 45 20 49
4E 53 54 41 4C 41
44 41 20 55 4E 41
20 49 4D 50 52 45
53 4F 52 41 20 45
4E 20 53 55 20 53
49 53 54 45 4D 41
20 4F 20 4E 4F 20
45 53 54 41 20 45
4E 43 45 4E 44 49
44 41 24 0A
0709 00
FIN
DB 0
0000
.CODE
.STARTUP
0017
ESTADO:
0017 83 FE 03
CMP SI,3
001A 74 68
JE FALLO
001C B4 02
MOV AH,02
001E 8B D6
MOV DX,SI
0020 CD 17
INT 17H
0022 46
INC SI
0023 F6 C4 29
TEST AH,00101001B
0026 75 EF
JNZ ESTADO
0028 4E
0029 B4 09
002B BA 067A R
DEC SI
MOV AH,09H
MOV DX,OFFSET PUERTO
002E CD 21
INT 21H
0030 8B D6
MOV DX,SI
0032 80 C2 30
ADD DL,30H
0035 B4 02
MOV AH,02
0037 CD 21
INT 21H
0039 B4 09
MOV AH,9
003B BA 069E R
003E CD 21
INT 21H
0040
SIGUIENTE:
MOV AX,ES:LPT[SI]
PORTADA.ASM(51): error A2006: undefined symbol : LPT
0040 46
INC SI
0041 83 F8 00
CMP AX,0
0044 74 FA
JE SIGUIENTE
0046 8B D8
MOV BX,AX
0048 8A C4
MOV AL,AH
004A B4 00
MOV AH,0
004C 05 3030
ADD AX,3030H
004F 8A D4
MOV DL,AH
0051 B4 02
MOV AH,02
0053 50
PUSH AX
0054 CD 21
0056 58
INT 21H
POP AX
0057 8A D0
MOV DL,AL
0059 CD 21
INT 21H
005B 8B C3
MOV AX,BX
005D B4 00
MOV AH,0
005F 05 0690
ADD AX,0690H
0062 37
AAA
0063 05 3030
ADD AX,3030H
0066 8A D4
MOV DL,AH
0068 B4 02
MOV AH,02
006A 50
PUSH AX
006B CD 21
006D 58
INT 21H
POP AX
006E 8A D0
MOV DL,AL
0070 CD 21
INT 21H
0072 B4 40
MOV AH,40H
0074 BB 0004
MOV BX,4
0077 EB 12
JMP EXIT
0084
FALLO:
0084 B4 09
MOV AH,9
0086 BA 06BD R
0089 CD 21
INT 21H
008B
EXIT:
008B
PORTADA:
008B B9 0679
MOV CX,1657
008E BB 0004
MOV BX,4
0091 8D 16 0000 R
LEA DX,M1
0095 B4 40
MOV AH,40H
0097 CD 21
INT 21H
0099 B4 4C
MOV AH,4CH
009B CD 21
INT 21H
.EXIT
END
05/18/12 06:47:57
PORTADA.ASM
Symbols 2 - 1
Size
DGROUP . . . . . . . . . . . . .
GROUP
_DATA . . . . . . . . . . . . .
16 Bit
070A
_TEXT . . . . . . . . . . . . .
16 Bit
00A1
Symbols:
Name
Type
Value Attr
@CodeSize . . . . . . . . . . .
Number
0000h
@DataSize . . . . . . . . . . .
Number
0000h
@Interface . . . . . . . . . . .
Number
0000h
@Model . . . . . . . . . . . . .
Number
0002h
@Startup . . . . . . . . . . . .
L Near 0000
_TEXT
@code . . . . . . . . . . . . .
Text
_TEXT
@data . . . . . . . . . . . . .
Text
DGROUP
@fardata? . . . . . . . . . . .
Text
FAR_BSS
@fardata . . . . . . . . . . . .
Text
FAR_DATA
@stack . . . . . . . . . . . . .
Text
DGROUP
DIR . . . . . . . . . . . . . .
Byte
069E
_DATA
ERROR . . . . . . . . . . . . .
Byte
06BD
_DATA
ESTADO . . . . . . . . . . . . .
L Near 0017
_TEXT
EXIT . . . . . . . . . . . . . .
L Near 008B
_TEXT
FALLO . . . . . . . . . . . . .
L Near 0084
_TEXT
FIN . . . . . . . . . . . . . .
Byte
0709
_DATA
M1 . . . . . . . . . . . . . . .
Byte
0000
_DATA
PORTADA . . . . . . . . . . . .
L Near 008B
_TEXT
PUERTO . . . . . . . . . . . . .
Byte
067A
_DATA
SIGUIENTE . . . . . . . . . . .
L Near 0040
_TEXT
0 Warnings
0 Errors