五子棋C语言怎么退出,C语言中断编程(C--五子棋实例).doc

C语言中断编程(C--五子棋实例).doc

C语言中断编程(C——五子棋实例)

中断是微处理器与外部设备进行信息交换的一种方式。使用中断,可以获得更高的执行速度和更好的交互效果(如游戏编程中对鼠标或键盘的调用来完成某些游戏功能)。本文档以简单“五子棋双人游戏”为案例,整个游戏过程用鼠标操作完成,很好的阐明中断在程序中简便操作和简单明了的交互作用。

图1、五子棋双人游戏屏幕截图(蓝棋胜)

BIOS(Basic Input Output System),中文是“基本输入输出系统”。它是全称是ROMBIOS,即只读存储器基本输入输出系统。实际上它是一组固化到计算机主板上的一个ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、系统设置信息、开机上电自检程序和系统启动自举程序。

BIOS的主要有以下3个作用:

1、自检及初始化程序

计算机电源接通后,系统有一个对内部各个设备进行检查的过程,由一个称为POST(Power On SelfTest,上电自检)的程序完成,这也是BIOS程序的一个功能。完整的自检包括对CPU、640KB的基本内存、1MB以上睥扩展内存、ROM、主板、CMOS存储器、串并口、显示卡、软硬盘子系统及键盘的测试。

2、硬件中断处理

计算机开机的时候,BIOS会通知CPU等硬件设备的中断号。操作时,当输入了使用某个硬件的命令后,它就会根据中断使用相应的硬件完成命令的工作,最后根据中断号跳回原来的状态。

3、程序服务请求

从BIOS的定义可以看出它总是和计算机的输入输出设备打交道,通过特定的数据端口发出指令,发送或接收各类外部设备的数据,从而实现软件应用程序对硬件的操作。

BIOS功能调用

C语言提供了一些BIOS功能调用函数,方便用户在自己的程序中进行BIOS调用有int86()函数、int86x()函数和geninterrupt()函数。

1. int86()函数

int int86(int intr_num,union REGS *inregs,union GEGS *outregs);第1个参数intr_num表示BIOS调用类型号;第2个参数表示指向联合类型REGS的指针,用于接收调用的功能号及其他一些指定的入口参数,以便传给相应的寄存器;第3个参数也是一个指向联合类型REGS的指针,用于接收功能调用后的返回值,即出口参数。

联合类型REGS在dos.h文件中定义:

struct WORDREGS {

unsigned int ax, bx, cx, dx, si, di, cflag, flags;

};

struct BYTEREGS {

unsigned char al, ah, bl, bh, cl, ch, dl, dh;

};

union REGS{

struct WORDREGS x;

struct BYTEREGS h;

};

2. int86x()函数

int int86x(int intno,union REGS *inregs,union REGS *outregs,struct SREGS *segregs);函数中前3个参数与int86()函数中的相同,第4个参数是一个结构SREGS类型的指针。该结构在dos.h头文件中定义:

struct SREGS {

unsigned int es;

unsigned int cs;

unsigned int ss;

unsigned int ds;

};

该结构是为了设置和保存段寄存器的值,在int86x()函数中,只用了SREGS结构中的ds和es,它对应于数据寄存器DS和附加寄存器ES。进行int86x()函数调用时,要设置两个寄存器为要改变的值。调用时,该函数自动将原来未改变的值保存,然后使用改变后的DS和ES的值,调用结束后,该函数又自动恢复原来的值。

3. geninterrupt()函数

int geninterrupt(int intr_num);参数intr_num表示功能调用的类型号。具体的功能号和入口参数则在调用该函数前通过Turbo C中伪寄存器_AH、_AL指定。

鼠标中断编程应用实例

DOS操作系统和Turbo C 2.0并不支持鼠标器的操作,因而要使用鼠标器,必须首先要安装相应的驱动程序,通常使用的方法是在CONFIG.SYS文件中加入一行信息:DEVIVE=MOUSE.SYS。使得在DOS启动时,将鼠标的驱动程序也装入内存,或者也可以直接运行mouse.orn文件,使它驻留在内存。

安装好鼠标的驱动程序并进行初始化后,就可以使用鼠标驱动程序管理鼠标的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值