CPU寻址外设端口地址的方法有两种,一种是统一寻址,还有一种是什么?

如题所述

CPU和外部设备之间是通过I/O芯片进行联系,达到相互间传输信息的目的。每个I/O芯片上都有一个端口或几个端口,一个端口往往对应于芯片上的一个寄存器或一组寄存器。微机系统要为每个端口分配一个地址。叫端口地址或端口号,各个端口号和存储器单元地址一样,应具有唯一性。 \x0d\x0a\x0d\x0a  1.采用存储器映象的I/O \x0d\x0a\x0d\x0a在这种编址方法下,即将 I/O端口地址置于1MB的存储器空间中,把它们看作存储器单元对待,此时,I/O端口地址空间是内存地址空间的一部分。因此,存储器的各种寻址方式都可用于寻址端口。这种方式下端口操作灵活,I/O芯片与CPU的连接和存储器芯片与CPU的连接类似,但缺点是端口占用了一些存储器空间,而且执行I/O操作时,因地址位数长,速度会较慢。 \x0d\x0a\x0d\x0a所有的微机系统,都可以采用此中处理方式。 \x0d\x0a\x0d\x0a  \x0d\x0a\x0d\x0a2.采用独立编址的 I/O \x0d\x0a\x0d\x0a此时,I/O端口地址空间与内存地址空间是独立的两个不同空间。 \x0d\x0a\x0d\x0a就可以采用此种处理方式。设有专门的输入指令IN和输出指令OUT,以对独立编址的I/O端口进行操作。 使用A15~A016条地址线作端口地址,可访问的I/O端口最多可有64K个8位端口或32K个16位的端口,任何两个相邻的8位端口可以组合成一个16位的端口,并且和存储器字一样,对位于奇数地址的16位端口的访问,要进行两次才能完成。端口的寻址方法不分段,因而不用段寄存器。端口地址仍为20位,只是高四位总是为0,在I/O的64KB空间中,从F8H~FFH这8个地址是Intel公司保留使用的,用户不能占用,否则将影响用户系统和Intel公司产品的兼容性。 \x0d\x0a\x0d\x0a在CPU引脚上,有一个引脚叫M/IO,此脚的功能就是用来区别地址总线上是传送端口地址码还是内存地址码。当此脚=1时,CPU当前地址总线上正传送的是内存地址码,CPU正在对内存进行存取操作;当此脚=0时,CPU当前地址总线上正传送的是I/O端口地址码,CPU正在对I/O端口进行访问。 \x0d\x0a\x0d\x0a只有具有区别对内存访问及对I/O端口访问的引脚控制信号的微处理器,才能采用此种编址方式。
温馨提示:答案为网友推荐,仅供参考
相似回答