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

📄 123.txt

📁 电子跑表 基于DVCC设计的电子跑表,是微机原理课程设计的题目,欢迎大家参考
💻 TXT
字号:
STACK1  SEGMENT   STACK

              DW        200 DUP (?)

          TP  DB        256 DUP(0)

         TPP  EQU       LENGTH TP

      STACK1  ENDS

        DATA  SEGMENT

        MESS  DB        0AH,0DH,'                          >>WELCOME to USE!<<        ',0AH,0DH,0AH,0DH

              DB        '          ***************>>ELECTRONIC  CLOCK<<****************',0AH,0DH 

              DB        '         *                                                    *',0AH,0DH

              DB       '        *             MAJOR : ELECTRONIC INFORMATION            *',0AH,0DH

              DB       '         *              CLASS : 0304                              *',0AH,0DH

              DB        '         *               NO    : 16                                *',0AH,0DH

              DB        '         *              NAME  : Yang Shiwei                       *',0AH,0DH

              DB        '        *             TEACHER:XIAO FENG                 *',0AH,0DH             

              DB        '         *                                                    *',0AH,0DH

              DB        '          ****************************************************','$'

     DBUFFER  DB        8 DUP (':'),12 DUP (' ')

        STR1  DB        0DH,0AH, 0AH,0DH,'   PLEASE INPUT  TIME(T) OR STOPWATCH(S) OR QUIT(Q) OR RESET(R) OR PAUSE(P):$'

        STR2  DB        0DH,0AH,0DH,0AH,'         The current time is : $'

       COUNT  DB        0

          T1  DB        '         The stopwatch time is:'

        TENH  DB        30H

        HOUR  DB        30H

              DB        ':'

        TENM  DB        30H

      MINUTE  DB        30H

              DB        ':'

        TENS  DB        30H

      SECOND  DB        30H,13,'$'  ;不换行

        DATA  ENDS

        CODE  SEGMENT

              ASSUME    CS:CODE,DS:DATA,ES:DATA,SS:STACK1

      START:  MOV       AX,DATA

              MOV       DS,AX

              MOV       ES,AX

              CALL      CLEAR       ;调用清屏子程序

              MOV       AH,02H

              MOV       DX,0000H    ;定显示位置

              MOV       BH,0

              INT       10H

              LEA       DX,MESS

              MOV       AH,09H

              INT       21H

              LEA       DX,STR1     ;显示提示信息

              MOV       AH,09

              INT       21H

          A:  MOV       AH,1        ;从键盘输入单个字符

              INT       21H

              CMP       AL,'S'

              JNE       B

              CALL      STOPWATCH

          B:  CMP       AL,'T'      ;AL='T'?

              JNE       D

              CALL      TIME        ;显示系统时间

          D:  CMP       AL,'Q'      ;AL='Q'?

              JNE       START

              MOV       AH,4CH      ;返回dos状态

              INT       21H

   STOPWATCH  PROC

              MOV       DX,0F1FH    ;定时间显示颜色位置

              MOV       CX,8        ;显示颜色长度

              MOV       BX,02CH     ;设置背景颜色(2)和前景颜色(C)

              MOV       AX,1300H

              INT       10H

              MOV       AH,02H

              MOV       DX,0F00H    ;定显示位置

              MOV       BH,0

              INT       10H

              PUSH      DS

              MOV       AX,0

              PUSH      AX

              CLI

              MOV       AX,DATA

              MOV       DS,AX

              MOV       AX,STACK1

              MOV       SS,AX

              MOV       SP,TPP

              MOV       AX,351CH

              INT       21H

              PUSH      BX

              PUSH      ES

              MOV       DX,SEG TIMER

              MOV       DS,DX

              LEA       DX,TIMER

              MOV       AX,251CH

              INT       21H

              MOV       AX,DATA

              MOV       DS,AX             

      CHECK:  MOV       AH,1

              INT       16H

              JZ        TICKON2

          E:  CLI

              MOV       AH,00H

              INT       16H

              CMP       AL,'S'

              JE        TICKON

              CMP       AL,'P'

              JE        TICKON1

              CMP       AL,'R'

              JE        RESET

              CMP       AL,'T'

              JE        T

              CMP       AL,'Q'

              JE        TICKOFF

              JMP       TICKON

          T:  JMP       START
