⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8-10.c

📁 一本经典书籍--C程序员成长攻略的原代码
💻 C
字号:
#include"stdio.h"
#include"dos.h"
#include"time.h"

void interrupt (*oldint_1C)();
int i=0,key=65,count=0;
void LocateCur(int x,int y)
{
	_AH=2;  /*功能号为2*/
	_DH=x;  /*定位行号为x*/
	_DL=y;  /*定位列号为y*/
	_BH=0;  /*BH置0*/
	geninterrupt(0x10); /*产生10H号中断*/
}

void show(int key)    /*调用0x10号中断,显示ASCII码值key对应的字符*/
{
	_AH=14;             
	_AL=key;
	geninterrupt(0x10);
}

void interrupt newint_1C()  /*定义新的0x1C号中断函数*/
{
	count++;
	if(count==18)   /*如果产生了18次时钟中断,则认为间隔了1秒钟*/
	{
		count=0;
		if(i==0)    /*在程序刚开始运行时清屏*/
			clrscr();
		LocateCur(10,i);  /*定位光标*/
		show(key);        /*显示key所对应的字符*/
		if(key>=91)       /*如果key值等于91,表示当前显示字符为'Z'*/
		{/*如果已经显示到了字母'Z',则清屏后光标重新回到行首来显示字母'A'*/
			clrscr(); 
			key=65;       
			i=0;    
		}
		else
		{
			key++;
			i++;
		}
	}
	if(inportb(0x60)==0x39)       /*如果按下了"Space"键*/
		setvect(0x1c,oldint_1C);   /*则将原0x1C号中断向量值重新放回中断向量表*/
	(*oldint_1C)();               /*调用原0x1C号中断程序*/
}

main()
{
	oldint_1C=getvect(0x1C);   /*首先取得原来的0x1c号中断向量值*/
	setvect(0x1C,newint_1C);
	/*将指向用户定义的新中断函数的指针放入中断向量表的0x1C号中断处*/
	keep(0,255);           /*退出程序运行,返回DOS下,并使程序驻留在内存*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -