Sie sind auf Seite 1von 50

Universidad de El Salvador

Escuela de Ingeniera Elctrica


Sistemas Digitales Programables I

Laboratorio #4
Impresora y Ratn

Profesor: Ing. Ricardo Cortez.


Instructor: Br. Guillermo Alexander Escobar Romero
Responsable del trabajo:
Arriola Surez, Jaime Javier

AS08005

Ciudad Universitaria 18 de mayo de 2012

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

B. Pasamos A EL MASM donde ensamblamos y linkeamos el archivo .ASM, generando de


paso los correspondientes archivos .OBJ, .LST y .EXE, dicho paso es mostrado en la
siguiente imagen

C. Luego de generado el archivo debemos tener en cuenta lo mencionado antes, este


programa requiere una impresora matricial para poder funcionar adecuadamente por
tanto la corrida del archivo .ASM se ha hecho en el EMU 8086 generando la siguiente
imagen:

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.
CODIGO SOLUCION
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.
37.
38.

;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.

LEA SI,M4;APUNTA A LA TABLA DE TIPOS


MOV AH,0
MOV AL,CH
DEC AX
ADD SI,AX
ADD SI,AX
MOV DX,[SI];DESPLIEGA TIPO
MOV AH,09H
INT 21H
LEA DX,M3
MAIN2:
MOV AH,09H
INT 21H
.EXIT
;PROCEDIMIENTO QUE VERIFICA EXISTENCIA DE RATON
;**PARAMETROS DE SALIDA**
;ACARREO =1 NO HAY RATON
;ACARREO =0 SI HAY RATON
CHEK PROC NEAR
MOV AX,3533H;OBTIENE VECTOR INT 33H
INT 21H ;VECTOR EN ES:DX
MOV AX,ES
OR BX,AX;COMPRUEBA SI 0000:0000
STC
JZ CHEK1;SI NO HAY DRIVER DE RATON
CMP BYTE PTR ES:[BX],0CFH
STC
JE CHEK1;SI NO HAY DRIVER
MOV AX,0 ;RESTAURA RATON
INT 33H
CMP AX,0
STC
JZ CHEK1;SI NO HAY RATON
CLC
CHEK1:
RET
CHEK ENDP
;GUARDA EL NUMERO DE VERSION EN ASCII
;**PARAMETROS DE ENTRADA**
;AL=VERSION
;DS:DI=DIRECCION DE ALMACENAMIENTO
DISP PROC NEAR

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

3. Repita el procedimiento del paso anterior para el programa del anexo B.


A. Primero copiamos el anexo B a un editor de texto y lo guardamos en la carpeta
C:\MASM611\BIN, generando de esa forma el archivo .ASM

B. Luego pasamos al MASM donde lo ensamblamos y likeamos generando asi mismo los
correspondientes archivos .OBJ, .LST y .EXE

C. Los archivos generados estarn disponibles en la carpeta C:\MASM611\BIN como se


muestra en la imagen.

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

43) MOV DS:[si],AX


44) MOV AX,05H;Sale del programa al dar click izquierdo
45) MOV BX,00H
46) INT 33H
47) CMP BL,1
48) JZ FIN1
49) JNZ OTRO
50) FIN1:
51) LEA DX,M1
52) MOV AH,09H
53) INT 21H
54) JMP FINALIZA
55) OTRO:
56) MOV AX,05H;mostrar i informacin al dar click derecho
57) MOV BX,01H
58) INT 33H
59) CMP BL,1
60) JZ MOSTRAR
61) JMP LAZO
62) MOSTRAR:
63) CALL INFORMAME;MUESTRO TODA LA INFORMACION
64) FINALIZA:
65) MOV AX,02 ;OCULTO RATON
66) INT 33H
67) .EXIT
68) HABILITAME PROC NEAR
69) CALL CHEKA
70) JC NADA
71) MOV AX,1
72) INT 33H
73) CLC
74) NADA:
75) RET
76) HABILITAME ENDP
77) CHEKA PROC NEAR
78) MOV AX,3533H
79) INT 21H
80) MOV AX,ES
81) OR AX,BX
82) STC
83) JZ CHEKA1
84) CMP BYTE PTR ES:[BX],0CFH
85) STC
86) JE CHEKA1
87) MOV AX,0
88) INT 33H
89) CMP AX,0
90) STC
91) JZ CHEKA1
92) CLC
93) CHEKA1:

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

