• Viernes 3 de Mayo de 2024, 00:28

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Sporeman

Páginas: [1]
1
ASM (Ensamblador) / Re: Cambiar el estado de los LEDs del teclado.
« en: Viernes 19 de Septiembre de 2008, 23:34 »
Pues sí, Windows (XP SP3) me cierra inmediatamente cualquier programa que intente hacer nada con el puerto 60h. En el mejor de los casos, no hace nada.

Como parece que bajo windows no voy a conseguir mucho, he instalado el MS-Dos en una máquina virtual. En MS-Dos y con el debug he creado tres programas muy similares entre sí. Ahí va el código del "nums":

Código: Text
  1.  
  2. 16D2:0100   mov ax,ed
  3. 16D2:0103   out 60,ax
  4. 16D2:0105   mov ax,2
  5. 16D2:0108   out 60,ax
  6. 16D2:010A   mov ax,4c
  7. 16D2:010D   int 21
  8.  

Así funciona exactamente como yo quiero. El 2 es, como os imaginareis, el segundo bit, 2^(n-1)

He probado también con turbo C,
Código: Text
  1.  
  2. void main () {
  3.       asm mov ax,0xED;
  4.       asm out 0x60,ax;
  5.       asm mov ax,7; //Todos los leds encendidos
  6.       asm out 0x60,ax;
  7. }
  8.  
  9.  

E igual, funciona en MS-Dos puro (el virtual PC), pero no en Windows. Me parece que con el modo protegido hemos topado.  :argh:  :hitcomp:

2
ASM (Ensamblador) / Re: Cambiar el estado de los LEDs del teclado.
« en: Viernes 19 de Septiembre de 2008, 10:14 »
Mandando EDh al puerto 60 cambio el estado de las CAPS, NUM, y SCROLL, pero los LEDs no hacen nada. Por lo menos ya tengo algo hecho, muchas gracias  :beer:

No sé si turbo C me deja acceder directamente a la memoria, supongo que al estar ejecutando la aplicación bajo windows, ésta se cerrará y dirá que ha efectuado una operación no válida.

Ahora viene la pregunta tonta: ¿Como voy a esa dirección? ¿Con un mov? Mis conocimientos de Ensamblador son un poco limitados, sorry  :unsure:

De momento parece que vamos bien.  :good:

3
ASM (Ensamblador) / Cambiar el estado de los LEDs del teclado.
« en: Jueves 18 de Septiembre de 2008, 18:54 »
Hola,

Soy un estudiante de ingeniería eléctrica aficionado a la informática. Hace tiempo que uso Linux, y en este SO hay una utilidad, setleds, para fijar el estado del bloque de mayúsculas, numérico y el scroll.

Quiero hacer algo similar para Windows, con Turbo C y ASM.

De momento, toqueteando la interrupción 16h no he conseguido nada. He rebuscado por Internet, y sí, hay información, pero no hay nada que se ajuste a lo que yo quiero. He bajado el código fuente del programa setleds, y éste fija el estado por llamadas a ioctl (). Yo lo quiero en ASM.

¿Alguien me puede ayudar? No pido que me escribais el código, sólo un poco de ayuda, por que no sé por dónde seguir.  :hitcomp:

Un saludo.

Páginas: [1]