Menu
Coddy logo textTech

הדפסת שתי מחרוזות

חלק מהיחידה יסודות במסלול ה-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'. לשתיהן כבר יש תו newline בסוף.

כתוב את הקוד כדי להדפיס את partOne ולאחר מכן את partTwo, כך שהפלט יציג:

Good

bye

מקטע הנתונים וקריאת המערכת ליציאה כבר מסופקים. עליך לכתוב רק את שתי קריאות המערכת לכתיבה.

נסו בעצמכם

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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Assembly אונליין