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

📄 tfcl.asm

📁 大学微机原理课程设计之一-------交通灯 源码。比较作孽
💻 ASM
📖 第 1 页 / 共 4 页
字号:
              MOV       CX,01H
              INT       10H
              INC       UPPER_COL
              POP       CX
              LOOP      R_N3
       R_N3:  POP       BX
              MOV       UPPER_COL,BL
              POP       BX
              MOV       UPPER_ROW,BL
              RET
      NORTH3  ENDP
   ;*************************************  SOUTH 3
      SOUTH3  PROC      NEAR
              MOV       BL,UNDER_ROW
              PUSH      BX
              MOV       BL,UNDER_COL
              PUSH      BX
    SOUTH_3:  MOV       AH,02H
              MOV       DH,UNDER_ROW
              MOV       DL,UNDER_COL
              MOV       BH,00H
              INT       10H
              CMP       CX,03H
              JZ        SOUTH_3_A1
              CMP       CX,02H
              JZ        SOUTH_3_A3
              CMP       CX,01H
              JZ        SOUTH_3_A2
 SOUTH_3_A1:  PUSH      CX
              MOV       DI,SEG DAT2
              MOV       ES,DI
              MOV       BP,OFFSET DAT2
              MOV       AL,00H
              MOV       BL,WHITE
              MOV       AH,13H
              MOV       CX,01H
              INT       10H
              INC       UNDER_COL
              POP       CX
              LOOP      SOUTH_3
 SOUTH_3_A3:  PUSH      CX
              MOV       DI,SEG DAT2
              MOV       ES,DI
              MOV       BP,OFFSET DAT2
              MOV       AL,00H
              MOV       BL,YELLOW
              MOV       AH,13H
              MOV       CX,01H
              INT       10H
              INC       UNDER_COL
              POP       CX
              LOOP      SOUTH_3
 SOUTH_3_A2:  PUSH      CX
              MOV       DI,SEG DAT2
              MOV       ES,DI
              MOV       BP,OFFSET DAT2
              MOV       AL,00H
              MOV       BL,WHITE
              MOV       AH,13H
              MOV       CX,01H
              INT       10H
              INC       UNDER_COL
              POP       CX
              LOOP      R_S3
       R_S3:  POP       BX
              MOV       UNDER_COL,BL
              POP       BX
              MOV       UNDER_ROW,BL
              RET
      SOUTH3  ENDP
 ;*************************************  WEST 3
       WEST3  PROC      NEAR
              MOV       BL,LEFT_ROW
              PUSH      BX
              MOV       BL,LEFT_COL
              PUSH      BX
     WEST_3:  MOV       AH,02H
              MOV       DH,LEFT_ROW
              MOV       DL,LEFT_COL
              MOV       BH,00H
              INT       10H
              CMP       CX,03H
              JZ        WEST_3_A1
              CMP       CX,02H
              JZ        WEST_3_A3
              CMP       CX,01H
              JZ        WEST_3_A2
  WEST_3_A1:  PUSH      CX
              MOV       DI,SEG DAT2
              MOV       ES,DI
              MOV       BP,OFFSET DAT2
              MOV       AL,00H
              MOV       BL,WHITE
              MOV       AH,13H
              MOV       CX,01H
              INT       10H
              INC       LEFT_COL
              POP       CX
              LOOP      WEST_3
  WEST_3_A3:  PUSH      CX
              MOV       DI,SEG DAT2
              MOV       ES,DI
              MOV       BP,OFFSET DAT2
              MOV       AL,00H
              MOV       BL,YELLOW
              MOV       AH,13H
              MOV       CX,01H
              INT       10H
              INC       LEFT_COL
              POP       CX
              LOOP      WEST_3
  WEST_3_A2:  PUSH      CX
              MOV       DI,SEG DAT2
              MOV       ES,DI
              MOV       BP,OFFSET DAT2
              MOV       AL,00H
              MOV       BL,WHITE
              MOV       AH,13H
              MOV       CX,01H
              INT       10H
              INC       LEFT_COL
              POP       CX
              LOOP      R_W3
       R_W3:  POP       BX
              MOV       LEFT_COL,BL
              POP       BX
              MOV       LEFT_ROW ,BL
              RET
       WEST3  ENDP
 ;*************************************  EAST3
       EAST3  PROC      NEAR
              MOV       BL,RIGHT_ROW
              PUSH      BX
              MOV       BL,RIGHT_COL
              PUSH      BX
     EAST_3:  MOV       AH,02H
              MOV       DH,RIGHT_ROW
              MOV       DL,RIGHT_COL
              MOV       BH,00H
              INT       10H
              CMP       CX,03H
              JZ        EAST_3_A1
              CMP       CX,02H
              JZ        EAST_3_A3
              CMP       CX,01H
              JZ        EAST_3_A2
  EAST_3_A1:  PUSH      CX
              MOV       DI,SEG DAT2
              MOV       ES,DI
              MOV       BP,OFFSET DAT2
              MOV       AL,00H
              MOV       BL,WHITE
              MOV       AH,13H
              MOV       CX,01H
              INT       10H
              INC       RIGHT_COL
              POP       CX
              LOOP      EAST_3
  EAST_3_A3:  PUSH      CX
              MOV       DI,SEG DAT2
              MOV       ES,DI
              MOV       BP,OFFSET DAT2
              MOV       AL,00H
              MOV       BL,YELLOW
              MOV       AH,13H
              MOV       CX,01H
              INT       10H
              INC       RIGHT_COL
              POP       CX
              LOOP      EAST_3
  EAST_3_A2:  PUSH      CX
              MOV       DI,SEG DAT2
              MOV       ES,DI
              MOV       BP,OFFSET DAT2
              MOV       AL,00H
              MOV       BL,WHITE
              MOV       AH,13H
              MOV       CX,01H
              INT       10H
              INC       RIGHT_COL
              POP       CX
              LOOP      R_E3
       R_E3:  POP       BX
              MOV       RIGHT_COL,BL
              POP       BX
              MOV       RIGHT_ROW ,BL
              RET
       EAST3  ENDP
        MOD3  ENDP
 ;****************************************************延时子程序 及键盘控制1
      DELAY1  PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
      MAIN1:  MOV       INTFLAG,0
              MOV       COUNT ,18
              MOV       AL,NS
              MOV       SECOND ,AL
              MOV       AH,35H      ;读取中断向量
              MOV       AL,08H
              INT       21H
              MOV       OLD_OFF,BX
              MOV       OLD_SEG,ES
              IN        AL,21H
              MOV       OLD_MSK,AL
              MOV       AH,02H
              MOV       DH,06
              MOV       DL,25
              MOV       BH,00H
              INT       10H
              CLI                   ;设置中断向量
              PUSH      DS
              MOV       AH,25H
              MOV       AL,08H
              MOV       DX,SEG INTERRUPT2
              MOV       DS,DX
              MOV       DX,OFFSET INTERRUPT2
              INT       21H
              POP       DS
              MOV       AL,OLD_MSK
              AND       AL,11111110B
              STI
  MAINLOOP1:  MOV       AH,0BH      ;test keyboard
              INT       21H
              CMP       AL,00H
              JE        CHK_INT1
              MOV       AH,08H      ;get key
              INT       21H
              CMP       AL,72H      ;'r'
              JZ        RESTOR1
              CMP       AL,63H      ;'c'
              JZ        CFG_NS1
              CMP       AL,64H      ;'d'
              JZ        CFG_WE1
              CMP       AL,65H      ;'e'
              JZ        CFG1
              CMP       AL,6EH      ;'n'
              JZ        CFG_N1
              CMP       AL,1BH      ;'ESC'
              JNE       CHK_INT1
              JMP       QUIT1
    RESTOR1:  CALL      RESTORE1
              JMP       MAIN1
    CFG_NS1:  CALL      CFIG_NS1
              JMP       MAIN1
    CFG_WE1:  CALL      CFIG_WE1
              JMP       MAIN1
     CFG_N1:  CALL      CFIG_N1
              JMP       CHK_INT1
       CFG1:  MOV       AL,LEE
              CMP       AL,0
              JZ        LEE1
              MOV       LEE,0
              JMP       RET11
       LEE1:  MOV       LEE,1
      RET11:  JMP       RET12
 MAINLOOP11:  JMP       MAINLOOP1
      QUIT1:  CLI
              PUSH      DS
              PUSH      ES
              MOV       AX,DS
              MOV       ES,AX
              MOV       AH,25H
              MOV       AL,08H
              MOV       DX,ES:OLD_SEG
              MOV       DS,DX
              MOV       DX,ES:OLD_OFF
              INT       21H
              POP       ES
              POP       DS
              MOV       AL,OLD_MSK
              OUT       21H,AL
              STI
              MOV       AH,4CH      ;exit
              INT       21H
   CHK_INT1:  CMP       INTFLAG,0   ;计数18次,则减一秒
              JE        MAINLOOP11
              MOV       INTFLAG,0
              DEC       COUNT
              JNE       MAINLOOP11
              MOV       COUNT,18
              MOV       AL,SECOND
              DEC       AL
              DAS
              MOV       SECOND,AL
              CMP       SECOND,0    ;等于0则返回
              JA        REFRESH1
      RET12:  JMP       STOP1
   REFRESH1:  MOV       AH,02H      ;转成ASC 并输出
              MOV       DH,05
              MOV       DL,25
              MOV       BH,00H
              INT       10H
              MOV       DH,SECOND
              MOV       DL,DH
              AND       DL,11110000B
              MOV       CL,04
              SHR       DL,CL
              OR        DL,30H
              MOV       AH,0EH
              MOV       AL,DL
              INT       10H
              MOV       DL,DH
              AND       DL,00001111B
              OR        DL,30H
              MOV       AH,0EH
              MOV       AL,DL
              INT       10H
              MOV       AH,02H
              MOV       DH,18
              MOV       DL,0
              MOV       BH,00H
              INT       10H
              MOV       AH,02H
              MOV       AL,20H
              INT       21H
              MOV       AH,02H
              MOV       AL,20H
              INT       21H
              JMP       MAINLOOP1
      STOP1:  POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
      DELAY1  ENDP
    RESTORE1  PROC      NEAR        ;复位
              MOV       AL,20H
              MOV       WE,AL
              MOV       NS,AL
              RET
    RESTORE1  ENDP
    CFIG_NS1  PROC      NEAR        ;数据输入  ASC转BCD
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              MOV       AH,02H
              MOV       DH,17
              MOV       DL,10
              MOV       BH,00H
              INT       10H
              MOV       AH,09H
              MOV       DX,OFFSET DAT5
              INT       21H
              MOV       AH,01H
              INT       21H
              SUB       AL,30H
              DAS
              SHL       AL,4
              MOV       BH,AL
              AND       BH,11110000B
              MOV       AH,01H
              INT       21H
              SUB       AL,30H
              DAS
              MOV       BL,AL
              AND       BL,00001111B
              ADD       BL,BH
              DAA
              CMP       LEE,0
              JNZ       CC11
              MOV       WE,BL
              JMP       DD11
       CC11:  MOV       NS,BL
       DD11:  POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
    CFIG_NS1  ENDP
    CFIG_WE1  PROC      NEAR        ;数据输入    ASC转BCD
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              MOV       AH,02H
              MOV       DH,17
              MOV       DL,10
              MOV       BH,00H
              INT       10H
              MOV       AH,09H
              MOV       DX,OFFSET DAT5
              INT       21H
              MOV       AH,01H
              INT       21H
              SUB       AL,30H
              DAS
              SHL       AL,4
              MOV       BH,AL
              AND       BH,11110000B
              MOV       AH,01H
              INT       21H
              SUB       AL,30H

⌨️ 快捷键说明

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