怎樣用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時間片切換到主執行緒時主執行緒繼續執行

如何用C語言編寫圖形遊戲,怎樣用C語言編寫乙個小遊戲?

那樣太麻煩 還是學 flash把 怎樣用c語言編寫乙個小遊戲?請問如何用c語言做乙個圖形介面呢?比如乙個迷宮遊戲的介面 不過你得知道怎麼建工程,不然就得在命令列編譯 鏈結 還是用qt或者mfc,c語言桑不起!用windows gdi 繪圖 要先看下有關方面資料 要不用陣列也行 如何使用c語言編寫簡單...

怎樣用c語言根據題目編寫程式

功能 數字轉換為二進位制字串 函式名稱 numtobinarystr 輸入引數 1 nrawdata 要轉換的數,如255 或 0xff 2 nnumofbits 轉換的位數。3 szdestbuf 轉換到的目的儲存區。返回值 1 true ok 2 false szdestbuf為null int...

C語言學生管理系統,怎樣用c語言編寫學生管理系統?

s k 既然是字串 那就不要用 改為scanf c k s stu n num 改為 scanf d stu n num s stu n name 改為 scanf s stu n name s stu n subject1 改為 s m 和上面那個一樣要麼改成 scanf c m 要麼把m和k都改...