zoukankan      html  css  js  c++  java
  • 【译】x86程序员手册29-第8章 输入输出

    Chapter 8 Input/Output 输入/输出

    This chapter presents the I/O features of the 80386 from the following perspectives:

    本章从以下方面来介绍80386的I/O特性:

    • Methods of addressing I/O ports

    I/O端口的寻址方式

    • Instructions that cause I/O operations

    引起IO操作的指令

    • Protection as it applies to the use of I/O instructions and I/O port addresses.

    应用在IO指令和IO端口地址的保护措施。

    8.1 I/O Addressing IO地址

    The 80386 allows input/output to be performed in either of two ways:

    80386允许输入/输出用以下两种方式运行:

    • By means of a separate I/O address space (using specific I/O instructions)

    通过独立的IO地址空间(使用特殊的IO指令)

    • By means of memory-mapped I/O (using general-purpose operand manipulation instructions).

    通过内存映射(使用通用目的操作数的操作指令)。

    8.1.1 I/O Address Space IO地址空间

    The 80386 provides a separate I/O address space, distinct from physical memory, that can be used to address the input/output ports that are used for external 16 devices. The I/O address space consists of 2^(16) (64K) individually addressable 8-bit ports; any two consecutive 8-bit ports can be treated as a 16-bit port; and four consecutive 8-bit ports can be treated as a 32-bit port. Thus, the I/O address space can accommodate up to 64K 8-bit ports, up to 32K 16-bit ports, or up to 16K 32-bit ports.

    80386从物理内存上明确的提供一个独立的IO地址空间,它们可以用来对外部16位设备的输入输出端口进行寻址。IO地址空间由2^16(64K)大小的独立的可寻址的8位端口组成;任何两个连续的8位端口可以被视做16位端口;四个连接的8位商品可以被视做32位端口。这样,IO地址空间可以容纳最多64K个8位端口,或32K个16位商品,或16K个32位端口。

    The program can specify the address of the port in two ways.程序可以使用两种方式指定端口的地址。

     Using an immediate byte constant, the program can specify:

    使用立即数据字节常量,程序可以指定:

    • 256 8-bit ports numbered 0 through 255. 

    256个,8位端口号0到255

    • 128 16-bit ports numbered 0, 2, 4, . . . , 252, 254.

    128个16位端口号,从0,2,4,直到252,254。

    • 64 32-bit ports numbered 0, 4, 8, . . . , 248, 252.

    64个32位端口号0,4,8,...,248,252。

    Using a value in DX, the program can specify:

    使用DX寄存器中的值,程序可以指定上:

    • 8-bit ports numbered 0 through 65535

    8位端口号,从0到65535

    • 16-bit ports numbered 0, 2, 4, . . . , 65532, 65534

    16位端口号,从0,2,4...,65532,65534

    • 32-bit ports numbered 0, 4, 8, . . . , 65528, 65532

    32位端口号,从0,4,8,...,65528,65532

    The 80386 can transfer 32, 16, or 8 bits at a time to a device located in the I/O space. Like doublewords in memory, 32-bit ports should be aligned at addresses evenly divisible by four so that the 32 bits can be transferred in a single bus access. Like words in memory, 16-bit ports should be aligned at even-numbered addresses so that the 16 bits can be transferred in a single bus access. An 8-bit port may be located at either an even or odd address.

    80386可以一次向位于IO空间的设备传送32、16或8位。就象内存中的双字一样,32位端口应当在能被4整除的地址上对齐,这样32位就能在一个单独的总线访问中被传送。就象内存中的字一样,16位端口应当在偶数对齐的地址上,这样16位就能在一个单独的总线访问中被传送。8位端口可以定位在奇数或偶数地址上。

    The instructions IN and OUT move data between a register and a port in the I/O address space. The instructions INS and OUTS move strings of data between the memory address space and ports in the I/O address space.

    指令IN和OUT通过IO地址空间,在寄存器和端口之间传输数据。指令INS和OUTS在内存地址与IO地址空间中的端口之间传送字符串数据。

    8.1.2 Memory-Mapped I/O IO的内存映射

    I/O devices also may be placed in the 80386 memory address space. As long as the devices respond like memory components, they are indistinguishable to the processor.

    IO设备也可以被放在80386的内存地址空间。由于设备响应就象内存组件一样,对于处理器平说,几乎没有什么区别。

    Memory-mapped I/O provides additional programming flexibility. Any instruction that references memory may be used to access an I/O port located in the memory space. For example, the MOV instruction can transfer data between any register and a port; and the ANDOR, and TEST instructions may be used to manipulate bits in the internal registers of a device (see Figure 8-1 ). Memory-mapped I/O performed via the full instruction set maintains the full complement of addressing modes for selecting the desired I/O device (e.g., direct address, indirect address, base register, index register, scaling).

    IO内存映射提供额外的程序的便利性。任何内存引用指令都可以被用来访问一个被映射到内存空间的IO端口。例如,MOV指令可以在任何寄存器与端口之间传送数据;AND、OR和TEST指令也可被用来操作设备内部寄存器上的位(见图8-1)。IO内存映射通过全部指令集,对选定的需求IO设备允许使用全部可用的寻址模式(如:直接寻址,间接寻址,基址寄存器寻址,索引寄存器寻址,以比例因子寻址)。

    Memory-mapped I/O, like any other memory reference, is subject to access protection and control when executing in protected mode. Refer to Chapter 6 for a discussion of memory protection.

    IO内存映射,就象其他的内存引用一样,在保护模式下,也是访问控制和保护的主题。参见第6章关于内存保护的讨论。

     

     

  • 相关阅读:
    MySQL 触发器
    MySQL视图
    MySQL中的存储过程和函数
    Mysql数据库连接查询
    数据库(MySQL)表基本操作
    Spring MVC---数据绑定和表单标签
    Spring MVC---基于注解的控制器
    Spring基于AOP的事务管理
    Ubuntu下通过wine安装HeidiSQL
    chmod命令详解
  • 原文地址:https://www.cnblogs.com/mqmelon/p/6692694.html
Copyright © 2011-2022 走看看