ImageVerifierCode 换一换
格式:DOC , 页数:25 ,大小:4.12MB ,
资源ID:10878463      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10878463.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机8253秒表课程设计报告.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

微机8253秒表课程设计报告.doc

1、秒表程序设计摘要:本课程设计旨在设计一个秒表计时并储存计时的程序,可控制秒表的计时开始及结束,实现秒表的准确计时,存储计时数据,翻阅计时数据,清除计时数据等功能。本程序是基于8086微机系统设计,在Masm for Windows软件下采用汇编语言编写,通过选择8253定时器0,工作方式3,输出周期为10ms的方波,产生稳定延时,调用各种中断完成程序各逻辑模块设计,通过键盘扫描得到输入的值,执行对应功能。每10ms计时一次,每60秒一次循环,存储数据设定为最多20组,可随时存入数据,操作自由度极高,经测试,60秒计时误差不超过1.2%,可实现准确计时及存储功能。关键字:秒表、显示计时、存储计时

2、 、汇编1 设计任务分析与方案选择本设计需实现秒表稳定计时,并显示,需要存储计时数据时可立即将当前计时数据存入缓冲区,暂停计时时立即结束并可复位或者继续计数或者查看存储数据,在查看数据时可前后翻阅存储数据,并可清除,当退出查看数据后可使秒表继续计数或复位。1.1 方案选择1.1.1 系统硬件设计选择本设计采用 8253 定时器 0,工作方式 3 获得周期为 10ms 的稳定计时单位,使用8086CPU 进行译码,当定时到 1s 的时候产生一个中断信号,在中断服务程序进行秒的计数,并送入相应的存储单元,8259 芯片提供中断,并用 8255 的 A 口接七段数码管的段选信号,B 口接七段数码管的

3、位选信号。1.1.2 系统软件设计选择在代码实现上,对于按键的输入上可以直接读取或是先扫描键盘再读取,本设计只存在各逻辑功能之间的转换,因此选择先扫描键盘再读取的方法,可提高代码的容错率及可操作性;使用宏定义及光标定位的方法,并配合各种中断设计界面图形及字体颜色,宏定义可以减少代码的重复度,且便于修改功能,可任意调用,通过定位光标可确定输出位置,可实现同一位置的动态输出;对于时间的扫描,可以选择直接读取系统当前的时间或是读取系统时钟的计时单位,前者的读取直接是 BCD 码非常便于输出显示,后者需要不停的读取计时单位读取次数非常多,而且结果不是 BCD 码,需要做判断转换输出,此设计采用读取系统

4、时钟的计时单位,虽然需要不停的读取计时单位读取次数非常多,而且结果不是 BCD 码,需要做判断转换输出,但是经过与实际情况比较,后者的计时更为准确,区分度更大。 2 详细设计2.1 理论分析与计算此设计需要实现单位为 1 秒的秒表稳定计时,8253 定时器 0 工作方式 3,外部提供一个时钟作为 CLK 信号,频率 f=1.1931816MHz,为得到周期为 10ms 的方波,应对8253 定时器设置计数初值为 1.19321010-3=11932。因此,8259A 每隔 10ms 向CPU 申请一次中断。可用 10 作为基本计时单位,此设计的毫秒每一个计时单位改变一次,要达到 1 秒的计时,

5、需要的计时单位为:1000ms/10=100,则计数满足 100 个计时单位时,即毫秒计时到 100 时,秒位加 1,完成 1 秒稳定计时。2.2 算法设计本设计的算法包括键盘检测及读取、秒表计时及输出,数据存储、数据操作、界面及提示词设计。2.2.1 键盘检测及读取使用 21H 中断的 0BH 中断检测是否有键盘按下,如果没有键盘按下则继续检测,如果有键盘按下使用 21H 中断的 08H 中断判断是否为所设定的值,如果不是,继续检测输入,如果是便按逻辑进行。2.2.2 秒表计时及输出使用 8253 定时器 0,工作方式 3 获得的周期为,10ms 的方波作为计时单位,调用1CH 中断,读取

