📄 8250'.htm
字号:
;保存在双字变量中 <BR> MOV INT-SEG,BX <BR>
CLI ;修改中断向量前关中断 <BR> MOV AL,0CH
;指定中断号 <BR> MOV AH,25H ;修改中断0CH向量
<BR> MOV DX,SEG INSEV ;DS:DX指向新中断向量 <BR>
MOV DS,DX ;DS指向新段址 <BR> MOV
DX,OFFSET INTSEV ;DX指向偏移量 <BR> INT 21H<BR>
MOV AX ,DATA ;恢复数据段寻址 <BR> MOV DS,AX
<BR> ;8250重新初始化 <BR> MOV DX,3FBH
;LCR口地址 <BR> MOV AL, 80H
;DLAB位置1,允许访问DLR <BR> OUT DX,AL <BR>
MOV DX,3F8H ;DLL口地址 <BR> MOV AL,
0CH ;送除数低字节 <BR> OUT DX,AL <BR>
MOV DX,3F9H ;DLH口地址 <BR> MOV AL 00H
;送除数高字节 <BR> OUT DX ,AL <BR>
MOV DX ,3FBH ;LCR 口地址 <BR> MOV AL,
0BH ;通信数据格式 <BR> OUT DX,AL <BR>
MOV DX,3FCH ;MCR口地址 <BR> MOV AL,
08H ;OUT2位置"1",打开COM1中断 <BR> OUT DX,AL <BR>
MOV DX ,3F9H ;IER口地址 <BR> MOV
AL ,03H ;允许收/发中断 <BR> OUT DX,AL <BR>
IN AL, 21H ;开放IRQ4中断请求 <BR> AND
AL,0EFH <BR> OUT 21H,AL ;
8259A(OCW1)开放<BR> MOV CX,RV-BYTE ;取字节数<BR>
L: STI ;开中断 <BR>
HLT ;等待中断<BR> CLI ;关中断
<BR> DEC CX ;字节数减1 <BR>
CMP CX,0000H ;接收/发送完毕?<BR> JNZ L
;未完,继续;已完,恢复<BR> ;恢复中断向量<BR>
MOV AL,0CH ;指定中断号<BR> MOV AH,25H
;恢复中断0CH原向量<BR> MOV DX,INT-OFF
;DS:DX指向原向量 <BR> MOV BX,INT-SEG
;DX指向向量偏移量 <BR> MOV DS,BX ;DS指向向量段址
<BR> INT 21H <BR> IN
AL,21H ;8259A屏蔽IR0。 <BR> OR AL,10H
;中断请求<BR> OUT 21H,AL <BR>
STI <BR> MOV AX,4C00H ;终止退出<BR>
INT 21H ;返回DOS <BR> ;通信中断服务程序 <BR>
INTSEV PROC FAR <BR> PUSH AX
;寄存器进栈,保护现场 <BR> PUSH CX <BR>
PUSH DX <BR> PUSH SI <BR> PUSH DI
<BR> PUSH DS<BR> PUSH ES<BR>
STI ;开中断<BR> MOV DX,3FAH
;IIR口地址<BR> IN AL,DX ;查中断源 <BR>
CMP AL,02H ;是发送中断(THRE=1)? <BR>
JE SEND ;是,则转发送子程序入口 <BR> 接收子程序
;不是,为接收 <BR> REC: MOV DX,3F8H
;RBR口地址 <BR> IN AL,DX ;从RBR读入1个字节
<BR> MOV DX,RV-POINT <BR> MOV [DI],AL
;读入的字节送接收区 <BR> INC DI
;修改接收区的地址指针 <BR> INC DI ; <BR>
MOV RV-POINT,DI <BR> JMP RETURN<BR> ;发送子程
<BR> SEND: MOV SI,TR-POINT <BR> MOV DX,3F8H
;THR口地址 <BR> MOV AL,[SI] <BR>
OUT DX,AL ;发送1个字节 <BR> INC SI
;修改发送区地址指针 <BR> INC SI <BR>
MOV TR-POINT,SI <BR> ;返回 <BR> RETURN: CLI<BR>
POP ES <BR> POP DS <BR> POP DI <BR>
POP SI<BR> POP DX <BR>
POP CX <BR> POP AX <BR> MOV AL,20H
;向8259送EOI(不指定返回) <BR> OUT 20,AL
;OCw2口地址 <BR> IRET ;中断返回
<BR> INTSEV ENDP<BR> CODE ENDS<BR> END
START</FONT></P></DIV></TD></TR></TBODY></TABLE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -