⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 汇编语言
💻 TXT
字号:
源程序:
;先执行PCI_BIOS.EXE,获得PCI板卡申请的第一个I/O空间的首地址及
;中断号,修改下面CPU访问PCI控制寄存器的端口地址。 
;由中断号确定相应中断向量及OCW1、OCW2命令字。
M8254COUNT0  EQU  9840H            ;修改端口地址
M8254COUNT1  EQU  9841H
M8254COUNT2  EQU  9842H
M8254MODE    EQU  9843H
INTBYTE0   EQU  9038H
INTBYTE1   EQU  9039H
INTBYTE2   EQU  903AH
INTBYTE3   EQU  903BH
IMBBYTE3   EQU  901FH

DATA SEGMENT
STRING DB '5 INTERRUPTS',0DH,0AH
LENSTR EQU $-STRING
CBAK  DW  ? 
IBAK  DW  ?
MBAK  DB  ?
DATA ENDS
CODE SEGMENT
        ASSUME CS:CODE,DS:DATA
START: CLI
       MOV     AX,DATA
       MOV     DS,AX
       MOV     DX,INTBYTE0
       MOV     AL,00H
       OUT     DX,AL
       MOV     DX,INTBYTE1
       MOV     AL,1FH
       OUT     DX,AL
       MOV     DX,INTBYTE2
       MOV     AL,3FH
       OUT     DX,AL
       MOV     DX,INTBYTE3
       MOV     AL,00H
       OUT     DX,AL  
       MOV     AL,73H    ;保存系统中断矢量
       MOV     AH,35H
       INT     21H
       PUSH    ES
       PUSH    BX
       PUSH    DS
       MOV     AX,SEG MINT  ;设置中断矢量
       MOV     DS,AX
       MOV     DX,OFFSET MINT
       MOV     AL,73H
       MOV     AH,25H
       INT     21H
       POP     DS
       IN      AL,0A1H
       MOV     MBAK,AL
       AND     AL,0F7H           ;打开中断屏蔽位,根据中断号修改
       OUT     0A1H,AL
       STI
       MOV    DX,M8254MODE       ;CLK=KK1
       MOV    AL,17H
       OUT    DX,AL             
       MOV    DX,M8254COUNT0
       MOV    AL,5
       OUT    DX,AL
L1:    NOP
       CALL   BREAK
       JMP    L1
MINT:  PUSH 	DS
       PUSH 	AX
       PUSH       DX
      ;清PCI板中断标志
       MOV 	DX,IMBBYTE3
       IN  	AL,DX
       MOV 	DX,INTBYTE2
       MOV 	AL,3FH
       OUT 	DX,AL
      ;清8259中断标志
       MOV      AL,62H             ;根据中断号修改
       OUT      20H,AL
       MOV      AL,63H
       OUT      0A0H,AL
       MOV      AX,DATA
       MOV      DS,AX
       CALL     SSTRING      
       POP      DX
       POP      AX                                          
       POP 	DS
       IRET
         
BREAK PROC NEAR 
       PUSH  DS
       MOV   AH,06H
       MOV   DL,0FFH
       INT   21H
       JE    RETURN
       POP   DS
       CLI
       MOV   AL,MBAK
       OUT   0A1H,AL
       POP   DX              ;恢复系统中断矢量
       POP   DS
       MOV   AL,73H
       MOV   AH,25H
       INT   21H
       MOV   DX,INTBYTE1
       MOV   AL,00H
       OUT   DX,AL
       STI
       MOV   AX,4C00H
       INT   21H
RETURN:POP   DS
       RET
BREAK ENDP

SSTRING	PROC	  NEAR          ;显示字符串
      MOV    SI,OFFSET STRING
      MOV    CX,LENSTR
L3:   MOV    AL,[SI]
      MOV    AH,0EH
      INT    10H
      INC    SI
      LOOP   L3
	    RET
SSTRING  ENDP
CODE ENDS
     END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -