⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 时钟.txt

📁 本程序用于动态显示系统时间,希望和大家一起交流一下
💻 TXT
字号:
;本程序用于动态显示系统时间~~按右SHIFT结束本程序~~
DATA SEGMENT
    STR DB 'Press right shift key to finish program!$'
    HH DB ?
    MM DB ?
    SE1 DB ?
    SE2 DB ?
DATA ENDS

CODE SEGMENT
     ASSUME CS:CODE,DS:DATA

;**************自己的1CH中断服务程序******************
NEWINT1CH PROC FAR	;新的伪时钟中断程序
      ;把光标位置置中
      MOV BH,0           
      MOV DH,10
      MOV DL,35
      MOV AH,2
      INT 10H      
      
      ;读系统时间
      MOV AH,2CH
      INT 21H    ;注意:得到的都是十六进制数
      MOV HH,CH  ;时
      MOV MM,CL  ;分
      MOV SE1,DH ;秒
      MOV SE2,DL ;十分之一秒

      ;调用输出时间的子程序
      CALL PRINT        
      
      ;跳转到旧的int 1cH入口
      DB 0EAH		
      OLDOFF DW ?
      OLDSEG DW ?
NEWINT1CH ENDP

START:
     MOV AX,DATA
     MOV DS,AX
     
 ;************************
     ;先清屏幕
     MOV AX,0003H
     INT 10H    

     ;先在左上角输出一行字母     
     MOV BH,0           
     MOV DH,0
     MOV DL,0
     MOV AH,2
     INT 10H      
     MOV DX,OFFSET STR
     MOV AH,9
     INT 21H
;****************************

     ;取得旧的int 1cH的向量
     MOV AX,351CH
     INT 21H

     ;保存旧的int 1cH的向量,以便到时候能返回			
     MOV OLDOFF,BX		
     MOV OLDSEG,ES
      
     ;设置新的int 1ch向量
     MOV AX,SEG NEWINT1CH
     MOV DS,AX
     MOV DX,OFFSET NEWINT1CH
     MOV AX,251CH
     INT 21H			


     ;程序循环判断是否键盘输入右SHIFT键,有则退出程序,否则继续判断。
AG:  MOV AL,0   ;置零
     MOV AH,2   ;使用INT 16H(BIOS中断)的2号功能键盘搜索是否按下右shift键
     INT 16H
     SHR AL,1   ;读取KBFLAG
     MOV AX,0
     ADC AX,0
     CMP AL,1   ;判断是否按下右shift键
     JZ EXIT
     JMP AG

    ;退出程序前恢复系统原来的int 1ch的向量
EXIT:MOV DX,OLDOFF        
      MOV DS,OLDSEG
      MOV AX,251CH
      INT 21H		
 
      MOV AH,4CH
      INT 21H		

;子程序:做输出前处理
PRINT PROC                     
     MOV DI,OFFSET HH
     MOV CX,4

 LOP:MOV AL,[DI]
     MOV AH,0
     MOV DL,10
     DIV DL
     ADD AL,30H
     MOV BL,AH
     ADD BL,30H
     CALL DISP 
     ;做这个比较操作,是防止输出最后一个冒号
     CMP CX,1
     JZ  NEXT
     CALL MAOHAO 
NEXT:INC DI
     LOOP LOP    
     RET
PRINT ENDP

;输出
DISP PROC                
     MOV DL,AL
     MOV AH,02H
     INT 21H
     MOV DL,BL
     MOV AH,02H
     INT 21H
     RET
DISP ENDP
;只输出':'
MAOHAO PROC
     MOV DL,':'
     MOV AH,02H
     INT 21H
     RET
MAOHAO ENDP
CODE ENDS
     END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -