io.asm (766B)
1 bits 32 2 3 global outb 4 global outw 5 global inb 6 global inw 7 global io_wait 8 9 section .text 10 11 outb: 12 push ebp 13 mov ebp, esp 14 ; [ebp+8] = port (16-bit) 15 ; [ebp+12] = byte (8-bit) 16 mov dx, WORD [ebp+8] 17 mov al, BYTE [ebp+12] 18 out dx, al 19 pop ebp 20 ret 21 22 outw: 23 push ebp 24 mov ebp, esp 25 mov dx, WORD [ebp+8] 26 mov ax, WORD [ebp+12] 27 out dx, ax 28 pop ebp 29 ret 30 31 inb: 32 push ebp 33 mov ebp, esp 34 mov dx, WORD [ebp+8] 35 xor eax, eax 36 in al, dx 37 pop ebp 38 ret 39 40 inw: 41 push ebp 42 mov ebp, esp 43 mov dx, WORD [ebp+8] 44 xor eax, eax 45 in ax, dx 46 pop ebp 47 ret 48 49 io_wait: 50 push ebp 51 mov ebp, esp 52 mov dx, 0x80 53 xor al, al 54 out dx, al 55 pop ebp 56 ret