BCB中如何读写硬件端口

BCB中利用__emit__函数可以直接将二进制程序代码嵌入程序中,这样就可以实现一些底层的操作。由于直接操作系统底层,这种方法可能会导致系统的不稳定。

下面是利用__emit__函数读写硬件端口的方法。

//读端口
//port参数为输入端口地址,value为返回值.
unsigned char __fastcall inportb(unsigned short int port)
{
unsigned char value;
__emit__(0x8b,0x95,&port); //把端口地址送到EDX寄存器中
__emit__(0x66,0xec); //从端口中读入数据到AL寄存器中
__emit__(0x88,0x85,&value); //把AL寄存器中的值辅给value
return value;
}
//---------------------------------------------------------------------------
//写端口
//port参数为输出端口地址,value参数为输出值
void __fastcall outportb(unsigned short int port,unsigned char value)
{
  __emit__(0x8b,0x95,&port); //把端口地址送到EDX寄存器中
  __emit__(0x8a,0x85,&value); //把value送到AL寄存器中
  __emit__(0x66,0xee); //把AL寄存器中的值写入端口
}

时间: 2024-11-07 16:03:14

BCB中如何读写硬件端口的相关文章

在BCB中使用VCL控件数组2

我的<BCB中使用VCL控件数组>中,提到了用TList来实现时无法释放资源的问题,结果今天就得到了答案,邬彦华等等网友都指教了TList实现的释放方法,定义代码同前文: for (int i=1;i<=ButtonCount;i++) { TSpeedButton *spdBtn=new TSpeedButton(this); spdBtn->Parent=ScrollBox;//指定父控件 spdBtn->Caption=IntToStr(i); spdBtn->W

如何在BCB中使用DirectX

这是一个简要的指南,可以指导你如何在BCB中使用DirectX SDK. 我在这里假定你的BCB的安装路径在:C:\Borland\CBuilder\,DirectX SDK在C:\dx5sdk\ 设置 Borland C++ Builder #include 这是许多人遇到的麻烦, Borland在BCB的\Include路径下提供了DirectX的头文件, 如果只是把c:\dx5sdk\sdk\inc\加到BCB的include路径下,它会进行如下步骤: 查找 C:\Borland\Cbui

在BCB中轻松使用ActiveX控件

在微软的大力扶持下,越来越多的软件公司开始支持ActiveX了,这对于喜欢编程的朋友来说可是件值得高兴的事!因为我们可以在程序中很方便地调用外部的OCX文件来实现复杂的功能,而在BCB中只带有很少几个ActiveX控件,大部分我们需要我们自己安装,下面通过对RealPlayer与Flash控件的安装与应用,让我们共同来学习ActiveX的组件在BCB中的使用方法:) 一.安装.导入ActiveX控件 C++ Builder在对ActiveX的支持方面可说是做得非常出色,我们可以很方便地导入系统中

如何在win8系统中关闭显卡硬件加速功能?

  说到硬件加速,可能很多朋友都认为这个功能服务是很好的,因为硬件加速也就意味着咱们电脑中的硬件会运行的更快,那么咱们的操作也会变得更加的便捷,这也正是很多用户所追求的.但是另一方面,咱们也不得不正视一个问题,那就是硬件加速在帮助咱们Windows电脑加快运行的同时,也会损坏我们的硬件设备,可能对于很多用户来说,这就有点得不偿失了,那么如何在win8系统中关闭显卡硬件加速功能?下面,小编就来详细的介绍一下方法吧! 1.首先,咱们返回到win8系统的传统桌面位置,然后同时按下键盘上的win+R快捷

系统-Solaris中如何把一个端口的tcp协议打开?

问题描述 Solaris中如何把一个端口的tcp协议打开? 在Solaris系统中,通过socket传输文件,提示文件传输失败,这个应该是对应的socket端口的tcp协议没有打开.

BCB中选择文件对话框TOpenDialog过滤后缀名使用方法

BCB中使用TOpenDialog选择对话框时,直接OpenDialog->Execute()弹出的对话框是显示所有文件的,如果我们希望过滤指定的文件后缀名就需要在Execute()前做一些初始化工作,此处主要使用Filter属性.代码如下:[喝小酒的网摘]http://blog.hehehehehe.cn/a/8453.htm 只显示txt文本文件.OpenDialog1->Filter = "Text files (*.txt)|*.TXT"; 多个下拉框,可只显示tx

java-在eclipse中tomcat提示8080端口被占用

问题描述 在eclipse中tomcat提示8080端口被占用 错误信息是:Port 8080 required by J2EE Preview at localhost is already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the o

Ubuntu系统中监控系统硬件的温度

Ubuntu系统中http://www.aliyun.com/zixun/aggregation/23104.html">监控系统硬件的温度 CPU sudo apt-get install sensors sudo sensors-detect 全部yes,然后重启 qii@ubuntu:~$ sensorsacpitz-virtual-0Adapter: Virtual devicetemp1:       +55.0°C  (crit = +111.0°C) coretemp-isa

Android中文件读写(输入流和输出流)操作小结_Android

1. Android中文件读写的原理: (1).所有文件的储存都是字节的储存. (2).在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘. (3).在读取文件(特别是文本文件)时,也是一个字节一个字节的读取以形成字节序列. 2. 字节流和字符流的区别: (1).字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,字符流就可以. (2).字节流转换成字符流可以用InputStreamReader,OutputStreamWriter. 一般我们在