欢迎来到代码驿站!

当前位置:首页 >

asm基础――汇编指令之in/out指令

时间:2020-10-09 22:41:51|栏目:|点击:

x86中的IO端口访问

汇编是直接面向硬件的,它可以访问系统的mem空间,也可以直接访问系统的io空间。

汇编中使用in/out来访问系统的io空间。

IN

从端口输入

OF

DF

IF

SF

ZF

AF

PF

CF

说明:从端口输入一个字节或字到AL或AX中(IA-32处理器上可以输入一个双字到EAX)。源操作数是端口地址,可以是8位的常量或者DX中的一个16位地址。

指令格式:

in accum, imm (应该不需要是8位,可以是16位,比如3F8h)
in accum, dx

下面是一个例子,对in做了一层包装:

UINT8
IoRead8 (
 IN   UINTN           Port
 )
{
 UINT8  Data;
 
 __asm {
  mov dx, word ptr [Port]
  in al, dx
 
  mov Data, al
 }
 return Data;
}

OUT

输出到端口。

OF

DF

IF

SF

ZF

AF

PF

CF

说明:将累加器中的一个字节或字输出到端口(IA-32处理器上可以向端口输出一个双字)。端口地址如果在范围0-FFh之间,可以是一个常量,也可以在DX中存放0-FFFFh之间的端口地址。

指令格式:

out imm8, accum(应该不需要是8位,可以是16位,比如3F8h)
out dx, accum

下面是一个例子,对out做了一层包装:

UINT8
IoWrite8 (
 IN   UINTN           Port,
 IN   UINT8           Value
 )
{
 __asm {
  mov al, byte ptr [Value]
  mov dx, word ptr [Port]
  out dx, al
 }
 return Value; 
}

注意,io地址要么是立即数,要么放在dx寄存器中;而数据也都放在al/ax/eax寄存器中,不能是其他寄存器。

上一篇:sql join on 用法

栏    目:

下一篇:R语言ggplot2边框背景去除的实现

本文标题:asm基础――汇编指令之in/out指令

本文地址:http://www.codeinn.net/misctech/9028.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有