东南大学数字录音机.txt资料文档下载
《东南大学数字录音机.txt资料文档下载》由会员分享,可在线阅读,更多相关《东南大学数字录音机.txt资料文档下载(6页珍藏版)》请在冰豆网上搜索。
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;
in al,dx
test al,4h;
�ж�PA2�Ƿ�Ϊ1Ϊ1��ʼ����
jz delayPA2;
��PA2��Ϊ1,תdelayPA2
play:
callfang;
���÷
����ӳ���
mov dx,io8255d;
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 al,9bh
out dx,al
��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
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;
in al,dx
testal,20h ;
jnz stop1
inccount
cmpcount,10
jzshow1
jmpcontinue1
show1:
callwave
cmpnum,7
jzclear1
jmpcontinue1
clear1:
movnum,0
continue1:
loopfang_yin;
movdx,offsetnews_3;
ret;
�;
fangendp
delayPROCNEAR;
��ʱ�ӳ���
push dx
mov al,10h;
��8253ͨ��0������ʽ0
mov dx,io8253a
mov al,125;
д���������ֵ125
mov dx,io8253b
delay1:
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
go:
movah,08
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
vol3:
movvolume,3
vol4:
movvolume,4
vol5:
movvolume,5
vol6:
movvolume,6
vol7:
movvolume,7
vol8:
movvolume,8
vol9:
movvolume,9
vol10:
movvolume,10
exit:
stc
popcx
popdx
popax
ret
volendp
waveprocnear
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
light3:
moval,7h
light4:
moval,0fh
light5:
moval,1fh
light6:
moval,3fh
light7:
moval,7fh
light8:
moval,0ffh
Crow:
movdx,row
outdx,al
cmpcolour,00h
jzLyellow
movdx,red
jmpgood
Lyellow:
movdx,yellow
good:
movsi,num
moval,order[si] ;
ѭ��ѡ��һ��ֱ����si����
popsi
popcx
popdx
popax
addnum,1
movcount,0
ret
waveendp
codeends
endbegin