2. Programa que imprima la portada de su reporte. Deber desplegar en pantalla cul es el


puerto al que se encuentra conectado su impresor.
CODIGO SOLUCION
.MODEL SMALL
.DATA
M1 DB 77 dup (02Ah)
DB 10,13,42,75 DUP (' '),42
DB 10,13,42,25 DUP (' '),'UNIVERSIDAD DE EL SALVADOR',24 DUP (' '),42
DB 10,13,42,22 DUP (' '),'ESCUELA DE INGENIERIA ELECTRICA',22 DUP (' '),42
DB 10,13,42,21 DUP (' '),'SISTEMAS DIGITALES PROGRAMABLES I',21 DUP ('
'), 42
8) DB 10,13,42,75 DUP (' '),42
9) DB 10,13,42,' Laboratorio # 4 "Impresora y raton"',39 DUP (' '),42
10) DB 10,13,42,75 DUP (' '),42
11) DB 10,13,42,' Profesor: Ing. Ricardo Cortez.',44 DUP (' '),42
12) DB 10,13,42,75 DUP (' '),42
13) DB 10,13,42,' Instructor:Br. Guillermo Alexander Escobar Romero',25 DUP (' '),42
14) DB 10,13,42,75 DUP (' '),42
15) DB 10,13,42,' Responsable del trabajo: Jaime Javier Arriola Suarez AS08005',13 DUP
(' '),42
16) DB 10,13,42,75 DUP (' '),42
17) DB 10,13,42,75 DUP (' '),42
18) DB 10,13,42,20 DUP (' '),'Ciudad Universitaria 17 de mayo 2012',19 DUP (' '),42
19) DB 10,13,42,75 DUP (' '),42
20) DB 10,13,42,75 DUP (' '),42
21) DB 10,13,42,75 DUP (' '),42
22) DB 10,13,42,75 DUP (' '),42
23) DB 10,13,77 dup (02Ah),'$'
24) PUERTO DB 0AH,0DH,'EL PUERTO DE LA IMPRESORA ES: LPT$'
25) DIR DB 0AH,0DH,'lA DIRECCION DEL PUERTO ES: $'
26) ERROR DB 0AH,0DH,'USTED NO TIENE INSTALADA UNA IMPRESORA EN
SU SISTEMA O NO ESTA ENCENDIDA$',0AH
27) FIN DB 0
28) .CODE
29) .STARTUP
30) ESTADO:
31) CMP SI,3
32) JE FALLO
33) MOV AH,02
34) MOV DX,SI
35) INT 17H
36) INC SI
37) TEST AH,00101001B
38) JNZ ESTADO
39) DEC SI
40) MOV AH,09H
41) MOV DX,OFFSET PUERTO
42) INT 21H
43) MOV DX,SI
44) ADD DL,30H
1)
2)
3)
4)
5)
6)
7)

45) MOV AH,02


46) INT 21H
47) MOV AH,9
48) MOV DX,OFFSET DIR
49) INT 21H
50) SIGUIENTE:
51) MOV AX,ES:LPT[SI]
52) INC SI
53) CMP AX,0
54) JE SIGUIENTE
55) MOV BX,AX
56) MOV AL,AH
57) MOV AH,0
58) ADD AX,3030H
59) MOV DL,AH
60) MOV AH,02
61) PUSH AX
62) INT 21H
63) POP AX
64) MOV DL,AL
65) INT 21H
66) MOV AX,BX
67) MOV AH,0
68) ADD AX,0690H
69) AAA
70) ADD AX,3030H
71) MOV DL,AH
72) MOV AH,02
73) PUSH AX
74) INT 21H
75) POP AX
76) MOV DL,AL
77) INT 21H
78) MOV AH,40H
79) MOV BX,4
80) JMP EXIT
81) FALLO:
82) MOV AH,9
83) MOV DX,OFFSET ERROR
84) INT 21H
85) EXIT:
86) PORTADA:
87) MOV CX,1657
88) MOV BX,4
89) LEA DX,M1
90) MOV AH,40H
91) INT 21H
92) MOV AH,4CH
93) INT 21H
94) .EXIT
95) 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

; Programa que prueba las capacidades del impresora.


