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

📄 port.pas

📁 关于利用DELPHI来进行企业级方案解决的著作的附书源码
💻 PAS
字号:
unit port;

interface

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;

//PortWriteByte函数
procedure PortWriteByte(Addr:Word; Value:Byte); assembler; register;
asm
  XCHG AX,DX
  OUT DX,AL
end;

//高速写端口过程
//注释:工作时,可能有些卡和计算机不能访问全部的Word
procedure PortWriteWord(Addr:word; Value:word); assembler; register;
asm
  XCHG AX,DX
  OUT DX,AX
end;

//低速写端口过程
procedure PortWriteWordLS(Addr:word;Value:word); assembler; register;
const
  Delay = 150;//依靠CPU的速度和卡的速度
asm
  XCHG AX,DX
  OUT DX,AL
  MOV ECX,Delay
  @1:
  LOOP @1
  XCHG AH,AL
  INC DX
  OUT DX,AL
end;

end.//单元结束

⌨️ 快捷键说明

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