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

📄 rain.asm

📁 基于汇编的模拟洗衣机编程
💻 ASM
字号:
       STACK  SEGMENT   STACK
              DW        64 DUP(?)
       STACK  ENDS
        DATA  SEGMENT
         POW  DB        ' WASHMACHINE IS READY... POWER: PRESS P',0DH,0AH,'$'
         GAI  DB        ' CLOSE: PRESS C',0DH,0AH,'$'
          MO  DB        ' SELECT THE STYLE: BIAOZHUN-B  QINGROU-Q JINPAO-J',0DH,0AH,'$'
        SHUI  DB        ' SELECT THE WATER: PRESS 1 OR 2 OR 3',0DH,0AH,'$'
         CUN  DB        0,0,0,0,0,0
         XIN  DB        0DH,' *',0AH,0DH,'$'
         PAO  DB        ' JIN PAO.....',0DH,0AH,'$'
          XI  DB        ' XI......',0AH,0DH,'$'
         ROU  DB        ' QING ROU......',0DH,0AH,'$'
        OVER  DB        ' CLOTHES HAVE BEEN WASHED',0DH,0AH,'$'
         TUO  DB        ' tuoshuizhong...',0DH,0AH,'$'
         WEI  DB        ' JI GAI WEI GUAN',0DH,0AH,'$'
     OLD_OFF  DW        0
     OLD_SEG  DW        0
          BB  DW        ?
          QQ  DB        'JIN SHUI',0DH,0AH,'$'
        DATA  ENDS
        CODE  SEGMENT
              ASSUME    CS:CODE
      START:  MOV       AX,DATA     ;主程序
              MOV       DS,AX
              LEA       SI,CUN
         A1:  MOV       DX,OFFSET POW           ;开电源
              MOV       AH,09H
              INT       21H
              MOV       AH,01H
              INT       21H
              CMP       AL,'P'
              JNZ       A1
              MOV       DX,OFFSET GAI           ;关盖子(以后就是洗衣服,其实开关盖子对洗衣服没有影响)
              MOV       AH,09H
              INT       21H
              MOV       AH,01H
              INT       21H
              MOV       [SI],AL
       MOHI:  MOV       DX,OFFSET MO            ;选择模式
              MOV       AH,09H
              INT       21H
              MOV       AH,01H
              INT       21H
              MOV       [SI+1],AL
              JIN:      MOV DX,OFFSET SHUI      ;    选择水量
              MOV       AH,09H
              INT       21H
              MOV       AH,01H
              INT       21H
              CMP       AL,'1'
              JZ        X3
              CMP       AL,'2'
              JZ        X2
              CMP       AL,'3'
              JZ        X1
              JMP       JIN
         X1:  MOV       DX,OFFSET XIN           ;用一个*表示小水量
              MOV       AH,09H
              INT       21H
         X2:  MOV       DX,OFFSET XIN           ;用两个*表示中水量
              MOV       AH,09H
              INT       21H
         X3:  MOV       DX,OFFSET XIN           ;用三个*表示大水量
              MOV       AH,09H
              INT       21H
              MOV       AL,BYTE PTR[SI+1]       ;判断所选的模式
              CMP       AL,'B'
              JZ        BIAO
              CMP       AL,'Q'
              JZ        QING
              CMP       AL,'J'
              JZ        JINP
              JMP       MOHI
              JINP:     MOV       DX,OFFSET QQ
              MOV       AH,09H
              INT       21H
              MOV       DX,OFFSET PAO           ;浸泡 (浸泡模式除了多个浸泡外,其他的和标准模式是一样的)
              MOV       AH,09H
              INT       21H
              MOV       BX,5
              MOV       CX,18
              CALL      TIME_DELAY
              JMP       HEHE
       BIAO:  MOV       DX,OFFSET QQ            ;标准模式下的洗衣服和脱水
              MOV       AH,09H
              INT       21H
       HEHE:  MOV       DX,OFFSET XI
              MOV       AH,09H
              INT       21H
              CALL      MAIN
              MOV       CX,18
              MOV       BX,5
              CALL      TIME_DELAY
              CMP       BYTE PTR[SI],'C'        ;脱水时保证关盖子(判断)
              JNZ       TT
         UI:  MOV       DX,OFFSET TUO
              MOV       AH,09H
              INT       21H
              CALL      MAIN
              MOV       CX,18
              MOV       BX,5
              CALL      TIME_DELAY
              JMP       EXIT
         TT:  MOV       DX,OFFSET WEI
              MOV       AH,09H
              INT       21H
              MOV       AH,01H
              INT       21H
              CMP       AL,'C'
              JZ        UI
              JNZ       TT
       QING:  MOV       DX,OFFSET QQ            ;轻柔模式下的洗衣和脱水
              MOV       AH,09H
              INT       21H
              MOV       DX,OFFSET ROU
              MOV       AH,09H
              INT       21H
              MOV       DX,OFFSET XI
              INT       21H
              CALL      MAIN
              MOV       CX,18
              MOV       BX,9
              CALL      TIME_DELAY
              CMP       BYTE PTR[SI],'C'        ;脱水时保证关盖子(判断)
              JNZ       T3
         YI:  MOV       DX,OFFSET TUO
              MOV       AH,09H
              INT       21H
              CALL      MAIN
              MOV       CX,18
              MOV       BX,5
              CALL      TIME_DELAY
              JMP       EXIT
         T3:  MOV       DX,OFFSET WEI
              MOV       AH,09H
              INT       21H
              MOV       AH,01H
              INT       21H
              CMP       AL,'C'
              JZ        YI
              JNZ       T3
       EXIT:  MOV       DX,OFFSET OVER          ;主程序结束
              MOV       AH,09H
              INT       21H
              MOV       AH,4CH
              INT       21H
              
              
        
  TIME_DELAY  PROC                  ;延时子程序
              PUSH      DS
              PUSH      ES
              PUSH      BX
              MOV       AX,351CH
              INT       21H
              MOV       OLD_OFF,BX
              MOV       BX,ES
              MOV       OLD_SEG,BX
              POP       BX
              POP       ES
              MOV       AX,251CH
              MOV       DX,SEG NEW_1CH
              PUSH      DS
              MOV       DS,DX
              MOV       DX,OFFSET NEW_1CH
              INT       21H
              POP       DS
       AGAI:  CMP       BX,00H
              JNZ       AGAI
              MOV       AX,251CH
              MOV       DX,OLD_SEG
              PUSH      DX
              MOV       DX,OLD_OFF
              POP       DS
              INT       21H
              POP       DS
              RET
  TIME_DELAY  ENDP
     NEW_1CH  PROC                  ;设置中断子程序
              DEC       CX
              JNZ       L2
              MOV       CX,18
              MOV       DX,BX
              AND       DX,0FH
              OR        DX,30H
              MOV       AH,02H
              INT       21H
              DEC       BX
         L2:  IRET
     NEW_1CH  ENDP
        MAIN  PROC                  ;模拟电机转动子程序
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              MOV       BB,02H
          L:  MOV       DL,'\'
              MOV       AH,02H
              INT       21H
              MOV       CX,18
              MOV       BX,1
              CALL      AA
              CALL      TIME
              MOV       DL,'-'
              MOV       AH,02H
              INT       21H
              MOV       CX,18
              MOV       BX,1
              CALL      AA
              CALL      TIME
              MOV       DL,'/'
              MOV       AH,02H
              INT       21H
              MOV       CX,18
              MOV       BX,1
              CALL      AA
              CALL      TIME
              DEC       BB
              CMP       BB,0
              JNZ       L
              POP       DX
              POP       CX
              POP       BX
              POP       AX
        MAIN  ENDP
          AA  PROC      NEAR        ;光标控制子程序
              PUSH      CX
              MOV       BH,0
              MOV       AH,03H
              INT       10H
              MOV       DL,0
              MOV       AH,02H
              INT       10H
              POP       CX
              RET
          AA  ENDP
        TIME  PROC                  ;另一延时子程序
              PUSH      DS
              PUSH      ES
              PUSH      BX
              MOV       AX,351CH
              INT       21H
              MOV       OLD_OFF,BX
              MOV       BX,ES
              MOV       OLD_SEG,BX
              POP       BX
              POP       ES
              MOV       AX,251CH
              MOV       DX,SEG NEW1CH
              PUSH      DS
              MOV       DS,DX
              MOV       DX,OFFSET NEW1CH
              INT       21H
              POP       DS
      AGAIN:  CMP       BX,00H
              JNZ       AGAIN
              MOV       AX,251CH
              MOV       DX,OLD_SEG
              PUSH      DX
              MOV       DX,OLD_OFF
              POP       DS
              INT       21H
              POP       DS
              RET
        TIME  ENDP
      NEW1CH  PROC                  ;另一光标控制子程序
              DEC       CX
              JNZ       L1
              MOV       CX,18
              MOV       DX,BX
              AND       DX,0FH
              OR        DX,30H
              DEC       BX
         L1:  IRET
      NEW1CH  ENDP
        CODE  ENDS
              END       START

⌨️ 快捷键说明

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