跟大師學習系統程式設計 作業系統載入(5)

2021-08-10 04:38:19 字數 1392 閱讀 6221

! ok, we've written the message, now

! we want to load the system (at 0x10000)

mov ax,#sysseg

mov es,ax ! segment of

0x010000

call read_it

call kill_motor

主要通過呼叫read_it來讀取磁碟上的其餘扇區來將作業系統裝入記憶體,

成功讀入後,呼叫kill_motor關閉磁碟驅動器馬達。

後面在保護模式下才需要再開啟。

! defined (!= 0), nothing is done and

thegiven device is used.

! otherwise, either /dev/ps0 (2,28) or /dev/at0 (2,8), depending

! on

thenumber

of sectors that

the bios reports currently.

seg cs

mov ax,root_dev

cmp ax,#0

jne root_defined

seg cs

mov bx,sectors

mov ax,#0x0208 ! /dev/ps0 - 1.2mb

cmp bx,#15

je root_defined

mov ax,#0x021c ! /dev/ps0 - 1.44mb

cmp bx,#18

je root_defined

undef_root:

jmp undef_root

root_defined:

seg cs

mov root_dev,ax

實際上,由於我們將root_dev初始化成了0x0306(root_dev),

所以上述**中間大部分會被跳過。

.org

508root_dev:

.word root_dev

boot_flag:

.word

0xaa55

這部分**主要判斷當前磁碟的型別,並將型別引數存入root_dev變數

此變數在setup.s中會繼續使用

that (everyting loaded), we jump to

! the setup-routine loaded directly after

! the bootblock:

jmpi 0,setupseg

最後,跳轉到setup.s的起始位置去執行**了。

Linux系統程式設計(八)目錄作業系統呼叫

包含標頭檔案 include include 函式原型 int mkdir const char pathname,mode t mode 引數 返回值 chmod 示例程式 include include include intmain return0 編譯執行結果,檔案許可權0777與許可權掩碼...

系統程式設計 作業系統概論PART1

part1.計算機的基本組成原理 part2.計算機執行原理頂層檢視 part3.指令 指令週期 取指令和執行指令 指令格式 前面1位元組是操作碼,指令的功能,例如加法功能。後面3位元組用於尋找要操作的資料值。由於資料儲存在記憶體 儲存器 中,由記憶體位址來標識,所以後3位元組本質是要操作的資料在記...

作業系統編寫筆記

說明 將當前資料夾下的pm.img軟盤映像掛載到 mnt floppy目錄,並將test.com檔案複製到軟盤映像,然後解除安裝映像。1 sudo mkdir mnt floppy 2sudo mount o loop pm img mnt floppy 3sudo cp test com mnt ...