;---------------- Segmento de datos ---------------0000
0000 45 73 74 65 20 6D
impresora.',0DH,0AH,0AH
65 6E 73 61 6A 65
20 64 65 62 65 20
61 70 61 72 65 63
65 72 20 65 6E 20
6C 61 20 69 6D 70
72 65 73 6F 72 61
2E 0D 0A 0A
002E 41 64 65 6D E1 73
rengln'
2C 20 65 73 74 65
20 6F 74 72 6F 20
6D 65 6E 73 61 6A
65 20 64 65 62 65
20 61 70 61 72 65
63 65 72 20 65 6E
20 65 6C 20 73 69
67 75 69 65 6E 74
65 20 72 65 6E 67
6C F3 6E
006D 0D 0A 0A 0A
0071 09 46 69 6E 09 64
65 6C 09 74 65 78
74 6F 0C
0080 00
0081

DATOS SEGMENT PARA PUBLIC 'DATA'


TEXTO DB

DB

FIN

'Este mensaje debe aparecer en la

'Adems, este otro mensaje debe aparecer en el siguiente

DB
DB

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

DB

DATOS ENDS

;---------------- Segmento de pila -----------------0000

PILA

0000 0100 [
00
]
0100

SEGMENT PARA STACK 'STACK'


DB

PILA

256 DUP (0)

ENDS

;---------------- Segmento de cdigo ----------------0000

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

SEGMENT PARA PUBLIC 'CODE'


ASSUME
CS:COD,DS:DATOS,SS:PILA
PROC FAR

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

Microsoft (R) Macro Assembler Version 6.11


APENA.ASM

05/16/12 14:45:08
Symbols 2 - 1

Segments and Groups:


Name

Size

COD . . . . . . . . . . . . . . 16 Bit
DATOS . . . . . . . . . . . . . 16 Bit
PILA . . . . . . . . . . . . . . 16 Bit

Length Align Combine Class


001C
0081
0100

Para
Para
Para

Public 'CODE'
Public 'DATA'
Stack 'STACK'

Procedures, parameters and locals:


Name

Type

CODIGO . . . . . . . . . . . . . P Far

Value Attr
0000

COD Length= 001C Private

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

; Programa que prueba las capacidades del ratn.


= 0000
= 0001

IZ
DER

EQU
EQU

0
1

;---------------- Segmento de datos ---------------0000

DATOS SEGMENT PARA PUBLIC 'DATA'

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

'ERROR: El ratn no est

;---------------- Segmento de pila -----------------0000

PILA

0000 0100 [
00
]
0100

SEGMENT PARA STACK 'STACK'


DB

PILA

256 DUP (0)

ENDS

;---------------- Segmento de cdigo ----------------0000

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

PARA PUBLIC 'CODE'


CS:COD,DS:DATOS,SS:PILA

; Inicializar el ratn.

AX,0 ; No se inicializ el ratn exitosamente?


SALTO ; Si hubo xito, saltar.

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

SALIR ; Saltar al fin del programa.

0019 B8 0001
001C CD 33
001E FE 06 0026 R

SALTO:MOV
INT
INC

AX,1 ; hacer visible el apuntador.


33H
VISIBLE

0022 B8 0005
ratn.
0025 BB 0000
0028 CD 33

LAZO: MOV

AX,5

; Obtener informacin sobre pulsacin del

MOV
INT

BX,IZ
33H

; Botn a detectar: izquierdo.

002A 80 FB 01
002D 75 15
prueba.

CMP

BL,1
JNZ

; Se presion el botn izquierdo ?


PRUEBA2
; Si no es as, saltar a la otra

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

; Borrar lodos los bits de la variable


; VISIBLE menos el primero.
; Si el puntero es invisible,

; Funcin para ocultar el ratn.

AX,1

; Funcin para mostrar el

33H
VISIBLE
; Obtener informacin sobre liberacin de

BX,DER ; Botn a detectar: derecho.


33H

BL,1
JZ

OCULTAR

JMP

LAZO

; Se liber el botn derecho?


; Si es as, salir del programa.

OCULTAR:MOV AX,2 ; Oculta el ratn.


INT
33H
SALIR: MOV AX,4C00H
INT
21H

005D

CODIGO

ENDP

005D

COD

ENDS

END

CODIGO

3. ARCHIVO .LST DEL PROGRAMA MOUKSE.EXE


