JNZ SB
HENG 220,99,0AH,420 ;显示栏边框 HENG 220,151,0AH,420 SHU 220,99,0AH,151 SHU 420,99,0AH,151
CLOSE ;电梯大门处于关闭状态 HENG 210,220,02H,370 ;电梯大门缝隙边框 HENG 210,420,02H,370 SHU 210,220,02H,420 SHU 370,220,02H,420
HENG 209,219,02H,371 ;加粗边框 SHU 209,220,02H,420 SHU 371,220,02H,420
MOV [DZ],219 MOV DX1,210 MOV DX2,370
SB1: HENG DX1,[DZ],03H,DX2 ;三维电梯上侧面 DEC [DZ] INC DX1 INC DX2
CMP [DZ],180 JNZ SB1
MOV [DZ],371 MOV DX1,220 MOV DX2,420
SB2: SHU [DZ],DX1,03H,DX2 ;三维电梯右侧面 INC [DZ] DEC DX1 DEC DX2 CMP [DZ],410 JNZ SB2
MOV [DZ],420
SB3: HENG 70,[DZ],02H,480;画地平线 INC [DZ]
CMP [DZ],425 JNZ SB3
MOV [DZ],421
SB4: HENG 160,[DZ],04H,200 ;小方块运行在框架内 SUB [DZ],30 CMP [DZ],151 JNZ SB4
SHU 160,180,04H,420
SHU 200,180,04H,420
MOV DX,071DH GB
MOV DX,OFFSET ME2 ;显示ME2 MOV AH,9 INT 21H
MOV DX,081DH GB
MOV DX,OFFSET ME3 ;显示ME3 MOV AH,9 INT 21H
MOV DX,082DH GB
MOV DX,OFFSET ME7 ;显示ME7 MOV AH,9 INT 21H
SA1s: MOV DX,0202H ;显示ME4 GB
MOV DX,OFFSET ME4 MOV AH,9 INT 21H
MOV DX,0229H GB
MOV DX,OFFSET IBUFF ;输入并显示字符串 MOV AH,10 INT 21H
MOV DX,0402H ;提示使用者用上、下键不连续控制电梯 GB
MOV DX,OFFSET ME8 ;显示ME8 MOV AH,9 INT 21H
MOV DX,0502H GB
MOV DX,OFFSET ME9 ;显示ME9 MOV AH,9 INT 21H
MOV DX,0602H GB
MOV DX,OFFSET ME10 ;显示ME10 MOV AH,9 INT 21H
SA1: MOV AL,IBUFF+1
MOV COUNT,AL ;记录输入的字符个数
MOV BP,2
MOV AL,IBUFF[BP]
CMP AL,30H ;将首字符与1BH(ESC ASCII码)比较,若相等则返回DOS,这里由于汇编软件的原因改为与0的ASCII码比较 JNZ S1
JMP WA1
S1: CMP AL,30H ;避免当使用者出入其它键是程序进入死循环 JNZ S2 JMP WA0 S2: CMP AL,38H JNA S3 JMP WA0 S3: AND AL,0FH MOV NUM,AL INIT NUM,DX1 MOV DX,072FH GB
MOV DL,NUM ;显示电梯第一站楼层数 OR DL,30H ;将数字转换为字符 MOV AH,2
INT 21H CALL DELAY1S
SA1a: ADD BP,2
MOV AL,IBUFF[BP]
AND AL,0FH ;将字符转换为数字 MOV NUM1,AL MOV DX,0830H GB
MOV DL,IBUFF[BP] ;显示电梯下一站要停的楼层数 MOV AH,2 INT 21H
CALL DELAY1S
SA1b: MOV AL,NUM1 ;下一站要去的楼层和当前所在楼层相比较 CMP AL,NUM ;若下一站楼层大于当前楼层,则小方块上升 JNA S4
JMP SA1c S4: MOV AL,NUM1
CMP AL,NUM ;这里有2次比较 JNZ S5
JMP SA1d ;到达所在楼层后停止运动 S5: DEC NUM
DOWN NUM,DX1 ;电梯下降 MOV DX,0829H GB
MOV DL,19H ;显示下箭头 MOV AH,2 INT 21H
MOV DX,072FH GB
MOV DL,NUM ;显示当前楼层数 OR DL,30H ;将数字转换为字符 MOV AH,2 INT 21H
CALL DELAY1S ;小方块在每一层停止1S可让人更直观地看清电梯的运行状况
JMP SA1b
SA1c: INC NUM
UP NUM,DX1 ;电梯上升 MOV DX,0829H GB
MOV DL,18H ;显示上箭头 MOV AH,2 INT 21H
MOV DX,072FH GB
MOV DL,NUM ;显示当前楼层数 OR DL,30H ;将数字转换为字符 MOV AH,2
INT 21H CALL DELAY1S JMP SA1b
SA1d: HALF ;电梯在指定楼层停下,大门依次从闭合-半开门-全开门-半开门-全开门
CALL DELAY1S FULL
CALL DELAY1S HALF
CALL DELAY1S CLOSE
CALL DELAY1S
MOV DX,0702H GB
MOV DX,OFFSET ME11 ;显示ME11,表明现在可以进行不连续控制 MOV AH,9 INT 21H
XOR AX,AX INT 1AH
MOV TIMES,DX MOV TIMES[2],CX