|
引用楼主 g5dsk 的帖子:
在看书过程中看到一个例子:
在PC机中,intel 8042键盘接口芯片包含4个8位寄存器,占用两个I/O端口,分别为0x60和0x64。下面看到一张表,其中的状态寄存器和控制寄存器地址都是0x60,输入缓冲寄存器和输出缓存寄存器都是0x64。然后提到状态和控制两个寄存器共用一个I/O端口,输入、输出缓冲寄存器共用一个I/O端口。
那么,同一个i/o端口对应两个寄存器,当用其地址进行操作时,到底操纵的是那个寄存器呢?
[/quote]
搜了下,没有找到8042的datasheet, 如果是像你说的,我猜则读0x60端口是读状态寄存器,写0x60端口是写控制寄存器.因为状态寄存器是只读的,控制寄存器是只写的,在电路级可以根据读或者是写来路由到不同寄存器的. 0x64端口类似
[quote]引用 1 楼 g5dsk 的回复:
再问个问题:
存储器空间和i/o空间有什么区别?
内存空间和IO空间跟CPU相关, 比如x86这两个空间是分开的; 有的CPU是同一个空间, 像51单片机
但访问时的注意IO空间是随时可变得, 编译器不能对这个访问做优化, 在C语言里要用volatile关键字
内存空间则很少用volatile, 搜了下主要在中断处理里
|
|