日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

30天自制操作系统——第一天到第二天

發布時間:2023/12/20 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 30天自制操作系统——第一天到第二天 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一天

光盤地址用的這個:30天自制操作系統光盤 - 夕雨714 - 博客園 (cnblogs.com)

Bz162下載地址:Bz - c.mos (vcraft.jp)

啟動方式:D:\文檔\學習科目\計算機基礎\操作系統\操作系統實驗\30dayMakeOS\1_day\tolset\helloos0 目錄下打開!cons_nt.bat cmd中輸入run

2C 逗號,20 空格,0A 換行

OS made by BUPT LanYi

4F 53 20 6D 61 64 65 20 62 79 20 42 55 50 54 20 4C 61 6E 59 69 0A

共22組

經過簡化,可以在helloos2中的helloos.nas文本中更改

再用一下命令生成img文件,再run

…\z_tools\nask.exe helloos.nas helloos.img

效果圖跟上圖一樣

目前helloos2中為os


第二天

helloos.nas; hello-os ; TAB=4ORG 0x7c00 ; 裝載地址,也就是程序的開頭,引導扇區被讀取的地址,IBM規定的JMP entry ; 跳轉DB 0x90DB "HELLOIPL" ; 僽乕僩僙僋僞偺柤慜傪帺桼偵彂偄偰傛偄乮8僶僀僩乯DW 512 ; 1僙僋僞偺戝偒偝乮512偵偟側偗傟偽偄偗側偄乯DB 1 ; 僋儔僗僞偺戝偒偝乮1僙僋僞偵偟側偗傟偽偄偗側偄乯DW 1 ; FAT偑偳偙偐傜巒傑傞偐乮晛捠偼1僙僋僞栚偐傜偵偡傞乯DB 2 ; FAT偺屄悢乮2偵偟側偗傟偽偄偗側偄乯DW 224 ; 儖乕僩僨傿儗僋僩儕椞堟偺戝偒偝乮晛捠偼224僄儞僩儕偵偡傞乯DW 2880 ; 偙偺僪儔僀僽偺戝偒偝乮2880僙僋僞偵偟側偗傟偽偄偗側偄乯DB 0xf0 ; 儊僨傿傾偺僞僀僾乮0xf0偵偟側偗傟偽偄偗側偄乯DW 9 ; FAT椞堟偺挿偝乮9僙僋僞偵偟側偗傟偽偄偗側偄乯DW 18 ; 1僩儔僢僋偵偄偔偮偺僙僋僞偑偁傞偐乮18偵偟側偗傟偽偄偗側偄乯DW 2 ; 僿僢僪偺悢乮2偵偟側偗傟偽偄偗側偄乯DD 0 ; 僷乕僥傿僔儑儞傪巊偭偰側偄偺偱偙偙偼昁偢0DD 2880 ; 偙偺僪儔僀僽戝偒偝傪傕偆堦搙彂偔DB 0,0,0x29 ; 傛偔傢偐傜側偄偗偳偙偺抣偵偟偰偍偔偲偄偄傜偟偄DD 0xffffffff ; 偨傇傫儃儕儏乕儉僔儕傾儖斣崋DB "HELLO-OS " ; 僨傿僗僋偺柤慜乮11僶僀僩乯DB "FAT12 " ; 僼僅乕儅僢僩偺柤慜乮8僶僀僩乯RESB 18 ; 偲傝偁偊偢18僶僀僩偁偗偰偍偔; 僾儘僌儔儉杮懱entry:MOV AX,0 ; 初始化寄存器MOV SS,AXMOV SP,0x7c00 ; 棧指針寄存器MOV DS,AXMOV ES,AXMOV SI,msg ; 源變址寄存器 putloop:MOV AL,[SI] ; ADD SI,1 ; SI加一CMP AL,0JE finMOV AH,0x0e ; 顯示一個文字MOV BX,15 ; 指定字符顏色INT 0x10 ; 軟件中斷指令,調用顯卡BIOS,使用16號函數JMP putloop fin:HLT ; 停止CPU,等待指令JMP fin ; 無限循環msg: ; 顯示信息部分DB 0x0a, 0x0a ; 換行兩次DB "hello, world"DB 0x0a ; 換行DB 0RESB 0x7dfe-$ ; 0x7dfe傑偱傪0x00偱杽傔傞柦椷DB 0x55, 0xaa; 埲壓偼僽乕僩僙僋僞埲奜偺晹暘偺婰弎DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB 4600DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB 1469432

bios網頁:(AT) BIOS - os-wiki (osask.jp)

內存分布圖(AT)memorymap - os-wiki (osask.jp)

nask:匯編編譯器的一種

