Question: I just need a hello world demo to see how machine code actually works.

Though windows' **EXE** and linux' **ELF** is near machine code,but it's not **PURE**

How can I write/execute **PURE** machine code?

Answer: 
Everyone knows that the application we usually wrote is run on the operating system. And managed by it.

It means that the operating system is run on the machine. So I think that is PURE machine code which you said.

So, you need to study how an operating system works.

Here is some NASM assembly code for a boot sector which can print "Hello world" in PURE.

```
 org
   xor ax, ax
   mov ds, ax
   mov si, msg
boot_loop:lodsb
   or al, al 
   jz go_flag   
   mov ah, 0x0E
   int 0x10
   jmp boot_loop

go_flag:
   jmp go_flag

msg   db 'hello world', 13, 10, 0

   times 510-($-$$) db 0
   db 0x55
   db 0xAA

```

And you can find more resources here: <http://wiki.osdev.org/Main_Page>.

END.

If you had installed nasm and had a floppy, You can

```
nasm boot.asm -f bin -o boot.bin
dd if=boot.bin of=/dev/fd0

```

Then, you can boot from this floppy and you will see the message.
(NOTE: you should make the first boot of your computer the floppy.)

In fact, I suggest you run that code in full virtual machine, like: bochs, virtualbox etc.
Because it is hard to find a machines with a floppy.

So, the steps are 
First, you should need to install a full virtual machine.
Second, create a visual floppy by commend: bximage
Third, write bin file to that visual floppy.
Last, start your visual machine from that visual floppy.

NOTE: In <https://wiki.osdev.org> , there are some basic information about that topic.
It sounds like you're looking for the old [16-bit DOS `.COM` file format](http://en.wikipedia.org/wiki/COM_file). The bytes of a `.COM` file are loaded at offset 100h in the program segment (limiting them to a maximum size of 64k - 256 bytes), and the CPU simply started executing at offset 100h. There are no headers or any required information of any kind, just raw CPU instructions.