7.1.4I/0端口的寻址方式 一个I/0接口电路总要包括若干个端口,除常见的数据端口、 命令端口和状态端口外,还包括方式控制、操作结果和地 址索引等用作特殊用途的端口。端口可被处理器如同存储 单元一样访问,因此每个端口就存在着寻址方式问题。 在现代微机系统中,对I/0接口的端口编址有两种方式: 统一编址和独立编址。 1
7.1.4 I/O端口的寻址方式 一个I/O接口电路总要包括若干个端口 接口电路总要包括若干个端口,除常见的数据端口 除常见的数据端口、 命令端口和状态端口外,还包括方式控制、操作结果和地 址索引等用作特殊用途的端口。端口可被处理器如同存储 单元一样访问,因此每个端口就存在着寻址方式问题。 在现代微机系统中,对I/O接口的端口编址有两种方式: 统一编址和独立编址。 11
1.统一编址 统一编址又称为“存储器映像编址”,是把每一个端口视为 一个存储单元,并赋予相应的存储器地址。微处理器访问 该端口,如同访问存储器一样,只是单元地址值不同而已。 所有访问内存的指令同样适合于访问I/0端口。 优,点:无需专门的I/0指令,简化了指令系统,可通过功能 较强的访问内存指令直接对I/0数据进行算术或逻辑运算。 缺点:I/0数据传输时间延长。 889 12
1.统一编址 统一编址又称为 统一编址又称为“存储器映像编址 存储器映像编址”,是把每一个端口视为 是把每一个端口视为 一个存储单元,并赋予相应的存储器地址。微处理器访问 该端口,如同访问存储器一样,只是单元地址值不同而已。 所有访问内存的指令同样适合于访问I/O端口。 优点:无需专门的I/O指令,简化了指令系统,可通过功能 较强的访问内存指令直接对I/O数据进行算术或逻辑运算。 缺点:I/O数据传输时间延长。 12
2.独立编址 独立编址又称“覆盖编址方式”,是把所有I/0端口看做一个独立于存 ●● 储器空间的I/0空间。在这个空间内,每个端口都被分配1个地址与之 对应。微处理器对I/0端口和存储单元的不同寻址是通过不同的读写 控制信号来实现的。由于系统需要的I/0端口寄存器一般比存储器单 元要少得多,一般只设置256~1024个端口,因此选择I/0端口只需用 8~10根地址线即可。例如:Inte1公司生产的微处理器,像 8086/80X86等系列, 显然,要访问独立于存储空间的端口,必须用专门的I/0指令。为加快 I/0数据的传输速度,设计的这种I/0指令均为单字节或多字节(指令 直接带端口地址)。通常这种I/0指令有2种,即输入指令IN、输出指 令0UT及其相关的指令组。不过这种I/0指令仅做数据传输而无算术或 逻辑运算功能。 13
2.独立编址 独立编址又称“覆盖编址方式”,是把所有I/O端口看做一个独立于存 储器空间的I/O空间。在这个空间内,每个端口都被分配 每个端口都被分配1个地址与之 对应。微处理器对I/O端口和存储单元的不同寻址是通过不同的读写 控制信号来实现的。由于系统需要的I/O端口寄存器一般比存储器单 元要少得多,一般只设置256~1024个端口,因此选择I/O端口只需用 8~10根地址线即可。例如:Intel公司生产的微处理器,像 8086/80X86等系列, 显然,要访问独立于存储空间的端口,必须用专门的I/O指令。为加快 I/O数据的传输速度 数据的传输速度,设计的这种I/O指令均为单字节或多字节 指令均为单字节或多字节(指令 直接带端口地址)。通常这种I/O指令有2种,即输入指令IN、输出指 令OUT及其相关的指令组 及其相关的指令组。不过这种I/O指令仅做数据传输而无算术或 指令仅做数据传输而无算术或 逻辑运算功能。 13
3.独立编址优缺,点: 优,点:I/0端口地址不占用存储器地址空间。I/0端口地址译。 码器较简单,寻址速度较快。使用专用I/0指令和真正的 存储器访问指令有明显区别,可使程序编制得更清晰,便 于理解和检查。 缺点:专用I/0指令类型少,程序设计灵活性差。使用I/0指 令只能在累加器(AL、AX、EAX)和I/0端口间交换信息, 处理能力不如存储器映像方式强。同时要求处理器能提供 存储器读/写、I/0端口读/写两组控制信号,增加了控制 逻辑的复杂性。 o8.888 14
3.独立编址优缺点: 优点:I/O端口地址不占用存储器地址空间。I/O端口地址译 码器较简单,寻址速度较快 。使用专用I/O指令和真正的 存储器访问指令有明显区别,可使程序编制得更清晰,便 于理解和检查。 缺点:专用I/O指令类型少,程序设计灵活性差 程序设计灵活性差 。使用I/O 指 令只能在累加器(AL、AX、EAX)和I/O端口间交换信息, 处理能力不如存储器映像方式强。同时要求处理器能提供 存储器读 / 写 、I/O端口读 /写两组控制信号 写两组控制信号,增加了控制 逻辑的复杂性。 14
7.2I/0操作 在统一编址方式中,CPU不需要使用专门的I/0指令 来访问I/0端口,可以将I/0端口看作是内存单元。 在独立编址方式中,CPU必须使用专门的I/0指令 来访问端口。对一个地址而言,它要么是内存单 元,要么是I/0端口。内存操作指令中使用的地址 是内存地址,而I/0指令使用的地址是端口地址。 888 15
7.2 I/O 7.2 I/O操作 在统一编址方式中 在统一编址方式中,CPU不需要使用专门的 不需要使用专门的I/O指令 来访问I/O端口,可以将I/O端口看作是内存单元 端口看作是内存单元。 在独立编址方式中,CPU必须使用专门的I/O指令 来访问端口。对一个地址而言,它要么是内存单 元,要么是I/O端口。内存操作指令中使用的地址 内存操作指令中使用的地址 是内存地址,而I/O指令使用的地址是端口地址 指令使用的地址是端口地址。 15