kar*_*421 1 c embedded hardware-port
我想了解以下代码:
#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);
}
Run Code Online (Sandbox Code Playgroud)
输出为0xff,十进制为255,无论是写入端口1还是端口0(使用outb()).当我写0时,我无法理解为什么它是255.
执行inb(0x378)的结果取决于硬件.一些芯片返回你之前用outb写的值,而其他一些芯片只返回垃圾.在任何情况下,它都不是从可能连接的设备读取字节的端口.