3、>ssegsegmentparastack'stack'dw200dup(?)ssegendsdsegsegmentparapublic'data'messagedb'pressSW3tostartandthenpressSW3tostop,^indsoon!J,Oah,Odh;系统提示信息db'turnonDIPonebyoneanddisplayvariousso
4、ud-oppatterns!1dbOah,Odhdb'ifyouwanttoquit,pleasehit''q‘'or''Q‘'!',Oah,Odh,'$'flagdb0标志变量为0tdw0变量为0numdw0变量为0dataldb80h,40h,20h,lOh,08h,04h,02h,Olh灯光变幻组合;初始化状态;初始化延时;初始化数字;八种不同的dcita2data3data4data5data6data7data8dsegendsdbdbdbdbdbdbdbOlh,02h,Odh,08h,lOh,20h,40h,80h80
5、h,20h,08h,02h,40h,lOh,04h,01hOlh,04h,lOh,40h,02h,08h,20h,80hOcOh,30h,Och,03h,OcOh,30h,Och,03h03h,Och,30h,OcOh,03h,Och,30h,OcOh81h,42h,24h,18h,81h,42h,24h,18h18h,24h,42h,81h,18h,24h,42h,81hcsegsegmentparapublic'code'assumess:sseg,cs:cseg,ds:dsegstart:movax,dspushaxmova
6、x,OOhpushax;保留程序数据段地址movah,09h;显示系统提示信息mprocfarmovdx,segmessagemovds,dxmovdx,offsetmessageint21h;初始化8255movdx,303hmoval,91houtdx,al;取8255的端口A的地址;使8255的PA0-PA7全为0;使所冇的灯LED全灭stop:/JLED全灭movdx,301hmoval,OOhoutdx,aljmpwait;取8255的控制端口的地址;初始化8255的A口和C口高四位为输岀模式;B口和C口低四位为输入模式
7、;初始化灯LED全灭movdx,301hmoval,OOhoutdx,alwait:;检测或者〃Q〃键movah,Obhint21h;调用DOS21H功能OBH进行键盘判断incaljnzreadpc;检测是否有键按下movah,08hint21h;调用DOS21H功能08H进行键盘输入判断cmpal,cfjzquit;检测到"q",退出cmpal,'Q‘jzquit;检测到“Q",退岀readpc:;判断开关SW3的状态movdx,302h;取8255的端LIC的地址inal,dx;读端口C的值testal,04h;当按下开关S
8、W3时,PC2口为低电平;检测PC2口状态Ip:jnzcaseinal,dxtestal,04hjzlp;循环检测直至放开xorflag,Olh;将状态值取反case:cmpflag,Olh;进行状态值比较begin:jnestopcal1ledflash;调用灯光变幻过程calldelay2jmpwait;取8255的端口A的地址;使8255的PA0-PA7全为0;使所有的灯LED全灭quit:MJIED全灭movdx,301hmoval,OOhoutdx,al;取8255的端口A的地址;使8255的PA0-PA7全为0;使所有
9、的灯LED全灭;DOS功能调用;返回DOS;返回DOSmovah,4chint21hinendpdelay2procpushexpushbxmovex,02ffhdl4:movbx,Offffhdl3:decbxjnzdl3decexjnzd!4p