资源描述:
《实验7 中断程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验七中断程序设计与I/O程序设计计科1093班伍林锋200911621323一、实验目的1. 学习中断的原理和设置中断向量,加深对中断处理程序的理解2、掌握dos和bios中断调用编写I/O程序。二、实验内容1、编写程序1:要求每隔5.5s在屏幕上显示提示符‘pleaseenter:’,然后从键盘读入一个字符并将这个字符的ASCII码送入内存输入缓冲区,共读入5个字符,然后将这5个字符在屏幕中央显示。源码:.modelsmall.stack.datacntdw100;计数次数mesdb5dup(0),'$';内存缓冲区strdb'pleasee
2、nter:$';提示字符串crlfdb0dh,0ah,'$';回车换行.codestart:movax,@datamovds,axmovsi,0;缓冲区指针moval,1chmovah,35hint21h;取原向量1chpushespushbx;保存原向量pushdsmovdx,offsetinputmovax,seginputmovds,axmoval,1chmovah,25hint21h;设置新向量1CH,对应中断处理程序inputpopdsinal,21h;读中断屏蔽寄存器pushaxandal,11111100bout21h,al;增加定
3、时器和键盘中断inal,20h;读中断命令寄存器pushaxmoval,11100000bout20h,al;使键盘中断的优先级高于定时器中断sti;开中断rotate:cmpsi,5jlrotatemovah,2movbh,0movdh,10movdl,30int10h;设置光标在屏幕中央movdx,offsetmesmovah,09int21h;显示内存缓冲区的字符串popaxout20h,al;恢复中断命令寄存器popaxout21h,al;恢复中断屏蔽寄存器popdxpopdsmoval,1chmovah,25hint21h;恢复原向量m
4、ovax,4c00hint21h;-------------中断处理程序inputprocnearpushdspushaxpushcxpushdx;保存寄存器movax,@datamovds,axsti;开中断,允许中断嵌套deccnt;递减计数jnzexitmovah,9leadx,strint21h;显示提示字符串movah,0int16h;等待键盘输入movmes[si],al;接收字符到缓冲区incsimovah,9leadx,crlfint21h;显示回车换行movcnt,100;重新进行计数exit:cli;关中断popdxpopcx
5、popaxpopds;恢复寄存器iretinputendpendstart答:使键盘中断的优先级高于定时器中断moval,11100000bout20h,al;使键盘中断的优先级高于定时器中断sti;开中断备注:所有的PC机都有一个计时芯片(8253/8254定时器),初始化后以每秒约18.2次发出脉冲。每次脉冲调用计时器中断(INT08H)。计数器以计数频率18.2Hz进行计数,1小时对应计数值为65520次,1分钟对应计数值为1092次,1秒对应计数值为18.2次(取18次)。即时间计数器每55ms自动加1,也即两个计数之间的时间间隔是55m
6、s,则要计时5.5s(5500ms),需要计数到100。关于INT08H的原理参见教材300页例8.52、编写程序2:实现时钟功能:要求循环调用dos中断读取系统时钟,并在屏幕中央10行30列的位置显示时钟格式“yyyy-mm-ddhh:mm:ss“,按下esc键则退出程序源码:.modelsmall.stack.datayydw?str1db5dup(0)str2db'-','-','',':',':'.codestart:movax,@datamovds,axmovsi,0movdi,0;初始化指针movah,2ahint21h;读系统日期m
7、ovyy,cx;保存年movstr1,dh;保存月movstr1+1,dl;保存日movah,2chint21h;读系统时间movstr1+2,ch;时movstr1+3,cl;分movstr1+4,dh;秒callstate;定位光标movbx,yycallbinidec;显示年movbp,5;循环次数s:calldisplay;显示格式符号calltime;依次显示显示月、日、时、分、秒decbpjnzsinal,60h;读键盘输入cmpal,01h;与esc键的扫描码比较jzexit;按下esc键退出程序jmpstart;循环读取exit:
8、movah,4chint21h;------------定位光标stateprocnearpushaxpushbxpushdxmovdh