一 I/O 端口
1. 读写字节端口(8 位宽)
unsigned inb(unsigned port);
void outb(unsigned char byte, unsigned port);
2. 读写字端口(16 位宽)
unsigned inw(unsigned port);
void outw(unsigned short word, unsigned port);
3. 读写长字端口(32 位宽)
unsigned inl(unsigned port);
void outl(unsigned longword, unsigned port);
4. 读写一串字节。
void insb(unsigned port, void *addr, unsigned long count); //insb()从端口 port 开始读 count 个字节端口,并将读取结果写入 addr 指向的内存
void outsb(unsigned port, void *addr, unsigned long count); //outsb()将 addr 指向的内存的 count 个字节连续地写入 port 开始的端口。
5. 读写一串字。
void insw(unsigned port, void *addr, unsigned long count);
void outsw(unsigned port, void *addr, unsigned long count);
6. 读写一串长字。
void insl(unsigned port, void *addr, unsigned long count);
void outsl(unsigned port, void *addr, unsigned long count);
二 I/O 内存
1. 读写字节端口(8 位宽)
unsigned inb(unsigned port);
void outb(unsigned char byte, unsigned port);
2. 读写字端口(16 位宽)
unsigned inw(unsigned port);
void outw(unsigned short word, unsigned port);
3. 读写长字端口(32 位宽)
unsigned inl(unsigned port);
void outl(unsigned longword, unsigned port);
4. 读写一串字节。
void insb(unsigned port, void *addr, unsigned long count); //insb()从端口 port 开始读 count 个字节端口,并将读取结果写入 addr 指向的内存
void outsb(unsigned port, void *addr, unsigned long count); //outsb()将 addr 指向的内存的 count 个字节连续地写入 port 开始的端口。
5. 读写一串字。
void insw(unsigned port, void *addr, unsigned long count);
void outsw(unsigned port, void *addr, unsigned long count);
6. 读写一串长字。
void insl(unsigned port, void *addr, unsigned long count);
void outsl(unsigned port, void *addr, unsigned long count);
二 I/O 内存