Können über eckige Klammern auf einen Speicherbereich zugreifen
Zahl / Wert in Klammern gibt immer die Startadresse an
; Kopiert Speicherstellen 345 bis 352 (8 Byte) in rax
mov rax, [345]
; Kopiert Speicherstellen 345 bis 348 (4 Byte) in eax
mov eax, [345]
; Kopiert rbx in Speicherstellen rax bis rax+7 (8 Byte)
mov [rax], rbxNicht nur einfache Register oder feste Zahlen sind möglich
Allgemein: address = scale * index + base + offset
scale ∈ {1,2,4,8}
base,offset ∈ {rax, rbx, rcx, rdx, rbp, rsi, rdi}
offset kann auch eine Zahl sein
mov rax, [rbx + 4*rdi + 7]Sinnvoll für Arrayzugriffe in Schleifen
base ist der Array-Beginnindex ist der Array-Index (beginnt bei 0)scale ist die Größe der Array-Einträgebss-Section kann beschreibbarer Speicher reserviert werdensection .bss
mem:
resb 8 ; Reserviert 8 Byte Speicher
section .text
func:
; Schiebt eine Zahl in den Speicher (QWORD = 8 Byte)
mov QWORD [mem], 573456456
; Schiebt die Zahl aus dem Speicher in rax
mov rax, [mem]