Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
en:multiasm:cs:chapter_3_10 [2025/12/10 12:43] – [Program control flow destination addressing] ktokarzen:multiasm:cs:chapter_3_10 [2025/12/10 13:22] (current) – [Absolute and Relative addressing] ktokarz
Line 100: Line 100:
 ===== Absolute and Relative addressing ===== ===== Absolute and Relative addressing =====
  
-In all previous examples, the addresses were specified as the values which represent the **absolute** memory location. The resulting address (even calculated as the sum of some values) was the memory location counted from the beginning of the memory address "0". It is presented in Fig{{ref>addrabsolute}}.+In all previous examples, the addresses were specified as the values which represent the **absolute** memory location. The resulting address (even calculated as the sum of some values) was the memory location counted from the beginning of the memoryaddress "0". It is presented in Fig{{ref>addrabsolute}}.
  
 <figure addrabsolute> <figure addrabsolute>
Line 107: Line 107:
 </figure> </figure>
  
-Absolute addressing is simple and doesn't require any additional calculations by the processor. It is often used in embedded systems, where the software is installed and configured by the designer and the location of programs does not change. +Absolute addressing is simple and doesn't require any additional calculations by the processor. It is often used in embedded systems, where the software is installed and configured by the designerand the location of programs does not change. 
-Absolute addressing is very hard to use in general-purpose operating systems like Linux or Windows where the user can start a variety of different programs, and their placement in the memory differs every time they're loaded and executed. Much more useful is the **relative addressing** where operands are specified as differences from memory location and some known value which can be easily modified and accessed. Often the operands are provided relative to the Instruction Pointer which allows the program to be loaded at any address in the address space, but the distance between the currently executed instruction and the location of the data it wants to reach is always the same. This is the default addressing mode in the Windows operating system working on x64 machines. It is illustrated in Fig{{ref>addrrelative}}.+Absolute addressing is very hard to use in general-purpose operating systems like Linux or Windowswhere the user can start a variety of different programs, and their placement in the memory differs every time they're loaded and executed. Much more useful is the **relative addressing** where operands are specified as differences from memory location and some known valuewhich can be easily modified and accessed. Oftenthe operands are provided relative to the Instruction Pointerwhich allows the program to be loaded at any address in the address space, but the distance between the currently executed instruction and the location of the data it wants to reach is always the same. This is the default addressing mode in the Windows operating systemworking on x64 machines. It is illustrated in Fig{{ref>addrrelative}}.
  
 <figure addrrelative> <figure addrrelative>
en/multiasm/cs/chapter_3_10.txt · Last modified: 2025/12/10 13:22 by ktokarz
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0