📄 zhsy.asm
字号:
DATA SEGMENT
LU equ ioport+29ah
FANG equ ioport+290h
ioport equ 0c000h-280h
ioport1 equ ioport+283h
ioport2 equ ioport+280h
ioport3 equ ioport+28bh
ioport4 equ ioport+288h
DAT DB 60000 DUP(?)
TS1 DB 'Press any key to record:','$'
TS2 DB 13,10,' Playing:','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET TS1
MOV AH,9
INT 21H
MOV AL,0
JC1 :MOV AH,0BH
INT 21H
CMP AL,0FFH
JNE JC1
CALL LY
MOV DX,OFFSET TS2
MOV AH,9
INT 21H
JC2 :MOV AH,0BH
INT 21H
CMP AL,0FFH
JNE JC2
PLAY: CALL FY
MOV AL,0
MOV AL,07H
INT 21H
CMP AL,20H
JZ PLAY
MOV AH,4CH
INT 21H
LY PROC NEAR
PUSH DI
PUSH CX
PUSH DX
PUSH AX
MOV DI,OFFSET DAT
MOV CX,60000
CLD
TTTT :MOV DX,LU
OUT DX,AL
CALL DELAY
IN AL,DX
MOV [DI],AL
INC DI
LOOP TTTT
POP AX
POP DX
POP CX
POP DI
RET
LY ENDP
FY PROC NEAR
PUSH SI
PUSH CX
PUSH DX
PUSH AX
MOV CX,60000
MOV SI,OFFSET DAT
MOV DX,0
FFFF: MOV DX,FANG
MOV AL,[SI]
OUT DX,AL
INC SI
CALL DELAY
LOOP FFFF
POP AX
POP DX
POP CX
POP SI
RET
FY ENDP
DELAY PROC NEAR
PUSH DX
MOV AL,10H
MOV DX,ioport1
OUT DX,AL
MOV AL,200
MOV DX,ioport2
OUT DX,AL
MOV DX,ioport3
MOV AL,90h
OUT DX,AL
MOV DX,ioport4
MOV AL,0
DELAY1: IN AL,DX
CMP AL,1
JNE DELAY1
POP DX
RET
DELAY ENDP
CODE ENDS
END STT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -