国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧

這篇具有很好參考價值的文章主要介紹了【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一.顯存、顯卡以及顯示器的概述

????????顯卡用于連接CPU和顯示器,我們調(diào)用顯示器時,其實就是利用顯卡提供的IO接口間接地對顯示器進行操作,所以顯卡也稱之為顯示適配器。接下來我們將優(yōu)化之前寫的MBR程序(參考:【操作系統(tǒng)】BIOS與MBR之間的過渡實踐),使我們的程序通過直接操作顯卡來輸出,顯卡給我們的輸入接口有顯存和端口,而本文中主要用到顯存。

????????如果看過我之前發(fā)過的文章(參考:【操作系統(tǒng)】BIOS開機自檢)就可以知道,內(nèi)存布局中關于顯存地址分布如下:

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧,操作系統(tǒng),MBR,BIOS,顯存

????????顯卡支持三種模式:文本模式、黑白圖形模式以及彩色圖形模式,本文中我們將使用文本模式,以實現(xiàn)類似Linux控制臺風格的字符界面。從起始地址0XB800到C7FFF這片32KB大小的內(nèi)存區(qū)域用于文本顯示,我們只需要把要顯示在顯示器上的字符直接輸入到0XB800開始的顯存中,顯存有了數(shù)據(jù),會直接將數(shù)據(jù)搬到顯示器屏幕上,至于數(shù)據(jù)怎么搬到屏幕上的不用我們了解,我們只要保證寫入的數(shù)據(jù)符合格式就好了。

???????? 由于在文本模式下,字符不僅可以顯示黑白顏色,也可以打印出彩色,所以每個顯示在屏幕上的字符都由2個連續(xù)的字節(jié)表示,一個字節(jié)存儲ASCII碼的數(shù)據(jù),另一個字節(jié)存儲字符的屬性:

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧,操作系統(tǒng),MBR,BIOS,顯存

????????在屏幕上每個字符的低字節(jié)是字符的ASCII碼,高字節(jié)屬于字符的屬性信息,其中低4位是字符前景色,高4位是字符背景色,顏色由RGB三色調(diào)和,第11位和第15位分別控制亮度位以及是否閃爍(1為高亮/閃爍,0為正常/不閃)。

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧,操作系統(tǒng),MBR,BIOS,顯存

二.改進MBR并解析

????????有了上面的知識,我們就可以通過改編之前的MBR程序來調(diào)用顯存了,代碼如下:

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧,操作系統(tǒng),MBR,BIOS,顯存

????????我們保留原先的MBR程序滾屏的操作,將通過BIOS輸出改成通過顯存輸出。我們重點來分析第9~10行,以及第19~32行代碼,其他代碼在另外一篇文章已經(jīng)解析過了,不再次贅述。

  • 第9~10

????????在第一節(jié)我們已經(jīng)知道,內(nèi)存地址0XB8000為顯存的文本模式,在實模式下,內(nèi)存的訪址方式是“段基址×16+段內(nèi)偏移地址”,所以我們直接在段寄存器gs(通過通用寄存器ax中轉,原因已在上一篇文章說明,不再贅述)中存入0xb800即可。在此有個小知識點:在進行內(nèi)存訪址時,CPU將ds作為默認的段基址寄存器,如果不用CPU默認寄存器,我們就需要自行指定具體的段基址寄存器,而這個行為叫做“段跨越前綴”。

 9         mov ax,0xb800
 10         mov gs,ax
  • 第19~32

????????我們直接拿前面兩段作為例子,后面的都是大同小異:

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧,操作系統(tǒng),MBR,BIOS,顯存

????????“mov ?byte [gs:0x00] ‘1’”是以gs為段基址寄存器,以0為偏移地址起始的內(nèi)存中,寫入大小為1byte大小的字符為”1”的ASCII碼,當然,如果你對ACSII碼十分熟悉,也可以寫成“mov ?byte [gs:0x00] 0x31”。

???????? 而第二行則是字符的屬性,具體參數(shù)可以參照上文中所提及的。

三.運行

?????????代碼編寫完成后,我們保存一下代碼(本文保存文件名為A.S),并且使用nasm對代碼進行編譯:

nasm ?–o ?A.bin ?A.S

????????此時,我們就可以開始運行調(diào)試了,我們需要用到之前寫過的一篇文章(【操作系統(tǒng)】Bochs安裝和配置)里面的兩個東西:

  • ????????使用Bximage工具生成的空白鏡像(本文文件名為test.img),大小隨意,大于512個字節(jié)即可
  • ????????Bochs模擬硬件環(huán)境的配置文件(文章中文件名為boch.disk)

