interrupt.h

来自「简单的虚拟机」· C头文件 代码 · 共 58 行

H
58
字号
#define handle_int(num) \{ \	switch(num) \	{ \		case 21: \			handle_int21(); \			break; \		case 20: \			handle_int20(); \		break; \	} \}void handle_int21(){	char* str1;	char str2[100]="\0";	char ch;	int n;	int max_strlen;	switch(*greg8_addr(4)) /* ah */	{		case 0x09:			str1=cpu.ram+(cpu.sreg.ds<<4)+cpu.greg.dx;			sscanf(str1,"%[^$]s",str2);			printf("%s",str2);			break;		case 0x4C:			hlt=true;			break;		case 0x0A:			max_strlen=cpu.ram[(cpu.sreg.ds<<4)+cpu.greg.dx];			str1=cpu.ram+(cpu.sreg.ds<<4)+cpu.greg.dx+2;			fgets(str2,max_strlen,stdin);			n=strlen(str2);			cpu.ram[(cpu.sreg.ds<<4)+cpu.greg.dx+1]=n;			str2[n]='\n';			str2[n+1]='\0';			strncpy(str1,str2,n>max_strlen?max_strlen:n);			break;		case 0x02:			printf("%c",*greg8_addr(2));			break;		case 0x01:			ch=getchar();			getchar();			*greg8_addr(0)=ch;			break;		default:			break;	}}void handle_int20(){		hlt=true;}

⌨️ 快捷键说明

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