| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1256 人关注过本帖, 1 人收藏
标题:[求助]一个显示系统时间的问题
只看楼主 加入收藏
aiguoying
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-7
收藏(1)
 问题点数:0 回复次数:7 
[求助]一个显示系统时间的问题

这个时钟程序怎么不显示系统时间啊,我找不出原因来!
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
INC BX
INC BX
MOV REG,[BX]
MOV CL,4
SHL REG,CL
INC BX
MOV AL,[BX]
AND AL,0FH
OR REG,AL
ENDM
BCDASC MACRO REG
INC BX
INC BX
MOV AL,REG
MOV CL,4
SHR AL,CL
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
LEA DX,BUF2
MOV AH,2cH
INT 21H
LEA BX,BUF2
ASCBCD CH

ASCBCD DH

ASCBCD DL

TIMER: CALL DELY
INCBCD DL,60H

INCBCD DH,60H

INCBCD CH,24H

DISPY: LEA BX,BUF2
BCDASC CH
BCDASC DH
BCDASC DL
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
MOV AX,9000
X1:MOV CX,0FFFFH

X2:DEC CX
JNE X2
DEC AX
JNE X1
POP AX
POP CX
RET
DELY ENDP
CLOCK ENDP
CODES ENDS
END START

搜索更多相关主题的帖子: 显示系统时间 SEGMENT STACKS ENDS THE 
2007-07-07 07:59
aiguoying
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-7
收藏
得分:0 
有没有好人啊!!
2007-07-07 08:01
zez2626
Rank: 1
等 级:新手上路
威 望:1
帖 子:40
专家分:0
注 册:2007-6-16
收藏
得分:0 
有些难,看不出来。
2007-07-07 22:17
long531217
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-7-7
收藏
得分:0 


;show the system time
code segment
assume cs:code
start:
mov ah,2ch ;;2ch号功能调用,取系统时间:ch,cl,dh中分别存放时分秒
int 21h
call disptime;;调用disptime子程序显示时间
exit:
mov ax,4c00h ;;结束程序,返回DOS
int 21h

;====================================================================

disptime proc ;disptime子程序显示时间
mov al,ch ;小时的值赋给al
cbw ;al扩展成ax,用做除法的被除数
call bindec

mov dl,':' ;显示":"
mov ah,02h
int 21h

mov al,cl ;分
cbw
call bindec

mov dl,':' ;显示":"
mov ah,02h
int 21h

mov al,dh ;秒
cbw
call bindec

ret
disptime endp

;================================================================================

bindec proc
push ax ;保存寄存器的值
push cx
push dx

mov dx,0 ;被除数高16位置0 Dx:ax
mov cx,10d ;除数为10d
div cx
mov bx,dx ;先保存余数
mov dl,al ;显示商(即十进制二位数的十位)

or dl,30h ;转换成Ascii码
mov ah,02h ;2号功能调用,显示字符(十位)
int 21h

mov dx,bx ;恢复余数的值(十进制二位数的个位)
add dl,30h ;转换成ASCII码
mov ah,02h ;2号功能调用,显示字符(个位)
int 21h

pop dx ;恢复寄存器的值
pop cx
pop ax
ret ;;子程序返回
bindec endp
code ends
end start


古云兼听者明,俺说,多请教则灵……
2007-07-09 22:44
aiguoying
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-7
收藏
得分:0 
太感谢了!!!
2007-07-13 08:16
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 

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


其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2007-07-17 13:37
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
zhulei1978回答问题真是热心

2007-07-17 22:21
redhao
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-7-12
收藏
得分:0 

可以用Int 1ah 吧!

2007-07-18 14:52
快速回复:[求助]一个显示系统时间的问题
数据加载中...
 
   



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

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