读取I / O端口是否有任何副作用?在Programmed I / O中怎么样?

时间:2012-05-18 09:05:17

标签: assembly x86 port cpu ata

读取CPU端口(通过in / out说明)是否有任何副作用?

例如:

  1. 是否“告诉”设备端口是否已被读取?

  2. 可以不小心读取任意端口造成伤害吗?

  3. 我认为它不应该,但是对我来说没有意义:

    如果没有副作用,那么ATA驱动器在进行编程I / O时如何“知道”何时读取一个字,那么它可以提供下一个数据字?

1 个答案:

答案 0 :(得分:4)

是的,读取端口可能会产生副作用,但是它是否存在(如果是这样,它们是什么)因设备而异。

我从未听说过可能因读取端口而损坏的设备。一个少数(但大多数是旧的)可能会因写入不正确的值而损坏/造成损坏,但我不知道任何读数可能会造成损害。在大多数情况下,阅读的副作用相当温和。

阅读行为可以告诉设备它正被读取。要从设备读取,请在总线上放置命令和地址。如果命令是“读取”且地址对应于设备,则正在读取设备。