示和处理。使得程序具有很好的完备性和健壮性。
五、实验总结
此次实验是在前几次实验的基础上完成的,综合了子程序设计、DOS调用、宏汇编等等编程方法和技术。具有很强的综合性。程序的设计按照小型程序的要求,充分考虑了健壮性和运行效率等因素,精心设计了数据结构和算法。是可用于实际工程的代码雏形。由于完备性、健壮性、效率、界面等方方面面都考虑到,故代码长度达到了461行。这也使得调试花费了大量时间。综合实验对我的汇编编程能力的提升大有帮助。从四次实验的整个过程来看,我的进步是十分明显的。这也是令我十分欣喜的事情。第40页
f微机原理软件实验报告
实验五中断程序设计实验五中断程序设计
一、实验目的
1初步掌握中断程序的设计方法;2初步掌握修改DOS系统中断,以适应实际使用的方法。
二、实验内容
1编写一个32位二进制数除以16位二进制数的除法程序。观察当除数为0,或超过相应寄存器范围时,程序执行的结果。2修改零号中断服务程序,使它具有以下功能:1判断除数是否为0,当除数为0时,显示相应的结果;2当除数不为0时,采用适当的方法完成商超过16位的二进制数的除法运算。3注意必须保护原有中断服务程序的入口地址,并在程序完毕前加以恢复。4选作题:1用二进制将结果在屏幕上显示。2从键盘输入二进制数。
三、预习思考
1如何保护原有中断向量表中的中断服务程序的入口地址?答:先读取中断向量表中0号中断的地址,压入堆栈,程序结束时弹出堆栈,写回中断向量表即可。2如何将你的中断服务程序入口地址置入中断向量表?答:有两种基本方法:一是直接写入法,使用指令将中断服务程序入口地址的IP写入
×4的RAM位置,中断服务程序入口的CS写入
×42的位置;二是DOS功能调用,25H用来写中断向量表,35H读中断向量表。
第41页
f微机原理软件实验报告
四、实验过程
一流程图一流程图
第42页
f微机原理软件实验报告二源代码二源代码
DATASEGMENTXXYYDD被除数32bitDW除数16bit
TMPDWFLAGDB0是否调用了中断处理程序的标志位,即是否溢出一些提示信息ERR0DBERRORDividebyZEROTIP1DBQuotie
t
TIP2DBRemai
derTIP3DBI
puthigh16bitofdivide
dTIP4DBI
putlow16bitofdivide
dTIP5DBI
put16bitdivisorCRDB0DH0AH回车换行ONEDB1ZERDB0TABDB09HBUFFDB17输入缓冲区,可容纳包括回车在内的17个字符PRESDB0CHARDB17DUP0DATAENDSr