从Windows转到DOS下开发的一些心得体会

来源:互联网 发布:数据库性能测试案例 编辑:程序博客网 时间:2024/04/29 21:56

题记:我是一个从学校出来刚刚工作了几天的新人,这些是我工作这几天里的一些体会和想法,希望能对在校的学生或者是跟我一样刚出来工作的人们有一些帮助。

=================================================================================

忙了几天,今天终于有点时间来写写这几天的一些心得体会了。

我们公司是做数控系统的,所以我的工作是在DOS下做一些底层的开发。刚刚来到这公司,Team Leader 叫我先熟悉一下DJGPP这个开发工具,这是一个DOS下的GCC工具(以前学LINUX课程的时候有学过GCC,但那时对这个不感兴趣,没怎么用心学,早就忘光了),有一个集成开发环境(rhide),听说跟BC差不多(不好意思,我只用过TC,没用过BC)。跟TC、BC那些最不一样的地方是,它提供了一个DOS下的32位保护模式(DPMI)。

刚刚接触GJGPP,最大的难题是市面上根本没有这方面的书,所有的资料都只能来源于网上,而且绝大部分都是英文的资料。熟悉了一下开发环境后,带我的那个老员工让我先写一个DOS下的中断程序给他看看。我以前没有写中断程序的经验,写这个程序可花了我不少的时间。

“中断”这个概念,如果从理解的角度来看,书上的定义是很好理解的,但从开发者的角度来看就很不一样了。看了N多资料后,终于才对“中断”有了些理解了。原来所谓的DOS下的“中断”其实就是我们在 Windows 中所说的“事件”和消息。当我们的某个操作或者是程序的某一条指令产生了一个中断后,CPU 就会停下当前的工作来处理这个中断。就像在Windows中发生了一个事件而产生了一条消息,系统就会来处理这条消息一样(当然,这都涉及到优先级的问题,具体还要看操作系统)。

在DOS下的中断有软件中断和硬件中断之分。软件中断是由我们的程序或者是操作系统发出的,而硬件的中断则是由硬件的状态改变产生的。我们的程序可以使用“系统调用中断”来调用系统的各项功能(这就像我们在 Windows 中使用 API 函数一样),我们也可以通过改写中断处理函数来实现我们想要的操作(这就像我们在 Windows 里写消息处理函数一样)。

下面我列了一下我这几天所写过的一些程序,在校的学生或都其它有兴趣的人都可以试写一写,如是你以后是做底层开发的话,相信这些对你是很有帮助的!

1、写一个DOS的中断程序。(理解一下中断的概念)

2、改写INT 1CH(时钟中断)的中断处理函数。(学会改写中断处理函数)

3、修改时钟中断发生的时间(默认是55ms)。(学会操作底层硬件)

4、在保模式中直接访问内存。(学习保护模式下的内存操作方式)

这些程序需要你对硬件或者是数据在内存中的存放方式有一定的了解才可以实现,在网上可以找到很多这方面的资料,希望有志在这方面学习和发展的朋友不要被学习中所遇到的困难吓倒,希望中国的IT业会有更好的发展!

原创粉丝点击