#include uint8_t inportb(uint16_t port) { uint8_t result; asm volatile ("in %%dx, %%al" : "=a" (result) : "d" (port)); return result; } void outportb(uint16_t port, uint8_t byte) { asm volatile ("out %%al, %%dx" : // no output : "a" (byte), "d" (port)); } uint16_t inportw(uint16_t port) { uint16_t result; asm volatile ("in %%dx, %%ax" : "=a" (result) : "d" (port)); return result; }