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章关于内存保护的讨论。

     

     

  • 相关阅读:
    vue使用elementui合并table
    使用layui框架导出table表为excel
    vue使用elementui框架,导出table表格为excel格式
    前台传数据给后台的几种方式
    uni.app图片同比例缩放
    我的博客
    【C语言】取16进制的每一位
    SharePoint Solution 是如何部署的呢 ???
    无效的数据被用来用作更新列表项 Invalid data has been used to update the list item. The field you are trying to update may be read only.
    SharePoint 判断用户在文件夹上是否有权限的方法
  • 原文地址:https://www.cnblogs.com/mqmelon/p/6692694.html
Copyright © 2011-2022 走看看