Well, the "BITS 16" is a problem. No Linux distro I'm aware of runs in 16-bit mode! With Nasm told to emit 16-bit code, and the cpu running in 32-bit mode, your "mov dx, 378h" is seen as "mov edx, 378EE90h", gobbling up the "out dx, al" and the "nop". Removing the "BITS 16" (the default for "-f elf" is 32-bits) does the "out", and the program segfaults as expected - you don't have permission to access this port! You'll need to do "sys_ioperm" or "sys_iopl" first. Either will require you to be root, I think. I don't know too much about 'em...
Best,
Frank