目 录 前言 1 第1章 理论概述 3 第1.1节 课题意义 3 第1.2节 编程工具选择及简介 3 第1.3节 BIOS概述 4 第1.4节 DOS概述 4 第2章 BIOS工具的编程技术基础 6 第2.1节 汇编中使用BIOS,DOS中断 6 第2.2节 C语言中使用BIOS,DOS中断 7 第2.3节 C语言与汇编的混合编程 10 第3章 BIOS各工具模块的实现 15 第3.1节 CMOS模块 15 第3.2节 ISA模块 16 第3.3节 Memory模块 17 第3.4节 PCI模块 19 第3.5节 super I/O模块 22 第4章 BIOS工具的总体设计 26 第4.1节 各程序模块之间的关系 26 第4.2节 执行程序 26 第4.3节 显示程序 27 第4.4节 控制程序 29 第4.5节 转换程序 33 结论 34 参考文献 35 致谢 35 附录 35 附录1:实物照片说明 35 附录2:部分源程序 38 【摘要】:BIOS是计算机的血液,没有它计算机做不了任何事情。BIOS收入了各个硬件的性能参数,给软件系统提供数据,以便软件系统识别,为计算机提供最低级的、最直接的硬件控制,负责解决硬件的即时需求,并按软件对硬件的操作要求具体执行。通过升级BIOS更能使主板支持新频率和新类型的CPU,能突破容量限制,直接使用大容量硬盘,获得新的启动方式,开启被屏蔽的功能,识别其它新硬件等。设计一个基于C语言的BIOS工具能更好的了解BIOS,学习BIOS有关的知识;并熟练使用混合语言编程,了解底层是如何运用软件进行控制硬件的,提高自己的编程水平。 【关键词】:BIOS;混合语言编程;C语言;工具 前言 基于C语言的BIOS工具设计与实现,是指以C语言为主要编程语言编写一个可以进行查看和修改BIOS相关参数的工具,它能穿过DOS访问BIOS或者直接同硬件交往。 实现BIOS工具的最佳语言是汇编语言,这里是就时空效率讲的。虽然汇编语言编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。C语言编写程序结构清晰,移植性好,能够结构化编程,容易维护和修改。而高级语言时空效率太差,几乎无缘系统及以下程序的设计。 把C语言称为中级语言更为确切一些,因为它既有高级语言丰富的控制结构和简洁的表达能力,又有类似汇编语言的数据类型,所以是基于C语言的BIOS工具设计与实现的最佳选择。但是,并不是说用C就一定能较好地完成开发任务,因为它毕竟具备高级语音的特征,整个开发环境是建立在DOS之上的。更关键的是C语言屏蔽了程序员对机器的直接控制,程序员只是面向C语言编译器,由编译连接器把程序员的请求分配给DOS实现。这对于DOS之上的应用开发来说是合理的、正确的,但对DOS或BIOS层次上的系统程序义说别是障碍,所以还得借助于汇编语言。 随着IBM在80年代初推出了第一台个人计算机开始,直到今天为止,个人计算机硬件平台已经发生了翻天覆地的变化,相关的系统软件如操作系统等也从最早的MS DOS1.0到今天的Windows 7,而作为整个系统最底层也是最为关键的系统软件之一的BIOS却基本上保持了架构二十年不变。这在整个软件史上都是一件不可思议的事情。如今,BIOS已经变成了严重阻碍IT产业前进的绊脚石,下面则对BIOS做一些简单介绍,并编写一款基于C语言的BIOS工具。 第1章 理论概述 第1.1节 课题意义 通过对bios的相关了解,及相关技术资料的学习,运用汇编语言和C语言进行混合编程进行BIOS的读写,能熟练运用C语言进行界面的设计,把平时在学校所学的编程结合实际进行运用,对于平时和BIOS打交道的人来说给他们提供了一个查看和修改BIOS数据的工具,为BIOS的开发提供了支持。 通过此工具可以实现如下功能: IO 实现从 0000h -FFFFh 范围的访问与读写。 ISA 实现从 Index port:0000h - FFFFh, Data Port:0000h -FFFFh 范围内的访问与读写。 CMOS: 是更改 BIOS 设置的有力工具。 Memory :0 -1M的real Mode 的全读写,并能查找相应字符串。 PCI Bus Scan:智能的 PCI 总线的扫面功能, 能扫描出当前系统中的所有 PCI 设备。 第1.2节 编程工具选择及简介 |