📄 exp1.asm
字号:
PC55 EQU 21AH
P55CTL EQU 21BH
DATA SEGMENT
MESS1 DB ' 左循环-----按 1',0DH,0AH
DB ' 右循环-----按 2',0DH,0AH
DB ' 间隔闪烁---按 3',0DH,0AH
DB ' 退 出-----按 4',0DH,0AH,'$'
MESS2 DB '按下键无效,继续选择',0DH,0AH,'$'
MESS3 DB '按任意键退回主菜单',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START: MOV AX,DATA ;初始化
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV DX,P55CTL
MOV AL,80H
OUT DX,AL
BG: LEA DX,MESS1 ;显示信息1
MOV AH,09H
INT 21H
MOV AH,08H ;等待有键按下
INT 21H
PUSH AX
LEA DX,MESS3
MOV AH,09H
INT 21H
POP AX
MOV AH,AL
CMP AL,'1'
JZ ZXH ;散转进入各种循环
MOV AL,AH
CMP AL,'2'
JZ YXH
MOV AL,AH
CMP AL,'3'
JZ JGS
MOV AL,AH
CMP AL,'4'
JNZ WX
JMP QIT
WX: LEA DX,MESS2 ;无效按键信息提示
MOV AH,09H
INT 21H
JMP BG
ZXH: MOV DX,21AH ;左循环
MOV AL,0FEH
BB: OUT DX,AL
MOV CX,0FFFFH
L1: LOOP L1
ROL AL,1
PUSH AX
PUSH DX
MOV DL,0FFH
MOV AH,06H
INT 21H
JNZ BG
POP DX
POP AX
JMP BB
YXH: MOV DX,21AH ;右循环
MOV AL,0FEH
EE: OUT DX,AL
MOV CX,0FFFFH
L2: LOOP L2
ROR AL,1
PUSH AX
PUSH DX
MOV DL,0FFH
MOV AH,06H
INT 21H
JNZ BG
POP DX
POP AX
JMP EE
JGS: MOV DX,21AH ;间隔闪烁
MOV AL,55H
HH: OUT DX,AL
MOV CX,0FFFFH
L3: LOOP L3
NOT AL
PUSH AX
PUSH DX
MOV DL,0FFH
MOV AH,06H
INT 21H
JNZ BG1
POP DX
POP AX
JMP HH
BG1: JMP BG
QIT: MOV AX,4C00H
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -