Menu
CoddyTech

أهمية السطر الجديد

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

لقد كنت تضيف 0x0a (سطرًا جديدًا) في نهاية السلاسل النصية. لكن ماذا يحدث إذا نسيت ذلك؟

من دون سطر جديد:

يُطبع النص، لكن يبقى المؤشر في السطر نفسه. سيظهر أي إخراج لاحق بجواره مباشرةً.

مثال بدون سطر جديد:

section .data
    first db 'Hello'
    firstLen equ $ - first
    second db 'World'
    secondLen equ $ - second

section .text
    mov rax, 1
    mov rdi, 1
    mov rsi, first
    mov rdx, firstLen
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, second
    mov rdx, secondLen
    syscall

الناتج:

HelloWorld

لا توجد مسافة. لا يوجد سطر جديد. كل شيء ملتصق ببعضه.

مع سطر جديد:

section .data
    first db 'Hello', 0x0a
    firstLen equ $ - first
    second db 'World', 0x0a
    secondLen equ $ - second

المخرجات:

Hello
World

تُطبع كل سلسلة نصية في سطر مستقل.

ما الذي يفعله سطر جديد:

الحرفASCIIالتأثير
0x0a10ينقل المؤشر إلى بداية السطر التالي

أخطاء شائعة في محارف السطر الجديد:

الخطأالنتيجة
عدم وجود محرف سطر جديد إطلاقًايتصل النص بعضه ببعض في سطر واحد
محرف سطر جديد في نهاية السلسلة الأخيرة فقطتتصل السلاسل السابقة بعضها ببعض، وتنتقل الأخيرة إلى السطر التالي
محرف سطر جديد في منتصف سلسلةتحدث فواصل الأسطر في مواضع غير متوقعة

القاعدة الآمنة:

أضف دائمًا 0x0a في نهاية كل سلسلة نصية تريدها في سطر مستقل.

challenge icon

التحدي

أُعطيت ثلاثة سلاسل نصية دون أسطر جديدة. مهمتك هي طباعتها بحيث تظهر في ثلاثة أسطر منفصلة.

السلاسل النصية هي:

السلسلة النصيةالقيمة
word1'Apple'
word2'Banana'
word3'Cherry'

المتطلبات:

  • عرّف كل سلسلة نصية مع سطر جديد (0x0a) في نهايتها
  • احسب طول كل سلسلة نصية تلقائيًا
  • اطبع السلاسل النصية الثلاث باستخدام استدعاء النظام write
  • اخرج بشكل سليم بالرمز 0

جرّب بنفسك

section .data
    ; TODO: عرّف word1 بالنص الأول المذكور في التعليمات ومحرف سطر جديد
    ; TODO: عرّف word2 بالنص الثاني المذكور في التعليمات ومحرف سطر جديد
    ; TODO: عرّف word3 بالنص الثالث المذكور في التعليمات ومحرف سطر جديد
    ; TODO: احسب طول كل سلسلة نصية

section .text
    global _start

_start:
    ; TODO: اطبع word1
    ; TODO: اطبع word2
    ; TODO: اطبع word3

    ; TODO: أنهِ البرنامج بشكل سليم
quiz iconاختبر نفسك

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

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

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