




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编时钟 汇编计时器 2011-11-30 17:29:03| 分类: 编程|字号 订阅data segment m2 DB '0' ;分的十位
2、160; m1 DB '0' ;分的个位 DB ':'
3、; ;间隔 s2 DB '0' ;秒的十位 s1 DB&
4、#160; '0' ;秒的个位 DB ':'
5、0; ;间隔 ms2 DB '0' ;百分秒位 ms1 DB '0'
6、0; ;十分秒位 ROW DB 0 ;行数 data endsSTACK SEGMENT
7、; DW 16 DUP(0)STACK ENDS code segment assume cs:code,ds:data,SS:STACKstart: call clall2 ;调用清全屏 ag: call clear
8、160; ;调用清显示部分屏幕 call list ;调用显示 call second
9、; ;调用一秒延时 MOV AH,0BH ;检测有键按下否? INT 21H CMP
10、 AL,00H ;AL=0,无键按下 JZ ag ;无键按下,转ag MOV AH,
11、08H ;有键,读键值AL INT 21H cmp al,'n' jnz end1 nao: call d
12、ingshi ;调用定时子程序 jmp ag end1: cmp al,'s' jnz g1 call far ptr
13、 mb jmp ag g1: cmp al,1bh jnz ag mov ah,4ch int 21h;-日期list
14、proc near push ax push bx push cx push dx &
15、#160; mov ah,2ah int 21h ;系统功能调用,读系统日期 push dx
16、160; ;将DX入栈 mov dl,0again1: sub cx,03e8h ;CX保存年,将CX-1000 js next1 &
17、#160; ;CX为负跳next1 inc dl ;否则DL+1 jmp again1
18、; ;跳至CX-1000next1: add cx,03e8h ;CX+1000送CX add dl,30h
19、 mov ah,02h int 21h ;显示DL,即CX的千位 mov dl,0&
20、#160; ;DL清零again2: sub cx,0064h ;将CX-100 js next2
21、; inc dl jmp again2next2: add cx,0064h add dl,30h mov ah,02h
22、 int 21h ;显示DL,即CX的百位 mov dl,0 again3: sub cx,000ah
23、0; ;将CX-10 js next3 inc dl jmp again3 next3:
24、; add cx,000ah add dl,30h mov ah,02h int 21h
25、0; ;显示DL,即DX的十位 add cl,30h mov dl,cl mov ah,02h
26、int 21h ;显示CL的个位 mov dl,'-' mov ah,02h
27、160; int 21h ;显示“-”
28、; pop dx ;弹出DX mov bl,dl ;将DL送BL
29、0; mov dl,0 ;将DL清零again4: sub dh,000ah ;DH存月,将DH-10
30、60; js next4 inc dl jmp again4 next4: add dh,000ah
31、; add dl,30h mov ah,02h int 21h
32、; ;显示DH的十位,即月的十位 add dh,30h mov dl,dh mov ah,02h
33、 int 21h ;显示DH的个位 mov dl,'-'
34、 mov ah,02h int 21h mov dl,0again5: sub bl,000ah ;DL存天
35、 js next5 inc dl jmp again5 next5: add bl,000ah
36、160; add dl,30h mov ah,02h int 21h
37、160; add bl,30h mov dl,bl mov ah,02h int 21h
38、0; mov dl,' ' ;显示空格 mov ah,02h int 21h;-时间
39、0; mov ah,2ch ;系统功能调用,读系统时间 int 21h &
40、#160; push dx mov dl,0a1: sub ch,000ah ;CH存小时
41、60; js n1 inc dl jmp a1 n1: add ch,000ah
42、60; add dl,30h mov ah,02h int 21h
43、60; add ch,30h mov dl,ch
44、 mov ah,02h int 21h mov dl,':
45、9; mov ah,02h int 21h ;显示“:”
46、160; mov dl,0a2: sub cl,000ah ;CL存分钟 js n2 inc dl
47、; jmp a2 n2: add cl,000ah add dl,30h mov ah,02h
48、160; int 21h add cl,30h mov dl,cl
49、60; mov ah,02h int 21h mov dl,':' ;显示“:”
50、 mov ah,02h int 21h pop dx mov
51、 dl,0 a3: sub dh,000ah ;DH存秒 js n3
52、60; inc dl jmp a3 n3: add dh,000ah add dl,30h
53、0; mov ah,02h int 21h add dh,30h mov dl,dh
54、 mov ah,02h int 21h pop dx pop cx
55、60; pop bx pop ax retlist endp -定时程序di
56、ngshi proc near push ax push bx push cx push dx call clear
57、160; ;调用清显示部分屏幕 mov dl, 'i' mov ah,02h int 21h mov dl, 'n' mov ah,02h int 21h mov ax,data mov dx,ax&
58、#160; mov ah,01h int 21h sub al,30h mov bh,al mov ah,01h int 21h sub al,30h mov bl,al mov dl,':' mov ah,02h int 21h mov ah,01h int 21h sub al,30h mov dh,al mov ah,01h&
59、#160;int 21h sub al,30h mov dl,al ;存输入数据,BHBL:DHDL push dx -小时的十位的判断shi10: &
60、#160; mov ah,2ch int 21h mov dl,0dao1: sub ch,0a
61、h js dao2 inc dl jmp dao1dao2:
62、 cmp bh,dl
63、160; ;判断小时的十位 jnz shi10;-小时的个位的判断 shi: mov ah,2ch
64、 int 21h mov dl,0 dao3: sub ch,0ah js
65、 dao4 jmp dao3 dao4: add ch,0ah
66、 cmp ch,bl ;判断小时的个位 jnz shi
67、60; -分钟的十位的判断 fen10: mov ah,2ch int 21h
68、; mov dl,0dao5: sub cl,0ah js dao6 inc dl jmp dao5
69、0;dao6: mov bl,dl ;将DL中的分的十位送BL pop dx
70、0; ;将输入的DH,DL弹出 cmp bl,dh
71、; ;判断分的十位 push dx jnz fen10;-分钟的个位判断 fen:
72、160; mov ah,2ch int 21h mov dl,0dao7:
73、; sub cl,0ah js dao8
74、0; jmp dao7 dao8: add cl,0ah pop dx cmp cl,dl
75、0; ;判断分的个位 push dx jnz fenpop dxmov dl,'s
76、9;mov ah,02hint 21hmov dl,'t'mov ah,02hint 21hmov dl,'o'mov ah,02hint 21hmov dl,'p'mov ah,02hint 21h ;定时结束,显示STOPpop dxpop cxpop bxpop axret dingshi endp
77、0; - SECOND PROC NEAR ;1秒延时子程序 PUSH AX
78、; PUSH BX PUSH DX MOV AH,00H
79、160; INT 1AH ;读计时单位 ADD DX,1
80、160; MOV BX,DX L1: MOV AH,00H INT
81、60; 1AH CMP DX,BX ;满1秒?,否,继续累计 JNZ L1
82、; POP DX POP BX
83、60; POP AX RET SECOND ENDP;-clear proc near ;save registers
84、push ax push bx push cx push dx clear screen ;定窗口显示时钟
85、160; mov ah,7 ;to scroll downward function mov al,0 ;code to blank scree mov bh,70h ;reverse video attribute
86、 mov ch,0 ;upper left row mov cl,0 ;upper left column mov dh,0 ;lower right row mov dl,20 ;lower left column
87、 int 10h ;call video ROM ;定位 mov ch,0 mov cl,24 mov ah,01h int 10h mov dh,0
88、60; mov dl,0 mov bh,0 mov ah,02h int 10h ;locate cursor mov dx,0
89、160; mov ah,2 ;to locate column int 10h ;call video BIOS ;restore registers pop dx pop cx pop bx
90、 pop ax retclear endp;-clall2 proc near push ax push bx push cx push dx mov ah,6
91、0; ;to scroll up screen mov al,0 ;blank screen mov bh,7 ;blank line mov ch,0 ;upper left row mov cl,0 &
92、#160; ;upper left column mov dh,24 ;lower right row mov dl,79 ;lower left column int 10h ;call video BIOS pop dx
93、160; pop cx pop bx pop ax retclall2 endp;-mb PROC far push ax push bx pu
94、sh cx push dx MOV AH,0 ;检测键盘,有键按下才开始 INT
95、160; 16H ;设置中断向量 CLI ;清中断标志
96、60; CLD ;清方向标志 MOV AX,0000H
97、60; ;设置中断向量 MOV DS,AX MOV SI,0020H
98、160; LODSW MOV BX,AX LODSW PUSH AX
99、160; ; PUSH BX ; MOV AX,DATA
100、160; ; MOV DS,AX MOV AX,0000H ;
101、; MOV ES,AX ; MOV DI,0020H ;
102、160; MOV AX,OFFSET TIMER ; STOSW MOV AX,SEG TIMER ;
103、60; STOSW ;初始化8253 MOV AL,00110110B ;0计数器,工作方式3,
104、先写最底有效字节,再写最高有效字节 OUT 43H,AL MOV AX,10923 ;设初值 O
105、UT 40H,AL MOV AL,AH OUT 40H,AL IN
106、60; AL,21H PUSH AX MOV AL,0FCH ;中断屏蔽,只对键盘irq1和电子时钟基准irq0开中断 &
107、#160; OUT 21H,AL STI call clearall ;清全屏
108、60; FOREVER: call clear1 ;定位清屏 call show
109、60; ;显示秒表 MOV AH,0BH ;检测有键按下否?
110、 INT 21H CMP AL,00H ;AL=0,无键按下 JZ FO
111、REVER ;无键按下,转LOP MOV AH,08H ;有键,读键值AL INT&
112、#160; 21H CMP AL,'d' JZ EXIT
113、 ;是d则退出 cmp al,'m'
114、0; ;是m则记录数据 jnz g MOV AH,2 MOV BH,0 &
115、#160; MOV DH,row MOV DL,25 INT 10H call
116、60; show inc row g: cmp al,'r'
117、0; ;是r则重新开始计时 jnz FOREVER mov m2,'0' ;归零
118、 mov m1,'0' mov s2,'0' mov s1,'0'
119、60; mov ms2,'0' mov ms1,'0' mov row,0 &
120、#160; call clearall JMP FOREVER ;显示秒表EXIT:
121、 pop dx pop cx pop bx pop ax ret mb ENDP;-show proc near push
122、 ax push bx push cx
123、; MOV BX,OFFSET m2 ;读m2首地址 MOV CX,8 ;循环8次DISP1:
124、MOV AL,BX ;取bx对应的m2值 CALL DISPCHR ;显示bx INC
125、; BX ;指向下一存储单元 LOOP DISP1
126、; MOV AL,0DH ;回车 CALL DISPCHR &
127、#160; pop cx pop bx pop ax retshow endp;-clear1&
128、#160; proc near push ax push bx push cx push dx clear screen ;定宽
129、60; mov ah,7 ;to scroll up screen mov al,0 ;blank screen mov bh,70h ;blank line mov
130、ch,1 ;upper left row mov cl,0 ;upper left column mov dh,0 ;lower right row mov dl,7 ;lower left column int 1
131、0h ;call video BIOS ;din wei mov ch,0 mov cl,24 mov dh,row mov dl,0
132、; mov bh,0 mov ah,02h int 10h ;locate cursor mov dx,0 mov ah,2 ;to locate column
133、0; int 10h ;call video BIOS pop dx pop cx pop bx pop ax
134、; retclear1 endp;-clearall proc near push ax push bx push cx push dx mov ah,6 ;to scroll up screen
135、0; mov al,0 ;blank screen mov bh,7 ;blank line mov ch,0 ;upper left row mov cl,0 ;upper left column mov dh,24 ;lower right row
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《GB-T 31341-2014节能评估技术导则》
- 野生菩提榕种苗购买合同2篇
- 酱油代加工合同范本
- 瓷砖切割加工合同范本
- 带物出租合同范本
- 奶茶店接单合同范本
- 同城配送运输合同范本
- 乙方租店面合同范本
- 煤车出售转让合同范本
- 北京低压供电合同范本
- 2025年甘肃省工会系统招聘工会工作者183人考试参考试题及答案解析
- 2025江苏宿迁沭阳县司法局招聘人民调解员1人备考试题及答案解析
- 白内障手术培训课件
- 西藏朗县2025年上半年公开招聘村务工作者试题含答案分析
- 科学版(2024)一年级全一册体育与健康全册教案(表格式)
- 2025年高一上学期开学第一课主题班会课件
- 水彩画基本知识课件
- 特种设备无损检测技术
- GB/T 17642-2025土工合成材料非织造布复合土工膜
- 回族做礼拜的念词集合6篇
- 外贸中英文商业发票
评论
0/150
提交评论