Microsoft (R) Macro Assembler Version 6.11
MOUKSE.ASM

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

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$'

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

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

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

LEA SI,M4;APUNTA A LA TABLA DE TIPOS


MOV AH,0
MOV AL,CH
DEC AX
ADD SI,AX
ADD SI,AX
MOV DX,[SI];DESPLIEGA TIPO
MOV AH,09H
INT 21H
LEA DX,M3
MAIN2:
MOV AH,09H
INT 21H
.EXIT
;PROCEDIMIENTO QUE VERIFICA EXISTENCIA DE RATON

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

MOV AX,3533H;OBTIENE VECTOR INT 33H


INT 21H ;VECTOR EN ES:DX

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

CMP BYTE PTR ES:[BX],0CFH


STC
JE CHEK1;SI NO HAY DRIVER
MOV AX,0 ;RESTAURA RATON
INT 33H
CMP AX,0
STC
JZ CHEK1;SI NO HAY RATON
CLC
CHEK1:
RET
CHEK ENDP
;GUARDA EL NUMERO DE VERSION EN ASCII
;**PARAMETROS DE ENTRADA**
;AL=VERSION
;DS:DI=DIRECCION DE ALMACENAMIENTO
;
DISP PROC NEAR
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:

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

Segments and Groups:


Name

Size

Length Align Combine Class

DGROUP . . . . . . . . . . . . .
GROUP
_DATA . . . . . . . . . . . . . 16 Bit 0080 Word Public 'DATA'
_TEXT . . . . . . . . . . . . . 16 Bit 009A Word Public 'CODE'
Procedures, parameters and locals:
Name

Type

Value Attr

CHEK . . . . . . . . . . . . . . P Near 0067


DISP . . . . . . . . . . . . . . P Near 0087

_TEXT Length= 0020 Private


_TEXT Length= 0013 Private

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

Segments and Groups:


Name

Size

COD . . . . . . . . . . . . . . 16 Bit
DATOS . . . . . . . . . . . . . 16 Bit
PILA . . . . . . . . . . . . . . 16 Bit

Length Align Combine Class


005D
0027
0100

Para
Para
Para

Public 'CODE'
Public 'DATA'
Stack 'STACK'

Procedures, parameters and locals:


Name

Type

CODIGO . . . . . . . . . . . . . P Far

Value Attr
0000

COD Length= 005D Private

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

'HA SELECCIONADO NO OBTENER

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

M2 DB 10,13,'SU VERSION DE DRIVER ES:$'

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

BOTONES DB 10,13,'EL NUMERO DE BOTONES ES:

','$'
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

MOV AX,03H ;GUARDA EN CX POSICION HORIZONTAL Y EN

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

MOV AX,05H;Sale del programa al dar click izquierdo

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

MOV AX,05H;mostrar informacion al dar click derecho

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

CALL INFORMAME;MUESTRO TODA LA INFORMACION

0066

FINALIZA:

0066 B8 0002

MOV AX,02 ;OCULTO RATON

0069 CD 33

INT 33H
.EXIT

006F

HABILITAME PROC NEAR

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

CHEKA PROC NEAR

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

CMP BYTE PTR ES:[BX],0CFH

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

INFORMAME PROC NEAR

009B B8 0000

MOV AX,0;INICIALIZA EL MOUSE

009E CD 33

INT 33H;DEJA EN EL BL EL NUMERO DE BOTONES

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

MOV AX,24H;OBTIENE VERSION DEL DRIVER

00B0 CD 33

INT 33H

00B2 8D 3E 004E R

LEA DI,M3

00B6 8A C7

MOV AL,BH;GUARDA VERSION MAYOR

00B8 E8 0047

CALL DISP

00BB C6 05 2E

MOV BYTE PTR [DI],'.'

00BE 8A C3

MOV AL,BL;GUARDA VERSION MENOR

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

LEA DX,M2;DESPLIEGA VERSION

00CF CD 21

INT 21H

00D1 8D 36 0058 R

LEA SI,M4;APUNTA A LA TABLA DE TIPOS

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

MOV DX,[SI];DESPLIEGA TIPO

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

DISP PROC NEAR

0102 B4 00

MOV AH,0

0104 D4 0A

AAM

0106 05 3030

ADD AX,3030H

0109 80 FC 30

CMP AH,30H ;GUARDA VERSION ASCII

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