6、1CH 原中断向量,并设置中断向量,取计时处理程序偏移地址及段地址,计时处理程序中毫秒加一直到 100ms,秒位便加一,毫秒清零,继续计时。定位光标,在光标位置输出计时,显示格式为 00:00:00,计时显示采用高位低位分开显示,将计时数值除以 10,得到商和余数,商作为高位,余数作为低位,当计时单位满 1 后,毫秒位加 1 毫秒,毫秒计时到 100,秒位加 1 并动态显示。 2.2.3 数据存储在数据段中定义一个大小为 40 字的全为 0 的缓冲区用于存储计时数值,在代码段中合适位置取缓冲区的偏移地址给寄存器,存储方式采用高位低位分开存储的方式,将秒数值除以 10,商存前一个字节,余数存后一

7、个字节,存完高位后寄存器指向下一个字节存低位,低位存完之后寄存器再指向下一字节,用于存储毫秒计时的高位。2.2.4 数据操作定义光标,取缓冲区的偏移地址给寄存器,在合适位置从第一次存储的数据开始显示,此时寄存器指向第一个字节,调用 21H 的 0BH 检测键盘输入,如有键盘输入,调用 21H 的 08H 检测键入值,当接收操作为查看下一个存储数据时,寄存器加 2,指向下一组数据的高位,并调用 21H 的 09H 中断显示当前数值,寄存器加一,调用 21H 的 09H中断显示当前所指数据;当接收操作为查看上一个存储数据时,寄存器减二,指向上一组数据的高位,并调用 21H 的 09H 中断显示当前

8、数值,寄存器加一,调用 21H 的 09H中断显示当前所指数据;当接收操作为清除当前数据时,将 0 存入当前寄存器所指字节及下一字节,并调用 21H 的 09H 中断显示当前数值:00:00;当接收操作为返回计时时,判断键入,跳转到相应操作。2.2.5 界面及提示词设计在数据段定义提示语句字符串,使用 10H 的 02H 中断定位光标,在代码段中相应位置取代码段的偏移地址,使用 21H 的 09H 中断显示字符串,使用宏定义,拥有两个参数,一个是光标位置,所在行数和列数,调用 10H 的 02H 中断置光标,调用 21H 的 09H显示字符,可实现在任意位置显示任意字符,用此宏定义绘制计时区及

9、记忆区图形,搭配 10H 的 06H 中断可在任一区域进行显示,为使各区域鲜明区分,改变 10H 的 06H中断中出口参数 BH 的值,设置各字符串为不同颜色,实现彩色输出,增强观赏性。2.3 硬件电路设计图 1,硬件电路设计在整个电子钟的设计中。我们使用8253 用于定时功能,由于8259 的中断只能是电平与电缘触发,所以我们选择电缘触发。由于我们选择一次写入计数初值后的能循环进行, 所以我们选择工作方式0 在每次的计数初值的N-1 是产生一个脉冲。在CLK0 引脚接入1.1932MHZ 的时钟周期, 而将计数初值写为11932, 继而在OUT0会在每1ms 产生脉冲, 在控制字的时候采用二

10、进制计数, 所以其控制字为00110110B, 所以8253 能产生准确的计时功能。8255A 芯片, 将8255A 的A,B 口均工作在工作方式0 1193MHZ的下,且为输出控制LED 的位选与片选,而C 口用于修改时间用,同样工作于方式0 低四位输出。所以其控制字为81H。8259A 芯片用于产生中断信号去自动修改秒针。所以只需将8259 的IR0 产生中断,其他未屏蔽,单片8259 ,上升沿中断,要写ICW4, 中断号为20H, 工作在8086方式。2.4 软件设计在软件实现上,对于按键的输入上采用 DOS 系统功能,通过功能号 0BH 对应功能扫描键盘判断是否有按键被按下,如果有则通

11、过功能号 08H 对应功能读取键盘缓冲区得到按键输入信息。1S 定时采用 8253 定时器 0,工作方式 3 获得 10ms 稳定计时单位,设置 1CH 中断向量,程序进行时,不断读取 1CH 中断服务程序是否计数到 1 个计时单位。计时储存采用高位低位分开存储到 DW 类型的缓冲区中方法,读取存储也采用高低位分别读取的方法。界面设计采用定义宏定义的方法,参数包括光标定位位置及需要输出的字符串,调用 INT10H 的 06H 中断设置每个区域的显示及字符串的颜色。软件代码流程图:图 2:设计流程图图 2 为设计流程图,程序运行时会等待输入,当输入为 S,便开始计时,开始计时时可输入 E 或者

