0dh,0ah,'$' ;提示时间格式Рmess2 db '*******Time is:',0ah,0dh,'$'Рt_buff db 40 ;在数据段开一段时间显示缓冲区Рdb ?Рdb 40 dup (?)Рhor db ?Рmin db ?Рsec db ?Рfg db 0Рdata endsРstack segmentРdb 100 dup(?)Рstack endsРcode segmentР assume cs:code,ss:stack,ds:data ;确定各个逻辑段的类型Рstart:Р call clear ;调用清屏子程序Рdisplay: ;时间显示部分Р mov ax,seg dataР mov ds,axР mov bx,offset t_buff ;送t_buff的偏移地址到BXР mov ah,2ch ;调用DOS时间调用功能,功能号:2cH,小时,分钟,秒数Р;分别保存在CH,CL,DH中Рint 21hР mov al,ch ;小时数设定Р mov ah,0Р call bctd ;调用进制转换子程序Р push axР and al,0f0h ;选取al高四位Р mov cl,4 ;设置右循环的次数Р rol al,cl ;右循环Р or al,30h ;加30h得到ACSII码Р mov [bx],al ;将得到的结果送到t_buff缓冲区Р inc bx ;指针指向下一个缓冲区的下一个地址Р pop axР and al,0fh 选取低四位Р or al,30hР mov [bx],al ;将转换后的低四位值送入缓冲区的第二个地址Р inc bxР ;----------------------------------------------------------Р mov al,':' ;显示分隔符号Р mov [bx],al