1、MODELTINYPCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址, 也为DMA & 32 BIT ;RAM板卡上的8237提供基地址) Vendor_IDEQU 10EBH;厂商ID号Device_IDEQU8376;设备ID号.STACK100.DATAIO_Bit8_BaseAddressDW?msg0DBBIOS不支持访问PCI $msg1DB找不到Star PCI9052板卡 $msg2DB读8位I/O空间基地址时出错$COM_ADDDW00F3H;控制口偏移量GGG DW ?HHH DW ?WWW DW ?PA_ADDDW00F0H;PA口偏移量PB_ADDD
2、W00F1H;PB口偏移量PC_ADDDW00F2H;PC口偏移量XXX DW ?LED_DataDB 11001100B ;红灯全亮 DB01010110B;东西绿灯,南北红灯。从高位7到低位0为0则亮,1则灭。排线反接则顺序颠倒亮。DB11011110B;东西绿灯闪烁,南北红灯DB10011010B;东西黄灯亮,南北红灯DB01100101B;东西红灯,南北绿灯DB11101101B;东西红灯,南北绿灯闪烁DB10101001B;东西红灯,南北黄灯亮SG DB 6fH,7fH,07H,7dH,6dH,66H,4fH,5bH,06H,3fH ;9-0 .CODE START:MOVAX,DA
3、TAMOVDS,AXNOPCALLInitPCICALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址MOVAL,10000000B;PA、PB、PC为基本输出模式MOVDX,COM_ADDOUTDX,AL;灯全亮MOVBX,OFFSET LED_DataMOVDX,PA_ADDstart0: MOVAL,0;红灯全亮XLATOUTDX,ALCALLDL500msSTART1:MOVAL,01111101B;东西绿灯,南北红灯OUTDX,ALCALLDL5SMOV SI,3FH MOV DI,4FH CALLDJSMOVCX,5START2:MOVAL,011111
4、01B;东西绿灯闪烁,南北红灯OUTDX,ALCALLDL500msMOVAL,11111101BOUTDX,ALCALLDL500msLOOPSTART2MOVAL,10111101B;东西黄灯亮,南北红灯OUTDX,ALCALLDL3SMOVAL,11010111B;东西红灯,南北绿灯OUTDX,ALCALLDL5SMOVCX,5MOV SI,3FHMOV DI,4FHCALL,DJSSTART3:MOVAL,11010111B;东西红灯,南北绿灯闪烁OUTDX,ALCALLDL500msMOVAL,11011111BOUTDX,ALCALLDL500msLOOPSTART3MOVAL,1
5、1011011B;东西红灯,南北黄灯亮OUTDX,ALCALLDL3S JMPSTART1;倒计时显示程序 DJS PROCNEAR PUSH DX PUSH CX PUSH BX PUSH AXPRT: NUM: MOV Al,SI ;设置段选码,将SI中的内容送入PA口 MOV DX,PA_ADD OUT DX,Al MOV Al, 0FcH ;设置位选码,PC0口置0高四位为0 MOV DX,PC_ADD ;其他口为1来选中LED1,显示个位 OUT DX,Al CALL DELAY MOV Al,DI ;设置段选码,将DI中的内容送入PA口 MOV DX,PA_ADD OUT DX,A
6、l MOV Al,0FDH ;设置位选码,PC1口置0高四位为0 MOVDX,PC_ADD ;其他口为1来选中LED2,显示十位 OUT DX,Al CALL DELAY LOOP NUM ;循环到NUM INC SI ;个位SI自增1 CMP SI,OFFSET SG + 10;与表外的第一个偏移地址相比较,如果不 JNZ PRT ;等则显示数据且SI+1,如果相等顺序执 INC DI ;十位DI自增1 MOV SI,OFFSET SG;将SG即9的偏移地址送给SI CMP DI,OFFSET SG + 10;与表外的第一个偏移地址相比较,如果不 JNZ PRT ;等则显示数据且DI+1,如
7、果相等顺序执行 mov al, 0 out dx, alPOP AX ;结束子程序POP BXPOP CXPOP DXRETDJS ENDPDL500msPROCNEARPUSHAXPUSHDXMOVDX,500;延时500msMOVAH,0FFH;星研公司提供的软中断INT21HPOPDXPOPAXRETDL500msENDPDL3SPROCNEARPUSHCXMOVCX,6DL3S1:CALLDL500msLOOPDL3S1POPCXRETENDPDL5SPROCNEARPUSHCXMOVCX,10DL5S1:CALLDL500msLOOPDL5S1POPCXRETENDPInitPCIP
8、ROCNEARMOVAH,00HMOVAL,03HINT10H;清屏MOVAH,0B1HMOVAL,01HINT1AHCMPAH,0JZInitPCI2LEADX,msg0InitPCI1:MOVAH,09HINT21HJMPExitInitPCI2:MOVAH,0B1HMOVAL,02HMOVCX,Device_IDMOVDX,Vendor_IDMOVSI,0INT1AHJNCInitPCI3;是否存在Star PCI9052板卡LEADX,msg1JMPInitPCI1InitPCI3:MOVDI,PCIBAR3MOVAH,0B1HMOVAL,09HINT1AH;读取该卡PCI9052基地址JNCInitPCI4LEADX,msg2JMPInitPCI1InitPCI4:ANDCX,0FFFCHMOVIO_Bit8_BaseAddress,CXRETInitPCIENDPModifyAddressPROCNEARADDCOM_ADD,CXADDPA_ADD,CXADDPB_ADD,CXADDPC_ADD,CXRETModifyAddressENDPExit:MOVAH,4CHINT21HENDSTART