Código de Ensamblador - Deshabilitar teclas de control

Deshabilitar teclas de controlgráfica de visualizaciones


Ensamblador

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 13 de Enero del 2003 por Wilfredo Pérez Velázquez
15.569 visualizaciones desde el 13 de Enero del 2003. Una media de 28 por semana
Rutina que permite deshabilitar combinaciones de teclado, como por ejemplo CTRL+ALT+SUP.

Versión 1
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 13 de Enero del 2003gráfica de visualizaciones de la versión: Versión 1
15.570 visualizaciones desde el 13 de Enero del 2003. Una media de 28 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
; Compilar con el MASM 5.0 de Microsoft o versión superior,
; luego crear el .exe con el LINK y por último con el exe2bin crear el .COM
; Este progrma sustituye el Ctrl + Alt + Del, pues la tecla Del se
; sustituye por el ESC causando un reset
; Es una forma de leer el teclado y controlar ciertas teclas
; que nos interesen y ejecutar algo. De esta forma nos encadenamos a la
; cadena principal del receptor de eventos de teclado en modo real.
; Este programa se queda residente a través de los servicios del DOS.
 
; Para más información caribbeansoft@excite.com
; Autor Wilfredo Pérez Velázquez
 
la21 segment para public 'code'
org 0100h
assume cs:la21,es:la21,ds:la21,ss:la21
ini proc near
 
jmp stay ; Salta al módulo que dejará el programa residente
; y así desechar este módulo que solo ocuparía espacio
; en memoria, el cual no es importante en el módulo del
; control de los eventos de teclado.
 
inter9:
pushf
push ax
 
in al,60h
cmp al,29 ;si se pulso la tecla ctrl left
jne notCTRL
mov cs:[flagKEY],01h
 
jmp salto9
 
notCTRL:
cmp al,157 ; si se dej¢ de pulsar ctrl left
je notKEY
cmp al,56 ;si se pulso alt
jne notALT
 
cmp cs:[flagKEY],01h
jne salto9
 
mov cs:[flagKEY],02h
jmp salto9
notALT:
cmp al,184 ;si se dejo de pulsar alt
je notKEY
cmp al,1 ;si se pulso ESC
jne salto9
cmp cs:[flagKEY],02h
jne notKEY
 
pushf ; de esta forma simulo un llamado a interrupción
push cs ; pues al retornar del tratamiento de los otros
call salto ; programas enlazados a la lista de la INT09H
; retorne el control a mí y provocar un reset en
; el ordenador
 
d1 db 0eah ; Esto es el código de un JUMP FAR
o1 dw 0 ; Dirección del BIOS donde se encuentra el módulo
o2 dw 0ffffh ; del reset creado por el fabricante
 
notKEY:
mov cs:[flagKEY],00h
 
salto9:
pop ax
popf
 
salto:
e9 db 0eah ; Esto es el código de un JUMP FAR
off9 dw 0 ; Aqui guardo la dirección del módulo que estaba
sgm9 dw 0 ; antes que yo en la lista de eventos de la INT 09H
 
flagKEY db 0
 
stay:
 
mov ah,49h ; Servicio del SO MS-DOS que indica que mi programa solo
mov es,cs:[002ch] ; ocupa cierta cantidad de memoria y libera la restante concedida por el DOS
int 21h
 
xor si,si ; este módulo es el que me posiciona sobre la
mov ds,si ; la lista de la interrupción 09H y me agrega a ella.
 
push cs
pop es
mov di,offset off9
mov si,0024h
push si
cld
cli
movsw
movsw
pop si
mov word ptr [si],offset inter9
inc si
inc si
mov [si],cs
sti
mov dx,offset mens
push cs
pop ds
mov ah,09h
int 21h ; Imprimo un Mensaje
 
push cs
pop ds
mov dx,offset stay
int 27h ; Me quedo residente abandonando el módulo que me deja residente y el resto
 
mens db 0ah,0dh,0ah,0dh,'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿',0ah,0dh
mens1 db '³ ³',0ah,0dh
mens2 db '³ Por favor si U.D desea resetera su PC no apague esta a trav‚s del ³',0ah,0dh
mens9 db '³ interruptor, pues este sufre desgaste... solo haga uso de ‚l cuando termine ³',0ah,0dh
mens0 db '³ de trabajar. ³',0ah,0dh
mens7 db '³ ³',0ah,0dh
mens3 db '³ SUGERENCIA: ³',0ah,0dh
mens4 db '³ Para resetear solo pulse la siguiente combinaci¢n de teclas ³',0ah,0dh
mens8 db ......... CTRL + ALT + ESC ......... ³',0ah,0dh
mens5 db '³ Gracias. ³',0ah,0dh
mens6 db 'ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ',0ah,0dh,0ah,0dh,'$'
 
ini endp
la21 ends
end ini



Comentarios sobre la versión: Versión 1 (1)

sergio
03 de Junio del 2006
estrellaestrellaestrellaestrellaestrella
quisiera saber que es y como puedo conseguir el programa de masm
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s437