2012-07-10 17 views
5

Quiero intentar escribir un sistema operativo en el ensamblaje. POR FAVOR, no digas "Idiota, tienes que mejorar mucho en% s,% s,% s,% s, etc. para siquiera pensar en eso". Sé que normalmente no es algo que aprenda haciendo y que llevará meses de trabajo, pero quiero intentarlo y si no obtengo una respuesta aquí, solo preguntaré en otro lado. ¿Podría vincularme a un tutorial de inicio con nasm, o una forma de, en conjunto, escribir en la pantalla sin utilizar las funciones de C? Conozco casi todas las instrucciones de ensamblaje principales y he codificado durante mucho tiempo. Editar: Deseo usar nasm y win32Montaje puro: sin funciones C vinculadas

+0

Prueba a buscar www.codeproject.com Recuerdo una vez que me he leído un buen artículo acerca de cómo escribir un gestor de arranque. – valdo

+0

http://wiki.osdev.org/Printing_to_Screen – cnicutar

+0

o usando el BIOS http://wiki.osdev.org/BIOS#BIOS_functions –

Respuesta

1

La única manera de hacerlo sin usar funciones C o llamadas al sistema es hacer que su código ensamblador se ejecute sin ningún otro sistema operativo o ejecutarse dentro de un emulador como Bochs o QEMU.

Here es un tutorial simple para nasm que escribe en la pantalla y no utiliza funciones C, y en ese nivel, no depende de Win32. Si desea escribir algo que haga tales cosas mientras se ejecuta en Windows, me temo que la función C es la única manera a menos que pueda aprender alguna interfaz de interrupción de software para hacerlo.

Como un aparte, osdev.org contiene muchos buenos artículos y tutoriales, incluidos muchos sobre cómo escribir código en ensamblado, para muchos aspectos diferentes del desarrollo del sistema operativo.

2

Además de las otras excelentes sugerencias anteriores, hay un Foro Nasm (y usted puede conseguir las versiones recientes de Nasm y el Manual friendly) en:

http://www.nasm.us

Puede parecer extraño que el ensamblador "Netwide" tiene un código de país en su página de inicio. No lo piense como "Estados Unidos", piense en él como "Me gusta, Nasm, amigo". :)

Como las interrupciones de BIOS no estarán disponibles una vez que cambie a modo, tiene sentido aprender cómo acceder al hardware directamente. Escribir en la pantalla es fácil para empezar. Necesita saber que "la pantalla" normalmente está en 0xB800000 (B800: 0000 en el segmento: forma de desplazamiento, que probablemente necesite). Tendrá que saber que el diseño es un byte (incluso numerado) para el personaje y un byte (número impar) para el "atributo" (color, principalmente). Aunque no está utilizando interrupciones, RBIL también incluye "ports.lst", que puede ser útil. ¡Y como se mencionó anteriormente, osdev.org es tu nuevo mejor amigo!

feliz Bootin',

Frank

0

Para citar Nick Morgan, con el que estoy de acuerdo:

Bueno, no creo que el aprendizaje es útil x86. No creo que alguna vez tenga que escribir lenguaje ensamblador en su trabajo cotidiano; este [ensamblador de aprendizaje] es puramente un ejercicio académico, algo para expandir su mente y su forma de pensar. 6502 [un lenguaje ensamblador] se escribió en una época diferente, una época en la que la mayoría de los desarrolladores escribían ensamblado directamente, en lugar de en estos nuevos lenguajes de programación de alto nivel. Entonces, fue diseñado para ser escrito por humanos. Los compiladores deben escribir lenguajes ensambladores más modernos, así que dejémoslo a ellos. Además, 6502 es divertido. Nadie nunca llamó a x86 divertido.

Actualmente estoy escribiendo también un "sistema operativo" por diversión, en el DCPU-16 assembly language (es posible que haya oído hablar de él). Es divertido porque puedo usar uno de los muchos "IDEs" en el navegador disponibles, como this one, y creo que se aplican los mismos principios que debe entender para el ensamblaje x86.

+0

Pero x86 también se diseñó en el momento en que las personas escribían ensamblajes a mano, solo 3 años después del 6502. – harold

+0

Sí, creo que lo que está tratando de decir es que, a lo largo de los años, evolucionó a algo que no debe escribirse a mano más :) – fresskoma

+0

Bueno, ese es un punto más válido, diría que comencé con el PPro, pero IMO dejó de ser cierto cuando se introdujo SSE con el P3; después de más de una década, aún no he visto un compilador que haga un uso adecuado de él regularmente, en lugar de hacerlo de vez en cuando por accidente. . – harold