主頁(yè) > 知識(shí)庫(kù) > 關(guān)于BIOS的入口地址0xFFFF0的介紹

關(guān)于BIOS的入口地址0xFFFF0的介紹

熱門標(biāo)簽:中小企業(yè)外呼系統(tǒng)價(jià)格 電銷 外呼 系統(tǒng) 地圖標(biāo)注怎么做序號(hào) 百度地圖標(biāo)注員干嘛的 南陽(yáng)高頻外呼系統(tǒng)哪家公司做的好 免費(fèi)地圖標(biāo)注服務(wù)中心店 河南語(yǔ)音外呼系統(tǒng)招商 長(zhǎng)春營(yíng)銷外呼系統(tǒng)報(bào)價(jià) 江西省地圖標(biāo)注

一直都說(shuō)開機(jī)加電之后,將CS設(shè)置為0xFFFF,IP設(shè)置為0x0000,這樣組成的地址就是0xFFFF0,而這個(gè)就是BIOS的入口地址,之后CPU讀取這個(gè)地址的代碼,然后就巴拉巴拉的開始執(zhí)行下去了。

現(xiàn)在想知道這個(gè)地址0xFFFF0是在主板上呢,還是在內(nèi)存上。想著如果是統(tǒng)一編址的話,就可能是去讀取主板上的ROM,但是看書上的圖,有像是在RAM中,如果是在 內(nèi)存 中,那是什么時(shí)候,由哪段程序?qū)OM中的程序讀取到內(nèi)存中的。自己猜的話,應(yīng)該這個(gè)過(guò)程是固定的硬件實(shí)現(xiàn)的,將ROM中的所有內(nèi)容拷貝到內(nèi)存中最高位那一段中,之后,0xFFFF0就必然是指內(nèi)存中的地址了。

百度了一下,有篇文章就是說(shuō)這個(gè)的。

640KB~1MB 上位內(nèi)存(這個(gè)區(qū)域的地址分配給ROM,相應(yīng)的384KB的RAM被屏蔽掉。所謂的影子內(nèi)存技術(shù),就是把ROM內(nèi)容讀取到對(duì)應(yīng)地址的RAM中,以后系統(tǒng)就從RAM中讀取數(shù)據(jù),而不是從原來(lái)的ROM讀取數(shù)據(jù),從而提高速度。)

1MB~ 擴(kuò)展內(nèi)存

注:

Shadow RAM也稱為"影子內(nèi)存",是為了提高計(jì)算機(jī)系統(tǒng)效率而采用的一種專門技術(shù),所使用的物理芯片仍然是CMOS DRAM(動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,參閱本書后面的內(nèi)容)芯片。Shadow RAM占據(jù)了系統(tǒng)主存的一部分地址空間。其編址范圍為C0000~FFFFF,即為1MB主存中的768KB~1024KB區(qū)域。這個(gè)區(qū)域通常也稱為內(nèi)存 保留區(qū),用戶程序不能直接訪問(wèn)。Shadow RAM的功能就是是用來(lái)存放各種ROM BIOS的內(nèi)容。也就是復(fù)制的ROM BIOS內(nèi)容,因而又它稱為ROM Shadow,這與Shadow RAM的意思一樣,指得是ROM BIOS的"影子"。現(xiàn)在的計(jì)算機(jī)系統(tǒng),只要一加電開機(jī),BIOS信息就會(huì)被裝載到Shadow RAM中的指定區(qū)域里。由于Shadow RAM的物理編址與對(duì)應(yīng)的ROM相同,所以當(dāng)需要訪問(wèn)BIOS時(shí),只需訪問(wèn)Shadow RAM而不必再訪問(wèn)ROM,這就能大大加快計(jì)算機(jī)系統(tǒng)的運(yùn)算時(shí)間。通常訪問(wèn)ROM的時(shí)間在200ns左右,訪問(wèn)DRAM的時(shí)間小于100ns、60ns, 甚至更短。

在計(jì)算機(jī)系統(tǒng)運(yùn)行期間,讀取BIOS中的數(shù)據(jù)或調(diào)用BIOS中的程序模塊的操作將是相當(dāng)頻繁的,采用了Shadow RAM技術(shù)后,無(wú)疑大大提高了工作效率。

386 之前與386之后,這個(gè)地址是不同的,但都在系統(tǒng)內(nèi)存的最高 地址段。在386下為 FFFFFFF0H。因?yàn)镃S段是16位的,EIP是32位的,為了得到一個(gè)32位地址,386給CS段增加了幾個(gè)字段,這是隱藏的字段,系統(tǒng)可以通過(guò) GDT,IDT將更改段選擇子的字段,此時(shí)地址轉(zhuǎn)換就不是 段地址左移4位 + 偏移地址,而是CS的Base字段+偏移地址。

下面是一個(gè)例子

當(dāng)系統(tǒng)加電后,系統(tǒng)會(huì)復(fù)位。此時(shí)在386以前的系統(tǒng)下CS=F000H,IP=FFF0H,Bios地址為段地址左移4位 + 偏移地址擠即 F0000H + FFF0H = FFFF0H

在386以前系統(tǒng)可尋址范圍為1MB即 00000H~FFFFFH

在386下CS=F000H,IP=FFF0H,這是不變的,但是這時(shí),CScs中的內(nèi)容為:

Selector = F000H (這個(gè)就是你可以看到的那部分內(nèi)容)

這時(shí)隱藏的部分是不能用的,因?yàn)樵趯?shí)地址模式下,所以Bios地址與386以前的地址一樣,

但是386可尋址范圍為4GB 即 00000000H~FFFFFFFFH,如果以這個(gè)地址(000FFFF0H)作為Bios地址的話,系統(tǒng)內(nèi)存不連續(xù),因此,386使用硬件置1的方式將A20~A31地址線置1,就變成FFFFFFF0H,并以此作為Bios地址。

這個(gè)置1的結(jié)果是,隱藏的部分的一個(gè)字段Base=FFFF0000H,這個(gè)操作不是由更改描述符表實(shí)現(xiàn)的,因?yàn)檫€沒(méi)有進(jìn)入保護(hù)模式,而且描述符表還沒(méi)有 建立。這是硬件實(shí)現(xiàn)的,而且當(dāng)進(jìn)行一次段間跳轉(zhuǎn)后,由于置1的結(jié)果就不能保存,因?yàn)橛布O(shè)計(jì)是從會(huì)將其置0,所以當(dāng)執(zhí)行完FFFFFFF0H處的指令 jmp ,Base=00000000H,這時(shí),Bios就使用1M以下內(nèi)存。

關(guān)于入口地址的形成,有的文章上說(shuō)是CS 0xFFFF和IP 0x0000的組成,有的文章上說(shuō)是 CS 0xF000 和IP 0xFFF0的組合,我猜可能是不同硬件的初始化不同,只要最后形成的入口地址是 0xFFFF0就行了。如果不是我猜的那樣,那回頭在來(lái)補(bǔ)充吧。

標(biāo)簽:河源 商洛 秦皇島 黑龍江 開學(xué)通知 三沙 云南 宣城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于BIOS的入口地址0xFFFF0的介紹》,本文關(guān)鍵詞  關(guān)于,BIOS,的,入口,地址,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于BIOS的入口地址0xFFFF0的介紹》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于關(guān)于BIOS的入口地址0xFFFF0的介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章