看到有些代码使用inportb、outportb函数,其中portid这个参数直接使用了16进制地址(并且在注释中指明这个地址是计时器或扬声器什么的),那请问这个端口地址是如何确定的?直接这样使用……难道所有的计算机都是这个值?制定了标准端口地址?硬件决定的?那如何自己查询每个端口地址?难道都得查那个什么表?那表是怎么出来的?windows中“附件”“系统信息”查到的值太笼统。小白第一次接触,要是问得有些幼稚,还请各位高手包涵~
3 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
题目中,提到了windows,看来楼主所说的计算机,是常用的PC机。
PC机,是80年代初期由 IBM 公司开发的硬件系统,微软开发的软件系统。
PC机内部的端口地址,都是 IBM 公司设计的,并向外公开了这些数据(就是楼主说的什么表)。
此后,其它公司相继开发了自己品牌的PC机,其中的端口地址,都和 IBM 的相同,这就叫“兼容”机。
目前,常见的各个品牌的兼容 PC 机,其端口地址都是兼容 IBM 的。
如果这些技术数据,和 IBM 设计的不同,就不是兼容机。
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
看具体情况了。
比如串口,汇编中可以直接使用sbuf,计算机上地址一般都是0x3F8或0x2F8,这些都是有规定的,就是你说的所谓的表。
表是人为规定的,大家都按照这个标准做就可以了。
做的多了,自然就记住了。
呼唤远方
TA贡献1856条经验 获得超11个赞
inportb、outportb这两个函数只能在dos下用,windows nt下不允许直接访问端口的。
在dos下很多端口都是标准的,是确定的,可以直接用。操作之前你必须事先知道硬件的端口地址。
添加回答
举报
0/150
提交
取消