Microsoft (R) Macro Assembler Version 6.11

05/18/12 05:25:16

MUSE.ASM

Symbols 2 - 1

Segments and Groups:


Name

Size

Length Align Combine Class

DGROUP . . . . . . . . . . . . .

GROUP

_DATA . . . . . . . . . . . . . 16 Bit

00DD

Word Public 'DATA'

_TEXT . . . . . . . . . . . . . 16 Bit

0115

Word Public 'CODE'

Procedures, parameters and locals:


Name

Type

Value Attr

CHEKA . . . . . . . . . . . . . P Near 007B

_TEXT Length= 0020 Private

DISP . . . . . . . . . . . . . .

_TEXT Length= 0013 Private

P Near 0102

HABILITAME . . . . . . . . . . .

P Near 006F

_TEXT Length= 000C Private

INFORMAME . . . . . . . . . . .

P Near 009B

_TEXT Length= 0067 Private

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

@fardata . . . . . . . . . . . . Text

FAR_DATA

FAR_BSS

@stack . . . . . . . . . . . . . Text

DGROUP

BOTONES . . . . . . . . . . . .

Byte

00BF

CHEKA1 . . . . . . . . . . . . . L Near 009A

_TEXT

DER . . . . . . . . . . . . . .

0001h

Number

DISP1 . . . . . . . . . . . . . L Near 0111

_TEXT

FIN1 . . . . . . . . . . . . . .

L Near 004A

_TEXT

FINALIZA . . . . . . . . . . . . L Near 0066

_TEXT

IZ . . . . . . . . . . . . . . .

0000h

Number

LAZO . . . . . . . . . . . . . . L Near 001C

_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

NADA . . . . . . . . . . . . . . L Near 007A

_TEXT

OTRO . . . . . . . . . . . . . . L Near 0054

_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

DB 10,13,42,75 DUP (' '),42

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

DB 10,13,42,22 DUP (' '),'ESCUELA DE INGENIERIA

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

DB 10,13,42,75 DUP (' '),42

004B [
20
] 2A
01D8 0A 0D 2A 20 4C 61

DB 10,13,42,' Laboratorio # 4 "Impresora y raton"',39 DUP (' '),42

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

DB 10,13,42,75 DUP (' '),42

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

DB 10,13,42,' Profesor: Ing. Ricardo Cortez.',44 DUP (' '),42

] 2A
02C5 0A 0D 2A

DB 10,13,42,75 DUP (' '),42

004B [
20
] 2A
0314 0A 0D 2A 20 49 6E
Romero',25 DUP (' '),42

DB 10,13,42,' Instructor:Br. Guillermo Alexander Escobar

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

DB 10,13,42,75 DUP (' '),42

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

Jaime Javier Arriola

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

DB 10,13,42,75 DUP (' '),42

004B [
20
] 2A
0450 0A 0D 2A

DB 10,13,42,75 DUP (' '),42

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

DB 10,13,42,20 DUP (' '),'Ciudad Universitaria 17 de

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

DB 10,13,42,75 DUP (' '),42

004B [
20
] 2A
053D 0A 0D 2A

DB 10,13,42,75 DUP (' '),42

004B [
20
] 2A
058C 0A 0D 2A

DB 10,13,42,75 DUP (' '),42

004B [
20
] 2A
05DB 0A 0D 2A

DB 10,13,42,75 DUP (' '),42

004B [
20
] 2A
062A 0A 0D
004D [
2A

DB 10,13,77 dup (02Ah),'$'

] 24
067A 0A 0D 45 4C 20 50
LPT$'

PUERTO DB 0AH,0DH,'EL PUERTO DE LA IMPRESORA ES:

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

DB 0AH,0DH,'lA DIRECCION DEL PUERTO ES: $'

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

MOV DX,OFFSET DIR

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

MOV DX,OFFSET ERROR

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

Microsoft (R) Macro Assembler Version 6.11

05/18/12 06:47:57
PORTADA.ASM

Symbols 2 - 1

Segments and Groups:


Name

Size

Length Align Combine Class

DGROUP . . . . . . . . . . . . .

GROUP

_DATA . . . . . . . . . . . . .

16 Bit

070A

Word Public 'DATA'

_TEXT . . . . . . . . . . . . .

16 Bit

00A1

Word Public 'CODE'

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

Das könnte Ihnen auch gefallen