Du hast das ganze noch nicht wirklich verstanden hab ich den Eindruck,
wenn das ganze in maschienen code übesetzt wird, sollte es keinen Unterschied machen ob man zuvor Assembler oder C++ verwendet hat.

damit : nasm –f bin –o kernel.bin kernel.asm erzeugt man dann binärcode.
Die "formate", also die Dateiendungen teilen Windows nur mit um was für eine Art Datei es sich handelt, da du jedoch ein kleins OS selber schreiben willst sind die Dateiendungen vollkommen nebensächlich.

EDIT: Da war Tim doch etwas schneller