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

📄 dianti.txt

📁 实现9层电梯控制 功能如下:1
💻 TXT
字号:
经过两天的编写,,写了一个大概样子吧 
功能如下:1,先假设没上楼之前,楼层运行看不到(没图形),可以当做随机看待。 
2。当在某层按电梯开关后,在屏幕显示电梯停到该指定楼层的图形状态。 
3。随后可以按想去的楼层,在屏幕显示电梯运动过程,, 
4,可选择是否还执行本程序(坐电梯) 
汇编运行本程序过程: 
FLOOR YOU SIT NOW(1-9H): (输入某要在的楼层) 
FLOOR YOU WANT GO(1-9H); (输入某想去的楼层) 
WANT EXPERIENCE AGAIN(Y/N).. (选择是否继续) 

源程序如下:(其中由于时间有限解释得不是很细) 

;用于在模拟楼房方框左边显示楼层号码 
.8086 
FNUM MACRO 
LOCAL ML1 
PUSH CX 
PUSH AX 
PUSH DX 
PUSH SI 
MOV CH,13H 
MOV CL,31H 
MOV SI,9 
ML1: MOV AH,02H 
MOV DH,CH 
MOV DL,1FH 
INT 10H 
MOV AH,02H 
MOV DL,CL 
INT 21H 
DEC CH 
INC CL 
DEC SI 
JNZ ML1 
POP SI 
POP DX 
POP AX 
POP CX 

ENDM 

;用于显示未上电梯时的模拟状态图形 
SITUATION MACRO NOWF 
LOCAL L1,L2,L3,L4,L5,L6,L7,L8,PASS1 
MOV AH,03H 
INT 10H 
FNUM 
MOV AH,02H 
INT 10H 
MOV SI,101H 
L0: MOV AH,0CH 
MOV DX,LASTF 
MOV CX,SI 
MOV AL,0 
INT 10H 
INC SI 
CMP SI,120H 
JNE L0 
MOV BH,1H 
MOV SI,100H 
L1: MOV AH,0CH 
MOV DX,20H 
MOV CX,SI 
MOV AL,BH 
INT 10H 
ADD SI,1H 
INC BH 
CMP SI,120H 
JNE L1 
MOV SI,20H 
MOV BH,1H 
L2: MOV AH,0CH 
MOV DX,SI 
MOV CX,100H 
MOV AL,BH 
INT 10H 
ADD SI,1H 
INC BH 
CMP SI,9BH 
JNE L2 
MOV SI,100H 
MOV BH,1H 
L3: MOV AH,0CH 
MOV DX,9BH 
MOV CX,SI 
MOV AL,BH 
INT 10H 
INC BH 
INC SI 
CMP SI,120H 
JNE L3 
MOV SI,20H 
MOV BH,1H 
L4: MOV AH,0CH 
MOV DX,SI 
MOV CX,120H 
MOV AL,BH 
INT 10H 
ADD SI,1H 
INC BH 
CMP SI,9BH 
JNE L4 
MOV FLAG1,1 
MOV DI,NOWF ;NOWFLOOR 
MOV SI,101H 
L5: MOV AH,0CH 
MOV DX,DI 
MOV CX,SI 
MOV AL,1 
INT 10H 
INC SI 
CMP SI,120H 
JNE L5 
ENDM 


;用于显示电梯运动 
MOVEF MACRO NOWF,LASTF 
LOCAL L1,L2,L3,L4,L5,L6,L7,L8,PASS1 
MOV BH,1H 
MOV SI,100H 
L1: MOV AH,0CH 
MOV DX,20H 
MOV CX,SI 
MOV AL,BH 
INT 10H 
ADD SI,1H 
INC BH 
CMP SI,120H 
JNE L1 
MOV SI,20H 
MOV BH,1H 
L2: MOV AH,0CH 
MOV DX,SI 
MOV CX,100H 
MOV AL,BH 
INT 10H 
ADD SI,1H 
INC BH 
CMP SI,9BH 
JNE L2 
MOV SI,100H 
MOV BH,1H 
L3: MOV AH,0CH 
MOV DX,9BH 
MOV CX,SI 
MOV AL,BH 
INT 10H 
INC BH 
INC SI 
CMP SI,120H 
JNE L3 
MOV SI,20H 
MOV BH,1H 
L4: MOV AH,0CH 
MOV DX,SI 
MOV CX,120H 
MOV AL,BH 
INT 10H 
ADD SI,1H 
INC BH 
CMP SI,9BH 
JNE L4 
MOV FLAG1,1 
MOV DI,NOWF ;NOWFLOOR 
L6: MOV SI,101H 
L5: MOV AH,0CH 
MOV DX,DI 
MOV CX,SI 
MOV AL,1 
INT 10H 
INC SI 
CMP SI,120H 
JNE L5 
MOV AX,FLAG1 
CMP AX,1 
JNE PASS1 
XOR AX,AX 
MOV FLAG1,AX 
MOV AH,09H 
MOV DX,OFFSET MSGEN 
INT 21H 
MOV DX,OFFSET MSG3 
INT 21H 
MOV AH,01H 
INT 21H 
PASS1:MOV BX,06FFH ;可修改速度 
MOV CX,0FFFFH 
TIME: LOOP TIME ;延时 
DEC BX 
CMP BX,0 
JNE TIME 
MOV SI,101H 
L7: MOV AH,0CH 
MOV DX,DI 
MOV CX,SI 
MOV AL,0 
INT 10H 
INC SI 
CMP SI,120H 
JNE L7 
MOV AX,NOWF 
CMP AX,LASTF 
JA PASS2 
INC DI 
JMP PASS3 
PASS2: CMP AX,LASTF 
JNE PASS4 
JMP PASS3 
PASS4: DEC DI 
PASS3: 
CMP DI,LASTF ;LASTFLOOR 
JNE L6 

