function PortReadByte(Addr:Word):Byte; function PortReadWord(Addr:Word):Word; function PortReadWordLS(Addr:Word):Word; procedure PortWriteByte(Addr:Word;Value:Byte); procedure PortWriteWord(Addr:Word;Value:Word); procedure PortWriteWordLS(Addr:Word;Value:Word);
implementation //PortReadbyte函数 //参数:portaddress //返回:给定port的byte值 function PortReadByte(Addr:Word):Byte;assembler;register; asm MOV DX,AX IN AL,DX end; //高速读端口函数:PortReadWord函数 //参数:port address //返回:给定port的word值 //注释:可能有些卡和计算机不能访问全部的word function PortReadWord(Addr:Word):Word;assembler;register; asm MOV DX,AX IN AX,DX end; //低速读端口函数 //参数: port address //返回:给定port的word值 //注释:工作时,要调整DELAY function PortReadWordLS (Addr:Word):Word; assembler; register; const Delay = 150; //依靠CPU的速度和卡的速度 asm MOV DX,AX IN AL,DX //读LSB端口 MOV ECX,Delay @1: LOOP @1//在两次读之间延时 XCHG AH,AL INC DX //port+l IN AL,DX//读MSB端口 XCHG AH,AL// 重新存储字节顺序 end;