- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 江苏省南京市南化二中2015-2016学年九年级上物理欧姆定律单元测(含)教材.doc
- 模板支撑方案教材.doc
- 电子邮件地址的组成概览.pptx
- 模板专项施工方案左邻右里教材.doc
- 江苏省南京市秦淮区2015年中考二模数学(含)教材.doc
- 北京市顺义区2014年中考理二模及答题.doc
- 店铺运营管理规范差异概览.pptx
- 钓鱼的启示概览.pptx
- 北京市政府采购会议定点供应商申请加入供应商信息库资质要求答题.doc
- 北京市住宅专项维修资金使用审核标准答题.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)