操作系統會對它所管理的程序提出種種格式上的要求
比如,要求編譯好的程序必須在文件的開始部分包含編譯日期、針對的操作系統、程序的版本,第一條指令從哪裏開始,數據段從哪裏開始,有多長,代碼段從哪裏開始有多長等等,windows甚至建議你在程序中包含一個用於顯示的圖標
如果你不按它的要求來,他就會彈出文件無法執行
當計算機啓動時,8086處理器的狀態
開機按鈕就是和處理其的RESET引腳相連,當我們按下開機按鈕的時候,會向RESET引腳發送一個信號,會使其執行硬件初始化和內部子測試,並將所有寄存器的內容初始到一個預置的操作
注意這只是8086的設置,其他的處理器不一定這樣
當處理器加電後,寄存器內容初始到預置操作,只有CS是FFFF,其他都是0000
所以當處理器加電後,發出的第一個指令是FFFF0,它距離內存的最頂端FFFFF只有16個字節,8086就是從這個位置來開始取指令執行的
(8086只可以訪問1M字節的內存,地址範圍是00000-FFFFF
而我們現在的處理器都能訪問16G了)
在計算機中,8086處理器可以發出的地址範圍是連續的,從00000一直到FFFFF
但這並不意味着被訪問的內存在物理上是一個整體,事實上,這個連續的範圍會被地址分配電路分成3個獨立的部分
- 00000-9FFFF 8086訪問的就是我們正常內存條上的內存
- A0000-EFFFF 8086訪問的是外部設備的接口電路和接口卡(聲卡、網卡、顯卡等等)
- F0000-FFFFF BIOS
所以處理器初始加電時發出的第一個地址是FFFF0,是位於BIOS中
FFFF0距離內存頂端FFFFF只有16個字節,存不下幾句指令,所以BIOS中FFFF0處的指令是一個跳轉指令
跳轉到FE05B,再開始取指執行,來進行其他的開機初始化操作
(FE05B還在BIOS中)
硬盤
最外面是0道
硬盤扇區的結構
數據512個字節!
讀取BIOS指令完成之前,最後一道指令是從外部存儲設備讀取更多的指令交給處理器執行
黃色部分是BIOS讀取結束時的最後一條指令
如果計算機是從硬盤啓動,那麼BIOS將讀取硬盤主引導扇區的內容,將其加載到07C00處,然後用一條跳轉指令跳到07C00處繼續執行
0面0道1扇區是主引導扇區
通常主引導扇區的功能是繼續從硬盤的其他部分讀取更多的內容加以執行,即在主引導扇區裏有一些代碼從硬盤的其他部分讀取內容(操作系統就是在硬盤其他部分,不在主引導扇區)
主引導扇區是512個字節
而如果我們把自己編寫的程序放到主引導扇區,不也能讓處理器執行嗎?
這是可以的,並且幾乎是在不依賴操作系統的情況下,讓我們的程序可以執行的唯一方法
不過如果改寫了硬盤的主引導扇區,那麼你所安裝的操作系統就會崩潰的
8086處理器 & 硬盤
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.