12、R,输入 R,存储当前计时;输入 E,暂停计数,程序在此等待输入,当输入为 C,继续计数;当输入为 D,重新计数;当输入为 W,查看存储区所存储数据,存储区显示第一次存储的数据,等待输入,当输入为 N,查看下一组存储数据;当输入 U,查看上一组存储数据;当输入 D,清除当前组数据;当输入 B,返回计时区,等待输入。3 系统调试与效果分析运行效果图:图 3 为程序开始界面,按下 S 开始计时图 3:程序开始界面图 4 为程序开始计时界面,按下 R 存储当前计时,按下 E 暂停计时图 4:程序运行界面图 5 为存储区显示界面,按下 N,查询下一组存储数据,按下 U 查看上一组存储数据,按下 D 清

13、除当前组数据,按下 B 返回计时区重新等待操作。图 5:存储区显示界面图 6,为当前存储清零,按下 U,显示上一组,按下 N,显示下一组,按下 B,返回计时。图 6:清除当前存储区4 问题解决4.1 计时精度初版设计采用 1AH 的 00H 中断读取系统时钟进行直接计时判断,在程序开始的地方判断是否满足 18 个计时单位,满足则加 1 秒,此程序是在所有后面判断键盘输入、存储数据等操作之后才清零计时单位,重新计数判断,在循环设计中,由于每行指令的执行都会消耗一定的时间,这就造成了在执行其他代码时计时单位没有继续计数,使本来计时周期为 1 秒变为不止一秒,经测试,60 秒计时产生误差超过 25%

14、,完全达不到秒表计时标准 ,未解决计时单位计数与代码执行的同步问题,为解决此问题采用了更改中断向量 1CH 的办法,使用 8253 定时器 0,工作方式 3,设置计数初值为 11932,并在任意代码执行的同时读取计时单位计数数值,这就避免了其他代码执行时计数并不进行的问题,经测试,60 秒计时产生误差不超过 1.2%,达到秒表计时标准。4.2 各逻辑之间的相互跳转在对键入值进行判断后会有各逻辑之间的跳转,使用 JZ,JNZ 等条件转移指令时会出现错误,导致程序跳转到非理想位置,由于这个设计主要是各逻辑之间的跳转,因此我将各逻辑转移绘制成流程图,并标明所需的跳转转移指令,解决各逻辑之间错误转移的

15、问题。使用条件转移指令跳转时可能会发生跳转指令错误,是因为这些跳转指令的跳转范围是有限的,当跳转范围在 128B 之内时才能使用这些指令,超过了需要使用长跳转指令。4.3 对数据的存储数据存储的缓冲区的类型为 DW,有两个字节,在存储时采用的是高低位分开存储的方式,存储低位时使用的是 MOV DI+1,DL,这个指令可实现将 DL 中的值存入 DI+1这个字节,存下一组数据时只 INC DI 了一次,造成存储错误,后来经查阅资料发现即便执行了 MOV DI+1,DL,DI 实际指向的单位仍然是高位字节,因此在程序结束后应INC DI 四次才能指向下一组数据的高位。 参考文献1 黄玉清,刘双虎,

16、杨胜波,微机原理与接口技术,2015,8(2):170-187.附件清单程序:;-设置图形显示宏定义-DIS MACRO LOCAT,CODE PUSH DXPUSH BXPUSH AXMOV DX,LOCAT ;设置光标位置MOV BH,00MOV AH,02HINT 10HMOV DL,CODE ;输出字符串MOV AH,02HINT 21HPOP AXPOP BXPOP DXENDMDATA SEGMENTMS DB 0SEC DB 0MSEC DB 0MIN DB 0FLAG DB 0SFLAG DB 0INIE DW 0INIB DW 0MI DB 00:$MEM DW 40 DUP

17、(0)SPACE DB $NULINE DB 3 DUP(0),$WSTR DB “00:00:00“,$TIT DB *Curriculum Design* $OPERATION DB Operation:$ PROMPT1 DB 1.time zone:Input “S“ Start,“R“ Remember,“C“ Continue,“D“ diaplasis,“E“ Exit$PROMPT2 DB 2.memory zone:Input “N“ Next,“U“ Up,“D“ Delete,“B“ Back $ TIP1 DB Operating Time Zone $TIP2 DB

