📄 1.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 + -