计算机的启动过程———《x86汇编语言:从实模式到保护模式》读书笔记补遗01
有的朋友問我,為什么讀書筆記不從第一章開始寫?這個問題啊…當初覺得前面的內容不是很重要,就沒有寫。
我真是高估自己的記憶力了,隨著時間的推移,發現前面好多內容都生疏了,有的朋友問我問題我都答不上來。所以,決定再補充一些筆記。即幫助自己回憶,也能方便初學者。
下面進入正題。
你有沒有想過這樣一個問題——計算機是怎么開始執行我們寫的指令的?
這就需要了解計算機的啟動過程了。
對于32位的x86處理器,在加電啟動時,段寄存器CS的內容是0xF000,IP寄存器的內容為0xFFF0,按照實模式地址的合成方法,給出的地址就是0xFFFF0;另外,在剛啟動的時候,處理器會將地址線A20~A31強制為高電平,所以,初始發出的物理地址就是0xFFFF_FFF0;這個地址存放的就是BIOS的第一條指令。
在Bochs上,可以看到第一條指令是
jmpf 0xf000:e05bBIOS需要做的工作有很多,比如
1)初始化各種主板芯片組
2)初始化鍵盤控制器8042
3)初始化中斷向量 ,中斷服務例程.
4)初始化 VGA BIOS 控制器
5)顯示BIOS的版本和公司名稱
6)掃描軟驅和各種介質容量
7)讀取CMOS的啟動順序配置,并檢測啟動裝置是否正常
8)調用INT 19h啟動自舉程序
對于匯編語言的學習,需要了解最后兩個步驟,(7)和(8)。
BIOS按照”啟動順序”,選擇排在第一位的儲存設備,讀取該設備的第一個扇區(512B)到內存0x7c00(物理地址)處,然后檢查這512個字節的最后兩個字節是不是0x55和0xAA,如果是則表明這個設備可以用于啟動,這個扇區就是主引導扇區;如果不是,則繼續嘗試”啟動順序”中的下一個設備。
如果確實是可以啟動的設備,則用一個華麗的JMP指令跳到0x0000:0x7c00處執行。
jmp 0x0000:0x7c00以后的實驗,我們都是從主引導扇區開始寫代碼。所以,當計算機將要執行我們寫的第一條指令的時候,請牢記此時CS=0x0000,IP=0x7c00.
【完】
總結
以上是生活随笔為你收集整理的计算机的启动过程———《x86汇编语言:从实模式到保护模式》读书笔记补遗01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 描点链接
- 下一篇: 表达式求值(最详细分析+代码实现+表达式