2015-05-23 78 views
0

我需要輸出採用中斷Int 65一些字符串,但它給我的錯誤,我現在用的Turbo C++ 4.0的Windows 7的Windows 8 64位版本如何使用Int 65H輸出字符串?

#include<stdio.h> 
#include<fcntl.h> 
#include<io.h> 
#include<BIOS.H> 
#include<DOS.h> 

void interrupt (*oldint65)(); 
char st[80] = {"Hello World$"}; 
void interrupt newint65(void); 

void main() 
{ 
    oldint65 = getvect(0x65); 
    setvect(0x65, newint65); 
    geninterrupt (0x65); 
    geninterrupt (0x65); 
    geninterrupt (0x65); 
    setvect(0x65, oldint65); 
} 

void interrupt newint65() 
{ 
    _AH = 0x09; 
    _DX=(unsigned int)st; 
    geninterrupt (0x21); 
} 

我附上錯誤圖像,請幫助我哪裏做錯了

Error image

+1

複製並粘貼錯誤,而不是顯示一半的錯誤圖像的全文。 – indiv

+0

我該如何複製錯誤?我不知道 –

+0

有沒有一種方法可以使用更新的編譯器和Windows 7 API?如果中斷號在所有這些Windows版本中仍然有效,我真的很驚訝。 –

回答

2

函數定義不匹配/與申報衝突.. 檢查:

  • void interrupt (*oldint65)();
  • void interrupt *newint65(void);

一個名字中斷不能有兩個聲明..

變化程序應該如下:

聲明:

void interrupt(*newint65)(void); 

定義:

void interrupt(*newint65)() 
{ 
    _AH = 0x09; 
    _DX=(unsigned int)st; 
    geninterrupt (0x21); 
} 
+0

沒有工作請更新代碼 –

2

嘗試: 聲明:

void interrupt_newint65(void); 

定義:

void interrupt_newint65() 
{ 
_AH = 0x09; 
_DX=(unsigned int)st; 
geninterrupt (0x21); 
} 
+0

請查看剩餘代碼也給我錯誤爲什麼? –

+0

我想知道當前錯誤..請更新錯誤.. – user388229