🌴 2022.6.9 早八 实验四
实验四 子程序及中断实验
前言
🎬本文章是 【微机原理技术接口】 专栏的文章,主要是实验内容
🔗微机原理技术接口专栏 传送门
💻提示:本文的环境是emu8086仿真系统。
1.1 实验要求
熟悉emu8086仿真系统
-
实现子程序和中断服务子程序的设计
-
编写子程序设置40H中断为自定义中断服务子程序
-
编写中断服务子程序实现AX=AX+BX
-
编写主程序调用子程序和中断
1.2 理论分析
编写子程序设置40h为自定义中断服务子程序,修改中断向量表存放中断服务程序的偏移地址和段地址。之后通过INT 40H跳转中断服务程序计算AX+BX的值
1.3 汇编语言
💻提示:所有实验源码已在Github整理
;AX+BX
CALL P ;跳转P
MOV AX,1
MOV BX,2
INT 40H ;跳转中断服务程序
HLT ;JMP $
;子程序P 修改中断向量
P PROC NEAR
MOV AX,0
MOV ES,AX ;段地址
MOV DI,40H*4 ;偏移地址
MOV AX,OFFSET INT40H
MOV ES:[DI],AX
MOV AX,CS
MOV ES:[DI+2],AX
RET
P ENDP
;中断服务子程序
INT40H PROC FAR
ADD AX,BX
IRET
INT40H ENDP
1.4 实验结果
AX=01,BX=02。执行ADD后,AX=3
思考内容:
-
中断向量表结构优缺点
硬件电路实现中断优先权排队的优点是中断响应快,使用灵活。每个中断源都有自己的中断服务子程序,不会相互影响,增加或者减少中断源都很方便。
缺点是接口电路比较复杂。特别是每个中断源需要有自己的标识,在8086CPU系统中这个标识称为中断类型号,还必须建立这个中断类型号和中断服务子程序的一一对应关系。
-
中断服务子程序调试方法
调用前,设置中断向量,将已经编写好的中断服务程序的入口地址写入中断向量表中。利用DOS功能调用