当前位置:首页 » 专业资讯
开发技术指南» 文章正文
    引言: 自由软件社区是一个充满自由和梦想的地方,在10余年的时间里它创造了 一个又一个奇迹。
 

 

 ·继续...    »显示摘要«
    摘要: 装个了lumaqq_0_2-linux_gtk2_x86_with_jre.tar.gz解压后就可以用qq了.同时gaim里集成了msn,嘿嘿....开始时ntfs不能自动加载(在fstab里).仔细查了下资料才发现正确的设置是这样的:/dev/hda1 /home/will/hd/c ntfs defaults,iocharset=cp936 0 0/dev/hda5 /home/will/hd/d vfat defaults,codepage=93......
 ·微软的又一恐吓    »显示摘要«
    摘要:鲍尔默警告:使用 linux 软件亚州政府面临诉讼   计世网消息 当地时间本周四,微软公司警告称,亚州政府将面临关于使用 linux 操纵系统而不是使用 windows 软件而引起的专利诉讼。   linux 正在受到越来越多的消费者的拥戴。开放源代码软件在互联网可以自由地使用以及消费者可以非常容易地进行更改,将直接威胁着在全球占绝对优势的微软公司的 windows 操作系统。   在新加坡举行的亚州政府领导者论坛上,微软公司首席执行官史蒂......


老,牛
自己动手写操作系统

  【相关文章:如何将PHP作为Shell脚本语言使用

【扩展阅读:Linux 7.3的问题

自己动手写操作系统(一) 【扩展信息:新的一周里又有多少未知的事情(闲谈浏览器

作者:伊梅

自由软件社区是一个充满自由与梦想的地方,在10余年的时间里它创造了 一个又一个奇迹。然而,这些奇迹的创造者不只是stallman,也不只是linus torvalds,而是活跃在世界各地的不计其数的开发人员。 在使用各种功能强大的自由软件时,我总会对其开发者充满崇敬之情,期盼有朝一日自己也能成为他们中的一员。很多对自由社区充满向往之情的人,虽然也想努力融身于其中,但又不知该怎么做。那么,就请与我们一起从编写一个简单的操作系统开始吧!

我们要做的事情

有人可能担心自己既没有学过计算机原理,也没有学过操作系统原理,更不懂汇编语言,对c语言也一知半解,能写操作系统吗?答案是没问题。我将带大家一步一步完成自己的操作系统。当然如果学一学上述内容再好不过。

首先要明确处理器(也就是cpu)控制着计算机。对pc而言,启动的时候,cpu都处在实模式状态,相当于只是一个intel 8086处理器。也就是说,即使你现在拥有一个奔腾处理器,它的功能也只能是8086级别。从这一点上来讲,可以使用一些软件把处理器转换到著名的保护模式。只有这样,我们才可以充分利用处理器的强大功能。

编写操作系统开始是对bios控制,取出存储在rom里的程序。bios是用来执行post(power on self test,自检)的。自检是检查计算机的完整性(比如外设是否工作正常、键盘是否连接等)。这一切完成以后,你就会听到pc喇叭发出一声清脆的响声。如果一切正常,bios就会选择一个启动设备,并且读取该设备的第一扇区(即启动扇区),然后控制过程就会转移到指定位置。启动设备可能是一个软盘、光盘、硬盘,或者其它所选择的设备。在此我们把软盘作为启动设备。如果我们已经在软盘的启动扇区里写了一些代码,这时它就被执行。因此,我们的目的很明确,就是往软盘的启动扇区写一些程序。首先使用8086汇编来写一个小程序,然后将其拷贝至软盘的启动扇区。为了实现拷贝,要写一个c程序。最后,使用软盘启动计算机。 需要的工具

● as86:这是一个汇编程序,它负责把写的代码转换成目标文件。

● ld86:这是一个连接器,as86产生的目标代码由它来转换成真正的机器语言。机器语言是8086能够解读的形式。

● gcc:著名的c编程器。因为我们需要写一个c程序将自己的os转移到软盘中。

● 一张空软盘:它用于存储编写的操作系统,也是启动设备。

● 一台装有linux的计算机:这台机器可以很旧,386、486都可以。

在大部分标准linux发行版中都会带有as86与ld86。在我使用的red hat 7.3中就包含有这两个工具,并且在默认的情况下,它已经安装在机器里。如果使用的linux没有这两个工具,可以从网上下载(http://www.cix.co.uk/~mayday/) ,这两个工具都包含在一个名为bin86的软件包中。此外,有关的文档也可以在网上获得(www.linux.org/docs/ldp/howto/assembly-howto/as86.html)。

开始工作

使用一个你喜欢的编辑器输入以下内容:

entry start

start:

mov ax,#0xb800

mov es,ax

seg es

mov [0],#0x41

seg es

mov [1],#0x1f

loop1: jmp loop1

这是as86可以读懂的一段汇编程序。第一个句子指明了程序的入口点,声明整 个过程从start处开始。第二行指明了start的位置,说明整个程序要从start 处开始执行。0xb800是显存的开始地址。#表明其后是一个立即数。执行语句 :

mov ax,#oxb800

ax寄存器的值就变为0xb800,这就是显存的地址。下面再将这个值移至es寄存 器,es是附加段寄存器。请记住8086有一个分段的体系结构。它的各段寄存器为代码段、数据段、堆栈段与附加段,对应的寄存器名称分别为cs、ds、ss与es。事实上,我们把显存地址送入了附加段,因此,任何送入附加段的东西都会被送到显存中。

要在屏幕上显示字符,就需要向显存中写两个字节。前一个是所要显示字符的ascⅱ值,第二个字节表示该字符的属性。属性包括字符的前景色、背景色及是否闪烁等等。seg es指明下一个将要执行的指令是指向es段的。所以,我们把值0x41(在ascⅱ中表示的字符是a)送到显存的第一个字节中。接下来要把字符的属性送到下一个字节当中。
...   下一页

    摘要:国家软件与集成电路公共服务平台技术总监陈伟博士一席谈  “制订标准” 现在已经成为了一个时髦的词,而有关各种标准的消息,也不断充斥耳畔,这也昭告了 “标准时代” 的来临。生于田野,长于社会,不拘小节的小企鹅 linux 也未能免俗,各种 linux 标准也纷至踏来, 这就是“成长的烦恼”吧!而制订 linux 标准正逐步成为我国标准战略的一个重要组成部份。   同样是制订标准,小企鹅的出生、成长方式、生存模式以及“它”和我们的相互认知度都对我们......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE