Addressing modes 

Not like high-level languages, a real assembly language has no notion of a data type. Data in memory are not self-identifying. The bits at a memory location have no inherent meaning – the meaning is determined by how an instruction uses them. A doubleword in memory might be interpreted as an unsigned integer, a floating point number, a character, several characters, or part of an instruction.

The assembly language for a real computer exposes these details to the programmer. It is the responsibility of the programmer to assure, for example, that integer variables are added together using an integer add instruction, and that memory cells containing instructions are not interpreted as floating point operands.