七段码电子表程序

来源:互联网 发布:seo关键词布局 编辑:程序博客网 时间:2024/05/01 16:12

这是曾经汇编原理课程设计是的题目,效果如图:


现将源码共享出来:

 DATA  SEGMENT               ;*****定义please等提示信息*****
              STR       DB        20
              DB        50H,7,0,0
              DB        6CH,7,0,1
              DB        65H,7,0,1
              DB        61H,7,0,1
              DB        73H,7,0,1
              DB        65H, 7,0,1
              DB        70H,7,1,-10
              DB        72H,7,0,1
              DB        65H,7,0,1
              DB        73H,7,0,1
              DB        73H,7,0,1
              DB        53H,7,0,2
              DB        6BH,7,0,2
              DB        65H,7,0,1
              DB        79H,7,0,1
              DB        65H,7,0,2
              DB        78H,7,0,1
              DB        69H,7,0,1
              DB        74H,7,0,1
              DB        21H,7,0,1   ;*****定义0-9十个图形数字*****
          S0  DB        6           ;对S0进行定义
              DB        5FH,7,0,0
              DB        7CH,7,1,-1
              DB        7CH,7,1,0
              DB        5FH,7,0,1
              DB        7CH,7,0,1
              DB        7CH,7,-1,0
          SY  DB        2           ;对Sy进行定义
              DB        7CH,7,1,0
              DB        7CH,7,1,0
          S2  DB        5           ;对S2进行定义
              DB        5FH,7,0,0
              DB        7CH,7,1,1
              DB        5FH,7,0,-1
              DB        7CH,7,1,-1
              DB        5FH,7,0,1
          S3  DB        5           ;对S3进行定义
              DB        5FH,7,0,0
              DB        7CH,7,1,1
              DB        5FH,7,0,-1
              DB        7CH,7,1,1
              DB        5FH,7,0,-1
          S4  DB        4           ;对S4进行定义
              DB        7CH,7,1,0
              DB        5FH,7,0,1
              DB        7CH,7,1,1
              DB        7CH,7,-1,0
          S5  DB        5           ;对S5进行定义
              DB        5FH,7,0,0
              DB        7CH,7,1,-1
              DB        5FH,7,0,1
              DB        7CH,7,1,1
              DB        5FH,7,0,-1
          S6  DB        6           ;对S6进行定义
              DB        5FH,7,0,0
              DB        7CH,7,1,-1
              DB        5FH,7,0,1
              DB        7CH,7,1,1
              DB        5FH,7,0,-1
              DB        7CH,7,0,-1
          S7  DB        3           ;对S7进行定义
              DB        5FH,7,0,0
              DB        7CH,7,1,1
              DB        7CH,7,1,0
          S8  DB        7           ;对S8进行定义
              DB        7CH,7,1,0
              DB        5FH,7,-1,1
              DB        7CH,7,1,1
              DB        5FH,7,0,-1
              DB        7CH,7,1,1
              DB        5FH,7,0,-1
              DB        7CH,7,0,-1
          S9  DB        6           ;对S9进行定义
              DB        7CH,7,1,0
              DB        5FH,7,-1,1
              DB        7CH,7,1,1
              DB        5FH,7,0,-1
              DB        7CH,7,1,1
              DB        5FH,7,0,-1
         S11  DB        2           ;对S11进行定义
              DB        03H,7,1,0
              DB        03H,7,1,0
        DATA  ENDS                  ;定义以上量对后面的函数进行说明与符合汇编语言的语法相匹配
       STACK  SEGMENT
              DB        200 DUP (0)
       STACK  ENDS
        CODE  SEGMENT
              ASSUME    CS:CODE,SS:STACK,DS:DATA
      START:
              MOV       AX,DATA
              MOV       DS,AX
              MOV       AH,0        ;设置显示方式
              MOV       AL,4
              INT       10H
              MOV       AH,0BH      ;置彩色调板
              MOV       BH,0
              MOV       BL,1
              INT       10H
              MOV       AH,0BH      ;置彩色调板
              MOV       BH,1
              MOV       BL,4
              INT       10H
              MOV       AH,2        ;取系统时间
              INT       1AH
              MOV       AX,0
              MOV       BX,0
              MOV       AH,CH       ;取系统时间
              MOV       AL,CL       ;保存分钟
              MOV       BH,DH       ;保存秒
              MOV       BL,DL       ;保存百分之一秒