TICKON1:  MOV       AX,DATA

              MOV       DS,AX

              MOV       AX,351CH

              INT       21H

              MOV       DX,SEG TIMER1

              MOV       DS,DX

              LEA       DX,TIMER1

              MOV       AX,251CH

              INT       21H

              MOV       AX,DATA

              MOV       DS,AX

              JMP       E

      RESET:  MOV       COUNT,0

              MOV       SECOND,30H

              MOV       TENS,30H

              MOV       MINUTE, 30H

              MOV       TENM,30H

              MOV       HOUR, 30H

              MOV       TENH,30H

              MOV       DX,OFFSET T1

              MOV       AH,9

              INT       21H

              MOV       AH,0

              INT       16H

              CMP       AL,'Q'

              JE        TICKOFF

              CMP       AL,'S'

              JNE       RESET             

     TICKON:  MOV       AX,351CH

              INT       21H

              MOV       DX,SEG TIMER

              MOV       DS,DX

              LEA       DX,TIMER

              MOV       AX,251CH

              INT       21H

              MOV       AX,DATA

              MOV       DS,AX

    TICKON2:  MOV       DX,OFFSET T1

              MOV       AH,9

              INT       21H

              JMP       CHECK

    TICKOFF:  CLI

              POP       DS

              POP       DX

              MOV       AX,251CH

              INT       21H

              STI                                   

              MOV       AH,4CH

              INT       21H

              RET

   STOPWATCH  ENDP

      TIMER1  PROC

              IRET

      TIMER1  ENDP

       TIMER  PROC      FAR

              PUSH      AX

              MOV       AX,DATA

              MOV       DS,AX

              ASSUME    DS:DATA

              INC       COUNT

              CMP       COUNT,18

              JL        EXIT        ;计数不满18跳回

              MOV       COUNT,0     ;计数满18清0重置

              INC       SECOND      ;秒加1

              CMP       SECOND,39H

              JLE       EXIT

              MOV       SECOND,30H  ;等于9清0重计

              INC       TENS        ;十位加一

              CMP       TENS,36H

              JL        EXIT

              MOV       TENS,30H

              INC       MINUTE

              CMP       MINUTE,39H

              JLE       EXIT

              MOV       MINUTE, 30H

              INC       TENM

              CMP       TENM,36H

              JL        EXIT

              MOV       TENM,30H

              INC       HOUR

              CMP       HOUR,39H

              JLE       EXIT

              MOV       HOUR, 30H

              INC       TENH

              CMP       TENH,32H

              JE        TIME1

              JL        EXIT

      TIME1:  CMP       HOUR , 34H

              JL        EXIT

              MOV       TENH,30H

       EXIT:  POP       AX

              IRET

       TIMER  ENDP

        TIME  PROC      NEAR        ;显示时间子程序

              MOV       AH,02H

              MOV       DX,0D25H    ;定显示位置

              MOV       BH,0

              INT       10H

              LEA       DX,STR2

              MOV       AH,9

              INT       21H

   DISPLAY1:  MOV       SI,0

              MOV       BX,100

              DIV       BL

              MOV       AH,2CH      ;取时间

              INT       21H

              MOV       AL,CH

              CALL      BCDASC      ;将时间数值转换成ASCII码字符

              INC       SI

              MOV       AL,CL

              CALL      BCDASC

              INC       SI

              MOV       AL,DH

              CALL      BCDASC

              MOV       BP,OFFSET DBUFFER

              MOV       DX,0F1FH    ;定时间显示颜色位置

              MOV       CX,8        ;显示颜色长度

              MOV       BX,02CH     ;设置背景颜色(2)和前景颜色(C)

              MOV       AX,1300H

              INT       10H

              MOV       AH,02H

              MOV       DX,0F26H    ;定显示位置,光标

              MOV       BH,0

              INT       10H

              MOV       BX,0018

         RE:  MOV       CX,0FFFFH

        REA:  LOOP      REA

              DEC       BX

              JNZ       RE

              MOV       AH,01H

              INT       16H

              JE        DISPLAY1

              JMP       A

              MOV       AX,4C00H

              INT       21H

              RET

        TIME  ENDP
BCDASC  PROC      NEAR        ;时间数值转换成ASCII码字符子程序

              PUSH      BX

              CBW

              MOV       BL,10

              DIV       BL

              ADD       AL,'0'

              MOV       DBUFFER[SI],AL

              INC       SI

              ADD       AH,'0'

              MOV       DBUFFER[SI],AH

              INC       SI

              POP       BX

              RET

      BCDASC  ENDP

      CLEAR  PROC      NEAR

              PUSH      AX          ;入栈保护现场

              PUSH      BX

              PUSH      CX

              PUSH      DX

              MOV       AX,0600H    ;ah=06(滚动)al=00(全屏空白)

              MOV       BH,02FH     ;设置背景颜色(2)和前景颜色(f)

              SUB       CX,CX

              MOV       DX,5F5FH

              INT       10H

              POP       DX          ;出栈恢复现场

              POP       CX

              POP       BX

              POP       AX

              RET

       CLEAR  ENDP      

        CODE  ENDS

              END       START




⌨️ 快捷键说明

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