汇编时钟 汇编计时器.doc_第1页
汇编时钟 汇编计时器.doc_第2页
汇编时钟 汇编计时器.doc_第3页
汇编时钟 汇编计时器.doc_第4页
汇编时钟 汇编计时器.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编时钟 汇编计时器2011-11-30 17:29:03|分类:编程|字号订阅data segment m2 DB 0 ;分的十位 m1 DB 0 ;分的个位 DB : ;间隔 s2 DB 0 ;秒的十位 s1 DB 0 ;秒的个位 DB : ;间隔 ms2 DB 0 ;百分秒位 ms1 DB 0 ;十分秒位 ROW DB 0 ;行数data endsSTACK SEGMENT DW 16 DUP(0)STACK ENDScode segmentassume cs:code,ds:data,SS:STACKstart: call clall2 ;调用清全屏ag: call clear ;调用清显示部分屏幕 call list ;调用显示 call second ;调用一秒延时 MOV AH,0BH ;检测有键按下否? INT 21H CMP AL,00H ;AL=0,无键按下 JZ ag ;无键按下,转ag MOV AH,08H ;有键,读键值AL INT 21H cmp al,n jnz end1nao: call dingshi ;调用定时子程序 jmp agend1: cmp al,s jnz g1 call far ptr mb jmp ag g1: cmp al,1bh jnz ag mov ah,4ch int 21h;-日期list proc near push ax push bx push cx push dx mov ah,2ah int 21h ;系统功能调用,读系统日期 push dx ;将DX入栈 mov dl,0again1: sub cx,03e8h ;CX保存年,将CX-1000 js next1 ;CX为负跳next1 inc dl ;否则DL+1 jmp again1 ;跳至CX-1000next1: add cx,03e8h ;CX+1000送CX add dl,30h mov ah,02h int 21h ;显示DL,即CX的千位 mov dl,0 ;DL清零again2: sub cx,0064h ;将CX-100 js next2 inc dl jmp again2next2: add cx,0064h add dl,30h mov ah,02h int 21h ;显示DL,即CX的百位 mov dl,0again3: sub cx,000ah ;将CX-10 js next3 inc dl jmp again3next3: add cx,000ah add dl,30h mov ah,02h int 21h ;显示DL,即DX的十位 add cl,30h mov dl,cl mov ah,02h int 21h ;显示CL的个位 mov dl,- mov ah,02h int 21h ;显示“-” pop dx ;弹出DX mov bl,dl ;将DL送BL mov dl,0 ;将DL清零again4: sub dh,000ah ;DH存月,将DH-10 js next4 inc dl jmp again4next4: add dh,000ah add dl,30h mov ah,02h int 21h ;显示DH的十位,即月的十位 add dh,30h mov dl,dh mov ah,02h int 21h ;显示DH的个位 mov dl,- mov ah,02h int 21h mov dl,0again5: sub bl,000ah ;DL存天 js next5 inc dl jmp again5next5: add bl,000ah add dl,30h mov ah,02h int 21h add bl,30h mov dl,bl mov ah,02h int 21h mov dl, ;显示空格 mov ah,02h int 21h;-时间 mov ah,2ch ;系统功能调用,读系统时间 int 21h push dx mov dl,0a1: sub ch,000ah ;CH存小时 js n1 inc dl jmp a1n1: add ch,000ah add dl,30h mov ah,02h int 21h add ch,30h mov dl,ch mov ah,02h int 21h mov dl,: mov ah,02h int 21h ;显示“:” mov dl,0a2: sub cl,000ah ;CL存分钟 js n2 inc dl jmp a2n2: add cl,000ah add dl,30h mov ah,02h int 21h add cl,30h mov dl,cl mov ah,02h int 21h mov dl,: ;显示“:” mov ah,02h int 21h pop dx mov dl,0a3: sub dh,000ah ;DH存秒 js n3 inc dl jmp a3n3: add dh,000ah add dl,30h mov ah,02h int 21h add dh,30h mov dl,dh mov ah,02h int 21h pop dx pop cx pop bx pop axretlist endp;-定时程序dingshi proc near push ax push bx push cx push dx call clear ;调用清显示部分屏幕 mov dl, i mov ah,02h int 21h mov dl, n mov ah,02h int 21hmov ax,datamov dx,axmov ah,01hint 21h sub al,30hmov bh,almov ah,01hint 21h sub al,30hmov bl,almov dl,:mov ah,02hint 21hmov ah,01hint 21h sub al,30hmov dh,almov ah,01hint 21h sub al,30hmov dl,al ;存输入数据,BHBL:DHDLpush dx;-小时的十位的判断shi10: mov ah,2ch int 21h mov dl,0dao1: sub ch,0ah js dao2 inc dl jmp dao1dao2: cmp bh,dl ;判断小时的十位 jnz shi10;-小时的个位的判断shi: mov ah,2ch int 21h mov dl,0dao3: sub ch,0ah js dao4 jmp dao3dao4: add ch,0ah cmp ch,bl ;判断小时的个位 jnz shi;-分钟的十位的判断fen10: mov ah,2ch int 21h mov dl,0dao5: sub cl,0ah js dao6 inc dl jmp dao5dao6: mov bl,dl ;将DL中的分的十位送BL pop dx ;将输入的DH,DL弹出 cmp bl,dh ;判断分的十位 push dx jnz fen10;-分钟的个位判断fen: mov ah,2ch int 21h mov dl,0dao7: sub cl,0ah js dao8 jmp dao7dao8: add cl,0ah pop dx cmp cl,dl ;判断分的个位 push dx jnz fenpop dxmov dl,smov ah,02hint 21hmov dl,tmov ah,02hint 21hmov dl,omov ah,02hint 21hmov dl,pmov ah,02hint 21h ;定时结束,显示STOPpop dxpop cxpop bxpop axretdingshi endp;- SECOND PROC NEAR ;1秒延时子程序 PUSH AX PUSH BX PUSH DX MOV AH,00H INT 1AH ;读计时单位 ADD DX,1 MOV BX,DX L1: MOV AH,00H INT 1AH CMP DX,BX ;满1秒?,否,继续累计 JNZ L1 POP DX POP BX POP AX RET SECOND ENDP;-clear proc near ;save registers push ax push bx push cx push dx;clear screen ;定窗口显示时钟 mov ah,7 ;to scroll downward function mov al,0 ;code to blank scree mov bh,70h ;reverse video attribute mov ch,0 ;upper left row mov cl,0 ;upper left column mov dh,0 ;lower right row mov dl,20 ;lower left column int 10h ;call video ROM ;定位 mov ch,0 mov cl,24 mov ah,01h int 10h mov dh,0 mov dl,0 mov bh,0 mov ah,02h int 10h ;locate cursor mov dx,0 mov ah,2 ;to locate column int 10h ;call video BIOS ;restore registers pop dx pop cx pop bx pop ax retclear endp;-clall2 proc near push ax push bx push cx push dx mov ah,6 ;to scroll up screen 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 mov dl,79 ;lower left column int 10h ;call video BIOS pop dx pop cx pop bx pop ax retclall2 endp;-mb PROC far push ax push bx push cx push dx MOV AH,0 ;检测键盘,有键按下才开始 INT 16H ;设置中断向量 CLI ;清中断标志 CLD ;清方向标志 MOV AX,0000H ;设置中断向量 MOV DS,AX MOV SI,0020H LODSW MOV BX,AX LODSW PUSH AX ; PUSH BX ; MOV AX,DATA ; MOV DS,AX MOV AX,0000H ; MOV ES,AX ; MOV DI,0020H ; MOV AX,OFFSET TIMER ; STOSW MOV AX,SEG TIMER ; STOSW ;初始化8253 MOV AL,00110110B ;0计数器,工作方式3,先写最底有效字节,再写最高有效字节 OUT 43H,AL MOV AX,10923 ;设初值 OUT 40H,AL MOV AL,AH OUT 40H,AL IN AL,21H PUSH AX MOV AL,0FCH ;中断屏蔽,只对键盘irq1和电子时钟基准irq0开中断 OUT 21H,AL STI call clearall ;清全屏FOREVER: call clear1 ;定位清屏 call show ;显示秒表 MOV AH,0BH ;检测有键按下否? INT 21H CMP AL,00H ;AL=0,无键按下 JZ FOREVER ;无键按下,转LOP MOV AH,08H ;有键,读键值AL INT 21H CMP AL,d JZ EXIT ;是d则退出 cmp al,m ;是m则记录数据 jnz g MOV AH,2 MOV BH,0 MOV DH,row MOV DL,25 INT 10H call show inc row g: cmp al,r ;是r则重新开始计时 jnz FOREVER mov m2,0 ;归零 mov m1,0 mov s2,0 mov s1,0 mov ms2,0 mov ms1,0 mov row,0 call clearall JMP FOREVER ;显示秒表EXIT: pop dx pop cx pop bx pop ax retmb ENDP;-show proc near push ax push bx push cx MOV BX,OFFSET m2 ;读m2首地址 MOV CX,8 ;循环8次DISP1: MOV AL,BX ;取bx对应的m2值 CALL DISPCHR ;显示bx INC BX ;指向下一存储单元 LOOP DISP1 MOV AL,0DH ;回车 CALL DISPCHR pop cx pop bx pop ax retshow endp;-clear1 proc near push ax push bx push cx push dx;clear screen ;定宽 mov ah,7 ;to scroll up screen mov al,0 ;blank screen mov bh,70h ;blank line mov ch,1 ;upper left row mov cl,0 ;upper left column mov dh,0 ;lower right row mov dl,7 ;lower left column int 10h ;call video BIOS ;din wei mov ch,0 mov cl,24 mov dh,row mov dl,0 mov bh,0 mov ah,02h int 10h ;locate cursor mov dx,0 mov ah,2 ;to locate column int 10h ;call video BIOS pop dx pop cx pop bx pop ax retclear1 endp;-clearall proc near push ax push bx push cx push dx mov ah,6 ;to scroll up screen mov al,0 ;blank screen mov bh,7 ;blank line mov ch,0 ;upper left

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论