This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:multiasm:papc:chapter_6_5 [2026/01/15 14:34] – ktokarz | en:multiasm:papc:chapter_6_5 [2026/02/27 01:43] (current) – [Base addressing] jtokarz | ||
|---|---|---|---|
| Line 74: | Line 74: | ||
| The code shows other examples of base addressing. | The code shows other examples of base addressing. | ||
| <code asm> | <code asm> | ||
| - | ; copy one byte from the data segment in memory at the address from the BX register to AL | + | ; copy one byte from the data segment in memory at the address from |
| + | ; the BX register to AL | ||
| mov al, [bx] | mov al, [bx] | ||
| - | ; copy two bytes from the data segment in memory at the address from the EBX register to AX | + | ; copy two bytes from the data segment in memory at the address from |
| + | ; the EBX register to AX | ||
| mov ax, [ebx] | mov ax, [ebx] | ||
| Line 179: | Line 181: | ||
| <code asm> | <code asm> | ||
| ; copy one byte from the data segment in the memory at the address calculated | ; copy one byte from the data segment in the memory at the address calculated | ||
| - | ; as the sum of the base (BX) register, the index (SI) register and a displacement to AL | + | ; as the sum of the base (BX) register, |
| + | ; the index (SI) register and a displacement to AL | ||
| mov al, [bx] + [si] + table | mov al, [bx] + [si] + table | ||
| mov al, [bx + si] + table | mov al, [bx + si] + table | ||
| Line 273: | Line 276: | ||
| </ | </ | ||
| - | The 32-bit architecture makes the choice of registers much more flexible, and any of the eight registers (including the stack pointer) can be used as the base register. Here, the stack segment is chosen if the base register is EBP or ESP. Index register can be any of the general-purpose registers except | + | The 32-bit architecture makes the choice of registers much more flexible, and any of the eight registers (including the stack pointer) can be used as the base register. Here, the stack segment is chosen if the base register is EBP or ESP. The index register can be any of the general-purpose registers except |
| In the 64-bit architecture, | In the 64-bit architecture, | ||
| Line 280: | Line 283: | ||
| <figure effectiveIA32> | <figure effectiveIA32> | ||
| - | {{ : | + | {{ : |
| < | < | ||
| + | </ | ||
| + | |||
| + | In x64, new R8 - R16 registers can also be used for address calculation, | ||
| + | |||
| + | <figure effectivex64> | ||
| + | {{ : | ||
| + | < | ||
| </ | </ | ||