怎樣用C語言編寫DOS下的中斷服務程式

時間 2021-09-08 03:20:01

1樓:匿名使用者

/keys.cpp

// 按鍵表索引發:

// 首先建立key_table作為按鍵表,然後根據按鍵掃描碼改變key_table中的狀態,

// 這樣key_table中所有對應的索引按鍵即為需要的組合鍵。

// 以下程式僅對上、下、左、右四個游標鍵做了組合按鍵的處理。

// 本程式在borland c++ 3.1 中除錯通過。

#include

#include

#include

#define esc 1

#define up 72

#define _up 200

#define down 80

#define _down 208

#define left 75

#define _left 203

#define right 77

#define _right 205

#define num_keys 4

#define index_up 0

#define index_down 1

#define index_left 2

#define index_right 3

#ifdef __cplusplus

#define __cppargs...

#else

#define __cppargs

#endif

char * key_table_name[num_keys]

= ;int key_scan_code; // 鍵盤掃描碼

int key_table[num_keys]; // 按鍵表

class interrupt

; void interrupt::begin_int(int int,void far interrupt(*new_int)(__cppargs))

void interrupt::end_int(void)

void far interrupt special_key(__cppargs) }

void init_key_table(void)

void main(void)

printf( "\n ");

key.end_int();

return;}

2樓:匿名使用者

dos中斷中斷屬於彙編層面的內容,可以用asm內聯實現:

在windows visual c++下用__asm關鍵字。

在gcc下用__asm__巨集即可。

示例(vc):

#include

int main()

這樣就可以在c裡面寫入彙編**了。

__asm 關鍵字用於呼叫內聯彙編程式,並且可在 c 或 c++ 語句合法時出現。 它不能單獨出現。 必須後跟彙編指令、一組在大括號中的命令、或者至少一對空大括號。

 術語 「__asm 塊」在此處指任何命令或命令組,不管是否在大括號內。

如果不與大括號一起使用,則 __asm 關鍵字表示此行的其餘部分是一條組合語言語句。 如果與大括號一起使用,則該關鍵字表示大括號之間的每一行都是一條組合語言語句。為了與早期版本相容,_asm 是 __asm 的同義詞。

由於 __asm 關鍵字是語句分隔符,因此您可以將程式集指令放在同一行中。

在 visual c++ 2005 之前,指令

__asm int 3

不會導致在使用 /clr 編譯時生成本機**;編譯器會將該指令轉換為 clr 中斷指令。

__asm int 3 現在將導致為函式生成本機**。 如果您希望函式導致****現斷點,還希望將函式編譯為 msil,請使用 __debugbreak。

請問用c語言編寫的時間中斷中,能否在中斷過程中實現資料的讀取?

3樓:

用sleep()嗎?

同時進行應該是不行的,可以再中斷之後馬上就讀入一個數。

void pause(int *p,const int time)

4樓:

turboc 時間中斷函式

#include

#include

#include

void install();/*安裝新的中斷向量,即將中斷服務程式安裝到中斷向量表中*/

void interrupt (*oldtimer)();/*指向未安裝前的中斷向量,即函式指標,指向一段可執行的***/

void interrupt newtimer();/*新的中斷服務程式*/

int n = 0;

int main()

void interrupt newtimer()/*新的中斷服務程式*/

void install (void interrupt (*paddr)())

5樓:東方劍聖

可以啊,我覺得用多執行緒,一個執行緒在sleep的時候,另一個執行緒讀數,然後第一個執行緒醒來繼續執行,如果你覺得可以這樣的話,具體的給你推薦一本書吧,linux程式設計,第3版

6樓:匿名使用者

無疑使用多執行緒啊,建立輔助執行緒,中斷時間讓輔助執行緒讀取資料,然後cpu時間片切換到主執行緒時主執行緒繼續執行

怎樣用dos命令修改的內容,怎樣用dos命令修改文件的內容

沐陽 1 在命令列視窗,我們直接輸入copy con命令就行了,命令後面的就是檔案的名稱。2 按回車後,我們就可以輸入文字內容了,如果你要新建檔案,不需要內容,就直接按ctrl z。3 輸入完後,直接按鍵盤上的ctrl z按鈕就行了,這一點非常重要。4 最後我們來到c盤,就可以看到剛才的檔案了。 豬...

用c語言怎樣編寫一句話,用C語言怎樣編寫一句話

小清新心萌萌噠 工具 原料 vc 6.0 電腦 方法 步驟 1 首先,開啟編譯器,新建檔案。出現的空白處是寫 的。2 輸入 include 這個為標頭檔案。3 第二行,輸入 main 加上一對 小括號 4 在main,下方,輸入一對大括號 5 在大括號裡輸入,printf hello,word n ...

用C語言編寫類似計算器的程式,用C語言編寫一個類似計算器的程式

藍秀楓 note your choice is c ide include stdio.h include stdlib.h include ctype.h int n 0 char record 20 float product float change float muli return sum...