精华内容
下载资源
问答
  • IN指令和OUT指令

    千次阅读 2020-08-04 21:51:18
    其中具有代表性的两个输入输出指令就是INOUT指令。这些指令也是汇编语言的助记符。可以通过INOUT指令来实现对数据的读入和输出,如下图所示: IN指令和OUT指令 也就是说,IN 指令通过指定的端口号输入数据,OUT...

    Windows控制硬件借助的是输入和输出指令。其中具有代表性的两个输入输出指令就是IN和OUT指令。这些指令也是汇编语言的助记符。可以通过IN和OUT指令来实现对数据的读入和输出,如下图所示:
    在这里插入图片描述
    IN指令和OUT指令
    也就是说,IN 指令通过指定的端口号输入数据,OUT指令则是把CPU寄存器中存储的数据输出到指定端口号的端口。
    那么这个端口号和端口是什么呢?你感觉它像不像港口一样?通过标注哪个港口然后进行货物的运送和运出?
    下面我们来看一下官方是如何定义端口号和端口的。
    我们今天说说输入设备和输出设备,这两个与我们本节主题息息相关。
    那么问题来了,IO设备如何实现输入和输出的呢?计算机主机中,附带了用来连接显示器以及键盘等外围设备的连接器。而连接器的内部,都连接有用来交换计算机主机同外围设备之间电流特性的IC。如果IC你不明白是什么的话,这些IC统称为IO控制器。
    IO是Input/Output的缩写。显示器、键盘等外围设备都有各自专用的I/O控制器。I/O 控制器中有用于临时保存输入输出数据的内存。这个内存就是端口(port) 。端口你就可以把它理解为我们上述说的港口。IO控制器内部的内存,也被称为寄存器,不要慌, 这个寄存器和内存中的寄存器不一样。CPU内存的寄存器是用于进行数据运算处理的,而IO中 的寄存器是用于临时存储数据的。
    在I/O设备内部的IC中,有多个端口。由于计算机中连接着很多外围设备,因此也就有很多I/O控制器。当然也会有多个端口,一个I/O控制器可以控制多个设备,不仅仅只能控制一个。各端口之间通过端口号进行区分。
    端口号也被称为I/O地址 。IN 指令和OUT指令在端口号指定的端口和CPU之间进行数据的输入和输出。这跟通过内存的地址来对内存进行读写是一样的道理。
    在这里插入图片描述

    展开全文
  • in /out指令

    千次阅读 2019-12-17 20:03:01
    C机给予每一个端口分配了一个地址(称为...读端口用IN指令,写端口用OUT指令IN AL,21H;表示从21H端口读取一字节数据到AL IN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH OUT 2...

    C机给予每一个端口分配了一个地址(称为端口号),形成一个独立于内存空间的I/O地址空间。

    详情请入:传统PC机I/O位址空间范围

     

    CPU对外设的操作通过专门的端口读写指令来完成。读端口用IN指令,写端口用OUT指令。

    IN AL,21H;表示从21H端口读取一字节数据到AL
    
    IN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH
    
    OUT 21H,AL;将AL的值写入21H端口
    OUT 21H,AX;将AX的值写入端口地址21H开始的连续两个字节。(port[21H]=AL,port[22h]=AH)

     

    展开全文
  • InOut指令

    2016-12-14 20:37:00
    In和Out OUT 0FAH,AL(它是指从AL中输出一个字节到0FAH的一个端口吗?) OUT DX,AL ...这是因为在OUT指令中直接用数字寻址,端口号只能是0到FFH,而上面这条指令应改为 MOV DX 03F8H ;只能放在DX...
    In和Out
    OUT 0FAH,AL(它是指从AL中输出一个字节到0FAH的一个端口吗?)
    OUT DX,AL  
    OUT 0FAH,AX(AX是一个字为什么也能输出到0FAH所指的8位端口中呢?)
    OUT 03F8H,AL(这个指令有错误为什么?)
       
     这是因为在OUT指令中直接用数字寻址,端口号只能是0到FFH,而上面这条指令应改为
    MOV DX 03F8H ;只能放在DX,这是规定。
    OUT DX,AL
    -----------------------------------------
    OUT 0FAH,AL(它是指从AL中输出一个字节到0FAH的一个端口吗?)
    是的
    ---------------------------------------
    OUT 0FAH,AX(AX是一个字为什么也能输出到0FAH所指的8位端口中呢?)
    这条指令将AL中的数据放在0FAH,将AH中的数据放在0FBH。
    这四条指令主要就是说明这个OUT指令的不同用法,学这些指令不用硬记每条指令的各种用法,只要根据规定的寻址方式。
    IN(Input) 输入
    OUT(Output) 输出
    这组指令只限于使用累加器AX或AL传送信息.
    IN 输入指令长格式为:   IN  AL,PORT(字节)  
                           IN  AX,PORT(字)
    执行的操作: (AL)<-(PORT)(字节)        
               (AX)<-(PORT+1,PORT)(字)
    短格式为:   IN   AL,DX(字节)        
                IN AX,DX(字)
    执行的操作: AL<-((DX))(字节)        
               AX<-((DX)+1,DX)(字).
    OUT 输出指令长格式为:   OUT  PORT,AL(字节)        
                             OUT  PORT,AX(字)
    执行的操作: (PORT)<-(AL)(字节)        
               (PORT+1,PORT)<-(AX)(字)
    短格式为:   OUT  DX,AL(字节)        
                OUT DX,AX(字)
    执行的操作: ((DX))<-(AL)(字节)        
               ((DX)+1,(DX))<-AX(字)  
    在IBM-PC机里,外部设备最多可有65536个I/O端口,端口(即外设的端口地址)为0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定端口号,但只限于前256个端口.当端口号>=256时,只能使用短格式,此时,必须先把端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后再用IN或OUT指令来传送信息. 
    IN,OUT端口读写指令
    端口是主机与外设进行数据交换的。(外设接口电路有专用于数据交互的寄存器。为了与CPU中的寄存器相区别,称之为端口)。端口有数据端口,状态端口和控制端口3种。
    PC机给予每一个端口分配了一个地址(称为端口号),形成一个独立于内存空间的I/O地址空间。在8086/8088中,端口地址的范围是0000至FFFF。
    CPU对外设的操作通过专门的端口读写指令来完成。读端口用IN指令,写端口用OUT指令。
    IN ACC,PORT;从端口PORT读取数据到ACC;
    PORT可以是立即数,也可以是DX。
    ACC为AL时,从PORT读取1字节数据到AL
        ACC为AX时,从PORT读取2字节数据到AX
    OUT PORT,ACC;将ACC的数据写入端口PORT;
    例子:
    IN AL,21H;表示从21H端口读取一字节数据到AL
    IN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH
    MOV DX,379H
        IN   AL,DX;从端口379H读取1字节到AL
     
        OUT 21H,AL;将AL的值写入21H端口
        OUT 21H,AX;将AX的值写入端口地址21H开始的连续两个字节。(port[21H]=AL,port[22h]=AH)
    MOV DX,378H
        OUT DX,AX;将AH和AL分别写入端口379H和378H

    转载于:https://www.cnblogs.com/xuyinghui/p/6180802.html

    展开全文
  • asm基础——汇编指令之in/out指令

    万次阅读 2016-01-30 16:53:14
    asm基础——汇编指令之in/out指令

    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寄存器中,不能是其他寄存器。


     

    展开全文
  • 端口和in /out指令

    千次阅读 2018-04-10 19:26:39
    端口是主机与外设进行数据交换的。(外设接口电路有专用于数据交互的寄存器。为了与CPU中的寄存器相区别,称之为“端口”)。端口有数据端口,状态端口和控制端口3种。...读端口用IN指令,写端口用OUT指令。——...
  • 通过选择要播放的指令演示inout指令基本功能、段间间接转移jmp指令、有效地址传送lea指令及串读取指令
  • 对于IO存储器访问,需要使用独立的IO指令,也就是INOUT 两类地址 地址空间大小在8位以下 地址空间大小在16位以下 两种格式 对于两类不同的地址,IO指令的格式不一样。 Mnemonic Description OUT imm8, ...
  • IN,从端口输入; OUT,输出到端口; IN AL,21H 从21H端口读取一字节数据到AL IN AX,21H 从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH OUT 21H,AL 将AL的值写入21H端口 OUT 21H,AX 将AX的...
  • In和Out OUT0FAH,AL(它是指从AL中输出一个字节到0FAH的一个端口吗?) OUTDX,AL ...OUT0FAH,AX(AX是一个字为什么也能输出...这是因为在OUT指令中直接用数字寻址,端口号只能是0到FFH,而上面这条指令应改为 MOVD...
  • IN,OUT端口读写指令

    千次阅读 2007-12-21 14:54:00
    端口是主机与外设进行数据交换的。(外设接口电路有专用于数据交互的寄存器。为了与CPU中的寄存器相区别,称之为“端口”)。端口有数据端口,状态端口和控制端口3种。...读端口用IN指令,写端口用OUT
  • 习惯了西门子博途编辑风格的同学,乍一看到Studio 5000的编辑界面,一时不适应,尤其是功能块或指令INOUT管脚在一起,不好分辨,本文简单几步搞定,实现像西门子INOUT分左右显示风格。 1. 先看看开发好的...
  • 对输入输出指令IN-OUT的理解

    千次阅读 2019-05-18 17:44:50
    格式: IN AL,PORT ;字节输入 IN AX,PORT ;字输入 执行操作: 字节: AL←(PORT) ... 字: AX←(PORT+1),(PORT) ...其中PORT是外设的端口编号,IN操作让数据端口PORT的内容... OUT PORT,AL ;字节输出 OU...
  •  每当CPU执行IN或者OUT指令时,就进入了I/O端口读写周期,此时首先是端口地址有效,然后是I/O读写控制信号^IOR和^IOW有效,把对端口地址译码而产生的译码信号同^IOR和^IOW结合起来一同控制对I/O端口的读写操作。...
  • 由于windows的限制,我们要在Ring3级应用程序中访问硬件IO不是一件容易的事情,而使用这个类,你就可以象写win95程序一样自由的使用in,out指令及_inp,_outp函数,如果你的程序由于端口限制只能在win98以下系统运行,...
  • OUTIN

    2021-06-14 09:29:48
    汇编语言中,CPU对外设的操作通过专门的端口读写指令来完成; 1.OUT OUT 寄存器1 寄存器2 ;将寄存器2内存储数字, ;输出寄存器1内存储数字为内容的地址的端口中 ;放置规则,由低地址到高地址 MOV DX,781H ;将781H...
  • 汇编语言中OUTIN的用法

    万次阅读 多人点赞 2017-04-12 11:15:27
     读端口用IN指令,写端口用OUT指令。  例子如下:  IN AL,21H;表示从21H端口读取一字节数据到AL  IN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH  MOV DX,379H  IN AL,DX ;从...
  • 汇编语言教程 -- out,in

    2020-12-26 15:50:57
    汇编语言教程 – out, in 今天来讲讲outin两个汇编指令 这两个指令一个是读(in指令,一个是写(out指令,主要是将数据写入地址 比如: ...
  • MAX_PATH、INOUT宏常量

    2018-08-15 20:19:47
    MAX_PATH宏常量 MAX_PATH是C语言运行时库中通过#define指令定义的一个宏常量,它定义了编译器所支持的最长全路径名的长度。...#define INOUT 作用是逻辑的: IN 表示输入参数,指针指向的值不会修改 OUT表示...
  • 汇编inout介绍

    千次阅读 2013-05-29 16:32:37
    ;... 设备和芯片的I/O端口操作实现,其实没有复杂的东西在里边 ; I/O端口操作主要是看一堆文档,把整个X86架构的PC机所有I/O端口记住, ; ...并记住它们每一个数据寄存器、...记住之后,整个过程中就是按标准使用I/O指令
  • 汇编程序调用jnz指令时出现了jump out of range 的问题,改之前是这样 ``` jnz bj1 jnz loop1 ``` 百度了解决方法之后我在代码中间加上了 ``` bj10:jmp bj1 loop10:jmp loop1 ``` 但是程序运行结果出现...
  • 知识点输入输出指令什么是输入输出指令?...输入指令:输入指令IN用于从I/O端口读数据到累加器AL(或AX)中 输出指令:输出指令OUT用于把累加器AL(或AX)的内容写到I/O端口 注意 输入输出指令中,只有...
  • 汇编之输入输出指令

    千次阅读 2020-10-08 20:52:10
    汇编之输入输出指令输入输出指令in输入指令应用实例out输出指令应用举例 输入输出指令 在8086中,所有的I/O端口和CPU之间的通信都由INOUT完成。 CPU只能用累加器(AL或AX)接收或发送信息。 也就是说,8086中,...
  • 汇编指令汇总

    2020-11-05 22:10:02
    汇编指令汇总 ...out xlat(换行指令) 3,地址传送指令 lea lds les 4,标志寄存器传送指令 lahf sahf pushf popf 5,类型传送指令 cbw cwd 二,算术指令 1,加法指令 add adc inc 2,减法指令
  • 输入指令 IN、输出指令 OUT 换码指令XLAT 地址传送指令 有效地址传送器 LEA LDS,LES 标志寄存器传送指令 LAHF 标志寄存器的低字节送AH  SAHF AH送标志寄存器低字节 PUSH 标志进栈指令 POPF 标志...
  • gdb下next,stepin,stepout

    2021-04-15 11:19:57
    指令格式next count | n count count表示在最外层执行count行后停下. 遇到函数不会跳转进去.循环也会一次次的执行. until | u 是next的加强版,即使是for中也往下跳. 不过跳是执行完循环后的结果. 但是如果要退出,也...
  • 汇编指令学习

    2018-12-26 16:38:55
     读端口用IN指令,写端口用OUT指令IN AL,21H;表示从21H端口读取一字节数据到AL IN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH MOV DX,379H  IN AL,DX ;从端口379H读取1字节到...
  • 汇编语言各种指令的解释与用法 数据传输指令: 1.传输指令 mov ,进栈指令 push 交换指令 XCHG 输入指令 in 输出指令 out 换码指令 xlat 有效地址传输指lEA 等等汇编指令介绍
  • 快捷链接数据传送指令通用数据传送指令MOV DST,SRCMOVSX DST,SRCMOVZX DST,SRCPUSH SRCPOP DSTPUSHAPOPAXCHG OPR1,OPR2累加器专用指令IN AL,PORTOUT PORT,AL地址传送指令LEA REG,SRCLDS/LES REG,SRC标志寄存器传送...
  • (First In LastOut, FILO) 存取原则组织的存储区域, 也可以说是 “后进先出" (Last In First Out, LIFO) 存取原则。 堆栈具有两种基本操作, 对应两条基本指令: 数据压进堆栈操作对应进栈指令PUSH; 数据弹出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 814
精华内容 325
关键字:

inout指令