Very much on point:
- A codec (e.g. video codec) is named from it being used for coding / decoding.
- A modem (such as your old 56k modem) is named from it being a device for modulation / demodulation.
Those names, which were neologisms at the time, were created specifically because there was no good name for them otherwise.
If you'd apply the same naming logic in your case, it'd be:
- Assembling / disassembling => asdis
- Serialization / deserialization => sedes
- Compilation / decompilation => comdecom (because codec is already taken)
- Encryption / decryption => endec
When no commonly understood name is readily available, it is perfectly fine to create one for yourself (which is exactly what they did for codecs and modems). The only thing you should take care of is to define these neologisms in your dictionary.
I generally advise any codebase to already maintain such a dictionary, so that you can maintain a ubiquitous language between the various stakeholders involved in the project.
Starting from that good practice, the only requirement that flows from creating your own word is to add it to said dictionary.
Also, just for the sake of clarity, you don't have to form the new word from the initial letters of its constituent parts; but it is a helpful mnemonic that enables people to remember these new words.
You could instead call these four examples a Schmoopsie, Floopsie, Doopsie and Clyde; but that seems like a more confusing name and is therefore not as good.
Deciding on the clearest name is very contextual and can't be put into a singular rule. You have to consider the practicality of using it. Often, these kinds of names tend to form organically during the project's lifetime, as people have to consistently refer to [thing] and slowly start forming a ubiquitously agreed upon name that describes [thing].
This is how most words were formed in human history: long term conversational consensus.