北邮微机原理软件实验

北邮微机原理软件实验

ID:41776885

大小:53.48 KB

页数:9页

时间:2019-09-02

北邮微机原理软件实验_第1页
北邮微机原理软件实验_第2页
北邮微机原理软件实验_第3页
北邮微机原理软件实验_第4页
北邮微机原理软件实验_第5页
资源描述:

《北邮微机原理软件实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验五中断程序设计一、实验目的1.初步掌握中断程序的设计方法;2.初步掌握修改DOS系统中断,以适应实际使用的方法。二、实验内容1.编写一个32位二进制数除以16位二进制数的除法程序。观察当除数为0,或超过相应寄存器范围时,程序执行的结果。2.修改零号中断服务程序,使它具有以下功能:1)判断除数是否为0,当除数为0时,显示相应的结果;2)当除数不为0时,采用适当的方法完成商超过16位的二进制数的除法运算。3.注意必须保护原有中断服务程序的入口地址,并在程序完毕前加以恢复。4.选作题:1)用二进制将结果在屏幕上显示。2)从键盘输入二进制数。三、预习思考1.如何保护原有中断向量表中的中断服务程

2、序的入口地址?答:先读取中断向量表中0号中断的地址,压入堆栈,程序结束时弹出堆栈,写回中断向量表即可。2.如何将你的中断服务程序入口地址置入中断向量表?答:有两种基本方法:一是直接写入法,使用指令将中断服务程序入口地址的IP写入nX4的RAM位置,中断服务程序入口的CS写入nX4+2的位置;二是DOS功能调用,25H用來写屮断向量表,35H读屮断向量表。四、实验过程(―)流程图(二)源代码DATASEGMENTXXDD?;被除数32bitYYDW?;除数16bitTMPDW?FLAGDB0;是否调用了中断处理程序的标志位,即是否溢出;一些提示信息ERR0DB1ERROR!DividebyZ

3、ERO!1,1$1TIPIDB1Quotient:TIP2DB1Remainder:TIP3DB1Inputhigh16-bitofdividend:*z*$'TIP4DB1Inputlow16-bitofdividend:'z*$1TIP5DB1Input16-bitdivisor:1z1$1CRDBODH,OAHJ$T回车换行ONEDB»$'ZERDB*0',»$'TABDB09H,'$'BUFFDB17;输入缓冲区,可容纳包括回车在内的17个字符PRESDB0CHARDB17DUP(0)DATAENDS;定义堆栈STACKSEGMENTSTACK'STACK1DB100DUP(0)S

4、TACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,ES:CODE,SS:STACK;打印字符串的宏PRINTMACROPARAPUSHAXPUSHDXMOVAH,09HMOVDXZOFFSETPARAINT21HPOPDXPOPAXENDMf;主程序入口MAIN:MOVAX,DATAMOVDS,AXMOVAX,0MOVES,AX;保存原中断向量表MOVAX,WORDPTRES:[0000H]PUSHAXMOVAX,WORDPTRES:[0002H]PUSHAX;写入新的中断处理子程序地址MOVWORDPTRES:[0000H],OFFSETINTOMOVWO

5、RDPTRES:[0002H],SEGINTOCALLINPUT;获取输入MOVDX,WORDPTRXX;移入被除数高16位MOVAX,WORDPTRXX+2;移入被除数低16位MOVBXZYY;移入除数DIVBX;进行32位除法运算CMPFLAG,。;查看是否调用了中断处理程序,即可判断是否溢出JNEISOF;溢出跳转,到扩充除法的结果输出;否则直接输出没有溢出的正常除法结果PRINTTIPIMOVBX,AXCALLDISP2PRINTCRPRINTTIP2MOVBX,DXCALLDISP2JMPEOP;有溢出的时候需要输出32位商和16位余数ISOF:PRINTTIPIMOVBX,DX

6、CALLDISP2MOVBX,AXCALLDISP2PRINTCRPRINTTIP2MOVBX,CXCALLDISP2EOP:POPAX;程序结束出口;恢复中断向量表MOVWORDPTRES:[0002H],AXPOPAXMOVWORDPTRES:[0000H],AXMOVAX,4C00H;返回DOSINT21H;新的0号中断子程序INTO:POPSIADDSI,2;修改:LP的值,指向DIV后的指令PUSHSICMPBX,0;判断除数是否为0JEDIV0;为零则提示除数为0,然后返回DOSMOVFLAG,1;置标志为除数不为零溢出;进行扩展除法运算,分别用除数除以被除数高16位和低16位

7、;输出参数为DX:商高16位,AX:商低16位,CX:2.6位余数PUSHAXMOVAX,DXXORDX,DX;除前将DX清零DIVBX;高16位除法MOVCX,AX;保存商的髙16位POPAX;取出被除数低16位DIVBX;低16位除法XCHGCXZDX;同时保存余数和商的低16位JMPEXITDIV0:PRINTERR0;被零除错误打印MOVAXr4C00H;返回DOSINT21HEXIT:IRET;获取用户输入二进

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。