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

طباعة سلسلتين نصيتين

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

أنت تعرف بالفعل كيفية طباعة سلسلة نصية واحدة. ولكن ماذا لو كنت تريد طباعة سلسلتين نصيتين منفصلتين؟ على سبيل المثال، "Hello " ثم "World!"؟

ببساطة، تقوم باستدعاء syscall الـ write مرتين — مرة واحدة لكل سلسلة نصية.

كيف يعمل:

; الطباعة الأولى
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall

; الطباعة الثانية
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscall

مثال:

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

    second db 'World!', 0x0a
    secondLen equ $-second

section .text
    global _start

_start:
    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

    mov rax, 60
    mov rdi, 0
    syscall

المخرجات:

Hello World!

لماذا نطبع سلسلتين نصيتين بدلاً من واحدة؟

السببمثال
إعادة الاستخدامطباعة نفس التحية بأسماء مختلفة
المرونةطباعة رسائل مختلفة بناءً على الشروط
التنظيمالحفاظ على الرسائل المختلفة منفصلة في الذاكرة

يمكنك طباعة أي عدد تريده من السلاسل النصية:

فقط قم بتكرار استدعاء النظام write لكل سلسلة نصية.

challenge icon

التحدي

لقد تم إعطاؤك سلسلتين نصيتين: partOne بالقيمة 'Good' و partTwo بالقيمة 'bye'. كلتاهما تحتويان بالفعل على سطر جديد في النهاية.

اكتب الكود لطباعة partOne ثم partTwo بحيث يظهر المخرج كما يلي:

Good

bye

قسم البيانات (data section) ونداء النظام للخروج (exit syscall) مقدمان بالفعل. تحتاج فقط إلى كتابة ندائي النظام للطباعة (write syscalls).

جرّب بنفسك

section .data
    partOne db 'Good', 0x0a
    partOneLen equ $-partOne
    partTwo db 'bye', 0x0a
    partTwoLen equ $-partTwo

section .text
    global _start

_start:
    ; TODO: طباعة partOne باستخدام نداء النظام write
    ; TODO: طباعة partTwo باستخدام نداء النظام write

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

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

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