Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

MOV من الذاكرة إلى السجل

جزء من قسم الأساسيات في رحلة Assembly على Coddy. الدرس 17 من 45.

حتى الآن، قمت بنقل الأرقام مباشرة إلى السجلات (فوري) ونسخ القيم بين السجلات. الآن ستتعلم كيفية تحميل البيانات من الذاكرة إلى سجل.

لماذا هذا مهم:

تذكر من الفصل 0: لا يمكن لـ CPU العمل مباشرة مع الذاكرة. يجب تحميل البيانات في registers أولاً. هذه هي الطريقة التي تفعل بها ذلك.

الصيغة:

mov register, [address]

الأقواس [ ] تعني: "اذهب إلى عنوان الذاكرة هذا واحصل على القيمة المخزنة هناك."

فكر في الأمر على هذا النحو:

تخيل أنه عند عنوان الذاكرة number يوجد صندوق. داخل هذا الصندوق توجد قيمة، على سبيل المثال الرقم 5. عندما تكتب:

mov al, [number]    ; تحميل القيمة من عنوان الذاكرة "number" إلى al

أنت تخبر وحدة المعالجة المركزية (CPU): "اذهب إلى الصندوق المسمى number، وخذ أي قيمة موجودة بداخله (في هذه الحالة 5)، وانسخها إلى السجل al."

بعد تنفيذ هذه التعليمة، يتم الآن تخزين القيمة 5 في al. القيمة الأصلية داخل الصندوق في العنوان number تبقى هناك — لا يتم حذفها.

قواعد هامة:

القاعدةالشرح
يجب أن يكون المصدر عنوان ذاكرة[label] أو [address]
الأقواس مطلوبةmov al, myNumber يحمل الـ عنوان، وليس القيمة
يجب أن يتطابق الحجمإذا كانت الذاكرة تخزن بايت، استخدم al (وليس rax)

خطأ شائع:

; خطأ: يحمل عنوان (ADDRESS) myNumber، وليس القيمة
mov al, myNumber

; صحيح: يحمل القيمة (VALUE) المخزنة في myNumber
mov al, [myNumber]
challenge icon

التحدي

اكتب سطرًا واحدًا من لغة التجميع لتحميل القيمة من عنوان الذاكرة value إلى المسجل al.

جرّب بنفسك

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

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; كود الطالب يعمل أولاً (يُحمّل القيمة في al)
    
    %include "solution.asm"
    
    ; حفظ القيمة من al
    mov r12, rax
    
    ; طباعة "al = "
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; طباعة القيمة الموجودة في al
    mov rax, r12
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; خروج
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ Assembly