DOS下的DJGPP環境如何勾連硬體中斷

2021-04-12 13:30:48 字數 1288 閱讀 4654

本文介紹了

djgpp

下如何安裝硬體

irq5

中斷。首先,宣告乙個中斷服務子函式:

//宣告中斷服務子函式,

isr

void fn(void)

然後開放中斷位、宣告資訊變數、掛接:

#define intr0x0d

/*irq5

中斷向量是

0x0d*/

unsigned char irq_bit;

unsigned char irq_bit_old;

irq_bit=irq_bit_old=inportb(0x21);

//讀入中斷的遮蔽位

,並儲存

outportb(0x21,(irq_bit & 0xdf));

//開放想要的中斷口——

irq5

_go32_dpmi_seginfonew_info;

//新的資訊變數

_go32_dpmi_seginfoold_info;

//新老兩個段資訊變數

new_info.pm_offset=(int)fn;

//掛接中斷服務子程式名

new_info.pm_selector=_go32_my_cs();

_go32_dpmi_get_protected_mode_interrupt_vector(intr,&old_info); //

儲存老的

//鎖定

_go32_dpmi_set_protected_mode_interrupt_vector(intr,&new_info); //

勾連現在可以使用硬體中斷了

………………..

最後,從程式退出時,恢復剛剛的設定:

outportb(0x21,irq_bit_old);

//恢復以前儲存的中斷遮蔽位

_go32_dpmi_set_protected_mode_interrupt_vector(intr,&old_info);

//還原

注意:1.中斷服務程式的最後必須使用

outportb(0x20,0x20); 2.

中斷服務程式、及其中涉及的變數應該鎖定在物理記憶體中,不要參與作業系統的虛擬記憶體交換,使用

djgpp

函式_go32_dpmi_lock_data( )

及_go32_dpmi_lock_code( )

。dos

系統下和

djgpp

配合使用最好的

allegro

已經完整的提供對兩個函式的封裝。

MySQL解決DOS環境下亂碼問題

在dos環境下進入mysql資料庫後,輸入 mysql show variables like char 回車後,會顯示下面這些引數的設定 character set client character set connection character set database character s...

如何實現ztree checxbox形 的勾選事件

1,在後台向前臺傳遞資料時,將資料打包成list hashmap 然後用jstl傳到前台,後台 如下 list list new arraylist hashmap treemap for ewtreevo vo unittreedata else list.add treemap response...

dos下at的應用

at計畫在指定時間和日期在計算機上執行命令和程式。at 命令只能在 計畫 服務執行時使用。如果在沒有引數的情況下使用,則 at 列出已計畫的命令。語法 at computername at computername hours minutes interactive command 引數 compu...