? ? ? ? 我們首先將生成的A.bin文件寫入到空白鏡像中:

dd ?if=./A.bin ?of=./test.img ?bs=512 ?count=1 ?conv=notrunc

????????上述代碼的具體參數(shù)可以自行百度,不再次贅述,將代碼寫入到鏡像后,我們再將鏡像文件加入到Bochs的模擬硬件環(huán)境配置文件中,根據(jù)文章中所描述的,我們直接將新生成的鏡像寫入配置文件的以下位置即可:

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧,操作系統(tǒng),MBR,BIOS,顯存

? ? ? ? 保存一下修改后的配置文件,我們開始運行Bochs模擬器進行模擬操作:

./Bochs ?–f ? boch.disk(你自己的硬件配置文件名)

?????????運行成功后,會顯示以下信息,并且默認為【6】:

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧,操作系統(tǒng),MBR,BIOS,顯存

? ? ? ? 此時我們再按一次回車,即可開始模擬:

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧,操作系統(tǒng),MBR,BIOS,顯存

? ? ? ? 我們在控制臺中輸入“c”(具體含義請查看上面所說的文章),繼續(xù)往下運行,就能看到彈出的窗口中出現(xiàn)了我們所要的字符串:

【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧,操作系統(tǒng),MBR,BIOS,顯存文章來源地址http://www.zghlxwxcb.cn/news/detail-819470.html

