===== Assembly language ===== Put baldly, assembly language is used to write machine language programs. A plain text file is given as input to a program called an assembler, which is a simple form of compiler. The output is machine language. The biggest help that assembly language gives to the programmer is in providing meaningful labels for memory locations, very helpful when branch destination move as the program expands. It might also offer macro facilities, providing shortcuts for often-used compound instructions or program flow constructs. ===== Machine language ===== Machine language is seen in two forms: machine code, which is the byte code that the processor actually executes, and the mnemonics, which are the text abbreviations which the human programmer finds easiest to understand. The two forms can be switched back and forth without losing information; they are like the written and spoken forms of the same language. ===== Assembly and disassembly ===== The reverse of assembly is disassembly; a machine code program is translated into something that looks like assembly language. But a lot of helpful information in the assembly language was never included in the machine code; much is lost in translation so disassembly is difficult to read.