準備工作
開始實驗
新建資料夾
在 tolset 資料夾內新建子資料夾helloos4。
!cons_nt.bat
cmd.exe
ipl.nas開啟vc code,新建檔案,輸入以下**並儲存為ipl.nas檔案,放在helloos4中:
; hello-os
; tab = 4
org 0x7c00 ; 指明程式的裝載位址
; 以下的記述用於標準fat12格式的軟盤
jmp entry
db 0x90
db "helloipl" ; 啟動區的名稱可是任意的字串
dw 512 ; 每個扇區(sector)的大小(必須為512位元組)
db 1 ; 簇(cluster)的大小(必須為1個扇區)
dw 1 ; fat12的起始位置(一般從第乙個扇區開始)
db 2 ; fat的個數(必須為2)
dw 224 ; 根目錄的大小(一般設成224項)
dw 2880 ; 該磁碟的大小(必須是2880扇區)
db 0xf0 ; 磁碟的種類(必須是0xf0)
dw 9 ; fat的長度(必須是9扇區)
dw 18 ; 乙個磁軌(track)有幾個扇區(必須是18)
dw 2 ; 磁頭數(必須是2)
dd 0 ; 不使用分割槽,必須是0
dd 2880 ; 重寫一次磁碟大小
db 0,0,0x29 ; 意義不明固定
dd 0xffffffff ; (可能是)卷標號碼
db "hello-os " ; 磁碟的名稱(11位元組)
db "fat12 " ; 磁碟格式名稱
resb 18 ; 先空出18位元組
; 程式主體
entry:
mov ax,0 ; 初始化暫存器
mov ss,ax
mov sp,0x7c00
mov ds,ax
mov es,ax
mov si,msg
putloop:
mov al,[si]
add si,1 ; 給si加1
cmp al,0
je fin
mov ah,0x0e ; 顯示乙個文字
mov bx,15 ; 指定字元顏色
int 0x10 ; 呼叫顯示卡bios
jmp putloop
fin:
hlt ; 讓cpu停止,等待指令
jmp fin ; 無限迴圈
msg:
db 0x0a, 0x0a ; 換行兩次
db "hello, world"
db 0x0a
db 0
resb 0x7dfe-$
db 0x55, 0xaa
asm.bat..\z_tools\nask.exe ipl.nas ipl.bin ipl.lst
makeimg.bat..\z_tools\edimg.exe imgin:../z_tools/fdimg0at.tek wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img
run.batcopy helloos.img ..\z_tools\qemu\fdimage0.bin
..\z_tools\make.exe -c ../z_tools/qemu
好的到這裡,**的編輯工作就完成了,接下來是編譯及執行了
編譯開啟!cons.nt.bat,出現命令列介面
在命令列中輸入asm, 並回車;
3. 接著輸入makeimg 製作img系統映象
最後在虛擬機器中執行,輸入run回車
ps:在vmware 中執行
以上,就是helloos4的內容了,好的,到這裡就結束了,請大家多多支援!!!
《30天自製作業系統》第4天
1.c語言與畫面顯示的練習 彙編與c 語言結合時能自由使用的寄存區只有 eax,ecx,edx3 個,其他寄存區用於記憶非常重要的值,只能讀不能寫。intel系列 cpu 8086 80186 286 386 486 pentium pentiumpro pentium2 pentium3 pent...
《30天自製作業系統》第6天
1.pic 可程式設計中斷控制器 pic 連線 8個中斷訊號,監視輸入管腳的 8個中斷訊號。主 pic irq0 irq7 irq2 連線到從 pic irq8 irq15 中斷發生後,cpu 命令pic傳送2 個位元組的資料,格式是 0xcd 0 cpu收到2 個位元組後把資料當做指令來執行。0x...
30天自製作業系統 第3天
cf 進製標誌,1位暫存器 jc 若進製標誌是1,則跳轉 int 0x13 呼叫磁碟bios ah 0x00 系統復位 0x02 讀盤 0x03 寫盤 0x04 校驗 0x0c 尋道 al 處理物件的扇區數 ch 柱面號 0xff cl 扇區號 0 5位 柱面號 0x300 2 dh 磁頭號 dl ...