首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

如何输出系统时间和日期啊能给个例子么

2012-03-05 
怎么输出系统时间和日期啊????~~~~~~~~~~~~~~~~~~~~~能给个例子么?想在程序中输出系统的时间和日期,查到了

怎么输出系统时间和日期啊????~~~~~~~~~~~~~~~~~~~~~能给个例子么?
想在程序中输出系统的时间和日期,查到了中断调用,想输出出来...但是没法输出啊~~~

zara(Kyrie   eleison)说 "显示时间时,   那些待显示的在寄存器中的是相应项的数值,   不是对应的字符或者是字符串的地址.   所以要进行数值到显示字符串形式的转换才能正常显示出来 "


可是我只知道0-9是加30H,但时间不是一位啊~~怎么办啊?

有没有不用转换直接输出的方法啊?!

我的代码:
                            MOV               AH,2AH             ;时间显示
                            INT               21H
                            MOV               YEAR,   CX         ;年
                            MOV               MONTH,DH         ;月
                            MOV               DAY,DL             ;日

                            MOV               DX,YEAR           ;输出
                            MOV               AH,09H
                            INT               21H

                            MOV               DL,MONTH
                            MOV               AH,05H
                            INT               21H

                            MOV               DL,DAY
                            MOV               AH,05H
                            INT               21H

                            MOV               AH,2CH
                            INT               21H
                            MOV               HOURS,CH         ;小时
                            MOV               MINUTES,CL     ;分钟
                            MOV               SECOND,DH       ;秒



                            MOV               DL,HOURS         ;输出
                            MOV               AH,05H
                            INT               21H

                            MOV               DL,MINUTES
                            MOV               AH,05H
                            INT               21H

                            MOV               DL,SECOND
                            MOV               AH,05H
                            INT               21H


[解决办法]
DATASEGMENT
MY_INTNO DW 1CH
OLD_INTOFF DW ?
OLD_INTSEG DW ?
CLOCK DB 0
MINUTE DB 0
SECOND DB 0
COUNT_NUM=18
COUNT DW COUNT_NUM
DATA ENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA

ARMACRO CHAR
MOV AL,CHAR
MOV AH,1AH
MOV ES:[DI],AX
ADD DI,2
ENDM


EXCHANGEPROC
MOVCL,4
MOVCH,2
NEXT:
ROLBL,CL
MOVAL,BL
ANDAL,0FH
ADDAL,30H
CMPAL,3AH
JLOUTP
ADDAL,07H
OUTP:
ARAL
DECCH
JNZNEXT
RET

EXCHANGEENDP

OUTPUT PROC
MOVAX,0B800H
MOVES,AX
MOVDI,71*2
MOVBL,CLOCK
CALLEXCHANGE
AR ': '
MOVBL,MINUTE
CALLEXCHANGE
AR ': '
MOVBL,SECOND
CALLEXCHANGE
RET
OUTPUT ENDP



START:

PANDUAN:
CMP COUNT,0
JZ SHOW
DEC COUNT

SHOW:
MOV COUNT,COUNT_NUM
MOVBL,18
DECBL
JZSHOW1

SHOW1:
MOVAH,2H
INT1AH
MOVCLOCK,CH
MOVMINUTE,CL
MOVSECOND,DH
CALLOUTPUT
LOOPPANDUAN
MOVAX,MY_INTNO
MOVCL,2
SHLAX,CL
MOVDI, AX
MOVAX, 0
MOVES, AX


EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART



试试吧

[解决办法]
年份是 4 位十进制数, 用 Byte 寄存器来保存运算的话, 溢出了. 应该用 Word 类型:
...
C10 DB 10, 00
...
MOV CX, 4 ;循环次数
Y1: MOV DX, 0 ;* 高位清空


DIV WORD PTR C10;* 除十取余数
PUSH DX ;* 余数进栈保护
LOOP Y1
MOV CX, 4
Y2: POP DX ;余数出栈
; XCHG DH, DL ;*-
OR DL, 30H ;转换为ASCII码输出
...

热点排行