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

首先打开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文件加载到虚拟机的虚拟软驱里启动就可以了 大笑



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值