iofunc2.asm

来自「访问32位PCI总线IO的例程」· 汇编 代码 · 共 58 行

ASM
58
字号
;
; I/O functions for IBM-AT or compatible machine's
;

;use  TASM.EXE V2.01 or later
;
;      TASM /jSMART /jJUMPS /uM520 /jLOCALS /m8 /t
;
.386p
CGROUP	GROUP TEXT,_TEXT
TEXT SEGMENT BYTE PUBLIC 'CODE' USE16
TEXT ENDS

_TEXT SEGMENT BYTE PUBLIC 'CODE' USE16
     ASSUME  CS:CGROUP,DS:NOTHING,ES:NOTHING

;**************************
; 32bit I/O Read
;
;unsigned long int  _IoReadLong(unsigned int);
;
;       入力    [SP-2].W	I/O Address
;       出力    DX:AX	return AX value of I/O
;       破壊    None
;**************************
_IoReadLong PROC C NEAR PUBLIC,address:WORD

	MOV	DX,address
	IN	EAX,DX
	PUSH	EAX
	POP	AX
	POP	DX
	RET

_IoReadLong ENDP

;**************************
; 32bit I/O Write
;
;void _IoWriteLong(unsigned int , unsigned long);
;
;       入力    [SP-2].W	I/O Address
;               [SP-6].D	Write Data
;       出力    None
;       破壊    None
;**************************
_IoWriteLong PROC C NEAR PUBLIC USES EAX DX,address:WORD,outData:DWORD

	MOV	EAX, outData
	MOV	DX, address
	OUT	DX,EAX
	RET

_IoWriteLong ENDP

_TEXT ENDS
     END

⌨️ 快捷键说明

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