Menu
CoddyTech

מחרוזות עם db

חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 28 מתוך 45.

אתה כבר יודע ש־db מגדירה בייט יחיד. אבל db יכולה גם להגדיר מחרוזת: כמה בייטים ברצף.

תחביר:

label db 'text here'

דוגמה:

section .data
    message db 'Hello'

פעולה זו יוצרת 5 בתים בזיכרון: 'H', 'e', 'l', 'l', 'o'

מה קורה בזיכרון:

כתובתביתערך ASCII
message'H'72
message+1'e'101
message+2'l'108
message+3'l'108
message+4'o'111

הוספת שורה חדשה:

כדי להדפיס מחרוזת ולעבור לשורה הבאה, יש להוסיף 0x0a (תו של שורה חדשה):

section .data
    message db 'Hello', 0x0a

כעת המחרוזת מכילה 6 בתים: 'H','e','l','l','o', ירידת שורה

מחרוזות מרובות:

section .data
    hello db 'Hello', 0x0a
    goodbye db 'Goodbye', 0x0a

למה זה חשוב:

מחרוזות הן הנתונים הנפוצים ביותר שתשתמש בהם באסמבלי. קריאת המערכת write (שתלמד עליה בפרק 5) מדפיסה מחרוזות על ידי קריאת בתים מהזיכרון עד שהיא מגיעה לאורך שציינת.

הערה חשובה:

מחרוזות הן רק בתים. המעבד לא יודע ולא אכפת לו ש־'H' היא אות. זה רק המספר 72. קריאת המערכת write מפרשת את המספרים האלה כתווים בעת ההדפסה.

challenge icon

אתגר

קל

צרו מחרוזת בשם greeting עם הערך 'Hi' ואחריו ירידת שורה (0x0a) במקטע .data.

נסו בעצמכם

%include "data.asm"

section .text
    global _start

_start:
    ; הדפס את המחרוזת באמצעות קריאת המערכת write
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', תו שורה חדשה = 3 בתים
    syscall
    
    ; יציאה
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconבחנו את עצמכם

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

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

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

מצאו את הקוד של כל תו: ממיר ASCII