MOV SI,101H 
L8: MOV AH,0CH 
MOV DX,DI 
MOV CX,SI 
MOV AL,1 
INT 10H 
INC SI 
CMP SI,120H 
JNE L8 

ENDM 
;定义程序中要用到的数据段 
DATA SEGMENT 
MSG1 DB 'FLOOR YOU SIT NOW(JUST 1-9F):$' 
MSG2 DB 'FLOOR YOU WANT GO(JUST 1-9F):$' 
MSG3 DB 'INPUT ANY KEY TO START...$' 
MSG4 DB 'WANT EXPERIENCE AGAIN (Y/N)..$' 
MSGEN DB 0AH,0DH,'$' 
NOWF DW ? ;NOWF变量表示原在楼层号码 
LASTF DW ? ;LASTF表示目的楼层号码 
FLAG1 DW 1 ;起一定小作用的变量 
DATA ENDS 
;定义程序中用到的堆栈段 
STACK SEGMENT 
BUFS DB 100 DUP(?) 
TOPS LABEL WORD 
STACK ENDS 
;主代码段CODE1用于程序的执行或结束 
CODE1 SEGMENT 
ASSUME CS:CODE1, DS:DATA, SS:STACK 
MAIN PROC 
START: MOV AX,DATA 
MOV DS,AX 
MOV AX,STACK 
MOV SS,AX 
MOV SP,TOPS 
MOV AH,0H 
MOV AL,04H 
INT 10H 
REPEAT1: 
CALL FAR PTR ELEVATOR 
MOV AH,09H 
MOV DX,OFFSET MSGEN 
INT 21H 
MOV DX,OFFSET MSG4 
INT 21H 
MOV AH,01H 
INT 21H 
CMP AL,'Y' 
JE REPEAT1 
CMP AL,'y' 
JE REPEAT1 
MOV AH,4CH 
INT 21H 
RET 
MAIN ENDP 
CODE1 ENDS 
;子段码CODE2用于控制楼层状态和运动 
CODE2 SEGMENT 
ELEVATOR PROC FAR 
ASSUME CS:CODE2, DS:DATA, SS:STACK 
MOV AX,DATA 
MOV DS,AX 
MOV AX,SS 
MOV SS,AX 
REPUT1:MOV AH,09H 
MOV DX,OFFSET MSGEN 
INT 21H 
MOV DX,OFFSET MSG1 
INT 21H 
MOV AH,01H 
INT 21H 
CMP AL,'1' 
JB REPUT1 
CMP AL,'9' 
JA REPUT1 
SUB AL,30H 
XOR AH,AH 
DEC AX 
MOV DX,08H 
MUL DX 
MOV DX,AX 
MOV AX,9BH 
SUB AX,DX 
MOV NOWF,AX 
SITUATION NOWF 
REPUT2: MOV AH,09H 
MOV DX,OFFSET MSGEN 
INT 21H 
MOV DX,OFFSET MSG2 
INT 21H 
MOV AH,01H 
INT 21H 
XOR AH,AH 
CMP AL,'1' 
JB REPUT2 
CMP AL,'9' 
JG REPUT2 
SUB AL,30H 
XOR AH,AH 
DEC AX 
XOR DX,DX 
MOV DX,AX 
MOV AX,08H 
SUB AX,DX 
MOV DX,AX 
MOV AX,08H 
MUL DX 
ADD AX,5BH 
MOV LASTF,AX 
CMP AX,NOWF 
JE REPUT2 
MOVEF NOWF,LASTF 
RETF 
ELEVATOR ENDP 
CODE2 ENDS 
END START 

;声明:由于本人能力和时间有限不能把所有的功能都完善,如有需要,可留言 
;星云制作

⌨️ 快捷键说明

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