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

📄 test1.asm

📁 大学微机原理课程设计之一-------交通灯 源码。比较作孽
💻 ASM
字号:
        DATA  SEGMENT
     INTFLAG  DB        0
       COUNT  DB        18
      SECOND  DB        9
      MINUTE  DB        0
        HOUR  DB        0
     OLD_SEG  DW        ?
     OLD_OFF  DW        ?
     OLD_MSK  DB        ?
       SECON  DB        09H
        DATA  ENDS

       STACK  SEGMENT   STACK
              DW        200 DUP(?)
       STACK  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA

      START:  PUSH      DS
              XOR       AX,AX
              PUSH      AX
              MOV       AX,DATA
              MOV       DS,AX
	
              MOV       AH,35H
              MOV       AL,08H
              INT       21H
              MOV       OLD_OFF,BX
              MOV       OLD_SEG,ES
              IN        AL,21H
              MOV       OLD_MSK,AL

              CLI
              PUSH      DS
              MOV       AH,25H
              MOV       AL,08H
              MOV       DX,SEG INTERRUPT
              MOV       DS,DX
              MOV       DX,OFFSET INTERRUPT
              INT       21H
              POP       DS
              MOV       AL,OLD_MSK
              AND       AL,11111110B
              STI

   MAINLOOP:
              MOV       AH,0BH      ;test keyboard
              INT       21H
              CMP       AL,00H
              JE        CHK_INT
              MOV       AH,08H      ;get key
              INT       21H
              CMP       AL,1BH      ;'ESC'
              JNE       CHK_INT
	
              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_INT:
              CMP       INTFLAG,0
              JE        MAINLOOP
              MOV       INTFLAG,0

              DEC       COUNT
              JNE       MAINLOOP

              MOV       COUNT,18
              MOV       AL,SECOND
              DEC       AL
              DAA
              MOV       SECOND,AL

              CMP       SECOND,00H
              JA        REFRESH

              JMP       INTERRUPT

    REFRESH:
              MOV       AH,02H
              MOV       DL,0DH      ;'cr'
              INT       21H
              MOV       DH,0
              MOV       DL,DH
              AND       DL,11110000B
              MOV       CL,04
              SHR       DL,CL
              OR        DL,30H
              MOV       AH,02H
              INT       21H
              MOV       DL,DH
              AND       DL,00001111B
              OR        DL,30H
              MOV       AH,02H
              INT       21H
              JMP       MAINLOOP
   INTERRUPT  PROC      FAR
              PUSHF
              PUSH      AX
              PUSH      DS
              MOV       AX,DATA
              MOV       DS,AX

              MOV       INTFLAG,1

              MOV       AL,20H      ;EOI
              OUT       20H,AL
              POP       DS
              POP       AX
              POPF
              IRET
   INTERRUPT  ENDP
        CODE  ENDS
              END       START

⌨️ 快捷键说明

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