官术网_书友最值得收藏!

  • 30天自制操作系統
  • (日)川合秀實
  • 697字
  • 2020-03-11 14:01:44

7 確認操作系統的執行情況

怎么讓它表現呢?如果還只是輸出一條信息的話就太沒意思了。考慮到將來我們肯定要做成Windows那樣的畫面,所以這次就來切換一下畫面模式。我們這次做成的文件,就是projects/03_day下的harib00g。

本次的haribote.nas

; haribote-os
; TAB=4

        ORG      0xc200           ; 這個程序將要被裝載到內存的什么地方呢?

        MOV      AL,0x13          ; VGA顯卡,320x200x8位彩色
        MOV      AH,0x00
        INT      0x10
fin:
        HLT
        JMP      fin

設定AH=0x00后,調用顯卡BIOS的函數,這樣就可以切換顯示模式了。我們還可以在支持網頁(AT)BIOS里看看。

設置顯卡模式(video mode)

? AH=0x00;

? AL=模式:(省略了一些不重要的畫面模式)

0x03:16色字符模式,80× 25

0x12:VGA圖形模式,640× 480× 4位彩色模式,獨特的4面存儲模式

0x13:VGA圖形模式,320× 200× 8位彩色模式,調色板模式

0x6a:擴展VGA圖形模式,800× 600× 4位彩色模式,獨特的4面存儲模式

(有的顯卡不支持這個模式)

? 返回值:無

參照以上說明,我們暫且選擇0x13畫面模式,因為8位彩色模式可以使用256種顏色,這一點看來不錯。

如果畫面模式切換正常,畫面應該會變為一片漆黑。也就是說,因為可以看到畫面的變化,所以能判斷程序是否運行正常。由于變成了圖形模式,因此光標會消失。

另外,這次還順便修改了其他一些地方。首先將ipl.nas的文件名變成了ipl10.nas。這是為了提醒大家這個程序只能讀入10個柱面。另外,想要把磁盤裝載內容的結束地址告訴給haribote.sys,所以我們在“JMP 0xc200”之前,加入了一行命令,將CYLS的值寫到內存地址0x0ff0中。這樣啟動區程序就算完成了。

趕緊“make run”看看。

哦哦,畫面一片漆黑。運行順利!真是太好了!

有一點要先說明一下,現在我們把啟動區里與haribote.sys沒有關系的前后部分也讀了進來,所以啟動時很慢。可能會有人覺得這樣做很浪費時間,但對于我們的紙娃娃操作系統來說,裝載啟動區這些部分,以后會起大作用的,所以暫時先忍耐一下吧。

主站蜘蛛池模板: 兴仁县| 富民县| 三穗县| 海宁市| 桑日县| 益阳市| 汉川市| 玉环县| 青田县| 长泰县| 江安县| 隆德县| 衡阳市| 常德市| 宝山区| 昌都县| 黄石市| 定边县| 德清县| 涿州市| 南华县| 增城市| 阿拉善盟| 老河口市| 青铜峡市| 盐山县| 盐城市| 揭东县| 霍邱县| 格尔木市| 南平市| 大埔区| 浠水县| 南靖县| 呼图壁县| 裕民县| 龙江县| 澄江县| 汪清县| 樟树市| 天台县|