您的位置:首页 > 其它

《30天自制操作系统》第二天

2013-06-01 21:49 190 查看
首先打开helloos3中的helloos.nas,直接用记事本打开会出现乱码,可以使用sublime text 2打开它(下载地址:http://www.sublimetext.com/2)然后用UTF-8来保存就可以转换成中文了,下面是代码:

ORG		0x7c00	;程序加载到内存的位置
JMP		entry
DB		0x90    ;模拟磁盘扇区
DB		"HELLOIPL"
DW		512
DB		1
DW		1
DB		2
DW		224
DW		2880
DB		0xf0
DW		9
DW		18
DW		2
DD		0
DD		2880
DB		0,0,0x29
DD		0xffffffff
DB		"HELLO-OS   "
DB		"FAT12   "
RESB	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
CMP		AL,0    ;到字符串最后了
JE		fin
MOV		AH,0x0e	;AH=0ex,AL=显示字符
MOV		BX,15	;BH=0,BL=颜色代码
INT		0x10	;BIOS显示中断
JMP		putloop
fin:
HLT			 ;停机指令
JMP		fin	 ;死循环

msg:
DB		0x0a, 0x0a
DB		"hello, world"
DB		0x0a
DB		0

;RESB	0x7dfe-$
;times   0x7dfe - ( $ - $$ ) DB 0
times 510-($-$$) DB 0

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


然后真正写启动文件ipl.bin,把启动文件以外的东西去掉:

ORG 0x7c00

JMP entry
DB 0x90
DB "HELLOIPL"
DW 512
DB 1
DW 1
DB 2
DW 224
DW 2880
DB 0xf0
DW 9
DW 18
DW 2
DD 0
DD 2880
DB 0,0,0x29
DD 0xffffffff
DB "HELLO-OS "
DB "FAT12 "
RESB 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
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, world"
DB 0x0a
DB 0

;RESB 0x7dfe-$
;times 0x7dfe-($-$$) db 0
times 510-($-$$) db 0
DB 0x55,0xaa

然后将引导扇区的文件导入软盘中,生成img软盘映像文件:
incbin "ipl.bin"
times 1474560 - ($ - $$) db 0

最后将img文件加载到虚拟机的虚拟软驱里启动就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统 虚拟机