阅读:1771回复:5
I/O端口地址问题!!!
我一直有一个很简单的问题,不太好意思开口问,但实在又想知道。
从书上看到I/O端口范围是:0~64kb,但我发现一般I/O端口的程序,都是以byte,word,dword三种格式读写,我就不知道每个I/O端口的内容到底是多少,难道最大只有dword吗?如果不是,为什么不用”给定一个I/O端口号和字节数,去读写这个I/O端口的内容”呢? 还有,在2000下,是不是有些I/O端口已被保护起来,是不能读写的呢?因为我用了2000ddk\\genport的例子发现改它的BASEPORT,和PortCount会出现不能读的现象。 所以这两个简单的问题请明白人给个解释好吗? 在这里先谢了。 |
|
|
沙发#
发布于:2002-04-09 17:42
端口范围和读写格式没有冲突呀。端口读写只有这几种方式。
你的发散思维不错,而且你如果可以读写到DWORD的内容,你在 读写一大片数据自己也可以再做过函数呀。 肯定是被保护起来了。大家都任意读写肯定崩机... |
|
|
板凳#
发布于:2002-04-09 17:57
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2002-04-09 19:40
呵呵,还是我懂得太少啊,真得很感谢两位啊。回答我这么简单的问题。 :D
|
|
|
地下室#
发布于:2002-04-09 20:34
正如上面所述╋ 现在普遍就只采用BYTE╋WORD╋ DWORD三种方式╋基本上你可以通过使用不同位数的寄存器EAX╋ AX ╋AL就可以确定是读BYTE╋WORD╋DWORD了╋另外╋1K以上的I/O端口都不是固定不变的╋例如POWER MANAGEMENT 的BASE ADDRESS(这个ADDRESS其实就是指向一个I/O端口, 如1000H)就可以通过修改南桥的某个REGISTER而修改
|
|
5楼#
发布于:2002-04-10 09:57
到了64位计算机,就可以读8个BYTE了。 那是不是在下一代128位的计算机就可以读16个BYTE了? |
|
|