免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1820 | 回复: 2
打印 上一主题 下一主题

8259端口地址问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-25 23:17 |只看该作者 |倒序浏览
本帖最后由 lqshixinlei 于 2010-05-26 09:13 编辑

一般介绍8259A的书上都说,
由于8086的数据线宽为16位,而8259A的数据线8位只能接在数据总线的低8位上,
所以CPU要使用两个相邻的偶地址来寻址8259A的一对奇偶端口,只要使用数据总线的
A1接到8259A的A0即可,
那么照这样32位机中是否cpu对8259A寻址端口号为4的倍数?
可是我在Linux源代码中发现对主8259A的初始化仍然使用20H和21H,
21h不是2的倍数,更谈不上4的倍数呢?
这到底应该怎么解释?
我的意思是,假如在8086系统中(80386类似不过是32位),CPU用数据总线传输16位数据时,总是把数据送到以偶地址开头的两个相邻单元或者两个相邻端口。当CPU往内存传输数据时,低8位数据传输到较低的偶地址单元,高8位数据传输到较高的奇地址单元。
所以,如果采用21H的端口地址,由于它不是一个偶地址,所以传输数据的时候,数据不会出现在低8位数据总线上,而PC/AT的中断系统又是直接将CPU的D0-D7与8259的D0-D7相连,那这样数据传输不就出错了吗?

有哪位大哥给解释一下,小弟万分感激。

论坛徽章:
0
2 [报告]
发表于 2010-05-26 02:08 |只看该作者
X86 CPU 开机后先进入16位实模式,好像兼容8086?

关于A20,在BIOS里面有个经典的A20 还是A21 HACK。似乎和这个有关系,可以搜下。

8259A现在用的都少了,一般都是APIC了。

论坛徽章:
0
3 [报告]
发表于 2010-05-26 07:51 |只看该作者
这里面的20H和21H

其中H为16进制,而数据线8位为二进制,所以LZ可能在这混淆了~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP