在DOS下统计8259所有硬件中断IRQ0-IRQ15的次数,需用C语言

在DOS下统计8259所有硬件中断IRQ0-IRQ15的次数,需用C语言。

那个什么,我好久没弄微形机了,不太会弄了。不过给你找到了相关的汇编代码。你看能不能找高人,给你翻译一下

-u100
106B:0100 E9FD07 JMP 0900 ;转移初始化部分
-u180 l 100
106B:0180 9C PUSHF ;挂接服务程序统计次数IRQ0
106B:0181 2E CS:
106B:0182 FF066001 INC WORD PTR [0160]
106B:0186 9D POPF
106B:0187 2E CS:
106B:0188 FF2E2001 JMP FAR [0120]
106B:018C 0000 ADD [BX+SI],AL
106B:018E 0000 ADD [BX+SI],AL
106B:0190 9C PUSHF ;挂接服务程序统计次数IRQ1
106B:0191 2E CS:
106B:0192 FF066201 INC WORD PTR [0162]
106B:0196 9D POPF
106B:0197 2E CS:
106B:0198 FF2E2401 JMP FAR [0124]
106B:019C 0000 ADD [BX+SI],AL
106B:019E 0000 ADD [BX+SI],AL
106B:01A0 9C PUSHF ;挂接服务程序统计次数IRQ2
106B:01A1 2E CS:
106B:01A2 FF066401 INC WORD PTR [0164]
106B:01A6 9D POPF
106B:01A7 2E CS:
106B:01A8 FF2E2801 JMP FAR [0128]
106B:01AC 0000 ADD [BX+SI],AL
106B:01AE 0000 ADD [BX+SI],AL
106B:01B0 9C PUSHF ;挂接服务程序统计次数IRQ3
106B:01B1 2E CS:
106B:01B2 FF066601 INC WORD PTR [0166]
106B:01B6 9D POPF
106B:01B7 2E CS:
106B:01B8 FF2E2C01 JMP FAR [012C]
106B:01BC 0000 ADD [BX+SI],AL
106B:01BE 0000 ADD [BX+SI],AL
106B:01C0 9C PUSHF ;挂接服务程序统计次数IRQ4
106B:01C1 2E CS:
106B:01C2 FF066801 INC WORD PTR [0168]
106B:01C6 9D POPF
106B:01C7 2E CS:
106B:01C8 FF2E3001 JMP FAR [0130]
106B:01CC 0000 ADD [BX+SI],AL
106B:01CE 0000 ADD [BX+SI],AL
106B:01D0 9C PUSHF ;挂接服务程序统计次数IRQ5
106B:01D1 2E CS:
106B:01D2 FF066A01 INC WORD PTR [016A]
106B:01D6 9D POPF
106B:01D7 2E CS:
106B:01D8 FF2E3401 JMP FAR [0134]
106B:01DC 0000 ADD [BX+SI],AL
106B:01DE 0000 ADD [BX+SI],AL
106B:01E0 9C PUSHF ;挂接服务程序统计次数IRQ6
106B:01E1 2E CS:
106B:01E2 FF066C01 INC WORD PTR [016C]
106B:01E6 9D POPF
106B:01E7 2E CS:
106B:01E8 FF2E3801 JMP FAR [0138]
106B:01EC 0000 ADD [BX+SI],AL
106B:01EE 0000 ADD [BX+SI],AL
106B:01F0 9C PUSHF ;挂接服务程序统计次数IRQ7
106B:01F1 2E CS:
106B:01F2 FF066E01 INC WORD PTR [016E]
106B:01F6 9D POPF
106B:01F7 2E CS:
106B:01F8 FF2E3C01 JMP FAR [013C]
106B:01FC 0000 ADD [BX+SI],AL
106B:01FE 0000 ADD [BX+SI],AL
106B:0200 9C PUSHF ;挂接服务程序统计次数IRQ8
106B:0201 2E CS:
106B:0202 FF067001 INC WORD PTR [0170]
106B:0206 9D POPF
106B:0207 2E CS:
106B:0208 FF2E4001 JMP FAR [0140]
106B:020C 0000 ADD [BX+SI],AL
106B:020E 0000 ADD [BX+SI],AL
106B:0210 9C PUSHF ;挂接服务程序统计次数IRQ9
106B:0211 2E CS:
106B:0212 FF067201 INC WORD PTR [0172]
106B:0216 9D POPF
106B:0217 2E CS:
106B:0218 FF2E4401 JMP FAR [0144]
106B:021C 0000 ADD [BX+SI],AL
106B:021E 0000 ADD [BX+SI],AL
106B:0220 9C PUSHF ;挂接服务程序统计次数IRQ10
106B:0221 2E CS:
106B:0222 FF067401 INC WORD PTR [0174]
106B:0226 9D POPF
106B:0227 2E CS:
106B:0228 FF2E4801 JMP FAR [0148]
106B:022C 0000 ADD [BX+SI],AL
106B:022E 0000 ADD [BX+SI],AL
106B:0230 9C PUSHF ;挂接服务程序统计次数IRQ11
106B:0231 2E CS:
106B:0232 FF067601 INC WORD PTR [0176]
106B:0236 9D POPF
106B:0237 2E CS:
106B:0238 FF2E4C01 JMP FAR [014C]
106B:023C 0000 ADD [BX+SI],AL
106B:023E 0000 ADD [BX+SI],AL
106B:0240 9C PUSHF ;挂接服务程序统计次数IRQ12
106B:0241 2E CS:
106B:0242 FF067801 INC WORD PTR [0178]
106B:0246 9D POPF
106B:0247 2E CS:
106B:0248 FF2E5001 JMP FAR [0150]
106B:024C 0000 ADD [BX+SI],AL
106B:024E 0000 ADD [BX+SI],AL
106B:0250 9C PUSHF ;挂接服务程序统计次数IRQ13
106B:0251 2E CS:
106B:0252 FF067A01 INC WORD PTR [017A]
106B:0256 9D POPF
106B:0257 2E CS:
106B:0258 FF2E5401 JMP FAR [0154]
106B:025C 0000 ADD [BX+SI],AL
106B:025E 0000 ADD [BX+SI],AL
106B:0260 9C PUSHF ;挂接服务程序统计次数IRQ14
106B:0261 2E CS:
106B:0262 FF067C01 INC WORD PTR [017C]
106B:0266 9D POPF
106B:0267 2E CS:
106B:0268 FF2E5801 JMP FAR [0158]
106B:026C 0000 ADD [BX+SI],AL
106B:026E 0000 ADD [BX+SI],AL
106B:0270 9C PUSHF ;挂接服务程序统计次数IRQ15
106B:0271 2E CS:
106B:0272 FF067E01 INC WORD PTR [017E]
106B:0276 9D POPF
106B:0277 2E CS:
106B:0278 FF2E5C01 JMP FAR [015C]
106B:027C 0000 ADD [BX+SI],AL
106B:027E 0000 ADD [BX+SI],AL
-u900l200
106B:0900 FA CLI
106B:0901 89C0 MOV AX,AX
106B:0903 31C0 XOR AX,AX
106B:0905 8ED8 MOV DS,AX
106B:0907 BE2000 MOV SI,0020
106B:090A BF2001 MOV DI,0120
106B:090D B91000 MOV CX,0010
106B:0910 F3 REPZ ;保存原来IRQ0--7的服务入口
106B:0911 A5 MOVSW
106B:0912 BEC001 MOV SI,01C0
106B:0915 B91000 MOV CX,0010
106B:0918 F3 REPZ ;保存原来IRQ8--15的服务入口
106B:0919 A5 MOVSW
106B:091A B0FF MOV AL,FF
106B:091C E621 OUT 21,AL
106B:091E E6A1 OUT A1,AL
106B:0920 0E PUSH CS
106B:0921 1F POP DS
106B:0922 31C0 XOR AX,AX
106B:0924 8EC0 MOV ES,AX
106B:0926 BF0002 MOV DI,0200 ;修改中断80H--87H
106B:0929 BB8001 MOV BX,0180
106B:092C B90800 MOV CX,0008
106B:092F 89D8 MOV AX,BX
106B:0931 AB STOSW ;修改IRQ0--7的服务入口
106B:0932 8CC8 MOV AX,CS
106B:0934 AB STOSW
106B:0935 83C310 ADD BX,+10
106B:0938 E2F5 LOOP 092F
106B:093A BF2002 MOV DI,0220 ;修改中断88H--8FH
106B:093D B90800 MOV CX,0008
106B:0940 89D8 MOV AX,BX
106B:0942 AB STOSW ;修改IRQ8--15的服务入口
106B:0943 8CC8 MOV AX,CS
106B:0945 AB STOSW
106B:0946 83C310 ADD BX,+10
106B:0949 E2F5 LOOP 0940
106B:094B B011 MOV AL,11 ;初始化8259A主从芯片
106B:094D E620 OUT 20,AL
106B:094F E6A0 OUT A0,AL
106B:0951 B080 MOV AL,80 ;修改IRQ0-7为中断80H--87H
106B:0953 E621 OUT 21,AL
106B:0955 B088 MOV AL,88 ;修改IRQ8-15为中断88H--8FH
106B:0957 E6A1 OUT A1,AL
106B:0959 B004 MOV AL,04
106B:095B E621 OUT 21,AL
106B:095D B002 MOV AL,02
106B:095F E6A1 OUT A1,AL
106B:0961 B001 MOV AL,01
106B:0963 E621 OUT 21,AL
106B:0965 E6A1 OUT A1,AL
106B:0967 B000 MOV AL,00
106B:0969 E621 OUT 21,AL ;打开所有的IRQ0--7
106B:096B E6A1 OUT A1,AL ;打开所有的IRQ8--15
106B:096D FB STI
106B:096E 0E PUSH CS
106B:096F 07 POP ES
106B:0970 B80031 MOV AX,3100
106B:0973 BA0001 MOV DX,0100
106B:0976 CD21 INT 21 ;驻留程序返回
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网