.
;设置完成
;设置中断向量表INT3
MOV DX,OFFSET INT3 MOV AX,250BH
INT 21H ;系统调用25号设置中断功能,中断号0BH ;设置完成
IN AL,21H
AND AL,0F3H ;1111 0011 OUT 21H,AL ;写OCW1,开放2,3号端口 IN AL,0A1H
AND AL,0FBH ; 1111 1011 OUT 0A1H,AL ; 写OCW1,开放10号端口 MOV CX,10 STI WAIT:
JMP WAIT ;CPU等待中断 ;INT10代码
INT10: CLI ;关中断
PUSHAD
PUSHFD ;将各种寄存器的值入栈,保存现场 MOV CX,10 ;给CX赋值,循环10次
NEXT10_1:
MOV DX,31H MOV AH,02H
INT 21H ;系统调用02功能,DL为显示内容ASCII31H :1 MOV DX,30H
MOV AH,02H ;系统调用02功能,DL为显示内容ASCII31H :0 INT 21H
MOV DX,20H ;系统调用02功能,DL为显示内容ASCII20H :<空格> MOV AH,02H
.
.
INT 21H
CALL DELAY1 ;调用 DELAY1 子程序
LOOP NEXT10_1 ;在CX>0之前跳转,并使CX=CX-1 ;换行操作
MOV DX,0DH ;系统调用02功能,DL为显示内容ASCII0DH :<归位键> MOV AH,02H INT 21H
MOV DX,0AH ;系统调用02功能,DL为显示内容ASCII0AH :<换行> MOV AH,02H INT 21H
MOV AL,20H OUT 0A0H,AL
OUT 20H,AL ;发送OCW2结束到主片(偶地址为20H)和从片(偶地址
为A0H)
POPFD
POPAD ;将之前入栈的恢复,恢复现场 STI ;开中断 IRET ;中断返回 ;INT3代码
INT3: CLI ;关中断
PUSHAD ;将各种寄存器的值入栈,保存现场 PUSHFD
MOV CX,10 ;给CX赋值,循环10次
NEXT3_1: MOV DX,33H ;系统调用02功能,DL为显示内容ASCII33H :3
MOV AH,02H INT 21H
MOV DX,20H ;系统调用02功能,DL为显示内容ASCII20H :<空格>
.
.
MOV AH,02H INT 21H
CALL DELAY1 ;调用 DELAY1 子程序
LOOP NEXT3_1 ;在CX>0之前跳转,并使CX=CX-1 ;换行操作
MOV DX,0DH ;系统调用02功能,DL为显示内容ASCII0DH :<归位键> MOV AH,02H INT 21H
MOV DX,0AH ;系统调用02功能,DL为显示内容ASCII0AH :<换行> MOV AH,02H INT 21H
MOV AL,20H
OUT 0A0H,AL
OUT 20H,AL ;发送OCW2结束到主片(偶地址为20H)和从片(偶地
址为A0H)
POPFD
POPAD ;将之前入栈的恢复,恢复现场 STI ;开中断 IRET ;中断返回
DELAY1 PROC
PUSHAD ;将各种寄存器的值入栈,保存现场 PUSHFD
MOV CX,0FH ;给CX赋值,循环15次 DELAY_LOOP1:
MOV BX,0FFFFH ;BX给成FFFFH,每次减一到0跳出循环以此来达到延
时的效果
.
.
DELAY_LOOP2:
DEC BX NOP
JNZ DELAY_LOOP2 LOOP DELAY_LOOP1 POPFD
POPAD ;恢复现场 RET
DELAY1 ENDP
CODE ENDS
END START
实验 1-3 (1)实验内容
扩展多中断源查询方式应用实验。利用实验平台上 8259 控制器作为中断 扩展源,编写程序对 8259 控制器的中断请求进行处理。
(2)主要步骤
接线图:
说明:接线图如图 1-5 所示,以逻辑电平开关模拟单次脉冲,开关置高电平,代表一次脉冲,8259 模块相应管脚分别与系统总线、I/O 地址单元和+5V 相连。
参考流程图:
.
相关推荐: