Menu
Coddy logo textTech

מחרוזות עם 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', newline

כמה מחרוזות:

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

למה זה חשוב:

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

הערה חשובה:

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

challenge icon

אתגר

קל

צרו מחרוזת בשם greeting עם הערך 'Hi' ואחריו תו newline (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 אונליין