read_time1:
CLC
MOV AH,1 ;输入上、下键 INT 16H JNZ get XOR AX,AX INT 1AH
SUB DX,TIMES SBB CX,TIMES[2] CMP DX,DIDAS JB read_time1 JMP show1
get: CMP AL,'w' JZ ups1 CMP AL,'s' JZ downs1 JMP SA1e ups1: INC NUM
UP NUM,DX1 ;电梯上升一层 JMP show
downs1: DEC NUM
DOWN NUM,DX1 ;电梯下降 show: MOV DX,072FH GB
MOV DL,NUM ;显示当前楼层数 OR DL,30H ;将数字转换为字符 MOV AH,2 INT 21H
MOV AH,0CH
INT 21H ;清空键盘缓冲区 show1: MOV DX,0702H GB
MOV DX,OFFSET ME12 ;显示ME12,表明现在不可以进行不连续控制 MOV AH,9 INT 21H
SA1e: MOV AL,COUNT;电梯向下一站运行 CBW
CMP BP,AX JNB S6
JMP SA1a
S6: JMP SA1s ;电梯重新进行新的一轮的运行
WA0: MOV DX,1834H ;显示ME1 GB
MOV DX,OFFSET ME1 MOV AH,9 INT 21H
MOV DL,0FFH MOV AH,6 INT 21H
JZ WA0 MOV CX,0
MOV DX,2479H CLSS
WA1: MOV AX,4C00H
INT 21H ; 返回DOS. MOV AH,02H
INT 10H ; 恢复文本显示方式. POP DI POP SI POP DX POP CX
POP BX POP AX RET START ENDP
;--------------------------------------- CODE ENDS END START
7、运行结果及界面
图1 初始界面
图2 电梯全开门状态下的界面
8、设计小结
通过本次实验,我复习了微机的各类基础知识,主要是对于程序的书写规范,在本次实验中,思路要非常清晰,各类模块分清主次,对于电梯上下运行要运用一些简单的数学知识,实验中也遇到一些困难,比如楼层超过8楼就会上溢,以及各类宏命令的设置问题。总而言之,本次实验复习巩固了快淡忘的微机知识,为今后的学习打下了坚实的基础。