我想试着用汇编语言写一个操作系统。请不要只是说“笨蛋,你必须在%s,%s等方面做得更好才能考虑到这一点。”我知道这通常不是一个边做边学的事情,它需要几个月的工作,但我想尝试一下,如果我在这里得不到答案,我会问其他地方。你能不能给我链接一个nasm入门教程,或者一种不用C函数就能在汇编语言中写到屏幕的方法?我知道几乎所有的主要汇编指令,并且我已经编写了很长时间的代码。编辑:我想使用nasm和win32
发布于 2012-07-11 08:32:57
除了上面的其他优秀建议之外,还有一个Nasm论坛(您可以在以下网址获得最新版本的Nasm和友好手册):
http://www.nasm.us
"Netwide“汇编程序在它的主页上有一个国家代码,这可能看起来很奇怪。不要把它想成“美国”,把它想成“就像,Nasm us,伙计!”:)
由于一旦切换到pmode,BIOS中断将不可用,因此学习如何直接访问硬件是有意义的。写到屏幕上是一件很容易的事情。你需要知道“屏幕”的位置通常是0xB800000 (B800:0000 in segment:offset form -你可能需要)。您需要知道布局是字符的一个(偶数编号)字节和“属性”(主要是颜色)的一个(奇数编号)字节。即使你没有使用中断,RBIL也包含了"ports.lst“,你可能会发现这对你有帮助。如上所述,osdev.org是你最好的新朋友!
开机快乐,
弗兰克
发布于 2012-07-11 04:21:57
要做到这一点,不使用C函数或系统调用的唯一方法是让汇编代码在没有任何其他操作系统的情况下运行,或者在Bochs或QEMU等仿真器中运行。
Here是一个用于nasm的简单教程,它写入屏幕,不使用C函数,并且在那个级别上,它不依赖于Win32。如果你想写一些在windows中运行时做这些事情的东西,那么我恐怕C函数是唯一的方法,除非你能学到一些软件中断接口来做到这一点。
顺便说一句,osdev.org包含了许多很好的文章和教程,包括许多关于如何用汇编语言编写代码的文章和教程,涉及操作系统开发的许多不同方面。
发布于 2012-07-11 08:52:38
引用Nick Morgan,我同意他的观点:
嗯,我不认为学习x86是有用的。我认为你不需要在日常工作中编写汇编语言--学习汇编语言纯粹是一种学术练习,可以拓展你的思维和思维。汇编语言是在一个不同的时代编写的,当时大多数开发人员都是直接编写汇编语言,而不是用这些新奇的高级编程语言。所以,它被设计成由人类来编写。更现代的汇编语言是由编译器编写的,所以让我们把它留给他们吧。另外,6502很有趣。从来没有人说过x86有趣。
我目前也在写一个有趣的“操作系统”,用的是DCPU-16 assembly language (你可能听说过它)。这很有趣,因为我可以使用许多浏览器内“IDE”中的一种,比如this one,而且我猜您需要理解的x86组装原则也同样适用。
https://stackoverflow.com/questions/11420951
复制相似问题