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اختبر نفسك

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

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