從0x7c00開始的16位彙編 菜鳥文章

2021-07-13 21:36:37 字數 1119 閱讀 1910

本人,會點點linux.慚愧!

最近偶讀起《萊昂氏unix源**分析》一書,彷彿被xx點化了般,突然想自己也寫個作業系統的想法.

嗯…怎麼寫,沒個頭緒.╮(╯▽╰)╭.

這時, linux核心完全注釋(0.11版)出現在我眼前,裡面寫了一款軟體:>bochs,它是80x86的模擬器,可以執行linux,win作業系統,以及自己寫的匯程式設計序.

救星.嗯…,怎麼寫彙編,還是沒頭緒啊.╮(╯▽╰)╭

想起以前閱讀的,《王爽組合語言》很有用,然真正弄起來並沒有卵用.而linux核心完全注釋(0.11版),裡面又有寫了相關於編譯器(assembly),如:as86和ld86.依葫蘆寫了自己的乙個8086匯程式設計序.

嗯…,怎麼裝,讓bochs執行啊.這是一堆大坑,我小心翼翼的爬啊.其中:

1, as86 和ld86要怎麼安裝,這裡的命令的細節又是怎麼了.狂看起命令手冊.

2,as86採用intel風格的組合語言,(一些細節處還跟王爽彙編的有些不一樣.)(我選擇死亡)

3,經編譯的匯程式設計序,又是怎麼變為映象檔案,讓bochs執行.(書啊書,我又來找你了)

嗯…,怎麼除錯啊.

發現bochs可以除錯,單步除錯.這時我的眼睛亮了起來,又要爬坑了

又發現objdump可以反彙編,我的映象檔案.這時我的眼睛又亮了起來.

當機器從0x7c00處執行我的第一行**時….我想跳廣場舞

linux核心完全注釋(0.11版),裡面介紹了一些相關的硬體知識,其中:顯示控制.

裡面告訴了我,如何在顯示器上顯示了乙個字元,和其顏色.但是如何在乙個顯示器上顯示乙個畫素,我就不得而知了.

經過一番狂搜尋,一本書出現在我眼前:vesa vbe標準

不過,裡面一些bios如何控制硬體的細節,又沒有寫上來,這時我又覺得有必要去看看了.為啥,因為linux在執行時不使用bios裡提供的功能,而是自己寫的.這給了我乙個提示,鐵定有相關video細節的書.

果不其然,經過一番搜尋,我又找到了:

vga programmers master reference manual (vga程式設計師主要參考手冊),(這本口味好重,太過細節了,反而不容易懂.)

video subsystem,主頁: ,這本書是簡單介紹,比較好懂

這時,我踩過的坑.

BIOS載入MBR到記憶體位址0x7C00的由來

2012 11 27 14 03 48 對於很多人來講0x7c00這個位址是很神秘的,不知道這是幹什麼的。但是對於了解過x86平台下bios啟動過程的人,對這個位址再熟悉不過了。bios就是將mbr讀入0x7c00位址,然後進行後續的引導的。作業系統或是bootloader開發者必須假設 他們的彙編...

BIOS載入MBR到記憶體位址0x7C00的由來

對於很多人來講0x7c00這個位址是很神秘的,不知道這是幹什麼的。但是對於了解過x86平台下bios啟動過程的人,對這個位址再熟悉不過了。bios就是將mbr讀入0x7c00位址,然後進行後續的引導的。作業系統或是bootloader開發者必須假設 他們的彙編 被載入並從0x7c00處開始執行。0x...

為什麼主引導記錄的記憶體位址是0x7C00?

出處 計算機原理 課本說,啟動時,主引導記錄會存入記憶體位址0x7c00。這個奇怪的位址,是怎麼來的,課本就不解釋了。我一直有疑問,為什麼不存入記憶體的頭部 尾部 或者其他位置,而偏偏存入這個比 32kb 小1024位元組的地方?昨天,我讀到一篇文章,終於解開了這個謎。首先,如果你不知道,主引導記錄...