BIOS資料區和其他固定資料區
固定資料區包括CPU中斷向量表、儲存在中斷向量表內的資料以及BIOS和適配卡資料。
BIOS資料區
該區域含有系統BIOS ROM 用到的關鍵資料資訊。程式可以簡單地訪問BIOS資料。在所有系統上這個區域都開始於記憶體的 40h 段址處。通常可用兩種方法來訪問這段記憶體。其一是利用段址 40h 和偏移量為 0。第二種方法是使用段址 0,但偏移地址開始於 400h。通常使用這兩種方法可以訪問相同的資訊。
BIOS資料區歸納
偏移 | 型別 | 內 容 |
400H | 字 | 計算機上0號RS232-1介面卡的基地址,通常為3F8H。 |
402H | 字 | 計算機上1號RS232-1介面卡的基地址,通常為2F8H。 |
404H | 字 | 計算機上2號RS232-1介面卡的基地址。 |
406H | 字 | 計算機上3號RS232-1介面卡的基地址。 |
408H | 字 | 計算機上0號並行印表機介面卡的基地址,通常為378H。 |
40AH | 字 | 計算機上1號並行印表機介面卡的基地址。 |
40CH | 字 | 計算機上2號並行印表機介面卡的基地址。 |
40EH | 字 | 計算機上3號並行印表機介面卡的基地址。(PS2型此值為擴充套件BIOS資料區段地址) |
410H | 字 | 該字儲存與計算機連線的裝置編碼表,BIOS中斷11H(裝置測定)可返回此資訊。 |
位 | ||
0 | 軟碟機安裝標誌,此位為0表示沒有軟碟機。 | |
1 | 數字協處理器安裝標誌,此位為0表示未安裝協處理器。 | |
3-2 | 系統板RAM的大小,適用於一些舊機型,PS2型未使用。00=16K,01=32K,10=48K,11=64K)。 |
5-4 | 初始顯示方式(00=AG,01=CGA-40,10=CGA-80,11=MDA-80)。 | |
7-6 | 軟碟機的數量,公當位0為1時有效,00=1,01=2,10=3,11=4 | |
8 | DMA標誌 | |
9-11 | 所連RS232介面卡數 |
12 | 連有遊戲I/O | |
13 | 不用(PS2型為內建MODEM安裝標誌,此位為0表示沒有安裝) | |
14-15 | 所連印表機介面卡數 | |
412H | 位元組 | 初始測試標誌(紅外線鍵盤連線錯誤單元/?)。 |
413H | 字 | 該字給出印表機可用RAM的容量,基本記憶體容量為0-10K,以千位元組為單位。BIOS中斷12H(記憶體大小測定)可返回此資訊。 |
415H | 字 | I/O通道的儲存器容量(PS2型,BIOS控制標誌)。 |
417H | 位元組 | 這是第一個鍵盤狀態字,通過編碼,使每位均有特定的含義,具體格式如下: |
位 | ||
0 | 表示鍵盤右邊的Shift鍵當前是否被按下(1表示按下,0表示未按下)。 | |
1 | 表示鍵盤左邊的Shift鍵當前是否被按下(1表示按下,0表示未按下)。 | |
2 | 表明Ctrl鍵當前是否按下(1表示按下,0表示未按下)。 | |
3 | 表明Alt鍵當前是否按下(1表示按下,0表示未按下)。 |
4 | 螢幕(Scroll)鎖定開關鍵狀態(1表示螢幕鎖定處於開,0表示關)。 | |
5 | 數字(Num Lock)鎖定開關鍵狀態(1表示數字鎖定處於開,0表示關)。 | |
6 | 大寫字母(Caps Lock)開關鍵狀態(1表示Caps Lock處於開,0表示關)。 | |
7 | 插入狀態,它表明Ins鍵是否已按下,以使計算機進入“插入”方式,1表示插入狀態正工作,0表明未動作。 |
418H | 位元組 | 這是第二個鍵盤狀態字,其格式如下: |
位 | ||
0 | 表示鍵盤左邊Ctrl鍵當前是否被按下(1表示按下,0表示未按下)。 | |
1 | 表示鍵盤左邊Alt鍵當前是否被按下(1表示按下,0表示未按下)。 | |
2 | 如按下Ctrl+Alt+Del鍵,則該位為1。 |
3 | 如果系統鍵(Ctrl和Num Lock)接下且保持住,則該位為1,當這個系統鍵依次按下時,BIOS暫停處理,直至下鍵按下為止。但它仍響應中斷。 | |
4 | 表明螢幕(Scrool)鎖定鍵當前是否按下(1表示按下,0表示未按下)。 | |
5 | 表明數字(Num Lock)鎖定鍵當前是否按下(1表示按下,0表示未按下)。 | |
6 | 表明大寫字母(Caps Lock)鎖定鍵當前是否按下(1表示按下,0表示未按下)。 |
7 | 表明Ins鍵當前是否按下(1表示按下,0表示未按下)。 | |
419H | 位元組 | 為Alt和數字鍵盤鍵入的數而保留。(按住ALT+數字,可直接得到相應的ASCII碼) |
41AH | 字 | 指向鍵盤緩衝區首址 |
41CH | 字 | 指向鍵盤緩衝區尾址,當該值等於前一字的值時,說明緩衝區滿。 |
41EH | 32位元組 | 迴圈鍵盤緩衝區,它儲存鍵盤鍵入的字元,直到程式可以接收這些字元為止,前兩個字指向此緩衝區的當前是首和尾。 |
43EH | 位元組 | 表示磁碟驅動器的搜尋狀態,0-3位分別對應於驅動器。如果這些位中有一位為0,則表示在搜尋磁軌之前,必須重新校準相應的驅動器。位4-6未使用,位7為中斷標誌位,為1表示中斷髮生。 |
43FH | 位元組 | 表示磁碟驅動器的馬達狀態,0-3位分別對應於驅動器0-3,如果某位被置為1,則相應驅動器的馬達正在轉動。位4-6未使用,位7為1表示現行操作是寫。 |
440H | 位元組 | 儲存一個表明驅動器馬達接通多長時間的計數,每個時鐘節拍,計數減1,當計數為0明馬達停轉(根據INT8計時)。 |
441H | 位元組 | 表明磁碟工作狀態,它被編碼,通過使相應位置1來表示一個特定的狀態,格式如下: |
值 | ||
00H | 正確。 | |
01H | 送給磁碟控制器的是無效命令。 | |
02H | 在盤上未找到地址標記。 | |
03H | 試圖在有防寫的盤上寫操作。 | |
04H | 所請求扇區未找到。 | |
08H | 驅動器DMA錯。 | |
09H | 試圖使DMA對64KB儲存體進行存取。 |
10H | 迴圈冗餘校驗(CRC)錯。 | |
20H | NEC磁碟控制器片出現錯誤。 | |
40H | 無效的查詢操作。 | |
80H | 延時,沒有響應。 | |
442H | 7位元組 | 從NEC磁碟驅動器返回的七個位元組狀態資訊(參見FDC)。 |
449H | 位元組 | 指明當前視訊方式,參見INT 10H。 |
44AH | 字 | 指明顯示螢幕的當前列數。 |
44CH | 字 | 指明一個顯示頁面的位元組數,它隨時視訊方式的不同而變化。80*25方式=1000H位元組,40*25方式=800H位元組,圖形方式=4000H位元組 |
44EH | 字 | 指明當前顯示頁面的地址,即顯示在當前顯示螢幕的顯示頁面。 |
450H | 8字 | 每個字均表示有關顯示頁面內當前游標的位置,每個字的第一位元組表示列,第二位元組表示行(改變這個位元組並不能立刻改變顯示)。 |
460H | 位元組 | 表明游標的形狀,此位元組表示游標字元點陣的最下一行的行號,10H功能呼叫1設定此游標形狀(不要直接更改此位元組)。 |
461H | 位元組 | 此位元組表示游標字元點陣的最上一行的行號。10H功能呼叫1設定此游標形狀(不要直接更改此位元組)。 |
462H | 位元組 | 表明工作顯示頁面號,由10H功能呼叫5設定。 |
463H | 字 | 表明當前工作顯示板的口地址。3BCH=單色,3D4H=彩色。 |
465H | 位元組 | 表明6845晶片的方式暫存器的當前值(埠:3X8H)。 |
466H | 位元組 | 表示當前顯示控制皮膚的設定。10H功能呼叫0BH可設定當前皮膚(埠:3D9H)。 |
467H | 5位元組 | PC中,這5個位元組用以表示磁帶控制的定時計數字、CRC暫存器字和最後輸入數值位元組,在AT中,這5個位元組作為埠使用,從467H開始的雙字長是一個指標,它指向BIOS開關使80X86由保護虛地址方式轉到實地址方式時控制返回的位置。 |
46CH | 雙字 | 這是BIOS作為時鐘計數器的一個雙字單元,時鐘第步進一次,此值增加一次,其值為0,表示一天開始(午夜),當此計數器達到一天結束的值時,計數器清0,且位元組470H置1。中斷1AH功能呼叫0可從此雙字單元中讀取一天的時間。 |
470H | 位元組 | 這是一個時鐘翻轉位元組。當時鍾計數器達到一天結束且復位時,此位元組置1以表明新的一天開始。中斷1AH功能呼叫0在讀取這一天的時間後,將此位元組復位。 |
471H | 位元組 | 位7為1表示BREAK鍵按下(INT 9設定此標誌)。 |
472H | 字 | 由軟體設定復位功能標誌或直接跳轉FFFF:0重啟動。 |
值 | ||
1234H | 熱啟動 | |
5678H | 系統中止 | |
9ABCH | 在製造商檢測時使用。 |
474H | 位元組 | 硬碟狀態。 |
值 | ||
00H | 正確 | |
01H | 送給磁碟控制器的是無效命令或引數。 | |
02H | 在盤上未找到地址標記 | |
03H | 試圖在有防寫的盤上進行寫操作。 |
04H | 所請求扇區未找到。 | |
05H | 重新復位失敗。 | |
07H | 操作失效。 | |
08H | DMA錯 | |
09H | 試圖使DMA對64K儲存體進行存取。 | |
0AH | 壞的扇區標誌。 |
0BH | 壞磁軌已清除。 | |
0DH | 扇區號、格式錯。 | |
0EH | 控制資料地址已清除。 | |
0FH | DMA超出限制。 | |
10H | 迴圈冗餘校驗CRC錯。 | |
11H | ECC資料錯。 | |
20H | NEC磁碟控制器片出現錯誤。 | |
40H | 無效的查詢操作。 | |
80H | 延時,沒有響應。 |
AAH | 沒準備好。 | |
BBH | 發生錯誤,定義不正確。 | |
CCH | 寫錯誤。 | |
E0H | 暫存器錯誤。 | |
FFH | 磁碟檢測失敗。 |
475H | 位元組 | 硬碟裝置數。 |
476H | 位元組 | 磁碟介面卡控制。 |
477H | 位元組 | 硬碟介面卡埠。 |
478H | 位元組 | 測試印表機0的超時值。 |
479H | 位元組 | 測試印表機1的超時值。 |
47AH | 位元組 | 測試印表機2的超時值。 |
47BH | 位元組 | 測試印表機3的超時值(PS2型除外)。 |
47CH | 位元組 | 測試0號RS232超時值。 |
47DH | 位元組 | 測試1號RS232超時值。 |
47EH | 位元組 | 測試2號RS232超時值。 |
47FH | 位元組 | 測試3號RS232超時值。 |
480H | 字 | 指向存放鍵盤輸入字元的迴圈緩衝區首址。 |
482H | 字 | 指向存放鍵盤輸入字元的迴圈緩衝區尾址。 |
484H | 位元組 | 顯示字元的列數。其值為顯示字元的列數減1(EGA以上有效)。 |
485H | 字 | 每個字元高度(EGA以上有效)。 |
487H | 位元組 | 顯示控制狀態(EGA以上有效)1。 |
位 | ||
0 | 游標模擬模式狀態(1為開啟)。 |
1 | 單色顯示系統狀態(1為啟用)。 | |
2 | 保留。 | |
3 | 顯示系統空閒狀態(1為空閒)。 | |
4 | 保留。 | |
6-5 | 視訊記憶體容量(00=64K,01=128K,10=192K,11=256K)。 | |
7 | 顯示模式可用狀態。 | |
488H | 位元組 | 顯示控制狀態2(EGA以上有效)。 |
位 | ||
0 | SW1(1=關閉) | |
1 | SW2(1=關閉) | |
2 | SW3(1=關閉) | |
3 | SW4(1=關閉) | |
4 | ? |
5 | ? | |
6 | ? | |
7 | ? | |
489H | 位元組 | 顯示控制狀態3(MCGA或VGA有效)。 |
位 | ||
0 | VGA模式狀態 | |
1 | 灰度模式狀態 | |
2 | 單色顯示狀態 | |
3 | 使用預設模式 | |
4 | -- | |
5 | 保留 | |
6 | 顯示狀態開關 |
7 | -- | |
值 | ||
位7位4 | ||
0 0 | 350線模式 | |
0 1 | 400線模式 | |
1 0 | 200線模式 | |
1 1 | 保留 |
48AH | 位元組 | 顯示介面卡DCC索引。 |
48BH | 位元組 | 最後磁碟資料率。 |
位 | ||
3-0 | 保留。 |
5-4 | 步進時間。 | |
7-6 | 資料傳輸率。 | |
48CH | 位元組 | 硬碟狀態。 |
48DH | 位元組 | 硬碟錯誤。 |
48EH | 位元組 | 硬碟中斷標誌。 |
48FH | 位元組 | 位0為1,表示硬碟和軟盤使用一個控制卡。 |
490H | 位元組 | 驅動器0介質狀態。 |
491H | 位元組 | 驅動器1介質狀態。 |
492H | 位元組 | 驅動器0的起始狀態。 |
493H | 位元組 | 驅動器2的起始狀態。 |
494H | 位元組 | 驅動器0磁軌數。 |
495H | 位元組 | 驅動器1磁軌數。 |
496H | 位元組 | 鍵盤型別和方式,各位含義為: |
位 |
0 | E1H隱含碼最後。 | |
1 | E0H隱含碼最後。 | |
2 | 右Ctrl鍵按下。 | |
3 | 右Alt鍵按下。 | |
4 | 101/102鍵盤 | |
5 | 若讀標識和鍵盤,則強置Num Lock。 | |
6 | 最後的字元是第一個ID字元。 | |
7 | 讀鍵盤的ID。 |
497H | 位元組 | 鍵盤標誌。 |
位 | ||
0-2 | LED狀態位。 | |
3 | 保留。 | |
4 | 收到訊息。 | |
5 | 重發接收標誌。 | |
6 | 方式指示器更新。 | |
7 | 鍵盤傳送錯誤標誌。 |
498H | 雙字 | 等待完成標誌的偏移地址。 |
49AH | 雙字 | 使用者等待計數(低位字),以微秒為單位。 |
49EH | 字 | 使用者等待計數(高位字),以微秒為單位。 |
4A0H | 位元組 | RTC等待啟用標誌。80表示等待時間已過。 |
4A1H | 7位元組 | 這7個位元組用於區域網。 |
4A8H | 雙字 | 這雙字指向儲存視訊系統的指標表。指標表格式為: |
偏移值 型別 指向 偏移值 型別 功能或指向
|
4ACH | 8位元組 | 保留。 |
4B4H | 位元組 | 鍵盤NMI控制標誌(可變)。 |
4B5H | 雙字 | 鍵盤中斷中標誌(可變)。 |
4B9H | 位元組 | 埠60單位元組佇列(可變)。 |
4BAH | 位元組 | 最後的鍵盤掃描碼(可變)。 |
4BBH | 位元組 | NMI緩衝頭位置(可變)。 |
4BCH | 位元組 | NMI緩衝頭位置(可變)。 |
4BDH | 16位元組 | NMI掃描碼緩衝(可變)。 |
4CEH | 字 | 日期計數(可變)。 |
4F0H | 16位元組 | ? |
延伸閱讀
BIOS 資料區的結構及其利用
IBM 及其相容機,在低記憶體地址中,存放著一系列關鍵的資料,比如從 0000:0000h---0000:03ffh 是中斷向量表,存放著所有中斷的當前入口地址,而從0040:0000h---0040:00ffh 是非常重要的BIOS資料區,共256個位元組, 內部存放著有關鍵盤、視訊顯示器、磁碟、列印和通訊口等工作情況的重要資料。計算機在啟動時通過對各硬體裝置的檢測,把有關配置情況的資料和一些系統預設值添入其中,同時它也在一定程度上控制著計算機系統的正常工作。瞭解其結構,可以認識計算機是怎樣執行的,並且,正確地利用BIOS資料區中的部分內容,也將為我們工作帶來一定的方便。用debug可以方便地檢視此區域的內容:
c:/debug
-d 40:0 L90 ;列出90H個資料的內容
-d 40:8 L4 ;列出第8個位元組開始的4個位元組內容,0040:0000 BC 03 78 03 ;兩個列印口地址。
下面舉例說明怎樣正確利用BIOS資料區。
一、40:08h 處資料的利用
此處的八個位元組為四個並行口地址,即列印口地址,如果只有兩個並行口,前兩個位元組一般應為03BCH 和 0378H,後面的四個位元組為0。目前有些病毒破壞此處地址,使印表機聯不上,瞭解上述原理後,如果恢復其正確地址,就可使印表機正常工作。另外有些漢卡或漢字系統出現故障時,也發生類似的情況,也可採用上面的辦法解決。也就是說,當印表機聯絡不上時,檢查並恢復此處地址,往往起到事半功倍的效果。基於此原理,如果想防止他人使用印表機(如學生實習等),也可以採取修改此處資料的辦法,從而起到保護印表機的目的。具體作法如下:
c:/debug
-E 40:08 BC 03 ;修改為正確的地址,恢復列印。
-E 40:08 00 00 ;修改為其它值,禁止列印。
如果在開機後實現自動禁止使用印表機,可採用下面的辦法形成一個可執行檔案:
c:/debug
-A 100
381E:0100 MOV AX,0040
381E:0103 MOV DS,AX
381E:0105 MOV SI,0008
381E:0108 MOV WO[SI],0000
381E:010C INT20
381E:010E
-N noprt.com
-R CX
CX:0000
:E
-W
把此檔案NOPRT.COM安裝在主批處理之中即可。
二、40:13H 處資料的利用
此處的兩個位元組為此係統的基本記憶體容量,顯示方法同上。對於640K基本記憶體的機器來說,正常時此處應為0280H,轉換為10進位制後為640K,其它機器可能是512K或256K等,某些引導型病毒先於DOS駐留記憶體,就採用了修改此位元組的方法,使系統容量減少幾K個位元組,防止DOS查詢,建立自己的安樂窩。此類病毒都可以通過檢視此處資料是否正常而被發現。例如被火炬病毒感染時,此處就減少1K位元組,而變為639K。
三、40:17H處資料利用
此處為鍵盤狀態位元組,當按下某些特定鍵時,此單後設資料的相應位會發生變化,它的8位各對應一個按鍵,此鍵按下時對應位為1,否則為0,對應關係如下:
0:右Shift
1:左Shift
2:Ctrl
3:Alt
4:Scrol-Lock
5:Num-Lock
6:Caps-Lock
7:Insert
此位元組即反應當前按鍵狀態,也可控制這些鍵的狀態,強制某位為1時,則系統認為此鍵已經按下。下面的例子,形成一人Cap.com檔案,執行它就會使大寫指示燈點亮。
c:/debug
-A
381E:0100 MOV AX,0040
381E:0103 MOV DX,AX
381E:0106 MOV SI,0017
381E:0108 MOV BYTE PTR[SI],40
381E:010B INT 20
381E:010D
-n Cap.com
-r CX
CX:0000
:D
-W
相關文章
- 區塊鏈和資料庫區塊鏈資料庫
- 如何區分資料和指令
- 資料探勘和資料提取該怎麼區分?
- 區塊鏈代表的資料庫和傳統資料庫有何區別區塊鏈資料庫
- 區別值型別資料和引用型別資料型別
- 資料倉儲和傳統資料庫的區別資料庫
- 結構和其他資料形式
- 資料庫和資料倉儲的區別在哪兒?CN資料庫
- BI、資料倉儲和資料分析之間的區別
- Android中asset資料夾和raw資料夾區別Android
- Oracle之 資料塊、區段和段Oracle
- 2.5.10 指定資料庫時區和時區檔案資料庫
- 大資料與海量資料的區別大資料
- 清除閃回資料歸檔區資料
- “大資料”與“海量資料”的區別大資料
- 奈學:資料湖和資料倉儲的區別有哪些?
- 【UniApp】-uni-app-全域性資料和區域性資料APP
- 分散式資料倉儲中,全域性和區域性資料倉儲有何區別?分散式
- 固定資產主資料
- 淺談大資料、資料分析、資料探勘的區別!大資料
- Oracle資料庫時區Oracle資料庫
- ORA-56935: 現有資料泵作業正在使用其他版本的時區資料檔案
- 區塊鏈和大資料的關係區塊鏈大資料
- 資料庫中modify和change的區別資料庫
- 資料科學、機器學習和AI的區別資料科學機器學習AI
- oracle例項和資料庫的區別Oracle資料庫
- (轉)資料庫oracle for update of和for update區別資料庫Oracle
- 資料倉儲與大資料的區別大資料
- Apache Spark:資料框,資料集和RDD之間的區別 - BaeldungApacheSpark
- 資料標準和資料規範到底有什麼區別?
- Eclipse-source folder資料夾和folder資料夾的區別Eclipse
- 資料檔案的SCN和資料塊的SCN有何區別
- 允許區域網內其他主機訪問本地MySql資料庫MySql資料庫
- IP地址資料庫 | 手機號段歸屬地資料庫 | 行政區劃省市區資料庫資料庫
- 資料字典和固定表統計資訊更新
- SAP 固定資產主資料
- 資料資產管理與資料治理什麼區別?
- 關係型資料庫和非關係型資料庫的區別資料庫