;取系统时间,并且保存1秒对后面程序的调用以及时间周期起到决定性的作用
         TT:
              PUSH      AX
              PUSH      BX
              MOV       AH,0
              MOV       AL,4
              INT       10H
              MOV       AH,0BH
              MOV       BH,0
              MOV       BL,1
              INT       10H
              MOV       AH,0BH
              MOV       BH,1
              MOV       BL,4
              INT       10H
              MOV       AH,1        ;读键盘缓冲区字符
              INT       16H
              JZ        WW
              MOV       AH,8        ;从键盘输入字符
              INT       21H
              CMP       AL,'s'      ;输入s,结束程序
              JE        TU          ;构建子函数,即对键盘的输入以及使调用信息与调用函数相结合使用
         WW:  POP       BX
              POP       AX
              CALL      XIAN        ;调用显示子程序
              PUSH      AX
         QU:  MOV       AH,2        ;取系统时间
              INT       1AH
              CMP       BH,DH
              JE        QU
              POP       AX
              INC       BH          ;对时间进行加1
              CMP       BH,100
              JL        TT
              MOV       BH,0
              INC       AL
              CALL      BEEP
              CMP       AL,100
              JL        TT
              MOV       AL,0
              INC       AH
              CMP       AH,24
              JL        TT
              MOV       AH,0
              JMP       TT
         TU:  MOV       AH,4CH
              INT       21H
              RET
        XIAN  PROC                  ;对时间值进行处理并显示的子程序
              PUSH      SI
              PUSH      DI
              PUSH      DX
              PUSH      CX
              PUSH      BX
              PUSH      AX
              POP       AX
              PUSH      AX
              MOV       BX,AX
              MOV       AX,0
              MOV       AL,BH
              MOV       CL,4
              SHR       AL,CL
              MOV       BL,AL
              MOV       DH,10
              MOV       DL,2
              CALL      FF
              POP       AX
              PUSH      AX
              MOV       BX,AX
              MOV       AX,0
              MOV       AL, BH
              AND       AL,0FH
              MOV       BL,AL
              MOV       DH,10
              MOV       DL,6
              CALL      FF
              MOV       DH,10
              MOV       DL,10
              MOV       BL,10
              CALL      FF
              POP       AX
              PUSH      AX
              MOV       CL,4
              SHR       AL,CL
              MOV       BL,AL
              MOV       DH,10
              MOV       DL,14
              CALL      FF
              POP       AX
              PUSH      AX
              AND       AL ,0FH
              MOV       BL,AL
              MOV       DH,10
              MOV       DL,18
              CALL      FF
              MOV       DH,10
              MOV       DL,22
              MOV       BL,10
              CALL      FF
              POP       AX
              POP       BX
              PUSH      BX
              PUSH      AX
              MOV       AX,0
              MOV       AL,BH
              MOV       CL,4
              SHR       AL,CL
              MOV       BL,AL
              MOV       DH,10
              MOV       DL,26
              CALL      FF
              POP       AX
              POP       BX
              PUSH      BX
              PUSH      AX
              MOV       AL,BH
              AND       AL,0FH
              MOV       BL,AL
              MOV       DH,10
              MOV       DL,30
              CALL      FF
              MOV       DH,0
              MOV       DL,15
              MOV       BL,22
              CALL      FF
              POP       AX
              POP       BX
              POP       CX
              POP       DX
              POP       DI
              POP       SI
              RET
        XIAN  ENDP                  ;调用函数,实现思路图中构想的对函数调用,即主函数对整个程序算法的控制与调用子函数实现的主要部分
          FF  PROC                  ;显示具体数值
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              CMP       BL,0
              JE        L0
              CMP       BL,1
              JE        L1
              CMP       BL,2
              JE        L2
              CMP       BL,3
              JE        L3
              CMP       BL,4
              JE        L4
              CMP       BL,5
              JE        L5
              CMP       BL,6
              JE        L6
              CMP       BL,7
              JE        L7
              CMP       BL,8
              JE        L8
              CMP       BL,9
              JE        L9
              CMP       BL,10
              JE        L10
              CMP       BL,22
              JE        LD
         L0:  LEA       DI,S0
              JMP       TY
         L1:  LEA       DI,SY
              JMP       TY
         L2:  LEA       DI,S2
              JMP       TY
         L3:  LEA       DI,S3
              JMP       TY
         L4:  LEA       DI,S4
              JMP       TY
         L5:  LEA       DI,S5
              JMP       TY
         L6:  LEA       DI,S6
              JMP       TY
         L7:  LEA       DI,S7
              JMP       TY
         L8:  LEA       DI,S8
              JMP       TY
         L9:  LEA       DI,S9
              JMP       TY
        L10:  LEA       DI,S11
              JMP       TY
         LD:  LEA       DI,STR
         TY:  MOV       AH,0FH      ;示方式
              INT       10H
              SUB       CX,CX
              MOV       CL,[DI]
              INC       DI
  PLOT_NEXT:
              ADD       DH,[DI+2]
              ADD       DL,[DI+3]
              MOV       AH,2
              INT       10H
              MOV       AL,[DI]
              MOV       BL,[DI+1]
              PUSH      CX
              MOV       CX,1
              MOV       AH,09
              INT       10H
              POP       CX
              ADD       DI,4
              LOOP      PLOT_NEXT
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              MOV       CX,100
         GG:  DEC       CX
              LOOP      GG
              RET
          FF  ENDP
       CLEAR  PROC
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              MOV       AH,6
              MOV       AL,0
              MOV       BH,1
              INT       10H
              POP       DX
              POP       CX
              POP       BX
              POP       AX
re t
       CLEAR  ENDP
        BEEP  PROC
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              MOV       AL ,10110110B
              OUT       43H,AL
              MOV       AX,533H
              OUT       42H,AL
              MOV       AL,AH
              OUT       42H,AL
              IN        AL,61H
              MOV       AH,AL
              OR        AL,03
              OUT       61H,AL
              SUB       CX,CX
              MOV       BL,28H
         G7:  LOOP      G7
              DEC       BL
              JNZ       G7
              MOV       AL,AH
              OUT       61H,AL
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
beep endpcode ends


              END       START       ;主函数的调用结束之后就要进行输出,所以这部分实现的就是对屏幕的设计和输出显示,以及屏幕动态的显示出计时器