资源描述:
《C语言中断编程(C--五子棋实例)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言中断编程(C——五子棋实例)中断是微处理器与外部设备进行信息交换的一种方式。使用中断,可以获得更高的执行速度和更好的交互效果(如游戏编程中对鼠标或键盘的调用来完成某些游戏功能)。本文档以简单“五子棋双人游戏”为案例,整个游戏过程用鼠标操作完成,很好的阐明中断在程序中简便操作和简单明了的交互作用。图1、五子棋双人游戏屏幕截图(蓝棋胜)BIOS(BasicInputOutputSystem),中文是“基本输入输出系统”。它是全称是ROMBIOS,即只读存储器基本输入输出系统。实际上它是一组固化到计算机主板上的一个ROM芯片上的程序,保存着计算机最重要的基本输入输
2、出的程序、系统设置信息、开机上电自检程序和系统启动自举程序。BIOS的主要有以下3个作用:1、自检及初始化程序计算机电源接通后,系统有一个对内部各个设备进行检查的过程,由一个称为POST(PowerOnSelfTest,上电自检)的程序完成,这也是BIOS程序的一个功能。完整的自检包括对CPU、640KB的基本内存、1MB以上睥扩展内存、ROM、主板、CMOS存储器、串并口、显示卡、软硬盘子系统及键盘的测试。2、硬件中断处理计算机开机的时候,BIOS会通知CPU等硬件设备的中断号。操作时,当输入了使用某个硬件的命令后,它就会根据中断使用相应的硬件完成命令的工作,最
3、后根据中断号跳回原来的状态。3、程序服务请求从BIOS的定义可以看出它总是和计算机的输入输出设备打交道,通过特定的数据端口发出指令,发送或接收各类外部设备的数据,从而实现软件应用程序对硬件的操作。BIOS功能调用C语言提供了一些BIOS功能调用函数,方便用户在自己的程序中进行BIOS调用有int86()函数、int86x()函数和geninterrupt()函数。1.int86()函数intint86(intintr_num,unionREGS*inregs,unionGEGS*outregs);第1个参数intr_num表示BIOS调用类型号;第2个参数表示指向
4、联合类型REGS的指针,用于接收调用的功能号及其他一些指定的入口参数,以便传给相应的寄存器;第3个参数也是一个指向联合类型REGS的指针,用于接收功能调用后的返回值,即出口参数。联合类型REGS在dos.h文件中定义:structWORDREGS{unsignedintax,bx,cx,dx,si,di,cflag,flags;};structBYTEREGS{unsignedcharal,ah,bl,bh,cl,ch,dl,dh;};unionREGS{structWORDREGSx;structBYTEREGSh;};2.int86x()函数intint86x
5、(intintno,unionREGS*inregs,unionREGS*outregs,structSREGS*segregs);函数中前3个参数与int86()函数中的相同,第4个参数是一个结构SREGS类型的指针。该结构在dos.h头文件中定义:structSREGS{unsignedintes;unsignedintcs;unsignedintss;unsignedintds;};该结构是为了设置和保存段寄存器的值,在int86x()函数中,只用了SREGS结构中的ds和es,它对应于数据寄存器DS和附加寄存器ES。进行int86x()函数调用时,要设置两
6、个寄存器为要改变的值。调用时,该函数自动将原来未改变的值保存,然后使用改变后的DS和ES的值,调用结束后,该函数又自动恢复原来的值。3.geninterrupt()函数intgeninterrupt(intintr_num);参数intr_num表示功能调用的类型号。具体的功能号和入口参数则在调用该函数前通过TurboC中伪寄存器_AH、_AL指定。鼠标中断编程应用实例DOS操作系统和TurboC2.0并不支持鼠标器的操作,因而要使用鼠标器,必须首先要安装相应的驱动程序,通常使用的方法是在CONFIG.SYS文件中加入一行信息:DEVIVE=MOUSE.SYS。使
7、得在DOS启动时,将鼠标的驱动程序也装入内存,或者也可以直接运行mouse.orn文件,使它驻留在内存。安装好鼠标的驱动程序并进行初始化后,就可以使用鼠标驱动程序管理鼠标的各种操作。鼠标驱动程序将INT33H中断作为鼠标的操作中断,这样每移动一下鼠标,或者按一下鼠标按钮,就将产生一次INT33H中断。鼠标驱动程序将按照中断时的入口参数,调用不同的功能处理程序,完成中断服务。对于Microsoft鼠标驱动程序,共提供了30多个功能调用,用户可以通过INT33H中断调用,选用不同的入口参数,实现相应的功能调用。INT33H中断调用功能号和对应功能功能号功能简介功能号功
8、能简介0鼠