网站大量收购独家精品文档,联系QQ:2885784924

北邮微原作业中断实验与编程答题.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微原第二次软件实验 实验要求 编写一程序,在显示器上显示时、分、秒。具体要求如下: 借用计数器8253的Timer()作为中断源,通过8259A向CPU发中断,每10ms产生一次中断; 在中断服务程序中管理刷新时、分、秒; 输入文件名后清屏显示:Current time is : XX:XX:XX(时、分、秒键盘输入); 当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。 设计思路 数据段定义四个字符串,分别用于显示程序功能、提示用户输入,显示当前时间以及错误格式输入提示。同时定义六个变量用于存储当前显示的的时、分、秒的十位及个位,一个变量count100用以中断计数; 在BIOS功能调用中,令AH=6,设置窗口左上角、右下角行列位置使当前页上滚,从而实现程序一开始的清屏功能; 提示用户输入起始时间时,需要对输入格式进行判断,严格要求输入在00:00:00至23:59:59,正确输入时则存入相应的变量中,输入任意键开始计时,错误时则屏幕显示输入错误,提示用户重新进行输入,若输入为“CTRL+C”时退出程序; 利用8253作为中断源,输入控制字36H,时间常数为11932,使其选用通道0计数,产生频率100Hz的方波,即中断100次时间间隔为1s,时间刷新显示; 8253中断源每中断一次,进入timer中断子程序,将其段基地址及段内偏移量存入中断向量表,利用8259向CPU发出中断; timer子程序会对中断次数进行判断,每中断满100次时根据当前时间进行相应的时、分、秒修改,若不满100次时直接退出中断; 屏幕显示时将时、分、秒的十位和个位分别送人al中,在BIOS功能调用中令ah=14h,实现将al中的字符写到光标位置,并将光标进一,8次循环直到时钟完全显示,同时比对second,中断满100次时,即时间间隔1s时second变化,当检测到这一变化时重新进入disp刷新显示; 在每秒变化需要刷新显示时,都先进行键盘输入判断,当有输入且输入为“ctrl+c”时,退出程序。 程序流程 主要程序流程图 中断程序流程图 源代码 data segment count100 db 100 tenhour db 0 hour db 0,: tenmin db 0 minute db 0,: tensec db 0 second db 0 s1 db (00:00:00~23:59:59 Ctrl+C to exit key to start)$ s4 db Starting time is:$ s2 db (Ctrl+C to exit)Current time is:$ s3 db Error!,0dh,0ah,$ data ends stack segment stack db 256 dup(0) stack ends ;回车换行宏定义 CRLF MACRO mov ah,02h mov dl,0dh int 21h mov dl,0ah int 21h ENDM code segment assume ds:data,cs:code,ss:stack start:mov ax,data mov ds,ax mov es,ax ;清屏 mov al,0 ;整个窗口为空白 mov ch,0 ;窗口左上角的行位置 mov cl,0 ;窗口左上角的列位置 mov dh,24 ;窗口右下角的行位置 mov dl,79 ;窗口右下角的列位置 mov bh,7 ;正常显示属性 mov ah,6 ;当前显示页上滚功能调用号 int 10h ;I/O中断调用 begin: mov dx,offset s1 mov ah,09h ;程序提示 int 21h CRLF mov dx,offset s4 mov ah,09h ;提示输入 int 21h mov bp,0 ;分输入正确后加一,跳转为秒输入判断 mov di,offset tenhour mov ah,01h int 21h cmp al,03h jnz goon1 ;读取第一位,不为ctrl+c则继续键入 mov ah,4ch i

您可能关注的文档

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档