操作系統學習筆記與總結(一)

總結下學習的內容,梳理下思路。

學習內容:啓動, dd命令,bochs基本用法,as86,ld86

實驗:使用bochs模擬開機啓動過程,熟悉常用命令。

總結

  1.機器啓動到加載bootsect:

       a,開機進入實模式,實模式主要特點軟件可以直接訪問硬件和只有20位的尋址空間

       b, 計算機剛剛加電時cs=f000,ip=fff0,機器執行ffff0處的BIOS的第一條指令

         c,BIOS檢查計算機的硬件,加載中斷向量表和中斷服務程序

       d,執行int 0x19中斷在讀取軟盤第一個扇區的512個字節,複製到內存的0x07c00處

  2.dd命令:這裏主要用於講boot寫入引導扇區 

        主要應用的參數:if=輸入 of=輸出 bs(ibs obs)=一次讀寫的字節數,也是指定的一個塊的大小

             count=blocks 拷貝blocks的個數,塊大小等於ibs指定的字節數。

             skip=blocks 從輸入文件開頭跳過blocks個塊,在複製

             實驗使用的命令 dd bs=32 if=boot of=a.img skip=1(備份什麼的以後用的在學)

  3.bochs基本用法 :

      a,必備的資源:bochs執行文件,bios映像文件(BIOS-bochs-latest),vga bios映像文件(VGABIOS-lgpl-latest),引導磁盤的映像文件(a.img),配置文件

      b,配置文件:主要用來尋找磁盤映像,配置模擬機器的一些信息。megs模擬內存容量,romimage,vgaromimage,floppya(1_44=a.img static=inserted(已插入。ejected未插入) ) log(日誌信息)boot(啓動的驅動器 =floppy)

       c,啓動 bochs -f bochsrc (指定配置文件)

       d,用到的指令 c運行,r查看寄存器內容,b addr 設置斷點

  4.as86彙編 

      a,使用了inter語法,Linux中用來創建16位的啓動引導扇區程序和初始設置程序

      b,學習語法使用的程序

.global begtext
.text
begtext
.text
BOOTSECT=0X07C0
entry start                ;ld86鏈接後執行的第一條指令start:
    jmpi    go,    BOOTSECT       ;執行後 cs=BOOTSECT 
go:
    mov    ax,    cs
    mov    ds,    ax
    mov    es,    ax
    mov    [msgl+17],ah    
    mov    cx    #20
    mov    dx,    #0x1004    
    mov    bx,    #0x000c    
    mov    bp,    #msgl    
    mov    ax,    #0x1301    
    int    0x10
loopl:     jmp    loopl
msgl:    .ascii    "Loading System..."
         .byte    13,10
    .org    510
    .word    0xAA55          ;引導扇區結尾必須爲[510]=55,[511]=AA

 

      c,as86 -0 -a -o boot.o boot.s         ld86 -0 -s -o  boot boot.o(生成的boot爲MINIX格式有544b需要除去minix文件頭的32b)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章