DATA SEGMENT
MASS
DB 0DH,0AH,' ______________________________________',0DH,0AH
DB '|_____________________
|',0DH,0AH
DB '|
DB '|
DB '|
DB '|
|
|
|
|
O (Open)
|',0DH,0AH
C (Close)
|',0DH,0AH
M (Menu)
|',0DH,0AH
R (Return)
|',0DH,0AH
DB '|_____________________|
DB '|
|',0DH,0AH
|',0DH,0AH
DB '|
A (Refrigerating heat)
W (Wind)
|',0DH,0AH
DB '|
DB '|
|',0DH,0AH
|',0DH,0AH
DB '|
T (Temperature)
S (Sleep)
|',0DH,0AH
DB '|______________________________________|',0DH,0AH
DB '|
DB '|
DB '|
DB '|
DB '|
DB '|
DB '|
DB '|
DB '|
DB '|
DB '|
|',0DH,0AH
|',0DH,0AH
|',0DH,0AH
|',0DH,0AH
|',0DH,0AH
|',0DH,0AH
|',0DH,0AH
|',0DH,0AH
|',0DH,0AH
|',0DH,0AH
|',0DH,0AH
DB '|______________________________________|',0DH,0AH,'$'
MASS1
DB 0DH,0AH,'|
Opened !
',0DH,0AH,'$'
MASS2
DB 0DH,0AH,'|
Closed !
',0DH,0AH,'$'
MASS3
DB 0DH,0AH,'|
Menu !
',0DH,0AH,'$'
MASS4
DB 0DH,0AH,'|
Temperature !
',0DH,0AH,'$'
MASS5
DB 0DH,0AH,'|
Up Temp !
',0DH,0AH,'$'
MASS6
DB 0DH,0AH,'|
Down Temp !
',0DH,0AH,'$'
MASS7
DB 0DH,0AH,'|
Air Contrlling !
',0DH,0AH,'$'
MASS8
DB 0DH,0AH,'|
Cooling
MASS9
DB 0DH,0AH,'|
Heating
!
!
',0DH,0AH,'$'
',0DH,0AH,'$'
MASS10
DB 0DH,0AH,'|
Wind
!
',0DH,0AH,'$'
MASS11
DB 0DH,0AH,'|
Up
prepurge
!
',0DH,0AH,'$'
MASS12
DB 0DH,0AH,'|
Down prepurge !
',0DH,0AH,'$'
MASS13
DB 0DH,0AH,'|
MASS14
DB 0DH,0AH,'|
Sleep
Return
!
!
',0DH,0AH,'$'
',0DH,0AH,'$'
MASS15
DB 0DH,0AH,'|
Enter again !
',0DH,0AH,'$'
MASS16
DB 0DH,0AH,'|
Please enter:
',0DH,0AH,'$'
MASS17
DB 0DH,0AH,'|
T
A
W
S
R
C
',0DH,0AH,'$'
MASS66
DB 0DH,0AH,'|
Set Time !
',0DH,0AH,'$'
MASS18
DB 0DH,0AH,'|
',0DH,0AH,'$'
MASS19
DB 0DH,0AH,'|
////
////
',0DH,0AH
DB 0DH,0AH,'| ////
////
',0DH,0AH
DB 0DH,0AH,'| ~~~~
~~~~
',0DH,0AH,'$'
MASS20
DB 0DH,0AH,'| ~~~~
~~~~
',0DH,0AH
DB 0DH,0AH,'| \\\\
\\\\
',0DH,0AH
DB 0DH,0AH,'|
\\\\
\\\\
',0DH,0AH,'$'
MASS21
DB 0DH,0AH,'|
*\*/*
',0DH,0AH
DB 0DH,0AH,'|
*--*--*
',0DH,0AH
DB 0DH,0AH,'|
*/*\*
',0DH,0AH,'$'
MASS22
DB 0DH,0AH,'|
~~~~~~~~~
',0DH,0AH
DB 0DH,0AH,'|
!!!(+
+)!!!
',0DH,0AH
DB 0DH,0AH,'|
O
',0DH,0AH,'$'
MASS23
DB 0DH,0AH,'| Z Z
',0DH,0AH,'$'
MASS231 DB 0DH,0AH,'|
Z Z
',0DH,0AH,'$'
MASS232 DB 0DH,0AH,'|
Z Z
',0DH,0AH,'$'
MASS233 DB 0DH,0AH,'|
R(Return) Y(Sleep)',0DH,0AH,'$'
MASS24
DB 0DH,0AH,'|
I(Incre) B(Decre) ',0DH,0AH,'$'
MASS25
DB 0DH,0AH,'|
|||
',0DH,0AH
DB 0DH,0AH,'|
--
--|||
',0DH,0AH
DB 0DH,0AH,'|
_o_
',0DH,0AH,'$'
MASS26
DB 0DH,0AH,'|
H(Heat)
L(Ref)
',0DH,0AH,'$'
MASS27
DB 0DH,0AH,'|
U(Up)
D(Down)
',0DH,0AH,'$'
MASS28
DB 0DH,0AH,'|
DB 0DH,0AH,'|
DB 0DH,0AH,'|
',0DH,0AH
',0DH,0AH
',0DH,0AH,'$'
MASS291 DB 0DH,0AH,'|
^
^
',0DH,0AH,'$'
MASS292 DB 0DH,0AH,'|
O
Running~~ ',0DH,0AH,'$'
MODE
DB '?'
DATA ENDS
PRTSTR MACRO X;输出字符串
LEA DX,X
;取 X 的有效地址送 DX
MOV AH,09H
;显示字符串
INT 21H
ENDM
SCANSTR MACRO
;键盘输入
MOV AH,08H
;键盘输入无回显,AL=输入字符
INT 21H
ENDM
SETXY MACRO X,Y;设置光标位置,X=列,Y=行
XOR BH,BH
;BH=显示页码
MOV AH,02H
MOV DH,X
MOV DL,Y
INT 10H
ENDM
MASSS MACRO
SETXY 3,3
PRTSTR MASS18
ENDM
DRAWWINDOW MACRO ATTR,TOP,LEFT,BOTTOM,RIGHT
;建立窗口
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,06H
;初始化屏幕
MOV AL,0
;清窗口
MOV BH,ATTR
;空白区域的缺省属性(空白区域颜色,背景颜色)
MOV CH,TOP
;窗口左上角位置
MOV CL,LEFT
MOV DH,BOTTOM
MOV DL,RIGHT
;窗口右下角位置
INT 10H
POP DX
POP CX
POP BX
POP AX
ENDM
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,0FH
;读取显示器模式
INT 10H
MOV BYTE PTR[MODE],AL
MOV AH,00H
MOV AL,02H
;显示器模式,16 色文本
INT 10H
DRAWWINDOW 3EH,0,0,24,200
;大窗口背景色及大小设置,3 背景色兰,
E 字体色黄
DRAWWINDOW 2EH,3,1,7,22
;校窗口背景色及大小设置,2 背景色
绿,E 字体色黄
PRTSTR MASS
LOP:SETXY 23,38
SCANSTR
;按下按键
PUSH AX
CMP AL,'O'
;判断是否打开空调
JZ OPEN
SETXY 2,2
PRTSTR MASS15
;输入错误重新输入
SETXY 16,10
PRTSTR MASS25
JMP LOP
OPEN:SETXY 2,2
PRTSTR MASS1
;打开空调
SETXY 16,10
PRTSTR MASS28
SETXY 23,38
SCANSTR
CMP AL,'M'
;判断是否进入菜单
JZ MENU
CMP AL,'C'
;判断是否选择关闭空调
JZ EXIT
SETXY 2,2
PRTSTR MASS15
MASSS
SETXY 16,10
PRTSTR MASS25
JMP OPEN
MENU:SETXY 2,2
PRTSTR MASS3
;进入菜单
SETXY 16,10
PRTSTR MASS28
;CALL DELAY
SETXY 2,2
PRTSTR MASS16
;显示功能
SETXY 3,3
PRTSTR MASS17
SETXY 3,18
SETXY 23,38
SCANSTR
CMP AL,'T' ;判断是否选择温度控制
JNZ LOP1
CALL TEM
JMP MENU
LOP1:CMP AL,'A'
;判断是否选择制冷制热
JNZ LOP2
CALL PRO
JMP MENU
LOP2:CMP AL,'W'
;判断是否选择扫风
JNZ LOP3
CALL WIND
JMP MENU
LOP3:CMP AL,'S'
;判断是否选择择睡眠
JNZ LOP4
CALL SLEEP
JMP MENU
LOP4:CMP AL,'R'
;判断是否选择返回菜单
JNZ LOP5
SETXY 2,2
PRTSTR MASS14
MASSS
CALL DELAY
;CALL DELAY
JMP MENU
LOP5:CMP AL,'C'
;判断是否选择关闭空调
JZ EXIT
SETXY 2,2
PRTSTR MASS15
MASSS
SETXY 16,10
PRTSTR MASS25
CALL DELAY
JMP MENU
EXIT:SETXY 2,2
PRTSTR MASS2
MASSS
CALL DELAY
;CALL DELAY
MOV AH,0
MOV AL,BYTE PTR[MODE]
JMP LOP
TEM PROC NEAR
;温度控制
SETXY 2,2
PRTSTR MASS4
MASSS
SETXY 3,3
PRTSTR MASS24
SETXY 3,18
MOV CH,32H
MOV DL,CH
MOV AH,02H
INT 21H
MOV CL,35H
MOV DL,CL
MOV AH,02H
INT 21H
AGAIN:SETXY 23,38
SCANSTR
CMP AL,'I'
JZ M5
CMP AL,'B'
JZ M6
CMP AL,'R'
JZ QUIT
SETXY 2,2
PRTSTR MASS15
SETXY 16,10
PRTSTR MASS25
JMP AGAIN
QUIT:
JMP LO
M5: SETXY 2,2
;增加温度