2012-07-10 31 views
5

我想嘗試編寫一個裝配中的操作系統。請不要只說「白癡,你必須在%s,%s,%s,%s等方面更好地思考這個問題。」我知道這通常不是一個邊學邊做的事情,需要幾個月的工作,但我想嘗試,如果我沒有在這裏得到答案,我只會問別的地方。您可以將我與nasm的入門教程聯繫起來,還是通過組裝的方式寫入屏幕而不使用C函數?我幾乎瞭解所有主要裝配說明,並且已經編碼了很長時間。 編輯:我想使用nasm和win32純裝配 - 無鏈接C函數

+0

嘗試搜索www.codeproject.com我記得有一次我讀過一篇好文章寫一個引導裝載程序。 – valdo 2012-07-10 20:01:43

+0

http://wiki.osdev.org/Printing_to_Screen – cnicutar 2012-07-10 20:03:28

+0

或使用BIOS http://wiki.osdev.org/BIOS#BIOS_functions – 2012-07-10 20:17:23

回答

1

不使用C函數或系統調用的唯一方法是讓您的彙編代碼在沒有任何其他操作系統的情況下運行,或者在模擬器(如Bochs或QEMU)內運行。

Here是一個簡單的nasm教程,它寫入屏幕並且不使用C函數,並且在該級別上不依賴於Win32。如果你想在Windows中運行時寫這樣的東西,那麼恐怕C函數是唯一的方法,除非你可以學習一些軟件中斷接口。

另外,osdev.org包含許多優秀的文章和教程,其中包括許多關於如何在操作系統開發的許多不同方面編寫代碼的程序集。

2

除了上述的其他很好的建議,有一個NASM論壇(你可以得到NASM和友好手冊的最新版本)的:

http://www.nasm.us

它可能看起來奇怪的是,「網際彙編」彙編在其主頁上有一個國家代碼。不要把它想成「美國」,把它想成「像我們一樣,老兄!」 :)

由於一旦切換到pmode時BIOS中斷將不可用,因此瞭解如何直接訪問硬件是有意義的。寫入屏幕是一個容易的開始。你需要知道「屏幕」通常在0xB800000(B800:0000的段:偏移量形式 - 你可能需要)。您需要知道佈局是字符的一個(偶數編號)字節和「屬性」(主要是顏色)的一個(奇數編號)字節。即使你不使用中斷,RBIL也包含「ports.lst」,你可能會發現它有幫助。如上所述,osdev.org是你最好的朋友!

快樂Bootin',

弗蘭克

0

Nick Morgan,我與他同意:

好了,我不認爲學習的x86是非常有用的。我認爲你不需要在日常工作中編寫彙編語言 - 這個[學習彙編程序]純粹是一種學術練習,可以擴展你的想法和想法。 6502 [彙編語言]是在另一個時代編寫的,大多數開發人員都是直接編寫彙編語言,而不是使用這些新編的高級編程語言。所以,它的設計是由人類寫的。更多的現代彙編語言是由編譯器編寫的,所以讓我們把它留給他們。另外,6502很有趣。沒有人稱過x86的樂趣。

我目前還在編寫DCPU-16 assembly language(您可能聽說過)的「操作系統」。這很有趣,因爲我可以使用許多可用的瀏覽器內「IDE」之一,例如this one,我想你應該瞭解x86組件的相同原理。

+0

但是x86也是在人們編寫程序集的時候設計的,僅僅3年之後的6502. – harold 2012-07-11 09:08:25

+0

是的,我認爲他想說的是,多年來,它發展到一些東西,不意味着手工書寫:) – fresskoma 2012-07-11 10:00:59

+0

嗯,這是一個更有效的點,我會說從PPro開始,但IMO在SSE與P3一起推出時不再是真實的 - 在十多年以後,我還沒有看到一個編譯器能夠定期正確使用它,而不是偶然發生的偶然事件。 – harold 2012-07-11 10:12:18