到了這里,關于【操作系統(tǒng)】優(yōu)化MBR程序:讓MBR調(diào)用顯存吧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 操作系統(tǒng)實驗 2.3系統(tǒng)調(diào)用:linux-0.11-lab “為版本0內(nèi)核增加一個系統(tǒng)調(diào)用getjiffies” 和 “在用戶程序中使用新增的系統(tǒng)調(diào)用”

    操作系統(tǒng)實驗 2.3系統(tǒng)調(diào)用:linux-0.11-lab “為版本0內(nèi)核增加一個系統(tǒng)調(diào)用getjiffies” 和 “在用戶程序中使用新增的系統(tǒng)調(diào)用”

    打開 vscode ,在如圖所示位置打開 ~/os/linux-0.11-lab/0 文件夾 1.定義getjiffies系統(tǒng)調(diào)用 題目中給的提示:進入到 unistd.h 文件中 閱讀代碼,可以發(fā)現(xiàn)上圖劃線處有個系統(tǒng)調(diào)用名為 getpid :返回當前進程號——這與我們期望實現(xiàn)的功能類似:通過系統(tǒng)調(diào)用返回jiffies值。 于是此時希望

    2023年04月08日
    瀏覽(109)
  • 我的acer電腦U盤裝系統(tǒng)前BIOS設置及裝系統(tǒng)過程中的操作

    我的acer電腦U盤裝系統(tǒng)前BIOS設置及裝系統(tǒng)過程中的操作

    由于既使能了F12,又將U盤的優(yōu)先級進調(diào)整到了最高,所以,電腦進入boot選擇界面后無需操作,等待幾秒,默認進入U盤系統(tǒng),然后便可開始安裝系統(tǒng)

    2024年02月04日
    瀏覽(23)
  • 電腦bios使用的uefi啟動,系統(tǒng)盤使用的mbr格式,為什么安裝完系統(tǒng)無法進入?

    電腦bios使用的uefi啟動,系統(tǒng)盤使用的mbr格式,為什么安裝完系統(tǒng)無法進入?

    ? 在電腦的安裝系統(tǒng)過程中,我們會遇到一些問題,比如說使用UEFI啟動但是磁盤分區(qū)使用MBR格式,導致系統(tǒng)安裝完成之后無法引導。這是因為UEFI啟動只支持GPT格式的磁盤分區(qū)。 在本文中,我們將探討如何將磁盤轉換成GPT格式,并重新安裝系統(tǒng),以便正確地引導系統(tǒng)。 ? ?

    2024年02月12日
    瀏覽(18)
  • 操作系統(tǒng) day04(系統(tǒng)調(diào)用)

    操作系統(tǒng) day04(系統(tǒng)調(diào)用)

    什么是系統(tǒng)調(diào)用 庫函數(shù)和系統(tǒng)調(diào)用的區(qū)別 應用程序可以通過匯編語言直接進行系統(tǒng)調(diào)用,也可以使用高級語言的庫函數(shù)來進行系統(tǒng)調(diào)用。而有的庫函數(shù)涉及系統(tǒng)調(diào)用,如“創(chuàng)建一個新文件”函數(shù),有的不涉及,如“取絕對值”函數(shù) 什么功能要用到系統(tǒng)調(diào)用 系統(tǒng)調(diào)用的過程

    2024年02月06日
    瀏覽(21)
  • 探索操作系統(tǒng):內(nèi)核、啟動和系統(tǒng)調(diào)用的奧秘

    探索操作系統(tǒng):內(nèi)核、啟動和系統(tǒng)調(diào)用的奧秘

    首先,對于有科班背景的讀者,可以跳過本系列文章。這些文章的主要目的是通過簡單易懂的匯總,幫助非科班出身的讀者理解底層知識,進一步了解為什么在面試中會涉及這些底層問題。否則,某些概念將始終無法理解。這些計算機基礎文章將為你打通知識的任督二脈,祝

    2024年02月11日
    瀏覽(23)
  • 操作系統(tǒng)的運行機制、中斷和異常、系統(tǒng)調(diào)用

    操作系統(tǒng)的運行機制、中斷和異常、系統(tǒng)調(diào)用

    ??個人主頁: ?? 葉落閑庭 ??我的專欄:?? c語言 數(shù)據(jù)結構 javaweb 石可破也,而不可奪堅;丹可磨也,而不可奪赤。 程序是如何運行的? 一條高級語言的代碼翻譯過來可能會對應多條機器指令 程序運行的過程就是CPU一條一條的機器指令的執(zhí)行過程 “指令”就是處理器(

    2024年02月14日
    瀏覽(17)
  • BIOS MBR UEFI GPT詳解

    BIOS MBR UEFI GPT詳解

    名詞解釋 1、啟動方式: BIOS:Basic Input Output System,中文名稱\\\"基本輸入輸出系統(tǒng)\\\",也叫?Legacy BIOS。 UEFI:Unified Extensible Firmware Interface,中文名稱\\\"統(tǒng)一的可擴展固件接口\\\"。 2、硬盤分區(qū): MBR分區(qū):Master Boot Record,中文名稱\\\"主引導記錄\\\"。 GPT分區(qū):GUID Partition Table,中文名稱

    2024年02月08日
    瀏覽(22)
  • 【Linux操作系統(tǒng)】深入理解系統(tǒng)調(diào)用中的read和write函數(shù)

    【Linux操作系統(tǒng)】深入理解系統(tǒng)調(diào)用中的read和write函數(shù)

    在操作系統(tǒng)中,系統(tǒng)調(diào)用是用戶程序與操作系統(tǒng)之間進行交互的重要方式。其中,read和write函數(shù)是常用的系統(tǒng)調(diào)用函數(shù),用于在用戶程序和操作系統(tǒng)之間進行數(shù)據(jù)的讀取和寫入。本文將深入介紹read和write函數(shù)的工作原理、用法以及示例代碼,以幫助讀者更好地理解和應用這兩

    2024年02月13日
    瀏覽(20)
  • 網(wǎng)絡攻防——kali操作系統(tǒng)基本使用-調(diào)用攝像頭

    本文章中生成的木馬帶有一定的攻擊性,使用時請遵守網(wǎng)絡安全相關的法律法規(guī)(惡意攻擊操作系統(tǒng)屬于違法行為)。 kali中打開終端最好是進入root sudo su 獲取IP ip address 重新打開一個終端 輸入指令,注:-p表示攻擊載荷,表示的是說明這個程序需要載入什么功能,這里就是

    2024年02月13日
    瀏覽(23)
  • HDU 操作系統(tǒng)實驗二 -設計一個系統(tǒng)調(diào)用,返回指定進程的相關時間信息

    HDU 操作系統(tǒng)實驗二 -設計一個系統(tǒng)調(diào)用,返回指定進程的相關時間信息

    目錄 一、實驗思路 二、準備工作——Linux內(nèi)核編譯步驟 1.實驗環(huán)境配置 2.下載內(nèi)核源碼 3.解壓縮內(nèi)核源碼文件 4.清除殘留的.config和.o文件 5.配置內(nèi)核 6.編譯內(nèi)核,生成啟動映像文件 7.編譯模塊 8.安裝內(nèi)核 9.配置grub引導程序 10.重啟系統(tǒng) 三、設計系統(tǒng)調(diào)用,返回指定進程的相關

    2024年02月03日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包