文件更改:ipl.nas用來作為啟動區

asm makeimg run


makefile

# Makefile文件 # 定義文件生成規則,是高級的批處理命令文件default : # 默認命令../z_tools/make.exe img ipl.bin : ipl.nas Makefile # 檢查有無這兩個文件../z_tools/nask.exe ipl.nas ipl.bin ipl.lsthelloos.img : ipl.bin Makefile../z_tools/edimg.exe imgin:../z_tools/fdimg0at.tek \wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img# 命令asm :../z_tools/make.exe -r ipl.binimg :../z_tools/make.exe -r helloos.imgrun :../z_tools/make.exe imgcopy helloos.img ..\z_tools\qemu\fdimage0.bin../z_tools/make.exe -C ../z_tools/qemuinstall :../z_tools/make.exe img../z_tools/imgtol.com w a: helloos.imgclean : # 刪除掉中間文件-del ipl.bin-del ipl.lstsrc_only : # 調用clean命令的同時刪除img../z_tools/make.exe clean-del helloos.img

第三天

IPL: initial program loader 啟動區,啟動程序裝載器

BIOS的0x13函數

  • AH = 0x02; (読み込み時)
  • AH = 0x03; (書き込み時)
  • AH = 0x04; (ベリファイ時)
  • AH = 0x0c; (シーク時)
  • AL = 処理するセクタ數; (連続したセクタを処理できる)
  • CH = シリンダ番號 & 0xff;
  • CL = セクタ番號(bit0-5) | (シリンダ番號 & 0x300) >> 2;
  • DH = ヘッド番號;
  • DL = ドライブ番號;
  • ES:BX = バッファアドレス; (ベリファイ時、シーク時にはこれは參照しない)
  • 返回值,即進位標志:
  • FLAGS.CF == 0 : エラーなし、AH == 0
  • FLAGS.CF == 1 : エラーあり、AHにエラーコード(リセットファンクションと同じ)
; harib00b/ipl.nas與昨天不同的部分MOV AX,0x0820MOV ES,AXMOV CH,0 ; 柱面0MOV DH,0 ; 磁頭0MOV CL,2 ; 扇區2MOV AH,0x02 ; AH=0x02 : 讀盤MOV AL,1 ; 1個山區MOV BX,0MOV DL,0x00 ; 驅動器號INT 0x13 ; 調用BIOS19號函數JC error ; 進位標志如果是1的話,就跳轉

與光盤不同,軟盤磁盤兩面都能記錄數據

軟式磁盤驅動器則稱FDD,軟盤片是覆蓋磁性涂料的塑料片,用來儲存數據文件,磁盤片的容量有5.25”的1.2MB,3.5”的1.44MB。

以3.5”的磁盤片為例,其容量的計算如下:
80(磁道)x18(扇區)x512 bytes(扇區的大小)x2(雙面) = 1440 x1024 bytes = 1440 KB = 1.44MB
3.5英寸軟盤片,其上、下兩面各被劃分為80個磁道,每個磁道被劃分為18個扇區,每個扇區的存儲容量固定為512字節。

段寄存器:

不管要指定內存的什么地址都必須同時指定段寄存器,默認為段寄存器DS,故DS必須預先指定為0,否則地址會加上這個數的16倍

make run


; 03_day/harib00b entry:MOV AX,0 ; 儗僕僗僞弶婜壔MOV SS,AXMOV SP,0x7c00MOV DS,AX; 僨傿僗僋傪撉傓MOV AX,0x0820MOV ES,AXMOV CH,0 ; 僔儕儞僟0MOV DH,0 ; 僿僢僪0MOV CL,2 ; 僙僋僞2MOV SI,0 ; 記錄失敗次數的寄存器 retry:MOV AH,0x02 ; AH=0x02 : 僨傿僗僋撉傒崬傒MOV AL,1 ; 1僙僋僞MOV BX,0MOV DL,0x00 ; A僪儔僀僽INT 0x13 ; 僨傿僗僋BIOS屇傃弌偟JNC fin ; 沒出錯的話跳轉到finADD SI,1 ; 往SI加1CMP SI,5 ; 比較SI和5JAE error ; SI >= 5 跳轉errorMOV AH,0x00MOV DL,0x00 ; A僪儔僀僽INT 0x13 ; 重置驅動器JMP retry

到目前還挺簡單的,但是得補編譯原理、數據庫作業去了,感覺第三天內容好像挺多

歡迎關注B站賬號,會發一些深度強化學習的學習資料
B站賬號:嗶哩嗶哩 無名-易
Gitee賬號:gitee賬號
GitHub賬號:GitHub

總結

以上是生活随笔為你收集整理的30天自制操作系统——第一天到第二天的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。