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

📄 4t.asm

📁 自己写的汇编程序 有时钟功能,可重置时钟,是我自己觉得写的不错的1个程序
💻 ASM
字号:
PUBLIC  FTH

DATA    SEGMENT PARA PUBLIC 'DATA'
TIME    DB 'HH:MM:SS'
        DB '$'
TIPS    DB 'PRESS ANY KEY TO EDIT TIME. PRESS ESC TO EXIT'
        DB  '$'
INPUT   DB 'INPUT THE  TIME IN THIS FORM HH:MM:SS   '
        DB  '$'
ERRORM  DB  'WRONG FORM. '
        DB  '$'
TIMEF   DB  8 DUP(?)
BUF     DB  100
        DB  ?
        DB  100 DUP(?)
DATA    ENDS

STACK   SEGMENT PARA STACK 'STACK'
        DB 200 DUP(?)
STACK   ENDS


CODE    SEGMENT PARA PUBLIC 'CODE'
        ASSUME CS:CODE,DS:DATA,SS:STACK
FTH 	PROC  NEAR
     
        MOV   AH,06H
        MOV   BH,07
        MOV   CX,0
        MOV   DX,184FH
        INT   10H         ;清屏
        
        MOV   AH,2
        MOV   DH,0
        MOV   DL,0
        MOV   BH,0
        INT   10H          ;光标控制
       
        LEA   DX,TIPS
        MOV   AH,9
        INT   21H       
     
GO:     MOV   AH,2
        MOV   DH,10
        MOV   DL,30
        MOV   BH,0
        INT   10H          ;光标控制

;************读时钟****************        
        MOV   AH,2
        INT   1AH
;*********时间显示(码制转换)*******
        MOV   BX,CX
        MOV   AH,BH         ;处理小时
        AND   AH,0F0H
        MOV   CX,4
        SHR   AH,CL
        ADD   AH,30H
        LEA   DI,TIME
        MOV   [DI],AH
        AND   BH,0FH
        ADD   BH,30H
        INC   DI
        MOV   [DI],BH
        INC   DI
            
        MOV   AH,BL         ;处理分钟
        AND   AH,0F0H
        MOV   CX,4
        SHR   AH,CL
        ADD   AH,30H
        INC   DI
        MOV   [DI],AH
        AND   BL,0FH
        ADD   BL,30H
        INC   DI
        MOV   [DI],BL
        INC   DI
       
       
        MOV   AH,DH      ;处理秒
        AND   AH,0F0H
        MOV   CX,4
        SHR   AH,CL
        ADD   AH,30H
        INC   DI
        MOV   [DI],AH
        AND   DH,0FH
        ADD   DH,30H
        INC   DI
        MOV   [DI],DH
;*******完成时间显示********
        
        LEA   DX,TIME
        MOV   AH,9
        INT   21H
;*********延时处理***********
        MOV   CX,0AFFH
DELAY:  NOP
        MOV   DX,0FFFH
DE2:    DEC   DX
        CMP   DX,1
        JNZ   DE2
        LOOP  DELAY
;********************
        
        MOV   AH,0BH
        INT   21H
        CMP   AL,0
        JNE   YES
        JMP   NEAR PTR GO   
YES:    MOV   AH,01H
        INT   16H
        CMP   AL,1BH
        JNE   PASS
        JMP   NEAR PTR EXIT
PASS:   CALL  STIME
        JMP   NEAR PTR GO
        
        
STIME   PROC  NEAR
        MOV   AH,06H
        MOV   BH,07
        MOV   CX,0
        MOV   DX,184FH
        INT   10H         ;清屏

        MOV   AH,2
        MOV   DH,0
        MOV   DL,0
        MOV   BH,0
        INT   10H          ;光标控制        
 
AGAIN:  LEA   DX,INPUT
        MOV   AH,09H
        INT   21H
        LEA   DX,BUF
        MOV   AH,0CH
        MOV   AL,0AH
        INT   21H
;*********对时间码制进行转换并设置时间********

        LEA   DI,BUF
        LEA   SI,TIMEF
        INC   DI
        MOV   AL,[DI]
        CMP   AL,8
;*********由于直接用jne超出128字节,稍做修改****
        JE    FIT
        JMP   NEAR PTR   ERROR
FIT:    INC   DI
        MOV   CX,3
        MOV   DL,10
TRAN:   MOV   AH,0
        MOV   AL,[DI]
        SUB   AL,30H
        JL    ERROR
        CMP   AL,09H
        JG    ERROR
        PUSH  CX
        MOV   CX,4
        SAL   AL,CL
        POP   CX
        INC   DI
        MOV   BL,[DI]
        SUB   BL,30H
        JB    ERROR
        CMP   BL,09H
        JA    ERROR
        AND   BL,0FH
        OR    AL,BL
        MOV   [SI],AL
        CMP   CL,1
        JE    SKIP
        INC   SI
        INC   DI       
        MOV   AL,[DI]
        CMP   AL,3AH
        JNE   ERROR
        INC   DI
SKIP:   LOOP  TRAN
        LEA   SI,TIMEF
        MOV   AL, [SI]
        CMP   AL,23H
        JA    ERROR
        INC   SI
        MOV   AL,[SI]
        CMP   AL,59H
        JA    ERROR
        INC   SI
        MOV   AL,[SI]
        CMP   AL,59H
        JA    ERROR
        
;*********设置时间*******
        LEA   SI,TIMEF
        MOV   CH,[SI]
        INC   SI
        MOV   CL,[SI]
        INC   SI
        MOV   DH,[SI]
        MOV   DL,0
        MOV   AH,03H
        INT   1AH  
                
        

;*******************************************
        
        MOV   AH,06H
        MOV   BH,07
        MOV   CX,0
        MOV   DX,184FH
        INT   10H         ;清屏
        
        MOV   AH,2
        MOV   DH,0
        MOV   DL,0
        MOV   BH,0
        INT   10H          ;光标控制
       
        LEA   DX,TIPS
        MOV   AH,9
        INT   21H
        JMP   ENST       

ERROR:  MOV   AH,06H
        MOV   BH,07
        MOV   CX,0
        MOV   DX,184FH
        INT   10H         ;清屏

        MOV   AH,2
        MOV   DH,0
        MOV   DL,0
        MOV   BH,0
        INT   10H          ;光标控制  
 
        LEA   DX,ERRORM
        MOV   AH,9
        INT   21H
        JMP   AGAIN  
ENST:   RET
STIME   ENDP

EXIT:   RET
FTH	ENDP
CODE    ENDS
        END 

⌨️ 快捷键说明

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