Owszem, ale przy powtórnej zamianie kodu maszynowego na język programowania dostajemy kod właśnie w asemblerze, jako języku najniższego poziomu. Odzyskanie "pierwotnego kodu" w języku wysokiego poziomu nie jest chyba możliwe.
Dobrze, że podpisujesz się zarejestrowanym nickiem. Dzięki temu będzie wiadomo, czyje posty można od razu po prostu zignorować.
To nie jest język programowania jak inny. Zdarzyło mi się pisać w kodzie maszynowym (prosty program na ARM-a w celach edukacyjnych - ze ściągą rzecz jasna) oraz w asemblerze. Jaka jest różnica? Taka, że zamiast ciągów zer i jedynek są słówka jak add, mov, jmp itd... oraz nazwy rejestrów. Są pewne ułatwienia jak etykiety, czy wczytywanie plików do pamięci, ale to nie czyni go językiem. Raczej konwerterem.
Owszem, jest kompilowany, ale asembler jest po to, żebyś nie musiał stukać programów w hexedytorze np. Składa się on z mnemoników, a zapewne wiesz, że mnemonik to po prostu słowny zapis instrukcji procesora. Pisząc w asemblerze, po kompilacji większość kodu jest niezmieniona. Debugger/Dizassembler i analiza.
A między nami, czy najtrudniejszy to nie wiem, bardziej najmniej zrozumiały dla człowieka. Rozkazów nie ma w nim Bóg wie ile, wymaga po prostu zrozumienia istoty działania m.in. procesora.