十分钟完成的操作系统编写 你信吗?
来源:互联网 发布:手机看电影软件 编辑:程序博客网 时间:2024/04/30 23:10
十分钟完成的操作系统
你相不相信,一个“操作系统”的代码可以只有不到20行?
Example 1. chapter1/a/boot.asm
1 org 07c00h ; 告诉编译器程序加载到7c00处
2 mov ax, cs
3 mov ds, ax
4 mov es, ax
5 call DispStr ; 调用显示字符串例程
6 jmp $ ; 无限循环
7 DispStr:
8 mov ax, BootMessage
9 mov bp, ax ; ES:BP = 串地址
10 mov cx, 16 ; CX = 串长度
11 mov ax, 01301h ; AH = 13, AL = 01h
12 mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
13 mov dl, 0
14 int 10h ; 10h 号中断
15 ret
16 BootMessage: db ”Hello,␣OS␣world!”
17 times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
1 8 dw 0xaa55 ; 结束标志
把这段代码用NASM 编译一下:
$ nasm boot.asm –o boot.bin
我们就得到了一个512 字节的boot.bin,让我们使用软盘绝对扇区读写工具将这个文件写到一张空白软盘的第一个扇区。在Linux 下可以这样做:
$ dd if=boot.bin of=/dev/fd0 bs=512 count=1
在Windows 下可以这样做:
$ rawrite2.exe -f boot.bin -d A
好了,你的第一个“操作系统”就已经完成了。这张软盘已经是一张引导盘了。
把它放到你的软驱中重新启动计算机,从软盘引导,你看到了什么?
计算机显示出你的字符串了!红色的“Hello, OS world!”,多么奇妙啊,你的“操作系统”在运行了!
如果使用虚拟机比如Bochs 的话(下文中将会有关于Bochs 的详细介绍),具体结果可以翻阅本书
这真的是太棒了,虽然你知道它有多么简陋,但是,毕竟你已经制作了一个可以引导的软盘了,而且所有工作都是你亲手独立完成的!
本文摘自于渊编写的《orange's:一个操作系统的实现》一书
- 十分钟完成的操作系统编写 你信吗?
- 十分钟完成的操作系统
- 一个操作系统的实现_十分钟完成的操作系统
- 简单操作系统(1)十分钟完成的操作系统
- 10分钟完成的操作系统
- Orange's 自己动手写操作系统 第一章 十分钟完成的操作系统 U盘启动 全记录
- 教你10分钟完成一个自己的微信商城云服务器
- 十分钟教你如何辨别微信公众号的质量
- 程序员的十大任务,你完成了吗?
- 你只有十分钟
- 十分钟教你打造一个微信语音点歌系统
- 让你十分钟看懂中国的经济
- 带你十分钟做出一个自己的手机APP
- 十分钟让你明白Objective-C的语法
- 多牛逼,十几分钟你就能有个属于自己的网站
- 十分钟带你入门Java的反射机制
- 十分钟的代价
- 十分钟的悲剧
- 顾问成长(15)-演讲结束后如何听到真实的反馈并改进
- Groovy探索之MOP 十三 Interceptor 三(1)
- VC中初始化复选框
- Groovy探索之MOP 十三 Interceptor 三(2)
- 在酷热的就业天气寻找几丝凉意
- 十分钟完成的操作系统编写 你信吗?
- xajax如何获取fckeditor的值
- 董栗序:逃跑的老黄牛
- TUE MAY 19,2009
- 备份和压缩指令
- 有一种爱,叫成全
- VisualFC博客关于WTL开发的系列文章索引
- 快速离散余弦变换代码实现(FDCT)
- (转)linux安装飞信