18、Operating Memory Zone $NAM DB -By CaiLiqiang $ DATA ENDSSTACK SEGMENTSTA DB 256 DUP(0)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MAIN PROC FAR;XOR AX,AXMOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV DI,OFFSET MEM CALL CLRTIP ;标题初始化函数;-标题 -MOV DH,00HMOV DL,15HMOV

19、BH,00HMOV AH,02HINT 10HMOV DX,OFFSET TITMOV AH,09HINT 21HCALL CLROPR ;提示初始化;-操作 -MOV DH,02HMOV DL,00HMOV BH,00HMOV AH,02HINT 10HMOV DX,OFFSET OPERATIONMOV AH,09HINT 21H;-操作区提示 -MOV DH,03HMOV DL,00HMOV BH,00HMOV AH,02HINT 10HMOV DX,OFFSET PROMPT1MOV AH,09HINT 21HMOV DH,04HMOV DL,00HMOV BH,00HMOV AH,0

20、2HINT 10HMOV DX,OFFSET PROMPT2MOV AH,09HINT 21H ;-计时 区- CALL CLRTIM ;计时区初始化MOV DH,06HMOV DL,05HMOV BH,00HMOV AH,02HINT 10HMOV DX,OFFSET TIP1MOV AH,09HINT 21H;-计时图 形-DIS 070EH,*DIS 070FH,*DIS 0710H,*DIS 0711H,*DIS 0814H,*DIS 0916H,*DIS 0A18H,*DIS 0B1AH,*DIS 0D1BH,*DIS 0E1BH,*DIS 101AH,*DIS 1118H,*DIS

21、 1216H,*DIS 1314H,*DIS 1411H,*DIS 1410H,*DIS 140FH,*DIS 140EH,*DIS 130BH,*DIS 1209H,*DIS 1107H,*DIS 1005H,*DIS 0E04H,*DIS 0D04H,*DIS 0B05H,*DIS 0A07H,*DIS 0909H,*DIS 080BH,*;-记忆 区-CALL CLRMEMMOV DH,06HMOV DL,2DHMOV BH,00HMOV AH,02HINT 10HMOV DX,OFFSET TIP1MOV AH,09HINT 21H ;-记忆 区图形-DIS 072EH,*DIS 07

22、31H,*DIS 0733H,*DIS 0735H,* DIS 0737H,*DIS 0739H,*DIS 073BH,*DIS 073EH,*DIS 093EH,*DIS 0B3EH,*DIS 0D3EH,*DIS 0F3EH,*DIS 113EH,*DIS 133EH,*DIS 143EH,*DIS 143BH,*DIS 1439H,*DIS 1437H,*DIS 1435H,*DIS 1433H,*DIS 1431H,*DIS 142EH,*DIS 132EH,*DIS 112EH,*DIS 0F2EH,*DIS 0D2EH,*DIS 0B2EH,*DIS 092EH,*DIS 072E

23、H,*;-名字 -CALL CLRNAMEMOV DH,16HMOV DL,3EHMOV BH,00HMOV AH,02HINT 10H MOV DX,OFFSET NAMMOV AH,09HINT 21HCALL LIGHTCALL SHOWALL ;计时 MAIN ENDP;子程序 ;-显示存储 数据程序- WATCH PROCMOV DI,OFFSET MEM ;把MEM的偏移地址送DIMOV DL,DI ;输出第一个保存数据ADD DL,48MOV AH,02HINT 21HADD DL,48MOV DL,DI+1 ;输出第一个保存数据MOV AH,02HINT 21HMOV DL,:

24、MOV AH,02HINT 21HMOV DL,DI+2 ;输出第一个保存数据ADD DL,48MOV AH,02HINT 21HADD DL,48MOV DL,DI+3 ;输出第一个保存数据MOV AH,02HINT 21H X: MOV AH,0BH ;利用INT21H/0BH功能号,检测是否有键盘按下INT 21H CMP AL,00HJZ X ;没有键入,转XMOV AH,08H ;有键入,调用INT21H/08H,检测键入值INT 21HJMP X5 X0: CMP AL,n ;n判断是否查看下一个数据JZ X1 ;是,执行X1,查看下一个数据JMP X2 ;否,执行X2 X1: ;

