DATASSEGMENTr
r
ioportequ0c800h280hr
io0809equioport29ahr
io0832equioport290hr
io8253equioport280hr
io8255equioport288hr
io8253cequioport283hr
io8255cequioport28bhr
r
msg0dbPressRtostartrecord0dh0ahr
msg1db0dh0ahI
putErrorPleasei
putRorrtoco
ti
ue0dh0ahr
msg2db0dh0ahPressPtoplayrecord0dh0ahr
msg3db0dh0ahI
putErrorPleasei
putPorptoco
ti
ue0dh0ahr
msg4db0dh0ahRecordi
g0dh0ahr
msg5db0dh0ahPlayi
g0dh0ahr
msg6dbI
putr
msg7db0dh0ahTha
kyou0dh0ahr
msg8db0dh0ahRecordComplete0dh0ahr
msg9db0dh0ahPlayOver0dh0ahr
msg10db0dh0ahIfyouwa
ttopausepressa
ykeyr
msg11db0dh0ahPressRtoplayreplay0dh0ahr
msg12dbPressQtoquit0dh0ahr
bufdb60000dupr
r
DATASENDSr
r
CODESSEGMENTr
ASSUMECSCODESDSDATASr
r
STARTr
MOVAXDATASr
MOVDSAXr
r
MOVDXOFFSETMSG0显示按R开始r
MOVAH09Hr
INT21Hr
r
MOVDXOFFSETMSG6显示并等待i
putr
MOVAH09Hr
INT21Hr
r
CHOOSE0直到输入r为止才开始录音r
MOVAH1r
INT21Hr
CMPALRr
JZOK0r
CMPALrr
JZOK0r
MOVDXOFFSETMSG1提示输入错误,继续要输入r
MOVAH09Hr
INT21Hr
MOVDXOFFSETMSG6r
MOVAH09Hr
INT21Hr
JNZCHOOSE0r
r
OK0r
MOVDXOFFSETMSG4开始录音r
MOVAH09Hr
INT21Hr
r
MOVDIOFFSETBUFr
MOVCX30000r
r
RECr
MOVDXIO0809启动0809将模拟信号转化成数字信号r
OUTDXALr
CALLDELAYr
INALDX输入转化数据r
MOVDIALr
INCDIr
LOOPREC一直循环30000次,因为cx30000r
r
OK2r
MOVDXOFFSETmsg8r
MOVAH09Hr
INT21Hr
r
MOVDXOFFSETMSG2r
MOVAH09Hr
INT21Hr
r
MOVDXOFFSETMSG6r
MOVAH09Hr
INT21Hr
r
CHOOSE1按p进行播音r
MOVAH1r
INT21Hr
CMPALPr
JZOK1r
CMPALpr
JZOK1r
r
MOVDXOFFSETMSG3r
MOVAH09Hr
INT21Hr
r
MOVDXOFFSETMSG6r
MOVAH09Hr
INT21Hr
JNZCHOOSE1直到按了p才进行播音r
r
OK1r
MOVDXOFFSETMSG5r
MOVAH09Hr
INT21Hr
MOVDIOFFSETBUFr
MOVCX30000r
r
PLAYr
MOVDXIO0832启动0832将数字转换成模拟信号,播音r
MOVALDIr
OUTDXALr
CALLDELAYr
INCDIr
LOOPPLAY一直播放直到cx0r
r
MOVDXOFFSETmsg9r
MOVAH09Hr
INT21Hr
r
MOVDXOFFSETmsg11r
MOVAH09Hr
INT21Hr
r
MOVDXOFFSETmsg12r
MOVAH09Hr
INT21Hr
r
REPLAY重新播放r
MOVDXOFFSETMSG6r
MOVAH09Hr
INT21Hr
MOVAH1r
INT21Hr
CMPALRr
JZOK1r
CMPALrr
JZOK1按r是重新播放r
CMPALQ按q是退出r
JZQUITr
CMPALqr
JZQUITr
r
MOVDXOFFSETMSGr