《30天自制作業系統》 day01
效果圖
hello.nas
; hello-os
; TAB=4
DB 0xeb, 0x4e, 0x90
DB "HELLOIPL" ; 啟動區的名稱可以是任何字元
DW 512 ; 每個扇區的大小(必須為512個位元組)
DB 1 ; 簇的大小必須為1個扇區
DW 1 ; FAT的起始位置,一般從第一個扇區開始
DB 2 ; FAT 的個數,必須為2
DW 224 ; 根目錄的大小,一般設定成為224項
DW 2880 ; 該磁碟的待續哦啊,必須為2880扇區j
DB 0xf0 ; 磁碟的種類
DW 9 ; FAT的長度必須是9扇區
DW 18 ; 1個磁軌有幾個扇區
DW 2 ; 磁頭數
DD 0 ; 不使用分割槽,必須是0
DD 2880 ; 重寫磁碟
DB 0,0,0x29 ; 固定
DD 0xffffffff ; 卷標號碼
DB "HELLO-OS " ; 磁碟名稱
DB "FAT12 " ; 磁碟格式名稱
RESB 18 ; 先空出18位元組
; 程式主體
DB 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
DB 0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
DB 0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
DB 0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
DB 0xee, 0xf4, 0xeb, 0xfd
;資訊顯示部分
DB 0x0a, 0x0a ; 2個換行
DB "hello, skyl"
DB 0x0a ; 換行
DB 0
RESB 0x1fe-$ ; 填寫0x00,直到0x001fe
DB 0x55, 0xaa
; 以下是啟動區以外部分的輸出
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 4600
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 1469432
install.bat
..\z_tools\imgtol.com w a: helloos.img
run.bat
copy helloos.img ..\z_tools\qemu\fdimage0.bin
..\z_tools\make.exe -C ../z_tools/qemu
相關推薦
《30天自制作業系統》 day01
效果圖 hello.nas ; hello-os ; TAB=4 DB 0xeb, 0x4e, 0x90 DB "HELLOIPL"
關於《30天自制作業系統第三天》程式跳轉到0XC200的問題
看到第三章的時候我蒙圈了,程式裡面是從0X8200開始複製的,如圖 書裡面也提到過軟盤的檔案的為內容是0X4200開始的,問題來了,但是書裡面解釋之所以跳轉到0XC200的原因是 0x8000+0x42
30天自制作業系統——用U盤啟動自制系統
最近試讀了《30天自制作業系統》的前兩章,感覺很有意思。 但是發現裡面寫的系統都是用軟盤啟動的,現在在大多數電腦上已經看不見軟碟機了,所以如果想執行書中的作業系統只能通過qemu(隨書光碟中已經附帶)模擬執行。這樣的話成就感就會少很多,感覺像是在做一個簡單的控制檯程式,相信大多數童鞋都希望能做出一個能在真
30天自制作業系統學習-第2天
第二天主要學習組合語言與Makefile入門 1:繼續開發 在這裡先給出作者在第二天使用nask編寫程式碼中涉及到的暫存器概念: AX--accumulator,累加暫存器 CX--counter,計數暫存器 DX--data,資料暫存器 BX--base
30天自制作業系統學習-第3天
第三天的開發依舊基於彙編和分割槽方面的知識,以及呼叫BIOS中斷,寫入視訊記憶體部分內容。 asmhead.nas: ; haribote-os boot asm ; TAB=4 BOTPAK EQU 0x00280000 ; bootpackのロード先 DSKCA
30天自制作業系統學習-第4天
1 用C語言寫入記憶體 前三天的學習我們順利讓一個大小1440kb的helloos.img映象檔案執行起來,顯示出hello world字樣,可是這樣的螢幕一片漆黑, 顯示更我們熟悉的windos,linux等系統相去甚遠,這次我們嘗試讓螢幕顯示出一點“顏色”出來,往na
30天自制作業系統學習-第7天
1 獲取按鍵編碼 如何讓使用者輸入的鍵盤按鍵轉換為對於的字元,只需使用匯編呼叫bios中斷即可實現,我們在naskfuc.nas中編寫好的大量in out介面嘗試呼叫,修改後的int.c中inthandler函式: #define PORT_KEYDAT 0x0060
30天自制作業系統學習-第8天
1 滑鼠解讀 我們昨天已經能通過滑鼠中斷取得資料了,但是遠遠有這些資料還不夠,我們希望我們能解讀這些資料,使之讓我們的滑鼠游標做出相應的動作,修改bootpack.c裡的HariMain主函式部分: for (;;) { io_cli(); if (fifo
30天自制作業系統日誌 第一天 小白在努力
第一天 思考好久決定將自己的實驗日誌拿來分享,很喜歡“30天”這本書,希望能幫助到同樣正在探索這本書的童鞋!但是!希望只是給大家一個參考,不要直接複製貼上喲,筆芯❤ 一、實驗主要內容 1、內容1:下載二進位制編輯器 2、內容2:按照書上14頁內容輸入16進位制字
《30天自制作業系統》 第一天 從計算機結構到彙編程式入門
效果圖 相關概念 CPU 中央處理單元,除了與別的電訊號交換以外什麼都不會,對於電訊號只能理解開與關兩種狀態。 CPU就是個整合電路板,它只是忠實地執行電訊號給它的指令,輸出相應的電訊號。 指定位置顯示0還是1等。 CPU最早只是發
《30天自制作業系統》學習筆記——第七天
明天就要回學校了,收拾完東西,再在家裡寫下最後一篇筆記。 今天終於迎來滑鼠的控制了! 作者一開始先拿鍵盤練手,給出了一個鍵盤的中斷處理程式。其中作者重點指出一句: io
30天自制作業系統day17
建立命令列視窗 建立一個帶視窗的任務,需要在主程式中建立視窗,再通過引數傳給這個任務的main函式。因為要處理視窗重疊關係等,需要在統一的地方進行管理。 如果有多個任務能夠接受鍵盤輸入,則應該建立一個變數key_to,表示輸入到哪個任務中。 為了讓每個任務
《30天自制作業系統》讀書筆記Day19
GitHub地址:https://github.com/scusjs/1.cat(type)命令 前面實現列出檔案目錄命令,這裡該實現顯示檔案內容命令了,即cat(windows下為type)。 回憶前面的FILEINFO結構體,其中clustno表示檔案從磁碟上哪個扇區開
《30天自制作業系統》學習筆記——第二天
第二行的意思是,如果想製作檔案ipl.bin,就先檢查一下ipl.nas和Makefile這兩個檔案是否都準備好了。後面出現了一個問題,作者說開啟console,輸入make-r ipl.nas但是我照做沒有用,後來自己改輸make ipl.nas就成功了,不知是何原因。Makefile的原理如下,它像一個指
30天自制作業系統之第15天 多工(1)
多工的本質是利用定時器和far跳轉在任務之間進行切換,具體來說,一開始先執行main函式(就是處理我們的滑鼠、鍵盤和定時器等事件),0.02s後定時器超時,執行如下語句:farjmp(0, 4 * 8
《30天自制作業系統》避坑排雷指南和命令大全
前言 《30天自制作業系統》是日本Coder川合秀實先生的著作,對於想了解作業系統原理或者有志於底層開發的同學們好處多多。近幾日我開始閱讀這本著作,順便製作一個避坑排雷指南,防止在無用的事情上浪費時間,附帶收集一下常用命令,方便自己同時分享出來
30天自制作業系統筆記第4天
用C語言實現記憶體讀入 條紋實現‘ void io_hlt(void); void write_mem8(int addr, int data); void HariMain(void) { int i; //變數宣告,i是一個32位的整數
30天自制作業系統---第3天
一,製作真正的IPL(啟動程式裝載器) 今天的目的是將昨天的啟動程式裝載器來裝載程式。 ①:磁碟最初的512位元組是啟動區。為了裝載下一個512位元組內容的程式,對之前的程式進行修改,得到了今天的harib00a程式; &nb
30天自制操作系統(一)從計算機結構到匯編程序入門
ios 是什麽 program 信號 解釋 根目錄 自己 保存 音樂 學習這本書不代表我要親自動手把這本書中的代碼敲一遍哦,只是借機來學習一下操作系統。之前有段時間也在看操作系統的知識,怎麽說呢之前的看的書都是偏講理論多一些,對於我這個非科班出身的來說,由於之前的計算機知識
30天自制操作系統(二)匯編語言學習與Makefile入門
-c 如何 wid 開發 大小端 bio strong 入門 小端 1 介紹文本編輯器 這部分可直接略過 2 繼續開發 helloos.nas中核心程序之前的內容和啟動區以外的內容先不講了,因為還涉及到一些軟盤方面的知識。然後來講的是helloos.nas這個文件 ; h