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

واصف الملف (rdi)

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

في الدرس السابق، استخدمت mov rdi, 1 كجزء من استدعاء النظام write. يُسمّى هذا الرقم 1 واصف ملف.

واصف الملف هو رقم يُخبر نظام التشغيل بمكان إرسال البيانات.

واصفات الملفات القياسية الثلاثة في Linux:

واصف الملفالاسمإلى أين تذهب البيانات
0stdinإدخال لوحة المفاتيح (قراءة البيانات من المستخدم)
1stdoutإخراج الشاشة (إخراج البرنامج العادي)
2stderrإخراج الشاشة (رسائل الخطأ)

لماذا يوجد مخرجان للشاشة؟

يذهب الإخراج العادي (stdout) وإخراج الأخطاء (stderr) إلى الشاشة نفسها، لكن تتم معالجتهما بشكل منفصل. يتيح لك ذلك:

  • إعادة توجيه الإخراج العادي إلى ملف مع الاستمرار في رؤية الأخطاء على الشاشة
  • عرض الأخطاء حتى عندما يكون الإخراج العادي مخفيًا

للطباعة في هذه الدورة:

ستستخدم دائمًا واصف الملف 1 (stdout) لطباعة الرسائل. لا تحتاج إلى stderr بعد.

مثال:

mov rdi, 1      ; أرسل الإخراج إلى stdout (الشاشة)

ماذا يحدث إذا استخدمت واصف الملف الخطأ؟

إذا استخدمتالنتيجة
0 (stdin)تتوقع syscall الخاصة بـ write إدخالًا، وليس إخراجًا: ستفشل أو لن تفعل شيئًا
2 (stderr)تعمل مثل stdout (تطبع على الشاشة)، لكنها مخصّصة للأخطاء
أي رقم آخرلا تتعرّف النواة عليه: تفشل syscall
challenge icon

التحدي

أُعطيت سلسلة نصية تُسمّى message وتحتوي على القيمة 'OK' متبوعة بسطر جديد. اكتب سطر التعليمات البرمجية الذي يعيّن واصف الملف للطباعة على الشاشة (stdout). اكتب تعليمة mov الخاصة بـ rdi فقط.

جرّب بنفسك

section .data
    message db 'OK', 0x0a
    msgLen equ $ - message

section .text
    global _start

_start:
    ; الطالب يعيّن واصف الملف هنا
    %include "solution.asm"
    
    mov rax, 1
    ; rdi يجب أن يكون معيّناً بالفعل من قبل الطالب
    mov rsi, message
    mov rdx, msgLen
    syscall

    mov rax, 60
    mov rdi, 0
    syscall
quiz iconاختبر نفسك

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

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

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