Puertos I/O

Iniciado por cpu2, 16 Mayo 2013, 15:17 PM

0 Miembros y 1 Visitante están viendo este tema.

Eternal Idol

Creo que la clave esta en que programar en assembly no implica que puedas acceder al hardware, un programa de modo Usuario en C puede hacer exactamente lo mismo que uno en assembly.

Y si, al final de cuentas para hacer algo asi correctamente tenes que hacerlo en modo Kernel, incluso aunque tuvieras disponible ioperm para mi no es mas que un hack.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

cpu2

Tenia pensado hacer algo en el núcleo, pero las pruebas pfff, bueno ya vere que pienso porque ahora mismo estoy en blanco.

Un saludo y gracias por el tiempo a todos.

cpu2

Ya he realizado algunas pruebas, no fue en el núcleo si no en el boot del sistema.

Modifiqué el código del boot de esta forma.

Código (asm) [Seleccionar]
asm ( "xorl %eax, %eax\n\t"
      "in $0x60, %eax\n\t"
      "movl %eax, 0x4b659" );


Luego los imprimo en pantalla con un printf, pero el carácter no es el correcto, si no tecleo nada es una z, si es una b = 0, c = . y  la h = #, no lo entiendo de el todo, pero el fragmento de código funciona bien pero no son los carácteres indicados.

Y sobre el puerto del sensor obtengo lo siguiente 0xe0000000, que no es el valor correcto. Bueno que opinan.

Un saludo.

P.D: Siento el doble post.

lucaslopez0000

Aunque soy nuevo con el asm , si que conozco bien el lenguaje C. ¿ Intentas manejar el puerto paralelo , verdad ? El puerto paralelo no suele ser 278 decimal , sino 378 hexadecimal o 278 hexadecimal. La verdad que lo de los permisos aunque sea bueno para la seguridad es un horror para este tipo de cosas. Yo en mi caso con lo nuevo que soy con el asm creo un binario puro sin llamadas al sistema y lo emulo con qemu
creo que en asm existe una instruccion llamada out , para el tema de los puertos , echale un vistazo ;)
La manera mas simple de solucionar los problemas de windows , los virus , el spyware , la basura de microsoft en general

USA LINUX

cpu2

Cita de: The_C_Coder en 20 Junio 2013, 11:35 AM
El puerto paralelo no suele ser 278 decimal , sino 378 hexadecimal o 278 hexadecimal.

Eso pensé yo ayer despúes de un rato de a ver escrito el anterior mensaje, he estado mirando la tabla extendida ascii y los valores que muestra ese printf no aparecen.

1 = una cara sonriente, 2 = corazón, 3 = diamante, 4 = trébol, 5 = pica.

Conclusión: Pokerstarts  ::).

No ahora enserio, que tabla ascii utiliza y donde le puedo echar un ojo?

Cita de: The_C_Coder en 20 Junio 2013, 11:35 AM
Yo en mi caso con lo nuevo que soy con el asm creo un binario puro sin llamadas al sistema y lo emulo con qemu

Curioso, que traduces el opcode a binario no?

Código (asm) [Seleccionar]
incl %eax   ; 0xffc0 1111111111000000
syscall     ; 0x0f05 0000111100000101


Cita de: The_C_Coder en 20 Junio 2013, 11:35 AM
creo que en asm existe una instruccion llamada out , para el tema de los puertos , echale un vistazo ;)

Si, pero de momento no quiero enviar nada a los puertos.

Un saludo.

0xDani

@cpu2, si lees del puerto del teclado directamente te devolverá un keycode, lógico que no te devuelva un código ASCII. Busca cómo puedes hacer esta conversión.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

cpu2

Exacto eso era Dani, he comparado los keycode y son los correctos.

Esta claro que el teclado tiene que ser uno de los dispositivos más simples que hay, sguiré investigando a ver si soy capaz de controlar dispositivos más complejos como puede ser el ethernet, pero eso ya es otra cuestión y tiene que ir en otro hilo.

Doy el tema por resuelto, gracias a todos por vuestro tiempo.

Un saludo.

P.D: Dani que paso con FreeBSD?

0xDani

Cita de: cpu2 en 20 Junio 2013, 19:28 PM
P.D: Dani que paso con FreeBSD?

Lo estuve intentando, pero tuve un montón de problemas y no pude instalarlo :'(
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM