⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isd1420.asm

📁 基于DS1420的电子音乐程序.ISD1420由一个单录音信号REC实现录音操作
💻 ASM
字号:

;FUNCTION CODE
PCI_FUNCTION_ID			=	0B1H
PCI_BIOS_PRESENT		=	01H
FIND_PCI_DEVICE			=	02H
READ_CONFIG_DWORD		=	0AH
BADR2					=	18H				;5933 18H
DEVICE_ID				=	5933H			;设备ID
VENDOR_ID				=	1018H			;供应商ID

MY_STACK	SEGMENT	PARA 'STACK' 
			DB		100 DUP(?)
MY_STACK	ENDS

MY_DATA 	SEGMENT	PARA 'DATA'

P8255_A    	DW  	0000H  		
P8255_B    	DW	 	0001H
P8255_C    	DW  	0002H
P8255_MODE 	DW  	0003H
MES		DB '	PCI CARD NOT FOUND!		$'
MES0	DB '***********************PCI CONFIG INFO*****************************',13,10,'$'
MES1	DB 'PCI BIOS NOT FOUND!',10,13,'$'
MES2	DB '	PCI CONFIG READ ERROR!		$'

DIS1    	DB 	'PCI ADDRESS 0 $';
DIS5    	DB 	'BIOS NOT SUPPER!$'
DIS6    	DB 	'READ PCI BOARD FAIL!$'
;-------PCI Configuration Space Registers-------------------------------

BN			DB	?	;BUS NUMBER
DN_FN		DB	?	;Device Number and Function Number

MY_DATA 	ENDs

MY_CODE 	SEGMENT PARA 'CODE'

MY_PROC		PROC	FAR		
			ASSUME 	CS:MY_CODE,	DS:MY_DATA,	SS:MY_STACK
			
START:		MOV		AX,MY_DATA
			MOV		DS,AX
			
			MOV		AH,PCI_FUNCTION_ID		;查找PCI BIOS
			MOV		AL,PCI_BIOS_PRESENT
			INT		1AH
	
			JNC		JUDGE1					;如果CF被置位,则PCI BIOS不存在
			MOV		DX,OFFSET MES1
			MOV		AH,09H
			INT 	21H
			JMP		EXIT
	
JUDGE1:		CMP		AH,00H
			JZ		JUDGE2					;如果不等,则PCI BIOS 不存在
			MOV		DX,OFFSET MES1
			MOV		AH,09H
			INT 	21H
			JMP		EXIT
	
JUDGE2:		CMP		DX,'CP'					;如果EDX中放的是"PCI "则说明PCI BIOS存在
			JZ		FIND
			MOV		DX,OFFSET MES1
			MOV		AH,09H
			INT 	21H
			JMP		EXIT

FIND:		MOV		AH,PCI_FUNCTION_ID		;找到了PCI BIOS,再查找指定PCI设备
			MOV		AL,FIND_PCI_DEVICE
			MOV		CX,DEVICE_ID			;板卡的DID
			MOV		DX,VENDOR_ID			;板卡的VID
			MOV		SI,0					;索引
			INT		1AH
			JNC		READ
			MOV		DX,OFFSET MES
			MOV		AH,09H
			INT		21H
			JMP		EXIT
READ:		MOV		BN,BH					;保存BUS NUMBER
			MOV		DN_FN,BL				;保存Device Number and Function Number
			
			MOV		AH,PCI_FUNCTION_ID
			MOV		AL,READ_CONFIG_DWORD
			MOV		BH,BN
			MOV		BL,DN_FN
			MOV		DI,BADR2
			INT		1AH
			JC		ERROR
			ADD		P8255_A,CX
        	ADD		P8255_B,CX
        	ADD		P8255_C,CX
        	ADD		P8255_MODE,CX
			
START1:		MOV 	DX,P8255_MODE			;设置控制字		
       		MOV 	AL,80H					;全部输出
       		OUT 	DX,AL        	
	       	MOV		AL,00H
	       	MOV		DX,P8255_A				;输出0
	       	OUT		DX,AL
WAI:       	CALL	BREAK
	       	JMP		WAI

ERROR:		MOV		DX,OFFSET MES2			;显示读错误信息
			MOV		AH,09H
			INT		21H
EXIT:		MOV		AX,4C00H
			INT		21H
MY_PROC		ENDp

BREAK 		PROC 	NEAR					;按任意键退出		
			PUSHF
			PUSH	AX
			PUSH	DX
       		MOV 	AH,06H
       		MOV 	DL,0FFH
       		INT 	21H
       		JE  	RETURN
       		MOV 	AX,4C00H
       		INT 	21H
RETURN:		POP		DX
			POP		AX
			POPF
			RET
BREAK	 	ENDP

MY_CODE 	ENDS
			
     		END		START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -