DOS下不同顯示模式對應的視訊記憶體位址

2021-09-21 00:23:53 字數 1215 閱讀 4579

問1:王爽的書上說,dos的記憶體位址空間中,b8000h-bffffh是80x25的彩色字元顯示緩衝區。這個對於dos來說是固定的麼?

答1:不同的顯示模式的顯示緩衝區不一定相同吧。對同一顯示模式來說則是固定的。彩色文字模式一般在 b800h 段,單色文字在 b000h 段;圖形模式在 a000h 段。dos 並不只是可以使用 03h 模式的。

答2:首先要分清乙個概念,視訊記憶體大小與dos(bios)無關,dos(bios)只不過根據顯示模式把視訊記憶體對映到記憶體位址。

並且這個對映大小和位址也不是固定的,可以通過向顯示卡的埠傳送資料來修改對映其實位址。

dos下,段址[a000,c000)有128k的位址可供對映,例如:在12h(640*480*16)、13h(320*200*256)等圖形模式下,視訊記憶體位址從段址a000開始,在某些黑白字元模式下,視訊記憶體位址從段址b000開始。

還有更高階的vesa模式,視訊記憶體將分頁對映到段址a000開始的64k區域,通過切換頁就能訪問全部的視訊記憶體了。

當然,書中所述:b8000h-bffffh是80x25的彩色字元顯示緩衝區是正確的。

答3:實模式下顯示緩衝區有3個區域,b000/b800/a000分別對應於不同的顯示模式

前兩個區域是32k,後乙個是64k並且通過分頁理論上可以訪問所有視訊記憶體

答4:視訊記憶體其實可以比記憶體還大,但依舊可以用記憶體來定址。不過需要操作埠。

具體的方法是假如預設的時候 4000:0000~5000:0000(我這個是瞎寫的,視訊記憶體位址我早就忘了)對應視訊記憶體中的前1000h個視訊記憶體。然後通過操作埠改變對映的視訊記憶體的範圍,然後4000:0000~5000:0000對應的視訊記憶體就是1000h~1ffffh的視訊記憶體了。這個就是三樓說的那個分頁對映。

具體的操作方法見《pc技術內幕》。我推薦你不要試驗,我試驗之後顯示器就壞了。雖然不知道有沒有直接的聯絡,但我的乙個網友說可能是有聯絡的。當時用的是crt的顯示器,那個網友說還現在的液晶顯示器應該不會出現這種問題了,但還是小心為妙,這種顯示方式畢竟屬於非主流,了解一下就行了。

在32位模式下確實不再需要使用這種方式訪問視訊記憶體

但在實模式時代,這個是絕對的主流方式 答:

b800開始的是字元模式

a000開始的是圖形模式。

另外你要截除錯板還跟顯示模式有關,

可以用int 10的呼叫(標準視屏/vesa)具體的查查資料吧。

如果是高彩或真彩式沒有調色盤的。

歡迎來圖形/遊戲/多**版提此類問題。

python 和 在不同場景下不同 的作用

兩個乘號就是乘方,比如2 4,結果就是2的4次方,結果是16 乙個乘號 如果運算元是兩個數字,就是這兩個數字相乘,如2 4,結果為8 如果是字串 列表 元組與乙個整數n相乘,返回乙個其所有元素重複n次的同型別物件,比如 str 3將返回字串 strstrstr 如果是函式定義中引數前的 表示的是將呼...

Linux Linux下不同的」查詢「命令

在linux作業系統裡,我們經常會需要知道哪個檔案放在 才能夠對檔案進行一些修改和維護工作。所以對查詢命令的掌握就是必須的了。which 尋找 執行檔案 命令格式 which a command 例如 which ipconfig 或 which which,這樣就能查詢到ipconfig命令和wh...

tensorboard在win下不顯示的問題

tensorboard在win下因為路徑的問題會出現no scalar data was foud的問題,網上解決的方法有很多,但是也是針對每個人的問題給出的解決方案。我出現這種問題,第一感覺是從網上看解決方法,但是把網上搜到的解決辦法試了一遍還是沒有解決,如果有人遇到同樣的問題,建議好好檢查一下自...