自學作業系統

2021-09-29 02:06:25 字數 2355 閱讀 9672

操作過程

說明:windows10 作業系統下

1,就這一點

把這個資料夾複製出來到當前目錄。

進入tolset,新增helloos03

在資料夾中先放!cons_nt.bat,這個bat的作用就是在當前目錄下開啟cmd。

helloos03.img 是通過nask.exe編譯hellloos03.nas得到。

之後再建立run.bat,內容是這個

copy helloos03.img ..\z_tools\qemu\fdimage0.bin

..\z_tools\make.exe -c ../z_tools/qemu

其操作就是把helloo03.img複製成fdimage0.bin放進qemu裡面,qemu是乙個軟盤模擬器,通過這個軟體執行就是再執行fdimage0.bin中的程式了。第二行的make是執行qemu目錄下的makefile,makefile裡面是指明執行qemu-win.bat,這個批處理檔案中內容是:

@set sdl_videodriver=windib;設定qemu的相關變數...

@set qemu_audio_drv=none

@set qemu_audio_log_to_monitor=0

qemu.exe -l . -m 32 -localtime -std-vga -fda fdimage0.bin

意思是通過qemu.exe把fdimage0.bin拉起來,fdimage0.bin就相當於錄製好了的作業系統檔案。再qemu.exe上跑了起來。

具體描述

**

接下來講講**。

org 0x7c00		;指明程式的裝載位址

mov ax,0 ; 初始化 暫存器

mov ss,0 ; ss暫存器,設定成0

mov sp,0x7c00 ; sp棧指標,設在程式裝載區最開始的地方,這樣做我覺得不對,不過現在程式沒有跑

mov ds,ax ; ds資料暫存器

mov es,ax ; es段暫存器

mov si,msg ; si源變位址暫存器。 把msg的記憶體區域都讀過來

; 啊我待會得去把彙編暫存器給複習一下

putloop: ; 這是迴圈輸出的

mov al,[si] ; 從msg 裡面讀取資料

add si,1 ; si暫存器 + 1

cmp al,0 ; 是不是0,是就跳出去

je fin

; 這是顯示函式的標準寫法

mov ah,0x0e ; 不等於就這裡,把0x0e放在高位

mov bx,5 ; 這裡是搞個顏色

int 0x10 ; 呼叫顯示中斷,這個中斷再bios裡面的

jmp putloop ; 迴圈寫入

fin:

hltjmp fin

msg:

db 0x0a, 0x0a

db "hello,world"

db 0x0a

db 0

resb 0x7dfe-$ ; 從後面一直到這裡,全部寫0

db 0x55, 0xaa ; 必須 0x, 0x55aa

如上**,注釋也寫的很清楚,接下來說下**的含義與及一些需要明白的小知識點。

第一段**,意義在於初始化需要用的暫存器,清零的清零,設值的設值。

第二段**,指定位置msg處,讀hello,world

第三段**,呼叫 10 號中斷,展示對應的字元。

第四段**,迴圈阻塞住,展示不退出。

第五段**,msg,要展示的資料區。

第六段**,填零,啟動區標誌。

需要知道的基本常識

在彙編中,中斷的呼叫的時候需要設定相關的暫存器,因為執行的中斷會去對應的暫存器中讀取值,類似於函式傳參。

作業系統中bios執行完畢以後,會去找到0x7c00位置開始執行。在載入主驅動區的時候比那辨別最後的位置是不是0x55aa,如果是就認為他是bios需要載入的引導區。如果不是,bios就不認為他是需要的啟動區,因此,這塊區域的最後需要寫成0x55aa。

如果有錯,歡迎指出。

作業系統 作業系統介面

介面表現為函式呼叫,由作業系統提供,連線作業系統和應用軟體。出於安全性考慮,應用程式不能直接在記憶體中任意訪問 將核心程式和使用者程式隔離 通過比較訪問資料段cpl和rpl的特權級和當前段dpl的特權級之間的關係 應用程式呼叫庫函式printf printf呼叫庫中的write函式 write將函式...

作業系統(作業系統引論)

方便性 方便使用者進行操作計算機 有效性提高系統資源的利用率 提高系統的吞吐量,加速程式的執行 可擴充性 方便地增添新的模組和功能,以及對原有的功能模組進行修改 開放性能夠遵循世界標準規範 os作為使用者和計算機硬體系統之間的介面 使用者能夠通過作業系統來使用計算機系統 os作為計算機資源的管理者 ...

作業系統 作業系統 一 作業系統概述

好好學習,天天向上本文已收錄至我的github倉庫daydayup 歡迎star 之前一直沒有系統地學過作業系統,感覺自己在平時的學習過程中對於某些概念理解得一塌糊塗,比如中斷 記憶體 程序和執行緒等。所以打算系統的學習一下作業系統。一開始我是在b站看哈工大的李治軍老師講的,但是一上來就開始從彙編 ...