A disassembler is a computer program that translates machine language into assembly language - the inverse operation to that of an assembler. A disassembler differs from a decompiler, which targets a high-level language rather than an assembly language. Disassembly, the output of a disassembler, is often formatted for human-readability rather than suitability for input to an assembler, making it principally a reverse-engineering tool.
A processor consumes instructions encoded as raw bytes to change its internal state (to calculate something or to change the operation flow). For example, sequence of three bytes 83 C4 04 is interpreted by x86 processor as an instruction to add value 4 to register esp. However, it is difficult to operate with raw instruction bytes for humans. It is much easier to represent the same command as an assembler instruction:
add esp, 4
This instruction is directly translated (or assembled) to
83 C4 04.
Disassembler is intended to do the opposite. It will parse
83 C4 04 and produce a
add esp, 4. So, a disassembler is needed to convert raw binary file into something readable by a human eye.
A current version of the Hex Editor Neo supports disassembling: