📄 lyj.asm
字号:
DATA SEGMENT
BUF DB 60000 DUP (?)
MESS1 DB 'Press any key to start recording!',0DH,0AH,24H
MESS2 DB 0DH,0AH,'Press any key to play(ESC to quit)',0DH,0AH,24H
MESS3 DB 0DH,0AH,'Press space key to play again,'R'key to recode again(ESC to quit)',0DH,0AH,24H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOX DS,AX
MOV DX,28BH
MOV AL,90H
OUT DX,AL
MOV DX,283H
MOV AL,10H
OUT DX,AL
RRR:
MOV DX,OFFSET MESS1
MOV AH,09H
INT 21H
WAIT1:
MOV AH,01H
INT 21H
CALL REC
MOV DX,OFFSET MESS2
MOV AH,09
INT 21H
WAIT2:
MOV AH,01H
INT 21H
CMP AL,1BH
JZ QUIT
JMP WAIT2
PPP: CALL PLAY
ASK:
MOV DX,OFFSET MESS3
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
CMP AL,1BH
JZ QUIT
CMP AL,' '
JZ PPP
CMP AL,52H
JZ RRR
JMP ASK
QUIT:
MOV AH,4CH
INT 21H
REC PROC NEAR
MOV DI,OFFSET BUF
MOV CX,60000
LP:
MOV AL,02H
MOV DX,2B2H
OUT DX,AL
CALL DELAY
MOV DX,2B2H
IN AL,DX
MOV [DI],AL
INC DI
LOOP LP
RET
REC ENDP
PLAY PROC NEAR
MOV SI,OFFSET BUF
MOV CX,60000
LP2:
MOV DX,2B0H
MOV AL,[SI]
OUT DX,AL
INC SI
CALL DELAY
LOOP LP2
RET
PLAY ENDP
DELAY PROC NEAR
MOV DX,280H
MOV AL,200
OUT DX,AL
WAITD:
MOV DX,288H
IN AL,DX
TEST AL,01H
JZ WAITD
RET
DELAY ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -