看《自己動手寫作業系統》後嘗試Linux環境搭建

2021-12-29 22:41:41 字數 1226 閱讀 7132

看《自己動手寫作業系統》後嘗試linux環境搭建

看了《自己動手寫作業系統》後嘗試一下。因為不想用windows作為開發平台,

所以,構建了乙個linux的卡發平台。

www.2cto.com  

需要的工具:nasm、qemu、dd

首先,建立軟盤映象檔案。

下面編輯乙個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  

int 10h     ; 10h 號中斷  

ret  

bootmessage:    db  "hello, os world!"  

times  510-($-$$) db 0  ; 填充剩下的空間,使生成的二進位制**恰好為512位元組  

dw  0xaa55    ; 結束標誌  

www.2cto.com  

1、用nasm編譯:

$ nasm boot.asm -o boot.bin

這樣就得到了乙個512位元組的boot.bin檔案了,這個就是軟盤啟動扇區裡面應該放的**。

2、你可以用下面這個命令生成軟盤映象檔案:

$ dd conv=sync if=boot.bin of=boot.img bs=1440k count=1

這樣我們就得到軟盤映象boot.img了。注意命令中的conv=sync,使用這個選項後可以使得在把每個輸入塊填充到ibs個位元組時,不足部分用空(null)字元補齊。在這個例子裡由於輸入檔案只有512個位元組,輸出檔案卻需要1.44mb所以我用了這個選項。

3、利用qemu啟動映象檔案:

qemu -fda boot.img -boot a -m 64 -localtime

自己動手寫作業系統

virtual pc 5.2 下 dos7.1 中 執行.com檔案相關問題 2009 09 09 12 55 剛才在進入dos後,編譯.asm檔案獲得.com檔案,但系統會出現 emm386 unrecoverable privileged operation error n9.press ent...

自己動手寫作業系統

今天看了前兩章,現將重點記錄如下 作業系統的啟動,關鍵點時同bios的介面 這裡有兩個位址很重要,a,0x7c00 510 0x7dfe登記標誌位 兩個byte 0xaa55 b,0x7c00,作業系統載入的目標位址 系統啟動過程 1 bios清零cpu現場 傳送reset訊號 2 cpu從0xf ...

自己動手寫作業系統

2 自己動手寫作業系統 3自己動手寫作業系統 如何呼叫bios中斷 在一般的程式語言中,函式的呼叫是一件非常容易的事情。比如在c語言中,如果有乙個名為display的程式,它帶有兩個引數,其中引數 noofchar表示顯示的字元數,引數attr表示顯示字元的屬性。那麼要呼叫它,只需給出程式的名稱即可...