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

dd - تعريف Double Word

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

dw ينشئ بايتين من البيانات. ولكن في بعض الأحيان قد تحتاج إلى أرقام أكبر. لهذا الغرض، تستخدم ddتعريف كلمة مزدوجة (Define Double Word).

الـ كلمة المزدوجة في لغة تجميع x86 هي 4 بايتات (32 بت).

الصيغة:

label dd value

أمثلة:

section .data
    myNumber dd 50000        ; 4 بايت، القيمة 50000
    bigNum   dd 4000000      ; 4 بايت، القيمة 4 مليون
    max32    dd 4294967295   ; أقصى قيمة 32-بت

جدول المقارنة:

التوجيهالحجمالنطاقالمسجل المستخدم
db1 بايتمن 0 إلى 255al
dw2 بايتمن 0 إلى 65,535ax
dd4 بايتمن 0 إلى 4,294,967,295eax

كيفية استخدام كلمة مزدوجة (double word) في الكود الخاص بك:

section .data
    myNumber dd 50000

section .text
    mov eax, [myNumber]    ; تحميل القيمة في eax
    add eax, 10000         ; يصبح eax هو 60000
    mov [myNumber], eax    ; التخزين مرة أخرى

قاعدة هامة:

القاعدةالشرح
استخدم eax للتحميل أو التخزينeax هو مسجل 32-بت
challenge icon

التحدي

سهل

أنشئ double word يسمى distance بالقيمة 125000 في قسم .data.

جرّب بنفسك

%include "data.asm"

section .data
    msg db 'distance = '
    msg_len equ $ - msg
    newline db 0xa

section .bss
    buffer resb 32

section .text
    global _start

_start:
    ; تحميل قيمة الكلمة المزدوجة (double word) في eax
    mov eax, [distance]
    
    ; تحويل eax إلى سلسلة نصية عشرية
    mov rsi, buffer
    add rsi, 31          ; الانتقال إلى نهاية المخزن المؤقت (buffer)
    mov byte [rsi], 0    ; المنتهي الصفري (Null terminator)
    
    mov ecx, 10          ; القاسم للتحويل العشري

convert_loop:
    xor edx, edx         ; مسح edx من أجل القسمة
    div ecx              ; قسمة eax على 10، eax = ناتج القسمة، edx = الباقي
    add dl, '0'          ; تحويل الباقي إلى ASCII
    dec rsi
    mov [rsi], dl        ; تخزين الرقم
    cmp eax, 0
    jnz convert_loop

    ; حفظ مؤشر الرقم وطوله قبل أن يتم الكتابة فوقهما
    mov r8, rsi          ; r8 = مؤشر لأول رقم
    mov r9, buffer
    add r9, 31
    sub r9, rsi          ; r9 = عدد الأرقام
    
    ; طباعة الرسالة
    mov rax, 1
    mov rdi, 1
    mov rdx, msg_len
    mov rsi, msg
    syscall
    
    ; طباعة الرقم
    mov rax, 1
    mov rdi, 1
    mov rsi, r8
    mov rdx, r9
    syscall
    
    ; طباعة سطر جديد
    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall
    
    ; الخروج
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconاختبر نفسك

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

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