定义:在这种编址方式中,I/O端口和内存单元统一编址,即把I/O端口当做内存单元对待,从整个内存空间中划出一个子空间给I/O端口,没一个I/O端口分配一个地址码,用访问存储器的指令对I/O端口进行操作
I/O端口的数目几乎是不受限制的 ,总和的基础上,可以挤内存
访问内存指定均适用于I/O端口,对I/O端口的数据处理能力强
cup无需产生区别访问内存操作和I/O的控制信息,从而可减少引脚
程序中I/O操作不清晰,难以区分程序中的I/O操作和存储器操作;
I/O端口占用了一部分内存空间
I/O端口地址译码电路较复杂(因为内存的地址位数较多)
内存和外设公用地址
举个例子,总共有64k的内存空间 ,统一编址:分配给 内存占48k,分配给外设占后16k,在cup眼里,它们只有地址是不同的。
都可以用mov指令去访问
- ;例如
- MOV [0030H],AL ;<48K 访问的就是内存
-
- MOV [0FFFFH],AL ;>48K 访问的就是外设
靠地址去区分是存储器还是内存。需要设计者使用者知道从哪里到哪里是内存,从哪里到哪里是外设
I/O端口地址和存储器的地址相互独立,即I/O端口地址空间和存储器地址空间分开设置,互不影响,采用这种方式,对I/O端口的操作使用输入/输出指令(I/O指令)
不占用内存空间
使用I/O指令,程序清晰,很容易看出是I/O操作还是存储器操作
译码电路比较及简单(因为I/O端口地址空间一般较小,所以地址线也就较少)
只能用专门的I/O指令,访问端口的方法不如访问存储器的方法多
证明一下
1 地址线条数都不一样,8086访问内存是20根地址线(1MB),访问外设是16根地址线(64K)
2 M/ I/O非引脚 为零的时候是访问的外设 ,为1的时候访问的是内存(8088相反)带帽子是低电平有效
3 有专用的I/O指令 ,IN/OUT指令
一般会考简答题