| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8368 人关注过本帖
标题:一个显示系统时间的程序
只看楼主 加入收藏
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
结帖率:100%
收藏
 问题点数:0 回复次数:11 
一个显示系统时间的程序
程序代码:
DATAS SEGMENT
BUF1 DB'THE TIME IS NOW:$'
BUF2 DB 10

 DB 10 DUP(?)
BUF3 DB 'CLASS:XINGONG04201 $'
BUF4 DB 'NAME:MA liNA $' 
BUF5 DB '^^^^^^^ ^^^^^^^ $'
BUF6 DB ' ~~~ ~~~ $'
BUF7 DB ' 00 >o o < 00 $'
BUF8 DB ' 00 (::) 00 $'
BUF9 DB ' 00 ~ ~ 00 $'
BUF10 DB ' 00 !00 $'
DATAS ENDS

STACKS SEGMENT

 DB 100 DUP(?)
STACKS ENDS

CODES SEGMENT

 ASSUME CS:CODES,DS:DATAS,SS:STACKS

 CURSOR MACRO ROW,CLM 

 MOV AH,2 

 MOV BH,0 

 MOV DH,ROW 

 MOV DL,CLM 

 INT 10H 

 ENDM


 WIN MACRO ROWL,CLML,ROWR,CLMR,COLOR 

 MOV AH,6 

 MOV AL,0 

 MOV CH,ROWL

 MOV CL,CLML

 MOV DH,ROWR

 MOV DL,CLMR

 MOV BH,COLOR

 INT 10H

 ENDM

ASCBCD MACRO REG

 MOV al,REG

 mov ah,0

 mov REG,0

 mov bh,10

 div bh

 mov REG,ah

 push cx

 MOV CL,4

 SHL al,CL

 pop cx

 add REG,al

 ENDM


 BCDASC MACRO REG

 INC BX

 INC BX

 MOV AL,REG

 push cx

 MOV CL,4

 SHR AL,CL
pop cx

 OR AL,30H

 MOV [BX],AL

 INC BX

 MOV AL,REG

 AND AL,0FH

 OR AL,30H

 MOV [BX],AL

 ENDM


 INCBCD MACRO REG,COUNT 

 MOV AL,REG

 INC AL

 DAA

 MOV REG,AL

 CMP AL,COUNT

 JNZ DISPY

 MOV REG,0

 ENDM


 STRDSPY MACRO ADRS

 LEA DX,ADRS

 MOV AH,9 

 INT 21H

 ENDM


 CLOCK PROC FAR

 START: PUSH DS 

 MOV AX,0

 PUSH AX

 MOV AX,DATAS

 MOV DS,AX 

WIN 0,0,24,79,7

 WIN 6,9,18,70,01000001B 

 CURSOR 6,25 

 STRDSPY BUF5 

 CURSOR 7,25 

 STRDSPY BUF6

 CURSOR 8,25

 STRDSPY BUF7

 CURSOR 9,25

 STRDSPY BUF8

 CURSOR 10,25

 STRDSPY BUF9

 CURSOR 11,25

 STRDSPY BUF10

 CURSOR 6,9

 STRDSPY BUF3

 CURSOR 7,9

 STRDSPY BUF4

 CURSOR 14,32

 STRDSPY BUF1

 CURSOR 15,36



 MOV AH,2cH

 INT 21H 


 ASCBCD CH 

 ASCBCD CL 

 ASCBCD DH 


 TIMER: CALL DELY 

 INCBCD DH,60H 

 INCBCD CL,60H 

 INCBCD CH,24H 


 DISPY: LEA BX,BUF2 

 BCDASC CH 

 BCDASC CL 

 BCDASC DH 

 INC BX

 MOV AL,'$'

 MOV [BX],AL

 PUSH DX 

 CURSOR 15,36 

 STRDSPY BUF2+2 

 POP DX

 MOV AH,01H

 INT 16H

 CMP AL,1BH

 JZ X

 XOR AL,AL

 JMP TIMER

 X:MOV AH,4CH

 INT 21H

 RET


 DELY PROC

 PUSH CX

 PUSH AX

 push bx

 mov bx,4

 x3:MOV AX,9000

 X1:MOV CX,0FFFFH


 X2:DEC CX

 JNE X2

 DEC AX

 JNE X1

 dec bx

 jne x3 


 pop bx

 POP AX

 POP CX 

 RET
DELY ENDP
CLOCK ENDP
CODES ENDS

 END START


[此贴子已经被作者于2016-6-5 10:58编辑过]

搜索更多相关主题的帖子: color 
2016-06-05 07:05
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
整个程序没有一行注释,不便于初学者学习哟。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-06-05 07:09
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
回复 2楼 hu9jj
有时间的时候我加上吧

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-06-05 07:09
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:340
专家分:2482
注 册:2016-5-15
收藏
得分:0 
关于程序 DELY 延迟子程序
这种写法牵涉到cpu的速度,不同机器相差很大,尤其模拟器或dosbox
在我的dosbox慢得不动

若纯粹显示时间,下面是较简单的写法

程序代码:
Data  segment
time_string     db      '00:00:00',0dh,'$'  ;显示时间字符串
Data ends
code   segment
                assume  cs:code,ds:data,es:data
start:         mov    ax,data
                mov    ds,ax
                mov    es,ax
                mov     ah,3
                int     10h    ;读取光标大小
                push    cx
                mov     ah,1
                mov     cx,3030h   ;设定取光标为最小,意即隐藏
                int     10h
next:         lea    di,time_string ;字符串起点
                mov     ah,2ch ;读时分秒
                int     21h
                mov     al,ch ;取时
                call    Out_digit ;转al为ascii,输出至es:di
                mov     al,cl ;取分
                call    Out_digit ;转al为ascii,输出至es:di
                mov     al,dh ;取秒
                call    Out_digit  ;转al为ascii,输出至es:di
                lea    dx,time_string
                mov     ah,9  ; 印出
                int     21h
                mov     ah,1 ;检查按键
                int     16h
                jz      next  ;没有按键
                mov     ah,0 ;读键
                int     16h
                cmp     al,1bh ;是否ESC
                jnz     next ;不是,重来
                pop     cx ;取回光标大小
                mov     ah,1 ;设定回原来光标
                int       10h
                mov     ah,4ch
                int        21h                       
;------------------------------------------------------------------------------
;转al为ascii,输出至es:di
Out_digit: aam   ;BCD加法调整
                or      ax,3030h  ;转ascii
                xchg    ah,al ;交换
                stosw  ;存到字符串
                inc     di
                ret
;------------------------------------------------------------------------------
code ends
end  start


[此贴子已经被作者于2016-6-5 10:41编辑过]

2016-06-05 10:39
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
这是我在winxp下写的,运行速度正常

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-06-05 10:56
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:340
专家分:2482
注 册:2016-5-15
收藏
得分:0 
初看没太在意,原来程式只读一次系统时间,然后利用迟延程序计时
或许题目要求这样,但这就做成程式计时和系统时间不同步
甚至像模拟器或DOSBOX一样,根本无法动作

运行了一阵子就相差不少了, 45:05(程式) ~ 45:28(系统)
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-06-05 12:53
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
是的,延时不是很精确

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-06-05 15:13
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
为什么不定时读取主板的时间显示出来呢?

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-06-05 20:40
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 

能编个毛线衣吗?
2016-06-06 15:36
AXRZ
Rank: 2
等 级:论坛游民
威 望:5
帖 子:48
专家分:84
注 册:2016-3-23
收藏
得分:0 
回复 8楼 hu9jj
同意
2016-06-07 04:04
快速回复:一个显示系统时间的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027582 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved