CB下实现对端口读写的两种方法

在C++Builder中,不能够使用Turbo C中的outputb和inputb端口读写函数。但我们可以有另外两种办法实现这个功能。本文介绍怎样在C++Builder下实现端口读写,并给出两种方法的源代码。

在C++Builder下对端口的读写共有两种方法,一种为内嵌汇编语言,另一种为使用__emit__函数。

1 通过内嵌汇编语言实现端口的读写

在C++Builder中,汇编语句必须被包含在以关键字asm为起始的一对大括号中:

asm {
汇编语句1
……
}

利用内嵌汇编语言编制端口输出函数如下:

void OutPort(unsigned short port,unsigned char value)//port参数为输出端口地址,value参数为输出值
{
  asm{
    mov dx , port //把端口地址送到处理器DX寄存器中
    mov al , value // 把value 送到处理器AL寄存器中
    out dx , al // 把AL寄存器中的值送到端口
    };
}

该函数将无符号字符型8位的数据value写入地址为port的端口上,port的数据类型是unsigned short ,16位无符号短整形。

利用内嵌汇编语言编制端口输入函数如下:

unsigned char InPort(unsigned short port)//port参数为输入端口地址,返回为输入值
{
  unsigned char value ;
  asm{
    mov dx , port // 把端口地址送到处理器DX寄存器中
    in al, dx // 从DX指定端口中将一数据送到AL寄存器中
    mov ind , value // 把AL寄存器中的值赋给value
    };
  return value; //返回端口数据
}

时间: 2024-10-30 06:14:56

CB下实现对端口读写的两种方法的相关文章

Win7下屏蔽禁用鼠标滚轮的两种方法

  方法一 1.首先打开运行对话框运行regedit打开注册表; 2.然后依次展开定位到HKEY_CURRENT_USERControl PanelDesktop的WheelScrollLines; 3.然后双击WheelScrollLines将其值4改变就行了,0表示禁止滚轮,1表示打开滚轮 .然后退出注册表即可 . 方法二 1.鼠标右击"计算机"选择管理,然后展开设备管理器; 2.在设备管理中找到并双击"鼠标和其他指针设备",然后双击要配置的鼠标名称; 3.接着

centos linux下对Shell/.sh脚本加密两种方法(shc和gzexe)

shc方法 shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件 用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好. 但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等. 同样,在shell脚本运行时会也泄露敏感信息. shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件. 这就很好的解决了上述问题. shc 安装 yum -y install shc 如果yum不能安装,

xml-关于安卓设置按钮回退到上一个activity的问题 ,问下大神两种方法的不同。

问题描述 关于安卓设置按钮回退到上一个activity的问题 ,问下大神两种方法的不同. 1.第一种是常规的添加按钮监听,使用finish回退到上一个activit运行成功. 2.查资料后,还有一种解决方式为在xml文件按钮中设置android:onClick=""back"",然后在调用当前xml文件的activity中编写back()方法包含finish()结束当前的activity,自己编写的代码不报错,但是回退到上一个界面是会弹出无法运行界面,然后回退到上一

js读写cookie实现一个底部广告浮层效果的两种方法_javascript技巧

下面一个案例使用js实现一个页面浮层效果,并且通过两种方法使用js读写cookie来实现用户关闭广告的显示状态: 读者可以将下面代码复制到一个html文件试试效果:html的pre标签未两种js实现的方式 复制代码 代码如下: <!DOCTYPE HTML> <html> <head> <meta content="text/html;charset=utf-8" http-equiv="Content-Type"/>

关于火狐(firefox)及ie下event获取的两种方法_javascript技巧

经常有同事问我在火狐浏览器怎么获取event的方法,大多是想获取event.keyCode的功能两种方法 第一种方法: 复制代码 代码如下: function a(e){ e=e||window.event; alert(e.keyCode); } ie浏览器如下调用 复制代码 代码如下: <body onclick="a()"> firefox火狐浏览器如下调用 复制代码 代码如下: <body onclick="a(event)"> 这样

linux驱动-linux下写驱动控制gpio时的两种方法区别

问题描述 linux下写驱动控制gpio时的两种方法区别 linux下写驱动控制gpio时,见过两种方法: 用request_mem_region函数和ioremap等得到控制寄存器的地址,然后用iowrite32函数控制该gpio 用gpio_request 和 gpio_set_value函数来控制gpio引脚 请问:这两种方法有什么区别,分别适用什么场合? 解决方案 http://blog.csdn.net/mirkerson/article/details/8464290http://b

c++连接mysql数据库的两种方法(ADO连接和mysql api连接)_C 语言

第一种方法可以实现我当前的需求,通过连接不同的字符串来连接不同的数据库.暂时只连接了mysql,sqlserver,oracle,access.对于access,因为它创建表的SQL语句不太兼容标准SQL语句,需要做一些处理,这里暂时不说.第二种方法只能针对于mysql数据库的连接,不过用这种方法不用安装MyODBC服务器程序. 不管用哪种方法,首先需要安装Mysql数据库,安装方法请看"mysql安装及一些注意点".最好安装一个Navicat for mysql,方便操作mysql数

zabbix监控redis数据库状态两种方法

方法一,zabbix监控redis 1.导入模板 同样,模板我已上传到 github项目 上 .直接下载,通过下面的步骤导入模板:点击configuration ----> templates ------> import -------> 导入下载的xml文件 . 2.客户端key配置 在被监控的主机上,打开/etc/zabbix/zabbix_agentd.conf 配置文件,在最后一行加入: UserParameter=redis_stats[*],redis-cli -h 127

JavaBean实现多文件上传的两种方法

上传 摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现.首先讲述了http协议传送多个文件的基本格式和实现上传的详细过程,之后简单介绍了使用ftpclient 类实现了ftp方式的上传,最后对这两种方法进行了比较. 关键字:JavaBean .http .ftp .ftpclient JavaBean是一种基于Java的软件组件.JSP对于在Web 应用中集成JavaBean组件提供了完善的支持.这种支持不仅能缩短开发时间(可以直接利用经测试和可