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

📄 shijian..txt

📁 显示系统时间
💻 TXT
字号:
CODE     SEGMENTk)8
        ASSUME  CS:CODE,DS:CODE,ES:CODE 
TIMEASC  DB      "00:00:",' 0"' 
TIMEBUF  DB      6 DUP (0)
OLD08H   DD      ?
LOCATE   DW      0
NEW08H   PROC    FAR
        CLI
        PUSH    AX
        PUSH    BX
        PUSH    CX
        PUSH    DX
        PUSH    SI
        PUSH    DI
        PUSH    DS
        PUSH    ES
        ;
        PUSH    CS
        POP     DS
        PUSH    CS
        POP     ES ; 这一段又进栈又出栈,是什么作用啊?
        CLD 
RETRY:   MOV     DI,OFFSET TIMEBUF
        MOV     AH,0  ;这一段是什么作用啊
RE_READ: MOV     AL,AH
        OUT     70H,AL  ;为什么要输出给端口70H,后面又是输入71H
        IN      AL,71H
        CMP     AL,TIMEBUF
        JZ      EXIT
        STOSB
        INC     AH
        CMP     AH,6
        JNZ     RE_READ
        MOV     DI,OFFSET TIMEASC+6
        MOV     AH,TIMEBUF+0
        CALL    BCD_TO_ASC
        MOV     DI,OFFSET TIMEASC+3
        MOV     AH,TIMEBUF+2
        CALL    BCD_TO_ASC
        MOV     DI,OFFSET  TIMEASC+3
        MOV     AH,TIMEBUF+2
        CALL    BCD_TO_ASC
        MOV     DI,OFFSET TIMEASC+0
        MOV     AH,TIMEBUF+4
        CALL    BCD_TO_ASC
         
        MOV     AH,3
        MOV     BH,0
        INT     10H;这段的功能是什么啊
        MOV     LOCATE,DX
        MOV     DX,0047H
        MOV     SI,OFFSET  TIMEASC
        MOV     CX,9
        CALL    DISP_STRING
        MOV     AL,2
        MOV     BH,0
        MOV     DX,LOCATE
        INT     10H
EXIT:    PUSHF
        CALL     CS:DWORD PTR  OLD08H
        POP      ES
        POP      DS
        POP      DI
        POP      SI
        POP      DX
        POP      CX
        POP      BX
        POP      AX
        IRET
NEW08H   ENDP
DISP_STRING PROC  NEAR
        PUSH     AX
        PUSH     BX
        PUSH     CX
        MOV      AH,2
        MOV      BH,0
        INT      10H
        MOV      BX,0007H 
RE_DISP: LODSB
        MOV      AH,0EH
        PUSH     CX 
        MOV      CX,1
        INT      10H
        POP      CX
        LOOP     RE_DISP
        POP      CX
        POP      BX
        POP      AX ;这一段是如何做到显示时间的?
        RET
DISP_STRING ENDP
BCD_TO_ASC  PROC  NEAR
        PUSH     CX
        MOV      AL,AH
        MOV      CL,4
        SHR      AL,CL
        OR       AL,30H
        STOSB
        MOV      AL,AH
        AND      AL,0FH
        OR       AL,30H
        STOSB
        POP      CX
        RET
BCD_TO_ASC       ENDP ; 这段bcd的转化思路是怎样的?
SET08H:  PUSH    CS
        POP     DS
        MOV     AX,3508H
        INT     21H|
        MOV     SI,OFFSET  OLD08H
        MOV     [SI],BX
        MOV     [SI+2],ES
        MOV     DX,OFFSET NEW08H
        MOV     AX,2508H
        INT     21H
        MOV     DX,OFFSET  SET08H
        ADD     DX,260
        INT     27H
CODE     ENDS
        END     SET08H

⌨️ 快捷键说明

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