Assembly sin SO ¿?

Iniciado por dac, 1 Julio 2012, 18:27 PM

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

dac

Hola a todos!

He estado estudiando el lenguaje assembly, pero la mayoría de los textos definen entre programación windows (DOS más especificamente) y Unix, Unix-like, pero lo que a mi me interesa realmente es aprender/entender el funcionamiento interno/básico de una computadora por lo cual me resulta insatisfactorio mostrar una cadena por pantalla haciendo uso de una interrupción o syscall al kerndel del SO local  :-\ ... me gustaría me recomendaran o me contaran algo al respecto de la programación sin depender del SO, como se maneja el "video" (aun no tengo remota idea de como funciona), teclado, etc,etc... uds me entienden.. quiero saber como funciona..  ;-)

PD: me refiero a algo como esto  http://mikeos.berlios.de/   (no sé lo suficiente como para intentar entender esto)  :-[

Saludos! y gracias!

x64core

vos queres saber quiza architectura de la PC, aunque en los libros viejos me e fijado que habla bastante como fucionan el teclado
la pantalla, etc, por ejemplo la pantalla hay un cañon que corre infinita veces la pantalla llenandola de pixeles a una velocidad super
veloz y todo eso lo podes ver en un libro que se llama universo digital de IBM , PC o algo así en el primer enlace sale de google.
no le lei todo a aprendemele de memoria todo pero le di una buena leida.
tambien me e fijado que antes, en la programacion en DOS se trataba mucho esos temas, luego con windows ya casí no se trata
mucho, obviamente porque windows hace la tarea más facil

_Enko

#2
Aqui está la respuesta a todo y mas.

http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html/

Tenes ahi un compilado de 3 volumenes o de 7. (es exactamente lo mismo, solo diferencia la cantidad de pdfs)

dac

Por un lado conseguí un par de libros de la era "post DOS" y creo que voy ya teniendo donde sacar la info que quiero  ;-)
y también mire los pdf's de intel y me sirvió mucho la info un poco más profunda de los micros.

Muchas Gracias! :D

_Enko

DOS es un sistema operativo... si  lo usas, no cumples la condicion de tu pregunta (assembly sin SO)

La única librería que podrias usar serían las interupciones de la BIOS y te mantendrias dentro de esa condicion. Pero  estarías atado a programar en 16bit.

Podrias programar bajo DOS pero sin usar las interrupciones de DOS, sino los de la BIOS unicamente... igual sería hacer trampa.

Oblivi0n

Para usar ensamblador sin sistema operativo, tienes que conocer todos los detalles de los dispositivos que manejes, vease : bancos de registros, mapeos de memoria, tamaño de la memoria, numero de registros accesibles, etc etc. Si quieres, te puedo pasar un programar que usamos en la universidad en una asignatura que es un poco iniciacion a la arquitectura de programación. El programa simula un computador pero por software, tiene su propio ensamblador, que es relativamente parecido al ASM x86 de intel, y puedes ejecutar programas viendo todo lo que pasa ( incluso virtualizar pantalla y teclado ). Eso si, es una lata aprender a usarlo

zu-zu

#6
A pesar de que se diga lo contrario, no todo son interrupciones de la BIOS para modo real, ya que existe gran variedad de alternativas para programar aplicaciones sin necesidad de un OS, como por ejemplo los opcodes IN, OUT, LGDT, LIDT, etc.

Al no haber ningún OS instalado, la BIOS debe cargar nuestro bootloader -ubicado en el sector 0 de la unidad correspondiente- en la dirección de memoria de 16 bits 0x7C00 porque después de todo estamos en modo real, para luego cargar el núcleo del programa, pasar a modo protegido, etc.

La memoria de vídeo, al menos en modo texto, es mapeada en una dirección de memoria que ya no recuerdo, y escribiendo allí es posible imprimir caracteres en la pantalla.

La mejor alternativa para aprender a programar a tan bajo nivel sería leer la documentación oficial de Intel y tener conocimientos mínimos sobre hardware. Existe mucha documentación al respecto, sólo hay que saber buscar correctamente.

PD: En vista de que se ha hablado sobre simular un ordenador por software, te recomendaría probar BOCHS.

Oblivi0n

Desconozco si en los ordenadores convencionales las direcciones de memoria se mapean en unos sitios "predeterminados", pero hasta donde alcanzan mis conocimientos, eso es una decisión del diseño del propio computador, y no tienen porque estar en esa dirección de memoria (corriganme si me que equivoco).

zu-zu

Cita de: Oblivi0n en  2 Julio 2012, 22:58 PM
Desconozco si en los ordenadores convencionales las direcciones de memoria se mapean en unos sitios "predeterminados", pero hasta donde alcanzan mis conocimientos, eso es una decisión del diseño del propio computador, y no tienen porque estar en esa dirección de memoria (corriganme si me que equivoco).

La memoria de vídeo en modo texto se mapea en 0xB8000, para modo gráfico se encuentra en 0xA0000. Ambas en ordenadores convencionales.

dac

_Enko:

Claro que si... pero precisamente por eso busque documentación post DOS , quiero decir antes del DOS

zu-zu:

Me has dado mucha luz en el asunto, lo tengo un poco más claro, donde puedo aprender a manejar la memoria de video? (en que libros) , probaré BOCHS , hace unos días encontré "MSX88" y aluciné; lo usé con DOSBOX sin embargo no me convenció y busque una alternativa que no encontré, gracias por recomendarlmelo

Oblivi0n:

Me podrías decir cual es dicho software? , y donde puedo encontrarlo?, me fascina lo que dices acerca de este


Gracias a todos!