이 프로그램을 실행하려고합니다. 그것은 인터럽트를 사용하고 우리가 w를 누르면 , 그것은 키보드 버퍼getvect 함수가 정의되지 않았습니다.
#include "stdafx.h"
#include "stdio.h"
#include "bios.h"
#include <dos.h>
void interrupt_oldint15(*oldint15);
void interrupt_newint15(unsigned int BP, unsigned int DI, unsigned int SI, unsigned int DS,
unsigned int ES, unsigned int DX, unsigned int CX, unsigned int BX,
unsigned int AX, unsigned int IP, unsigned int CS, unsigned int flags);
void main ()
{
oldint15 = getvect (0x15);
setvect (0x15, newint15);
keep (0, 1000);
}
void interrupt_newint15 (unsigned int BP, unsigned int DI, unsigned int SI, unsigned int DS, unsigned int ES, unsigned int DX, unsigned int CX, unsigned int BX, unsigned int AX, unsigned int IP, unsigned int CS, unsigned int flags)
{
if(*((char*)&AX)==0x11)
*((char*)&AX)=0x1F;
else if(*((char*)&AX)==0x1F)
*((char*)&AX)=0x11;
}
에의하여 대체하지만 getvect 및 setvect 기능에 오류가 있습니다.
은 다음과 같습니다
는 사용의 예 (에 '@'초마다 인쇄)인가? 이들은 Turbo/Borland C에서만 사용할 수있는 비표준 C 함수 인 것으로 보입니다. – uesp"dos.h"를 사용했습니다. 그 일을하지 않겠습니까? – user3297557
어떤 컴파일러를 사용하고 있습니까?컴파일러 문서 또는 헤더 파일에 해당 함수가 포함되어 있는지 직접 확인해야합니다. – uesp