您好,请问inport、outport等函数的端口地址参数如何确定?

看到有些代码使用inportb、outportb函数,其中portid这个参数直接使用了16进制地址(并且在注释中指明这个地址是计时器或扬声器什么的),那请问这个端口地址是如何确定的?
直接这样使用……难道所有的计算机都是这个值?制定了标准端口地址?
硬件决定的?那如何自己查询每个端口地址?
难道都得查那个什么表?那表是怎么出来的?
windows中“附件”“系统信息”查到的值太笼统。
小白第一次接触,要是问得有些幼稚,还请各位高手包涵~

森栏
浏览 499回答 3
3回答

明月笑刀无情

题目中,提到了windows,看来楼主所说的计算机,是常用的PC机。PC机,是80年代初期由 IBM 公司开发的硬件系统,微软开发的软件系统。PC机内部的端口地址,都是 IBM 公司设计的,并向外公开了这些数据(就是楼主说的什么表)。此后,其它公司相继开发了自己品牌的PC机,其中的端口地址,都和 IBM 的相同,这就叫“兼容”机。目前,常见的各个品牌的兼容 PC 机,其端口地址都是兼容 IBM 的。如果这些技术数据,和 IBM 设计的不同,就不是兼容机。

一只名叫tom的猫

看具体情况了。比如串口,汇编中可以直接使用sbuf,计算机上地址一般都是0x3F8或0x2F8,这些都是有规定的,就是你说的所谓的表。表是人为规定的,大家都按照这个标准做就可以了。做的多了,自然就记住了。

呼唤远方

inportb、outportb这两个函数只能在dos下用,windows nt下不允许直接访问端口的。在dos下很多端口都是标准的,是确定的,可以直接用。操作之前你必须事先知道硬件的端口地址。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
WebApp