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

📄 1.asm

📁 智能洗衣机控制程序 可以用信息提示工作的状态(进水、浸泡、洗衣、脱水、结束)。 可以显示工作剩余时间(洗衣程序可自定义
💻 ASM
字号:
cursor      MACRO    op1,op2                    ;宏定义
            PUSH     AX
            PUSH     BX
            PUSH     DX
            MOV      BH,0
            MOV      DH,op1
            MOV      DL,op2
            MOV      AH,02H                     ;置光标位置
            INT      10H
            POP      DX
            POP      BX
            POP      AX
ENDM
;******************************************************************************
STACK       SEGMENT  STACK                      ;定义堆栈段
            DW       100 DUP(?)  
STACK       ENDS
;******************************************************************************
DATA        SEGMENT                             ;定义数据段
KAISHI	    DB	     'The washer will start to work when input',27H,'s',27H,'.',0DH,0AH,'$'
MOSHI	    DB	     'Please press the key F1 for selecting the standard mode.',0DH,0AH,'$'
CUO         DB       'It's wrong!',0DH,0AH,'$'
BIAOZHUN    DB       '-----BIAO ZHUN MO SHI.',0DH,0AH,'$'
JINSHUI     DB       '-----JIN SHUI JIE DUAN.',0DH,0AH,'$'
JINPAO      DB	     'The washer is steeping.',0DH,0AH,'$'
XIYI	    DB	     'The washer is washing.',0DH,0AH,'$'
JIEGAI	    DB	     'The washer will begin to evaporate when input: ',27H,'t',27H,'.',0DH,0AH,'$'
TUOSHUI	    DB	     'The washer is evaporating.',0DH,0AH,'$'
GUAN	    DB	     'The washer will stop working when input ',27H,'e',27H,'.',0DH,0AH,'$'
SECOND      DB 	     ?
FAN_POS	    DW	     0
DIS_CLO	    DB	     5
DISDATA     DB       0
JINPAO_DS   DB       12
XIYI_DS     DB       10
FAN         DB       '\','-','/'
XX          DB       0H
STEP	    DB       0
DATA        ENDS
;******************************************************************************
CODE        SEGMENT
ASSUME      DS:DATA,CS:CODE,SS:STACK
main	    proc     far
START:      MOV      AX,DATA
            MOV      DS,AX
	        MOV      ES,AX
            MOV	     DX,OFFSET KAISHI
	        MOV	     AH,09H
	        INT      21H
wait1:	    MOV	     AH,07H
	        INT	     21H
	        CMP	     AL,'s'
	        JE	     S_s
EQU_S:      CMP	     AL,'S'
	        JNE	     wait1
S_s	:       MOV      DX,OFFSET MOSHI
	        MOV      AH,09H
	        INT      21H
        
GET_EC:     MOV      AH,8
            INT      21H
            CMP      AL,3BH
            JE       Y1
            JMP    GET_EC  
Y1:         CALL     OPTION
            cursor   18,5	     
MAIN_OVER:  MOV      DX,OFFSET GUAN
	        MOV      AH,09H
	        INT	     21H
wait2:	    MOV      AH,01H
	        INT      21H
	        CMP      AL,'e'
	        JNE      wait2	
            MOV      AH,09H
	        INT      21H
	        MOV      AH,4CH
	        INT      21H
main   	    ENDP
;******************************************************************************
;标准模式的子程序
OPTION      PROC
PUSH     AX
            PUSH     BX
            PUSH     CX
       	    PUSH     DX
            MOV	     DX,OFFSET BIAOZHUN
	        MOV	     AH,09H
	        INT	     21H
            MOV      DX,OFFSET JINSHUI
            MOV      AH,09H
	        INT      21H
  	        MOV	     AL,5                       ;进水定时
	        MOV	     SECOND,AL
            CALL     DINGSHI
	cursor	    6,5
            MOV      DX,OFFSET JINPAO
	        MOV      AH,09H
	        INT      21H
	        MOV	     AL,12		;浸泡定时
	        MOV	     SECOND,AL
            CALL     DINGSHI

cursor	    9,5		
            MOV      DX,OFFSET XIYI
	        MOV      AH,09H
	        INT      21H
	        MOV      AL,10		
	        MOV	     SECOND,AL
	        MOV	     AL,1
	        MOV	     STEP,AL
            CALL     DINGSHI			        ;洗衣定时

cursor	    12,5	
            MOV      DX,OFFSET JIEGAI
	        MOV      AH,09H
	        INT      21H

wait3:	    MOV      AH,01H
	        INT      21H
	        CMP      AL,'t'
	        JNE      wait3

cursor	    15,5
            MOV      DX,OFFSET tuoshui
	        MOV      AH,09H
	        INT      21H
            MOV	     AL,5		                ;脱水定时
            MOV      SECOND,AL
            CALL     DINGSHI
            POP      DX
            POP      CX
            POP      BX
            POP      AX
            RET
OPTION     ENDP 
;******************************************************************************
;定时子程序
DINGSHI     PROC     NEAR
	        PUSH     AX
            PUSH     BX
            PUSH     CX
            PUSH     DX
	        MOV      AH,2CH                     ;取系统时间
	        INT      21H
            MOV      BH,DH				        ;保存起始时间:秒
	        MOV	     AL,SECOND
	        MOV	     DISDATA,AL
            CALL     DIS
	
 TIMING:    CMP	     AL,0
	        JE	     TIME_OVER
 in_scend:  MOV      AH,2CH
	        INT      21H
	        CMP	     BH,DH
	        JE	     in_scend			        ;时间不到一秒
	        MOV	     BH,DH
	        MOV      AL,SECOND
	    DEC	     AL
	        MOV	     SECOND,AL
	        MOV	     DISDATA,AL
	        CALL     DIS
	        JMP      TIMING
TIME_OVER:  POP      DX
            POP      CX
            POP      BX
            POP      AX
            RET
DINGSHI     ENDP
;******************************************************************************
;显示子程序开始
DIS	        proc
            PUSH     AX
            PUSH     BX
            PUSH     CX
            PUSH     DX
            PUSH     SI 	
	        MOV	     CX,0
	        MOV      AL,DISDATA
	
 LOP1:      AND	     AX,0FFH
	        CMP	     AL,0
	        JE	     op_temp1
 DIV1:      MOV	     BL,10
	        DIV	     BL
	        MOV	     BL,AH
	        MOV	     BH,0
            PUSH     BX
	        INC	     CH				            ;用于位数记数
	        JMP	     LOP1	
op_temp1:   PUSH     CX
	        MOV	     AH,3
	        INT	     10H
	        MOV	     BL,DIS_CLO
	        SUB	     BL,3
	        INC	     BL				
cursor	    DH,BL
	        MOV	     DL,' '
	        MOV	     AH,02H
	        INT	     21H
	        INT	     21H
	        INT	     21H
	        POP      CX
SET_DIS_POS:MOV	     AH,DIS_CLO
	        SUB      AH,CH
	        INC	     AH
cursor      DH,AH
DIS_CHAR:   CMP	     CH,0
	        JE	     CHECK_STEP_WASH
            POP      DX
     	    ADD      DL ,30H
            MOV      AH ,02H
            INT      21H	
	        DEC	     CH
	        JMP	     DIS_CHAR
CHECK_STEP_WASH:
	        MOV	     AL,STEP
	        CMP	     AL,1
	        JE	     STEP_WASH			        ;到了洗涤时跳转
	        JMP	     RETURN
STEP_WASH:  MOV	     DL,' '
	        MOV	     AH,02H
	        INT	     21H
	        INT	     21H
	        INT   	     21H
	        LEA	     SI,FAN_POS
	        MOV	     AX,[SI]
	        INC	     AX
	        MOV	     [SI],AX
	        MOV	     DL,3
	        DIV	     DL
	        MOV	     BL,AH
	        AND	     BX,0FFH
 
	        LEA	     SI,FAN                     ;显示正反转
	        MOV	     DL,[SI+BX]
            MOV	     AH,02H
            INT	     21H

RETURN:     POP      SI
	        POP      DX
            POP      CX
            POP      BX
            POP      AX
	        RET
DIS	        ENDP   
CODE	    ENDS
	        END      START                      ;程序结束

⌨️ 快捷键说明

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