Programación General > ASM (Ensamblador)

 Programar Drivers

<< < (2/2)

Bicholey:
:o  :o  :o  :o
Excelente ahora mismo ya estuve trabajando con mi disco de inicio autobooteable y un programa para formatear dicho disco y todo lo he hecho en ensamblador y coinicido contigo en que seria mucho mas facil y potente hacerlo en C++ perohay varias cosas que no comprendo como pasarlas de MASM a C++ por ejemplo vi el codigo que tenian uds para reiniciar la PC era un brinco asi jmp ffff:0000
lo probe con el debug de ms-dos y no funciono como esperaba no se si haga falta algo ahh bueno pero os decia exacatamente ese salto de jmp ffff:0000 no lo puedo hacer con C++ debido a que solo me acepta jmp ffff acaso tu sabes como hacerlo?
Por tu ayuda gracias. Y seguir dandole

 :comp:  :comp:
_________________________
TAN SOLO SOY UN GATO PROGRMANDO

x.cyclop:
Esto se va a escuchar raro pero... ¿Existen drivers multiplataforma?  :blink:

Eternal Idol:

--- Cita de: "Radoslav" ---Excelente ahora mismo ya estuve trabajando con mi disco de inicio autobooteable y un programa para formatear dicho disco y todo lo he hecho en ensamblador y coinicido contigo en que seria mucho mas facil y potente hacerlo en C++
--- Fin de la cita ---

Me parece que estas metiendo en la misma bolsa muchas cosas. Un disco autobooteable no tiene nada que ver con un driver, un driver esta ligado estrechamente con el S.O. bajo el cual va a ejecutarse y un disco autobooteable no tiene un S.O. (o es el mismo el S.O.).



--- Cita de: "X.Cyclop" ---Esto se va a escuchar raro pero... ¿Existen drivers multiplataforma?
--- Fin de la cita ---

Si, el codigo puede ser multiplataforma (con gran cantidad de defines claro) pero el binario no. El binario tiene que estar ligado a las funciones del Kernel y sus instrucciones tienen que ser nativas al microprocesador. Lo primero nos excluye un driver multiplataforma con el mismo binario para diferentes S.O.s (Windows/Linux por ejemplo) y lo segundo nos excluye un driver multiplataforma con el mismo binario para diferentes microprocesadores (32/64 bits por ejemplo).

Bicholey:
:lol:  :lol:  :lol:
ahh lo que pasa es que estoy escribiendo muchas cosas aqui mismo que obvio no tienen qu ver con los drivers solo decia que trabajaba en mi disco de inicio pero por aparte de los drivers es solo que cuando me aburro de una cosa me cambio a otra y por eso era mi pregunta si el codigo jmp ffff:0000 lo puedes hacer en C++ y que se supone que debe de hacer ese salto porque como vi en otro post se supone me reinicia el ordenador pero no obtengo los resultados deseados queria saber si hace falta algo más.
Gracias por la atencion.

Eternal Idol:
Eso lo que hace es saltar justamente a la direccion donde esta cargada la BIOS y por lo tanto desencadenar el inicio de la maquina como cuando le das al boton de reset. Para pasarlo a C++ necesitas para empezar un compilador que genere codigo de modo Real (16 bits).

Despues podes hacer lo mas facil que consiste en meter los bytes correspondientes al salto uno por uno (esto ya dependera del compilador, en VC++ usarias __emit aunque obviamente no en 32 bits). Lo que en MASM seria un db:

reset equ DB 0EAh, 0h, 0h, 0FFh, 0FFh

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa