北邮微原作业中断实验与编程.docxVIP

  • 5
  • 0
  • 约6.06千字
  • 约 12页
  • 2019-09-27 发布于广东
  • 举报
微原第二次软件实验 、实验要求 编写一程序,在显示器上显示时、分、秒。具体要求如下: 1) 借用计数器8253的Timer()作为中断源,通过8259A向CPU发中断,何10ms产牛. 一次中断; 2) 在屮断服务程序屮管理刷新时、分、秒; 3) 输入文件名后清屏显示:Current time is : XX:XX:XX (时、分、秒键盘输入); 4) 当键入CTRL+C时,停止计时,返四系统,且系统正常运行不死机。 二、 设计思路 1) 数据段定义四个字符串,分别用于显示程序功能、提示用户输入,显示当前时间以 及错误格式输入提示。同时定义六个变量用于存储当前显示的的时、分、秒的十位 及个位,一个变量countlOO用以中断计数; 2) 在BIOS功能调用中,令AH=6,设置窗口左上角、右下角行列位置使当前页上滚, 从而实现程序一开始的清屏功能; 3) 提示用户输入起始时间时,需要对输入格式进行判断,严格要求输入在00:00:00 至23:59:59,正确输入时则存入相应的变最屮,输入任意键开始计时,错谋时则屏 幕显示输入错误,提示用户重新进行输入,若输入为“CTRL+C〃时退出程序; 4) 利用8253作为中断源,输入控制字36H,时间常数为11932,使其选用通道0计 数,产生频率100Hz的方波,即中断100次吋间间隔为Is,吋间刷新显示; 5) 8253小断源每屮断一次,进入timer中断子程序,将其段基地址及段内偏移量存入 中断向量表,利用8259向CPU发出中断; 6) timer子程序会对屮断次数进行判断,每屮断满100次时根据当前时间进行相应的 时、分、秒修改,若不满100次时直接退出中断; 7) 屏幕显示时将时、分、秒的十位和个位分别送人al中,在BIOS功能调用中令ah=14h, 实现将al中的字符写到光标位置,并将光标进一,8次循环直到时钟完全显示,同 时比对second,中断满100次时,即时间间隔Is时second变化,当检测到这一变 化时重新进入disp刷新显示; 8) 在每秒变化需要刷新显示时,都先进行键盘输入判断,当有输入口输入为ctrl+c〃 时,退出程序。 三、 程序流程 1)主要程序流程图 2)中断程序流程图 !1! 源代码 data segment count100 dblOO hourdbO J : hour dbO J : tenmin dbO minute dbO# 1:1 tensec dbO second dbO si db1 (00:00:00?23 tenhour dbO :59:59 nCtrl+Cn to exit key to start)$ s4 db1 Starting time is:$ 1 s2 db1(HCtrl+CH to exit)Current time is:$ s3 db Error! f 0dh# 0ahf $ data ends stack segment stack db256dup(0) stack ends ;回车换行宏立义 CRLF MACRO movahr 02h movdl# Odh int21h movdl,Oah int21h ENDM code segment assumeds:dataz cs:code,ss:stack star仁:movax,data movds z ax moves,ax moval,0 movch,0 move1.0 movdh,24 movdl.79 movbhf 7 ;清屏 ;整个窗口为空白 ;窗口左上角的行位置 ;窗口左上角的列位置 ;窗口右下角的行位置 ;窗口右下角的列位置 ;正常显示属性 movah, 6 ;当前显示页上滚功能调用号 intlOh begin: ;I/O中断调川 movdx z offset movahz 09h int21h S1 ;程序提示 CRLF movdx z offset movah,09h int21h S4 ;提示输入 movbp,0 movdi,offset movahz Olh int21h cmpal,03h jnz goonl movah,4ch ;分输入正确后加一,跳转为秒输入判断 tenhour ;读取第一位,不为ctrl+c则继续键入 int21h goonl: movbl ,0;第一位为 0 到2 cmpal/bl j1 tiaoban movblf 12 cmpal#bl jg tiaoban mov [di] , al ;存入匸enhour movbh,al incdi movahz Olh int21h cmpal,03h jnz goon2 ;读収第二位,不为ctrl+c则继续键入 movahz 4ch int21h goon2: cm

文档评论(0)

1亿VIP精品文档

相关文档