我在BLOG上看到一个连载三篇的文章的,摘一点如下:
我们要做的事情
有人可能担心自己既没有学过计算机原理,也没有学过操作系统原理,更不懂汇编语言,对C语言也一知半解,能写操作系统吗?答案是没问题。我将带大家一步一步完成自己的操作系统。当然如果学一学上述内容再好不过。首先要明确处理器(也就是CPU)控制着计算机。对PC而言,启动的时候,CPU都处在实模式状态,相当于只是一个Intel 8086处理器。也就是说,即使你现在拥有一个奔腾处理器,它的功能也只能是8086级别。从这一点上来讲,可以使用一些软件把处理器转换到著名的保护模式。只有这样,我们才可以充分利用处理器的强大功能。编写操作系统开始是对BIOS控制,取出存储在ROM里的程序。BIOS是用来执行POST(Power On Self Test,自检)的。自检是检查计算机的完整性(比如外设是否工作正常、键盘是否连接等)。这一切完成以后,你就会听到PC喇叭发出一声清脆的响声。如果一切正常,BIOS就会选择一个启动设备,并且读取该设备的第一扇区(即启动扇区),然后控制过程就会转移到指定位置。启动设备可能是一个软盘、光盘、硬盘,或者其它所选择的设备。在此我们把软盘作为启动设备。如果我们已经在软盘的启动扇区里写了一些代码,这时它就被执行。因此,我们的目的很明确,就是往软盘的启动扇区写一些程序。首先使用8086汇编来写一个小程序,然后将其拷贝至软盘的启动扇区。为了实现拷贝,要写一个C程序。最后,使用软盘启动计算机。 ===============
看来写操作系统,在这个层次上,我们新手 ,还是有实践练习机会的,可是我看到这个blog下面没有什么讨论(评论),不知道 有没有人写成功过,大家可以交流一下。文章很长,不方便贴到这儿,请朋友们,在blog上看吧。
地址是:
http://blog.csdn.net/metababy

解决方案 »

  1.   

    这个可以成功,装linux,可以在vm中装,很早以前,也有一文章介绍在普通DOS环境下,编译的,用了几十行代码,就是汇编和C混合编程。后者,我是试过的,是可以的。
      

  2.   

    汇编编写 可以自启动的磁盘 ,可以笑称是自己写的操作系统哈
     
     
    下面贴出了两段代码boot.asm 和shell.asm,实现磁盘启动,并且解析了两个命令 time 和 reboot,有兴趣的朋友可以看看。由于本人的汇编知识很菜,这篇文章只是让大家看看磁盘启动是如何实现的,如果有错误的地方,大家能够指出那就太谢谢了步骤:放入一张磁盘,把这两段代码编译成EXE,分别执行一次,重启计算机,如果有虚拟系统环境的软件更好,如virtual PC,直接就可以看到效果。
    --------------------------------------------------------------------------------以下是boot.asm--------------------------------------------------------------------------------
    ;启动代码
    ;-----------------------------------------------------code_seg segment para 'code'
    main proc far
     assume cs:code_seg,ds:code_seg
     org 00h
    start:
     push ds
     sub ax,ax
     push ax
     mov ax,code_seg
     mov ds,ax
     mov es,ax mov ax,0301h   ;写1扇区
     mov cx,0001h
     mov bx,7c00h   ;从代码7c00h开始
     mov dx,0
     int 13h mov ax,0301h   ;写2扇区,数据
     mov cx,0002h
     mov bx,7e00h   ;从代码7e00h开始
     mov dx,0
     int 13h
     
     ret
     org 7c00h   ;MBR开始
            mov ax,0
            mov es,ax
     
     mov ax,201h   
     mov bx,7e00h   ;把2扇区读入7e00h
     mov cx,2   ;第二扇区
    代码还未贴完全,贴不下了,更多请看我的blog上。
    http://blog.csdn.net/metababy/archive/2005/12/22/559209.aspx
    看来此贴的分,要算给我了哈,谢谢兄弟的光临哈。