Der Linker macht ja nichts anderes, als die im Assembler eingegebenen Befehle in diese Zahlen (0 und 1) umzuwandeln.
Das macht der Assembler, nicht der Linker. Üblicherweise kommen aus dem Assembler wie beim Compiler object files die benannte Stücke Maschinencode enthalten. Der Linker nimmt dann die object files, löst Verweise auf eben diese Namen auf und hängt dann alles aneinander zu einer Binary bzw. Executable.
Im Netzt habe ich schon Hinweise darauf gefunden, dass es mit einem HEX Editor möglich sein soll, dass habe ich aber noch nicht ausprobiert. Ich kann mir das aber nicht wirklich vorstellen, weil ich annehme, dass der Linker doch noch etwas Code hinzu dichtet, damit eine Exe Datei wirklich ausführbar wird.
Eine Anwendung, die in einem Betriebssystemkontext läuft, bekommt üblicherweise noch Bibliotheken dazu gelinkt die etwas startup Code (Startparameter, Stack setup etc.) und die Syscalls enthalten. In reinen Assembleranwendungen kann man das durchaus selber implementieren. Dann muss man nur sehen das man das Dateiformat der Executable erhält.
Wenn man aber etwas programmiert das ohne Betriebssystem sieht das noch etwas anders aus. Ein Stage 1 Bootloader bei x86 ist z.B. einfach nur ein 512 Byte Binary bei dem die Ausführung vorne beginnt und am Ende ein magic code stehen muss. Das kann man durchaus mit einem Hex Editor schreiben, vorausgesetzt man hat Spaß daran die Maschinenbefehle aus Tabellen abzuschreiben. An der Stelle macht der Einsatz eines Linkers auch nicht mehr sehr viel Sinn.