bits 32 global outb global inb global outw global inw section .text outb: ;word [esp + 4] = port ;byte [esp + 8] = value mov dx, word [esp + 4] mov al, byte [esp + 8] out dx, al ret inb: ;word [esp + 4] = port ;al out = value mov dx, word [esp + 4] in al, dx ret outw: ;word [esp + 4] = port ;word [esp + 8] = value mov dx, word [esp + 4] mov ax, word [esp + 8] out dx, ax ret inw: ;word [esp + 4] = port ;ax out = value mov dx, word [esp + 4] in ax, dx ret