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

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

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

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

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

تذكّر من الفصل 0: لا يمكن لوحدة المعالجة المركزية العمل مباشرةً مع الذاكرة. يجب تحميل data في السجلات أولًا. هكذا تفعل ذلك.

البنية النحوية:

mov register, [address]

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

فكّر في الأمر بهذه الطريقة:

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

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

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

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

قواعد مهمة:

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

خطأ شائع:

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

; صحيح: يحمّل القيمة المخزّنة عند 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