自己动手写操作系统笔记之helloworld


	org		07c00h
	mov		ax, cs
	mov		ds, ax
	mov		es, ax
	call	DispStr
	jmp		$

DispStr:
	mov		ax, BootMessage
	mov		bp, ax
	mov		cx, 16			;CX=串长度
	mov		ax, 01301h
	mov		bx, 000ch		;页号为0(BH=0) 黑底红字(BL=0ch,高亮)
	mov		dl, 0
	int		10h
	ret
BootMessage:		db	"Hello, OS world"
times	510-($-$$)	db	0	;填充剩下的空间,使生成的二进制代码恰好为512字节
dw		0xaa55				;结束标志


安装nasm,并把其加入到path

把以上文件保存到例如 D:\Projects\TEST\asm

cd /d D:\Projects\TEST\asm

nasm boot.asm -o boot.bin


之后用WinImage 新建一个空img文件也保存到上面的目录

打开FloppyWriter 选择file2img,选择刚刚的bin和img,成功。

用VMware新建虚拟机,添加软盘设备并指定img路径,启动。


bochs

其实制作img什么的可以用bochs中的bximage

还是我们上面的文件夹

创建两个bochs配置文件(来运行boot.img)

#1.bochsrc.txt

#how much memory the emulated machine will have  
megs:4  
  
#filename of ROM images  
romimage:file=$BXSHARE/BIOS-bochs-latest,address=Oxf0000  
#vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest  
vgaromimage: file=$BXSHARE/VGABIOS-elpin-2.40  
  
#what disk images will be used  
floppya:1_44=boot.img,status=inserted  
  
#Choose the boot disk  
boot:a  
  
#where do we send log messages?  
log:bochsout.txt

#2.run.bat

SET BXSHARE=C:\Program Files (x86)\Bochs-2.6.8
cd /d D:\Projects\TEST\asm
bochsdbg -q -f bochsrc.txt 

pause


以管理员身份运行run.bat

参考:

http://blog.csdn.net/sinzou1/article/details/5905813

http://www.cnblogs.com/windmissing/archive/2012/06/16/2559801.html



其实以上还不算操作系统,涉及到的主要是CPU体系结构和汇编

接下来下来loader kernel



这个是30天自制操作系统01_day/helloos2的运行截图





大致的总结一下:

首先是boot和loader

然后内核的一些东西。

最后是shell和应用程序。


那么,操作系统究竟为程序员解决了哪些问题呢?

即真正意义上的编程从何开始?


首先程序员使用操作系统编写源代码,

接着用编译器生成二进制文件,

以某种方式触发程序的装载运行,

操作系统把二进制文件从磁盘loader到内存的某块区域并跳到那儿执行。

然后还有一些进程间通信的问题。


展开阅读全文

没有更多推荐了,返回首页