东南大学数字录音机.txt
《东南大学数字录音机.txt》由会员分享,可在线阅读,更多相关《东南大学数字录音机.txt(6页珍藏版)》请在冰豆网上搜索。
datasegment
ioport equ0ec00h-0280h
luport equioport+29ah;¼��ڵ�ַ
fangport equioport+290h;����ڵ�ַ
io8253a equioport+283h
io8253b equioport+280h
io8253e equioport+281h
io8255c equioport+28bh
io8255d equioport+288h
red equioport+2a0h
yellow equioport+2a8h
row equioport+2b0h ;rowchoose
order db01h,02h,04h,08h,10h,20h,40h,80h
data_qudb64000dup(?
);¼�����ݴ��������
news_1db'PressPA1torecord:
',24h;¼����ʾ
news_2db0dh,0ah,'Playing:
',24h;������ʾ
news_3db'success',24h
volumedb00h ;�������
nb db00h ;ѡ������
middle dw00h ;¼������ת��������
temp db00h ;����ǿ����ʾ����
colourdb00h ;ѡ������ɫ
countdb00h ;ѡ�������
num dw00h ;ѡ����ѡ
dataends
stackssegmentstack
db50dup(?
)
stacksends
codesegment
assumecs:
code,ds:
data,es:
data,ss:
stacks
begin:
movax,stacks
movss,ax
movax,data;��ʼ��
movds,ax
moves,ax
test_1:
mov dx,io8255c;��8255��A������
mov al,9bh
out dx,al
mov dx,io8255d;��8255��A������
delayPA1:
in al,dx
and al,02h;�жϿ����Ƿ�Ϊ���俪ʼ¼��PA11��ʼ¼��
jz delayPA1
movdx,offsetnews_1;��ʾ¼����ʾ
movah,9
int21h
calllu;����¼���ӳ���
movdx,offsetnews_2;��ʾ������ʾ
movah,9
int21h
delayPA2:
mov dx,io8255d;��8255��A������
in al,dx
test al,4h;�ж�PA2�Ƿ�Ϊ1Ϊ1��ʼ����
jz delayPA2;��PA2��Ϊ1,תdelayPA2
play:
callfang;���÷����ӳ���
mov dx,io8255d;��8255��A������
in al,dx
test al,10h;�ж�PA4�Ƿ�Ϊ1Ϊ1һֱ�ظ�����
jnz play;��PA3��Ϊ1����
movax,0c07h
int21h
cmpal,53h ;����S��ʽ�˳�
jzover
cmpal,73h ;����s��ʽ�˳�
jneplay
over:
movah,4ch;����DOS
int21h
luprocnear;¼���ӳ���
movdi,offsetdata_qu;����������ַΪDI
movcx,64000;¼64000������
movcolour,00h
cld ;��DF=0
xunhuan:
movdx,luport;���A/D
outdx,al
calldelay;��ʱ
inal,dx;��A/D�����ݵ�AL
movtemp,al
stosb;����������,dfΪ0��ʹDI��1al��di��ַ��
stop:
mov dx,io8255c;��8255��A������
mov al,9bh
out dx,al
mov dx,io8255d;��8255��A������
in al,dx
testal,20h ;�ж�PA5����1����ͣ��Ϊ0����ִ��
jnz stop
incmiddle
testal,40h ;¼������ת
jnzlai
inccount
cmpcount,50
jzshow
jmpcontinue
show:
callwave
cmpnum,7
jzclear
jmpcontinue
clear:
movnum,0
continue:
loopxunhuan;ѭ��
ret
lai:
callfang
ret;�ӳ���
luendp
;�ӳ���
fangprocnear;�����ӳ���
movcx,middle;��64000������
movsi,offsetdata_qu;����������ַΪSI
movnum,0
movcolour,01h
cld ;�巽���־��df=0
fang_yin:
movdx,fangport
lodsb;��������ȡ��������SI�洢��si��+1
callvol ;��������0-10����λ
movtemp,al
subal,30h ;�������������
mulvolume
pushbx
movbl,10
divbl
popbx
outdx,al;����
calldelay;��ʱ
stop1:
mov dx,io8255c;��8255��A������
mov al,9bh
out dx,al
mov dx,io8255d;��8255��A������
in al,dx
testal,20h ;�ж�PA5����1����ͣ��Ϊ0����ִ��
jnz stop1
inccount
cmpcount,10
jzshow1
jmpcontinue1
show1:
callwave
cmpnum,7
jzclear1
jmpcontinue1
clear1:
movnum,0
continue1:
loopfang_yin;ѭ��
movdx,offsetnews_3;��ʾ¼����ʾ
movah,9
int21h
ret;�ӳ���;�ӳ���
fangendp
delayPROCNEAR;��ʱ�ӳ���
push dx
mov al,10h;��8253ͨ��0������ʽ0
mov dx,io8253a
out dx,al
mov al,125;д���������ֵ125
mov dx,io8253b
out dx,al
mov dx,io8255c;��8255��A������
mov al,9bh
out dx,al
mov dx,io8255d;��8255��A������
delay1:
in al,dx
test al,1;�ж�PA0�Ƿ�Ϊ1
jz delay1;��PA0��Ϊ1,תde_lay
pop dx
ret;�ӳ���
delayendp
volprocnear
pushax
pushdx
pushcx
movah,0bh ;�������벻�ȴ�
int21h
cmpal,0ffh
jzgo
jmpgos
;Nwait:
moval,39
; int21h
go:
movah,08
int21h
movnb,al
gos:
cmpnb,30h
jzvol1
cmpnb,31h
jzvol2
cmpnb,32h
jzvol3
cmpnb,33h
jzvol4
cmpnb,34h
jzvol5
cmpnb,35h
jzvol6
cmpnb,36h
jzvol7
cmpnb,37h
jzvol8
cmpnb,38h
jzvol9
cmpnb,39h
jzvol10
vol1:
movvolume,1
jmpexit
vol2:
movvolume,2
jmpexit
vol3:
movvolume,3
jmpexit
vol4:
movvolume,4
jmpexit
vol5:
movvolume,5
jmpexit
vol6:
movvolume,6
jmpexit
vol7:
movvolume,7
jmpexit
vol8:
movvolume,8
jmpexit
vol9:
movvolume,9
jmpexit
vol10:
movvolume,10
jmpexit
exit:
stc
popcx
popdx
popax
ret
volendp
waveprocnear
pushax
pushdx
pushcx
pushsi
cmptemp,31
jbelight1
cmptemp,63
jbelight2
cmptemp,95
jbelight3
cmptemp,127
jbelight4
cmptemp,159
jbelight5
cmptemp,191
jbelight6
cmptemp,223
jbelight7
cmptemp,255
jbelight8
light1:
moval,1h
jmpCrow
light2:
moval,3h
jmpCrow
light3:
moval,7h
jmpCrow
light4:
moval,0fh
jmpCrow
light5:
moval,1fh
jmpCrow
light6:
moval,3fh
jmpCrow
light7:
moval,7fh
jmpCrow
light8:
moval,0ffh
jmpCrow
Crow:
movdx,row
outdx,al
cmpcolour,00h
jzLyellow
movdx,red
jmpgood
Lyellow:
movdx,yellow
good:
movsi,num
moval,order[si] ;ѭ��ѡ��һ��ֱ����si����
outdx,al
popsi
popcx
popdx
popax
addnum,1
movcount,0
ret
waveendp
codeends
endbegin