📄 sy3-1.asm
字号:
; 实验三:单色LED显示实验
PA55 EQU 280H
P55CTL EQU 283H
DATE SEGMENT
MESS1 DB 0DH,0AH
DB 'Press 1 for left cycle',0DH,0AH
DB 'Press 2 for right cycle',0DH,0AH
DB 'Press 3 for alternately(interface) display',0DH,0AH
DB 'Press 4 quit to DOS',0DH,0AH,0DH,0AH'$'
MESS2 DB 'Press key is please select again.',0DH,0AH,0DH,0AH,'$'
MESS3 DB 'Press any key to main menu',0DH,0AH,0DH,0AH,'$'
DATE ENDS
STAC SEGMENT PARA STACK 'STACK'
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STAC ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATE,SS:STAC,ES:DATE
START: MOV AX,DATE
MOV DS,AX
MOV AX,STAC
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV DX,P55CTL
MOV AL,8bH
OUT DX,AL
MOV DX,PA55
MOV AL,0FFH
OUT DX,AL
BG: LEA DX,MESS1
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 JGS0
JMP JGS1
JGS0: JMP JGS
JGS1: MOV AL,AH
CMP AL,'4'
JNZ WX
JMP QIT
WX: LEA DX,MESS2
MOV AH,09H
INT 21H
JMP BG
ZXH: MOV DX,PA55
MOV AL,0FEH
BB: OUT DX,AL
CALL DELAY2
ROL AL,1
PUSH AX
PUSH DX
MOV DL,0FFH
MOV AH,06H
INT 21H
JNZ BG0
JMP BG00
BG0: JMP BG
BG00: POP DX
POP AX
JMP BB
YXH: MOV DX,PA55
MOV AL,0FEH
EE: OUT DX,AL
CALL DELAY2
ROR AL,1
PUSH AX
PUSH DX
MOV DL,0FFH
MOV AH,06H
INT 21H
JNZ BG01
JMP BG02
BG01: JMP BG
BG02: POP DX
POP AX
JMP EE
JGS: MOV DX,PA55
MOV AL,55H
HH: OUT DX,AL
CALL DELAY2
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
DELAY1 PROC NEAR
PUSH CX
MOV CX,0F000H
LOOP $
POP CX
RET
DELAY1 ENDP
DELAY2 PROC NEAR
PUSH AX
PUSH CX
MOV CX,025H
DL21: CALL DELAY1
LOOP DL21
POP CX
POP AX
RET
DELAY2 ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -