摘要: 水面下面的冰山本文摘自于渊编著的《orange's一个操作系统的实现》一书 即便是非常袖珍的程序,也有可能遇到不能正确运行的情况,对此你一定并不惊讶,谁都可能少写一个标点,或者在一个小小的逻辑问题上犯迷糊。好在我们可以调试,通过调试,可以发现错误,让程序日臻完美。但是对于操作系统这样的特殊程序,我们没有办法用普通的调试工具来调试。可是,哪怕一个小小的引导扇区,我们也没有十足的把握一次就写好,那么,遇到不能正确运行的时候该怎么办呢?在屏幕上没有看到我们所要的东西,甚至于机器一下子重启了,你该如何是好呢? 每一个问题都是一把锁,你要相信,世界上一定存在一把钥匙可以打开这把锁。你也一定能找到 阅读全文
posted @ 2009-05-19 14:21 我的javaIT 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 操作系统编写之代码解释 其实程序的主体框架只是第2行到第6行这么一点点而已,其中调用了一个显示字符串的子程序。程序的第2、3、4行是3个mov指令,使ds和es两个段寄存器指向与cs相同的段,以便在以后进行数据操作的时候能定位到正确的位置。第5行调用子程序显示字符串,然后jmp $让程序无限循环下去。可能有很多人开始学汇编时用的都是MASM,其实NASM的格式跟MASM总体上是差不多的,在这段程序中,值得说明的地方有以下几点:1.方括号[]的使用 在NASM中,任何不被方括号[]括起来的标签或变量名都被认为是地址,访问标签中的内容必须使用[]。所以, mov ax, BootMessage 将 阅读全文
posted @ 2009-05-19 14:19 我的javaIT 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 操作系统编写之引导扇区 你可能还没有从刚刚的兴奋中走出来,可是我不得不告诉你,实际上,你刚刚所完成的并不是一个完整的操作系统,而仅仅是一个最最简单的引导扇区(Boot Sector)。然而不管我们完成的是什么,至少,它是直接在裸机上运行的,不依赖于任何其他软件,所以,这和我们平时所编写的应用软件有本质的区别。它不是操作系统,但已经具备了操作系统的一个特性。 我们知道,当计算机电源被打开时,它会先进行加电自检(POST),然后寻找启动盘,如果是选择从软盘启动,计算机就会检查软盘的0面0磁道1扇区,如果发现它以0xAA55结束,则BIOS认为它是一个引导扇区。当然,一个正确的引导扇区除了以0xAA 阅读全文
posted @ 2009-05-19 14:17 我的javaIT 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 十分钟完成的操作系统 你相不相信,一个“操作系统”的代码可以只有不到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 = 阅读全文
posted @ 2009-05-19 08:16 我的javaIT 阅读(246) 评论(1) 推荐(0) 编辑
摘要: 在酷热的就业天气寻找几丝凉意邵志东谈程序员职业成长之路 5月17日 中午,中关村图书大厦5层多功能厅,博文视点大讲堂特邀《软件开发这点事—软件开发工具手册》的作者邵志东老师与读者进行了一场别开生面的专题讲座:在就业的冬天中寻找春意——程序员职业成长之路,现场反响颇佳,听众受益良多。 邵志东老师是微软最有价值开发者、微软中文网络广播最佳讲师,历任北京北大方正电子有限公司项目开发经理、北京新东方IT教育部门经理、北京新科海学校副总经理。拥有近15年的软件设计、需求分析和项目管理、编程经验,熟悉整个软件项目管理流程,对.NET平台开发有着特别深入的研究。 讲座开始前半小时,读者就已陆续到场,很快室内 阅读全文
posted @ 2009-05-19 08:12 我的javaIT 阅读(115) 评论(0) 推荐(0) 编辑