[bits 32] global port8_write global port8_read ; void port8_write( port8_t *port, uint8_t data ); port8_write: push ebp mov ebp, esp mov ecx, [ebp+8] mov edx, DWORD [ecx] movzx ax, BYTE [ebp+12] out dx, al leave ret ; uint8_t port8_read( port8_t *port ) port8_read: push ebp mov ebp, esp mov ecx, DWORD [ebp+8] mov edx, [ecx] in al, dx leave ret global port32_write global port32_read ; void port32_write( port32_t *port, uint32_t data ); port32_write: push ebp mov ebp, esp mov ecx, [ebp+8] mov edx, DWORD [ecx] mov eax, DWORD [ebp+12] out dx, eax leave ret ; uint32_t port32_read( port32_t *port ) port32_read: push ebp mov ebp, esp mov ecx, DWORD [ebp+8] mov edx, [ecx] in eax, dx leave ret