我试图理解以下代码:

#include<stdio.h>
#include<stdlib.h>
#include<sys/io.h>

#define baseport 0x378

int main()
{
    int b;
    if(ioperm(baseport,3,1))
    {
        perror("ioperm");
        exit(1);
    }
    outb(0,baseport);

    usleep(1000000);
    printf("\n the status: %x,\n",inb(baseport));

    if (ioperm(baseport,3,0)) {perror("ioperm"); exit(1);}

    exit(0);
}

无论我是在端口1还是端口0上写(使用outb()),输出都是0xff,255十进制。当我给它写0时,我不明白为什么它是255。

最佳答案

执行inb(0x378)的结果取决于硬件。一些芯片返回您以前用outb编写的值,而另一些芯片只返回垃圾。无论如何,它不是从潜在连接设备读取字节的端口。

关于c - 在I/O端口上读写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9750709/

10-09 13:00