5

我想尝试用汇编语言编写操作系统。请不要只说“白痴,你必须在 %s、%s、%s、%s 等方面做得更好才能考虑到这一点。” 我知道这通常不是边做边学的事情,而且需要几个月的工作,但我想尝试,如果我在这里没有得到答案,我会在其他地方问。您能否将我链接到使用 nasm 的入门教程,或者在汇编中不使用 C 函数写入屏幕的方法?我几乎知道所有主要的组装说明,并且我已经编码了很长时间。编辑:我想使用 nasm 和 win32

4

4 回答 4

2

除了上面的其他优秀建议之外,还有一个 Nasm 论坛(您可以在以下位置获得最新版本的 Nasm 和友好手册):

http://www.nasm.us

“Netwide”汇编器的主页上有国家代码,这似乎很奇怪。不要把它想象成“美国”,把它想象成“像,Nasm us,伙计!” :)

由于切换到 pmode 后 BIOS 中断将不可用,因此学习如何直接访问硬件是有意义的。写到屏幕上是一个简单的开始。您需要知道“屏幕”通常位于 0xB800000(B800:0000 为段:偏移形式 - 您可能需要)。您需要知道布局是字符的一个(偶数)字节和“属性”(主要是颜色)的一个(奇数)字节。即使您没有使用中断,RBIL 也包含“ports.lst”,您可能会发现它很有帮助。如上所述,osdev.org 是您最好的新朋友!

快乐的启动,

坦率

于 2012-07-11T00:32:56.503 回答
1

The only way to do it without using C functions or system calls is to have your assembly code run without any other operating system, or run inside an emulator like Bochs or QEMU.

Here is a simple tutorial for nasm that writes to the screen and does not use C functions, and at that level, is not dependent on Win32. If you want to write something that does such things while running in windows, then I am afraid that C function are about the only way unless you can learn some software interrupt interface for doing such.

As an aside, osdev.org contains many good articles and tutorials, including many on how to write code in assembly, for many different aspects of operating system development.

于 2012-07-10T20:21:56.903 回答
0

引用我同意的Nick Morgan的话:

好吧,我不认为学习 x86 有用。我认为你永远不必在日常工作中编写汇编语言——这个 [学习汇编程序] 纯粹是一种学术练习,可以扩展你的思维和思维。6502 [一种汇编语言] 是在另一个时代编写的,当时大多数开发人员直接编写汇编,而不是使用这些新奇的高级编程语言。因此,它被设计为由人类编写。更现代的汇编语言是由编译器编写的,所以让我们把它留给他们。另外,6502 很有趣。从来没有人称 x86 很有趣。

我目前还在用DCPU-16 汇编语言(你可能听说过)编写一个有趣的“操作系统” 。这很有趣,因为我可以使用许多可用的浏览器内“IDE”之一,例如这个IDE ,而且我想您需要了解的 x86 汇编的相同原则也适用。

于 2012-07-11T00:52:37.700 回答
0

If you're tageting Win32, there's classical Win32 Assembly Tutorials by Iczelion: http://win32assembly.online.fr/tutorials.html

于 2012-07-11T10:35:06.373 回答