學習課程:
操作系統-java
1. 先寫彙編:
boot.asm
org 0x7c00;
entry:
mov ax, 0
mov ss, ax
mov ds, ax
mov es, ax
mov si, msg
putloop:
mov al, [si]
add si, 1
cmp al, 0
je fin
mov ah, 0x0e
mov bx, 15
int 0x10
jmp putloop
fin:
HLT
jmp fin
msg:
DB 0x0a, 0x0a
db "hello, OS world.I am copbint!"
db 0x0a
db 0
2. 編譯彙編
使用nasm編譯成二進制(一般的linux機器安裝nasm即可):
nasm boot.asm -o boot.bat
3. 製作img文件
課程中是利用java代碼對boot.bat文件進行操作,生成img文件。
覺得java代碼太複雜了,二進制編輯器直接搞起來。
有兩種方法:
1. ultraEdit
ultraEdit下載地址:
http://xiazai.zol.com.cn/detail/10/94683.shtml#hotArticle
20190821親測可用
使用方法:
直接使用ultraEdit打開boot.bat,編輯選項卡,選中16進制模式:
手工追加55AA之後,發現文件才68個字節。不知道什麼原因,img文件大小一定得是1474560才能啓動成功。所以構造一個大小爲1474560的文件。
編輯選項卡右上角,點 16進制插入/刪除
插入(1474560-58=1474492)個字節,插入的字符全部默認爲0x20,管他呢,反正沒影響。
最近將文件改名xxx.img
2. vim
具體操作參考:
vim編輯二進制文件
3. notepad使用hexeditor插件
下載地址:
https://blog.csdn.net/PYTandFA/article/details/83004124
下載完成之後直接將dll文件放到notepad安裝目錄的plugins目錄下,重啓notepad即可。
4. 設置virtual box從img文件啓動
效果圖:
4. 疑問
1. 爲什麼55AA不寫在扇區結尾的位置(510,511)也可以正常啓動?
猜測這就是virtualbox的機制吧。估計放到物理機上這麼寫就無法啓動了。
2. 爲什麼img文件一定要1474560字節,多一個字節,少一個字節都不行?
沒搜到啥資料。希望將來能搞明白吧。