Every tutorial on writing bootloaders included the [BITS 16] and [ORG 0x7C00] directives. But one tutorial didn't, and the code worked. Here it is:
xor di, di
mov [es:di], word 441h
times 510 - ($-$$) db 0
It puts a red A on the screen (not important).
Why does this work without the directives? (worked in virtual machine, didn't try hardware)