啟動Orange s的最簡單OS

2021-08-02 21:20:08 字數 875 閱讀 3927

其實更準確的是山區引導程式

書上的**是

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 號中斷

retbootmessage: db "hello, os world!"

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

dw 0xaa55 ; 結束標誌

我們用nasm編譯器產生.bin檔案

nasm boot.asm -o boot.bin

在linux下,用dd命令將.bin檔案轉化為.img檔案(方便之後再虛擬機器啟動時,從虛擬軟盤啟動)

dd if=boot.bin of=boot.img bs=512 count=1

(在if後面寫輸入檔案,在of後面寫輸出檔案)

這樣就可以得到boot.bin檔案

然後我們建立乙個新的虛擬機器,選擇的作業系統都為其他

然後新增虛擬軟盤(floppy),在其中使用軟盤映像檔案

最後直接啟動該虛擬機器,就可以看到結果了

OS作業系統的啟動

ucore的啟動過程.ucore.img 映象檔案的生成 rom中的bios 軟體執行,完成加電自檢的工作後,跳轉到bootloader 程式.bootloader負責將os從硬碟載入到記憶體中,載入完成後,將cpu控制權移交給os,完成os的啟動.bootloader還完成了實模式和保護模式 32...

最簡單的加密

最簡單的加密 package com.util 類 介面的目的 作用 功能 繼承於何種父類,實現的介面 實現的演算法 使用方法 示例程式.version v1.0 2012 3 22 author xiahui public class encrypt system.out.print 加密 s n...

最簡單的makefile

hello.c的內容如下 include int main makefile 的內容如下 hello.exe hello.o gcc o hello.exe hello.o hello.o hello.c gcc c hello.c clean rm hello.o hello.exe window...