Memory Addressing Modes

Thus far, we have gained some acquaintance with certain basic aspects of Assembly programming. We have covered the Intel Architecture basics, setting up the development environment of your choice, and the instruction set architecture (ISA).

We know what operations we are able to perform over different types of data, but all this is of very little value as long as we don't know how to retrieve and store data. Of course, we are familiar with the mov instruction, but without knowing how to address the data in memory, this instruction is quite useless.

Fortunately for us, Intel provides a very flexible mechanism for addressing data or code in memory. In this chapter, we will cover the following modes of memory addressing:

  • Sequential addressing
  • Direct addressing
    • Via an immediate address
    • Via an address stored in a register
  • Indirect addressing
    • Via an address pointed by immediate
    • Via an address pointed by a register
  • Base relative addressing
    • Base + index
    • Base + index * scale
  • IP/RIP-based addressing
  • Far pointers

The preceding categorization has nothing to do with the way Intel categorizes addressing modes as we are not paying attention to address encoding within an instruction. Knowing the ways to address memory and being able to use them appropriately is what we are after. It is worth mentioning that the preceding list represents addressing modes for both data and code. Additionally, we will use 64-bit examples in this chapter in order to be able to cover all of the modes listed here.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset