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

تجميع الأجزاء معاً

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

لقد تعلمت الأجزاء الأربعة لنظام استدعاء النظام write:

السجلما يحتويهالقيمة لمخرجات الشاشة
raxرقم استدعاء النظام1 (write)
rdiواصف الملف1 (stdout)
rsiعنوان المخزن المؤقتعنوان السلسلة النصية الخاصة بك
rdxعدد البايتاتطول السلسلة النصية الخاصة بك

الآن حان الوقت لجمعها معاً.

نمط استدعاء النظام (syscall) الكامل للكتابة (write):

mov rax, 1          ; رقم استدعاء النظام للكتابة (write)
mov rdi, 1          ; واصف الملف (stdout)
mov rsi, msg        ; عنوان السلسلة النصية
mov rdx, msgLen     ; عدد البايتات المراد طباعتها
syscall             ; اطلب من نظام التشغيل الطباعة

برنامج كامل يعمل:

section .data
    msg db 'Hello, World!', 0x0a
    msgLen equ $ - msg

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msgLen
    syscall

    mov rax, 60
    mov rdi, 0
    syscall

ما يفعله هذا البرنامج:

الخطوةماذا يحدث
1يطبع "Hello, World!" على الشاشة
2ينتقل إلى سطر جديد
3يخرج بنجاح مع الكود 0

الترتيب مهم:

يجب عليك إعداد السجلات قبل تنفيذ syscall. لا يهم ترتيب تعليمات mov طالما تم إعداد الأربعة جميعاً قبل syscall.

challenge icon

التحدي

اكتب برنامجاً كاملاً يطبع الرسالة "Assembly is fun" متبوعة بسطر جديد، ثم يخرج بشكل نظيف.

السلسلة النصية وطولها معرفان بالفعل. تحتاج فقط إلى كتابة الكود داخل _start:.

جرّب بنفسك

section .data
    msg db 'Assembly is fun', 0x0a
    msgLen equ $ - msg

section .text
    global _start

_start:
    ; مهام: إعداد واستدعاء نداء النظام write
    ; استخدم rax=1، rdi=1، rsi=msg، rdx=msgLen

    ; مهام: الخروج بشكل نظيف مع الكود 0
quiz iconاختبر نفسك

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

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