25、查看第一个数据INC DIINC DIINC DIINC DI CALL DISMEMMOV DL,DIADD DL,48MOV AH,02HINT 21HMOV DL,DI+1MOV AH,02HINT 21H MOV DL,:MOV AH,02HINT 21HMOV DL,DI+2 ;输出第一个保存数据ADD DL,48MOV AH,02HINT 21HADD DL,48MOV DL,DI+3 ;输出第一个保存数据MOV AH,02HINT 21H MOV AH,08H ;有键入,调用INT21H/08H,检测键入值INT 21HCMP AL,d ;d判断是否清除JZ X4 ;清除JMP

26、X5 ;不清除继续检测X2:CMP AL,u ;u检测是否查看上一个数据 JZ X3 ;是,查看上一个数据JMP X5 ;否,继续检测X3: ;查看上一个数据DEC DIDEC DIDEC DIDEC DICALL DISMEMMOV DL,DIADD DL,48MOV AH,02HINT 21HMOV DL,DI+1MOV AH,02HINT 21HMOV DL,:MOV AH,02HINT 21HMOV DL,DI+2 ;输出第一个保存数据ADD DL,48MOV AH,02HINT 21HADD DL,48MOV DL,DI+3 ;输出第一个保存数据MOV AH,02HINT 21HMO

27、V AH,08H ;有键入,调用INT21H/08H,检测键入值INT 21HCMP AL,d ;d否清除JZ X4JMP X5X4:CALL DISMEMMOV DL,00H ;清除当前数据, 00MOV DI,DLADD DL,48MOV AH,02HINT 21HMOV DI+1,DLMOV AH,02HINT 21HMOV DL,:MOV AH,02HINT 21HMOV DL,00H ;清除当前数据, 00MOV DI+2,DLADD DL,48MOV AH,02HINT 21HMOV DI+3,DLMOV AH,02HINT 21HMOV AH,08H ;有键入,调用INT21H/

28、08H,检测键入值INT 21H X5: CMP AL,b ;b判断是否返回主程序JNZ X0 ;否,继续检测PUSH AXPUSH BXPUSH DXMOV DH,0EH MOV DL,34HMOV BH,00HMOV AH,02HINT 10HPOP DXPOP BXPOP AXMOV DX,OFFSET SPACEMOV AH,09HINT 21HRET ;返回WATCH ENDP;-计时显示光 标定位程序-LIGHT PROC NEARPUSH AXPUSH BXPUSH DXMOV DH,0DH MOV DL,0DHMOV BH,00HMOV AH,02HINT 10HPOP DXP

29、OP BXPOP AXRETLIGHT ENDP;-显示存储 光标定位程序 DISMEM PROCPUSH AXPUSH BXPUSH DXMOV DH,0EH MOV DL,35HMOV BH,00HMOV AH,02HINT 10HPOP DXPOP BXPOP AXRETDISMEM ENDP;-标题初始化程序 -CLRTIP PROCMOV AL,1MOV CX,0000HMOV DX,0050HMOV BH,0CHMOV AH,06HINT 10HRETCLRTIP ENDP;-提示初始化程序 -CLROPR PROCMOV AL,4MOV CX,0100HMOV DX,0450HM

30、OV BH,05HMOV AH,06HINT 10HRETCLROPR ENDP;-计时区初始化程序 -CLRTIM PROCMOV AL,15MOV CX,0600HMOV DX,1420HMOV BH,0AHMOV AH,06HINT 10HRETCLRTIM ENDP;-记忆区初始化程序 -CLRMEM PROCMOV AL,15MOV CX,0621HMOV DX,1450HMOV BH,0DHMOV AH,06HINT 10HRETCLRMEM ENDP;-姓名初始化程序 -CLRNAME PROCMOV AL,2MOV CX,1521HMOV DX,1750HMOV BH,0CHM

31、OV AH,06HINT 10HRETCLRNAME ENDP SHOWALL PROC CLI MOV AL,1CH MOV AH,35H INT 21H MOV INIE,ES MOV INIB,BX SHOWINI:CALL LIGHTMOV DX,OFFSET WSTR MOV AH,09H INT 21H KSCANW: MOV AH,0BH INT 21H CMP AL,00H JE KSCANW MOV AH,08H INT 21H CMP AL,s JE TIME JMP KSCANW MOV AH,4CH INT 21HTIME: MOV MIN,0 MOV SEC,0 MO

