国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

自己動手寫操作系統(一)

2024-06-28 13:20:35
字體:
來源:轉載
供稿:網友
自己動手寫操作系統(一)

  借著本來現在就在上操作系統內核課的機會,在圖書館借了本于淵的《自己動手寫操作系統》,準備自己親自動手寫一下,提高自己對操作系統的理解。開篇技術博客來記錄一下自己的學習歷程。小弟第一次寫博客,有什么不到的地方還請大家海涵。

  自己選擇的平臺是Ubuntu14和Bochs。具體的Bochs的安裝教程見os.51cto.com/art/201407/446838_all.htm,這里就不做具體的介紹。

  第一個程序當然是hello world這個經典的入門程序,不過這次是使用匯編語言來編寫的一個bootloader級別的hello world,根據自己的操作流程,我把自己大體的步驟說一下,以便大家有一個清晰的認識:

  一、安裝bochs。

  二、進入bochs的安裝目錄使用“./bximage”命令制作一張空的軟盤。

  三、在自己的工程目錄下寫自己的源文件(boot.asm),并使用下面命令將源文件進行編譯得到鏡像。nasm boot.asm -o boot.bin

  四、將第三部制作的軟盤a.img(默認名字)拷貝到當前工程目錄下。

  五、寫入系統鏡像。 dd if=你的鏡像路徑(即編譯得到的boot.bin的路徑) of=a.img

  六、寫自己的配置文件(bochsrc)。

  七、按照自己的配置文件執行bochs。 bochs -f bochsrc

  完成之后的工程目錄里面應該有一下的幾個文件:

  

  下面是執行完第七步的操作之后的界面

  c

  直接按ENTER,會出現下面界面,黑乎乎的,什么也沒有

      

  但是在終端中輸入C就會正確的顯示出我們想要的東西了

  

  下面將上述操作中所涉及到的源文件代碼貼出來,以便大家可以自己輕松的在自己的機子上輕松的演示;

  下面是我的Bochs配置文件,bochsrc

 1 ############################################################### 2 # Configuration file for Bochs 3 ############################################################### 4  5 # how much memory the emulated machine will have 6 megs: 32 7  8 # filename of ROM images 9 romimage: file=/usr/share/bochs/BIOS-bochs-latest10 vgaromimage: file=/usr/share/vgabios/vgabios.bin11 12 # what disk images will be used13 floppya: 1_44=a.img, status=inserted14 15 # choose the boot disk.16 boot: floppy17 18 # where do we send log messages?19 # log: bochsout.txt20 21 # disable the mouse22 mouse: enabled=023 24 # enable key mapping, using US layout as default.25 #keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
View Code

  boot.asm的源碼內容

    org    07c00h            ; 告訴編譯器程序加載到7c00處    mov    ax, cs    mov    ds, ax    mov    es, ax    call    DispStr        ; 調用顯示字符串例程    jmp    $                ; 無限循環 $代表當前地址DispStr:    mov    ax, BootMessage    mov    bp, ax            ; ES:BP = 串地址    mov    cx, 16            ; CX = 串長度    mov    ax, 01301h        ; AH = 13,  AL = 01h    mov    bx, 000ch        ; 頁號為0(BH = 0) 黑底紅字(BL = 0Ch,高亮)    mov    dl, 0            ; 將DL中的ASCII碼顯示到屏幕,將'/0'送到DL中,并顯示    int    10h                ; 10h 號中斷    ret                    ; 返回到調用處BootMessage:        db    "Hello, OS world!"times     510-($-$$)    db    0    ; 填充剩下的空間,使生成的二進制代碼恰好為512字節dw     0xaa55                ; 結束標志
View Code

  這次就到這里,主要是介紹一下環境以及有一個直觀的認識。以后的內容應該更主要的是代碼方面的內容了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上虞市| 金坛市| 光泽县| 泰兴市| 广西| 邹平县| 彭泽县| 台北市| 紫阳县| 常德市| 陆良县| 长乐市| 监利县| 横山县| 隆林| 秭归县| 盈江县| 海伦市| 玉屏| 凤凰县| 玉林市| 农安县| 淳化县| 桓台县| 天祝| 周宁县| 赤水市| 南皮县| 铅山县| 西平县| 株洲市| 应用必备| 乌什县| 扎赉特旗| 明水县| 馆陶县| 兴城市| 武鸣县| 呈贡县| 新绛县| 宿迁市|