<body>

kenshou

天空没有飞过的痕迹,但我已经努力飞过……

« Home | Next » | Next » | Next » | Next » | Next » | Next » | Next » | Next » | Next » | Next »

宅男侵略电脑之OS“hello world”

作为一代宅男的我在看《keroro军曹》后被keroro的侵略精神所感动,决定学习其坚韧的侵略精神,因此我准备侵略电脑。

侵略电脑的这个万里长征的第一步就是在裸机上写出自己的“hello world”,考虑了安全起见等,先需要演习一下,于是我的侵略环境和工具选择为:
1:bochs:虚拟电脑软件,在sf上面下载。
2:cygwin:在win下面运行许多linux命令,主要网上很多资料都是linux下面的,就选择了它让我在win下面运行常用的linux命令。(http://www.cygwin.cn/)
3:nasm: 汇编编译器(不用问我为什么用这个,我看网上很多用的这个就用这个了,是个随大流的)

第一步:编写第一个hello world!程序

org 07c00h ; 告诉编译器程序加载到7c00处
mov ax, cs
mov ds, ax
mov es, ax
call DispStr ; 调用显示字符串例程
jmp $ ; 无限循环
DispStr:
mov ax, BootMessage
mov bp, ax ; ES:BP = 串地址
mov cx, 16 ; CX = 串长度
mov ax, 01301h ; AH = 13, AL = 01h
mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
mov dl, 0
int 10h ; 10h 号中断
ret
BootMessage: db "Hello, OS world!"
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55 ; 结束标志

-----------------
保存为boot.asm,运行nasm boot.asm -o boot.bin

第二步:生成image文件。

这里我用的dd命令来生成image文件。
dd if=boot.bin of=myos.img bs=512 count=2880

第三步:配置bochs文件。

直接进入bochs安装目录bochsrc-sample.txt另存为myos.bochsrc,然后修改其中的floppya为第二步生成的img文件,并把ata0-master屏蔽然后把引导修改成floppy。

floppya: 1_44=myos.img, status=inserted
boot: floppy

第四步:keroro,霍霍,运行我们hello world!吧
bochs -f myos.bochsrc

ok,侵略电脑的第一步踏出来了,下面宅男我继续看《keroro军曹》了

参考资料:
1:《自己动手写操作系统》的第一个例子 http://blog.csdn.net/areful/archive/2008/01/14/2043217.aspx
2: bochs使用(linux下搭建操作系统开发环境,原创) http://dev.csdn.net/article/83404.shtm
3:dd 用法 http://school.21tx.com/2005/03/13/16475.html
4:BIOS中断表 http://blog.chinaunix.net/u/13171/showart.php?id=341416

标签:

leave a response