32、V MSEC,0CALL INITIR SHOWSTART:MOV SFLAG,1MOV FLAG,1CALL LIGHT CALL TIMESHOW WSTOP: MOV AH,0BH INT 21H CMP AL,00H JE SHOWSTART MOV AH,08H INT 21H CMP AL,e JNE R MOV SFLAG,0MOV FLAG,0 JMP JUDGE R:CMP AL,r ;r,存储计数JZ MEMORY JMP SHOWSTARTMEMORY: ;存储CMP SEC,9JA SECBIGMOV DL,00H MOV DI,DLMOV DL,SECADD DL,4

33、8MOV DI+1,DLINC DIINC DICMP MSEC,9JA MSECBIGMOV DL,00H MOV DI,DLMOV DL,MSECADD DL,48MOV DI+1,DLINC DIINC DIJMP SHOWSTARTSECBIG:MOV CL,10MOV AL,SECMOV AH,0DIV CL ;AH存余数, AL存商MOV DL,ALMOV DI,DLMOV DH,AHMOV DL,DHADD DL,48MOV DI+1,DLINC DIINC DIMSECBIG:MOV CL,10MOV AL,MSECMOV AH,0DIV CL ;AH存余数, AL存商MOV

34、DL,ALMOV DI,DLMOV DH,AHMOV DL,DHADD DL,48MOV DI+1,DLINC DIINC DIJMP SHOWSTART JUDGE: MOV AH,0BHINT 21HAND AL,ALJZ JUDGEREJUDGE:MOV AH,08HINT 21HCMP AL,d ;检测是否输入D,重新计数JZ TIME ;是D,重新计时CMP AL,c ;检测输入是否为C,是否继续计时JZ SHOWSTART ;是C, 继续计时,否则继续检测CMP AL,w ;检测是否输入W,是否查看保存数据JNZ REJUDGE ;否,继续检测 DO6 CALL DISMEMCAL

35、L WATCH ;查看保存数据JMP REJUDGE ;继续检测MOV AH,4CHINT 21HBACK:RETQTIME: CLI PUSH DS MOV DX,INIB MOV DS,INIB MOV AL,1CH MOV AH,25H INT 21H STI POP DS RET SHOWALL ENDP;-8253初始化 -INITIR PROC CLI MOV AL,00110110B ;8253用计时器0,先送低八位 ,再送高八位,工作方式3,二进制计数方式OUT 43H,AL MOV AX,11932 ;送计数初值,1.1932MHz10ms10-3 OUT 40H,AL MO

36、V AL,AH OUT 40H,AL PUSH DS MOV DX,OFFSET TIMER MOV AX,SEG TIMER MOV DS,AX MOV AX,251CH INT 21H POP DS RET INITIR ENDP;-计数和进 位-TIMER PROC PUSH AX PUSH DSCMP FLAG,0JZ QUIT MOV AX,DATA MOV DS,AX INC MSEC CMP MSEC,100 JNE QUIT MOV MSEC,0 INC SEC CMP SEC,60 JNE QUIT AND SEC,0 INC MIN CMP MIN,60 JNE QUIT

37、AND MIN,0QUIT: POP AX MOV DS,AX POP AX STI IRET TIMER ENDPTIMESHOW PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,00H MOV AL,MIN ;显示分 CALL CHANGE MOV DL,: MOV AH,02H INT 21H MOV AH,00H MOV AL,SEC ;显示秒 CALL CHANGE CMP SFLAG,0 JE CLR MOV DL,: MOV AH,02H INT 21H MOV AH,00H MOV AL,MSEC ;显示毫秒 CALL CHANGE CL

38、R: MOV DX,OFFSET NULINE MOV AH,09H INT 21HPOP DX POP CX POP BX POP AX RET TIMESHOW ENDP CHANGE PROC PUSH DX PUSH BX PUSH CX MOV CX,00H MOV BX,0AH BTOD: MOV DX,00H DIV BX PUSH DX INC CL CMP AX,00H JA BTOD SHOW: POP DX ADD DL,30H MOV AH,02H INT 21H LOOP SHOWPOP CX POP BX POP DX RET CHANGE ENDP CODE ENDSEND START

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报