Menu
Coddy logo textTech

MOV Bellekten Yazmaca

Coddy'nin Assembly Journey'sinin Temeller bölümünün bir parçası — ders 17 / 45.

Şu ana kadar, sayıları doğrudan yazmaçlara (immediate) taşıdınız ve yazmaçlar arasında değerleri kopyaladınız. Şimdi, bellekten bir yazmaca nasıl veri yükleneceğini öğreneceksiniz.

Bu neden önemlidir:

Bölüm 0'dan hatırlayın: CPU bellek ile doğrudan çalışamaz. Veriler önce yazmaçlara (registers) yüklenmelidir. Bunu şu şekilde yaparsınız.

Sözdizimi:

mov register, [address]

Köşeli parantezler [ ] şu anlama gelir: "bu bellek adresine git ve orada saklanan değeri al."

Şöyle düşünün:

number bellek adresinde bir kutu olduğunu hayal edin. Bu kutunun içinde bir değer var, örneğin 5 sayısı. Şunu yazdığınızda:

mov al, [number]    ; "number" bellek adresindeki değeri al içine yükle

İşlemciye şunu söylüyorsunuz: "number adlı kutuya git, içindeki değer her neyse onu al (bu durumda 5) ve onu al kaydedicisine kopyala."

Bu komut yürütüldükten sonra, 5 değeri artık al içinde saklanır. number adresindeki kutunun içindeki orijinal değer orada kalır — silinmez.

Önemli kurallar:

KuralAçıklama
Kaynak bir bellek adresi olmalıdır[label] veya [address]
Köşeli parantezler zorunludurmov al, myNumber değeri değil, adresi yükler
Boyut eşleşmelidirEğer bellek bir bayt (byte) saklıyorsa, al kullanın (rax değil)

Yaygın hata:

; Yanlış: myNumber'ın değerini değil, ADRESİNİ yükler
mov al, myNumber

; Doğru: myNumber adresinde saklanan DEĞERİ yükler
mov al, [myNumber]
challenge icon

Görev

value bellek adresindeki değeri al yazmacına yüklemek için bir satır assembly kodu yazın.

Kendin dene

section .data
    msg db 'al = '
    msg_len equ $ - msg

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; Öğrencinin kodu önce çalışır (al içine değer yükler)
    
    %include "solution.asm"
    
    ; al'deki değeri kaydet
    mov r12, rax
    
    ; "al = " yazdır
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; al içindeki değeri yazdır
    mov rax, r12
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Çıkış
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler