Addressing modes are the method used to determine which part of memory is being referred to by a machine instruction. There are various types, and which mode is used depends on what type of computer architecture is being used.
Random access memory (RAM) is the primary area of memory for a computer, and it is where any application must be loaded to if it is to be run. The central processing unit (CPU) reads machine instructions from the RAM and acts on them. The machine instructions often must refer to specific portions of the RAM. In order to do this, the CPU must have a way of knowing which portion of RAM the machine instruction is referring to.
Addressing modes are used to divide up the sections of RAM into individual portions that may be referenced individually, similar to how each house on a street has an address. This address can then be used by a machine instruction to refer to a specific portion of memory. The CPU will then access that portion of memory and perform the action specified by the machine instruction.
There are many different types of addressing modes, and different types of computer architecture feature different ones. This is part of why all software isn't compatible with all computers. If an application is designed for one type of addressing mode, then it will not be able to run when used on a system that uses a different one. It will be much like speaking to someone in a language he does not understand.
The specifics of each type are important for computer programmers using assembly language. This computer language is a direct representation of the machine instructions sent to the CPU and is what makes it able to produce programs that can run several times faster than other programming languages. Assembly language is used in the development of operating systems. A computer programmer must know the type of addressing modes used on the specific computer architecture before he can write a functioning operating system or application in assembly.