在Delphi中对端口的直接操作
你可以通过以下两种方式完成对端口的操作:
(1)使用端口预定义数组
Delphi仍然保留了Turbo Pascal的两个预定义数组Port和
PortW。这两个一维数组的每个元素代表一个数据端口,它们的
端口地址同它们的下标是相对应的。下标的类型为整型字。
Port数组成员是Byte类型的,PortW数组的成员是Word类型的。
下面举例说明:
Port[$20]:=$20; {将$20写入$20端口}
PortData:=Port[$20]; {将$20端口的数据读入Byte变量
PortData}
这种操作方式在Delphi的帮助文件中没有提及,但它确实
可以很好地工作。
(2)另一种方法是采用直接嵌入汇编语言
Delphi中仍然可以像以往一样,在Turbo Pascal中使用嵌
入汇编语言。
语法如下:
asm
AssemblerStmt <Separator AssemblerStmt>
end
下面举一个用于测试的同样例子:
Var
PortData:Byte;
ASM
MOV AL,$20;
MOV DX,$20;
OUT AL,DX; {将$20写入$20端口}
MOV DX,$20;
IN AL,DX;
MOV PortData,AL; {将$20端口的数据放入Byte变量
PortData}
END;
你可以通过以下两种方式完成对端口的操作:
(1)使用端口预定义数组
Delphi仍然保留了Turbo Pascal的两个预定义数组Port和
PortW。这两个一维数组的每个元素代表一个数据端口,它们的
端口地址同它们的下标是相对应的。下标的类型为整型字。
Port数组成员是Byte类型的,PortW数组的成员是Word类型的。
下面举例说明:
Port[$20]:=$20; {将$20写入$20端口}
PortData:=Port[$20]; {将$20端口的数据读入Byte变量
PortData}
这种操作方式在Delphi的帮助文件中没有提及,但它确实
可以很好地工作。
(2)另一种方法是采用直接嵌入汇编语言
Delphi中仍然可以像以往一样,在Turbo Pascal中使用嵌
入汇编语言。
语法如下:
asm
AssemblerStmt <Separator AssemblerStmt>
end
下面举一个用于测试的同样例子:
Var
PortData:Byte;
ASM
MOV AL,$20;
MOV DX,$20;
OUT AL,DX; {将$20写入$20端口}
MOV DX,$20;
IN AL,DX;
MOV PortData,AL; {将$20端口的数据放入Byte变量
PortData}
END;
解决方案 »
- 窗体全屏边框如何去掉??
- 请问怎样把mcisendstring播放的视频放到窗体里面来?
- 编译状态中,选Debug→ Evaluate/Modif……
- 做了一个下载软件使用人数,已经超过10万不过不是这问题就是那问题,是不是DELPHI不好啊!打算用C++从新开发
- 关于静态数组的问题
- 用adoquery对时间字段的处理(sqlserver数据库)
- 关于skinengine的简单问题,望高人指点!!
- 求助!!
- 请问大侠们,哪里可以下载读写二进制文件的控件.
- 用delphi6,第一个多线程测试程序便崩溃~请大家来测试
- 给我一个简单的通过WEB页查询的例子!
- 为什么在读数据时出现问题?a[i]读不出数据来。
Port[$20]:=$20; {将$20写入$20端口}
我也编译不了.