Menu
Coddy logo textTech

מקטע .data

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

בפרק 2 טענת ערכים מהזיכרון ושמרת ערכים בזיכרון. אבל מאיפה הגיע הזיכרון הזה? מי יצר את num1, את num2 ואת result?

התשובה היא מקטע .data. כאן יוצרים נתונים משלכם בזיכרון.

מהי יחידת .data?

יחידת .data היא חלק מתוכנית ה-assembly שלך שבו מגדירים נתונים שיישמרו בזיכרון לפני שהתוכנית שלך תרוץ.

תחביר:

section .data
    ; כאן יש להגדיר את הנתונים שלך

למה אתה צריך את זה:

ללא מקטע .dataעם מקטע .data
אין לך נתונים לעבוד איתםאתה יכול ליצור מספרים, מחרוזות ומשתנים
כתובות הזיכרון אינן ידועותאתה יכול להשתמש בתוויות כמו myNumber או message
אינך יכול לבדוק את הקוד שלךאתה יכול לטעון ולאחסן נתונים שיצרת

דוגמה פשוטה:

section .data
    age db 25           ; צור בית בשם "age" עם הערך 25
    price dw 1000       ; צור מילה בשם "price" עם הערך 1000
    name db 'Bob'       ; צור מחרוזת בשם "name" עם האותיות B, o, b

איפה זה נמצא בקבצים שלך:

זכור את הדפוס של שני הקבצים מפרק 0:

קובץתוכן
data.asmsection .data עם הגדרות הנתונים שלך
main.asm%include "data.asm" ואחריו section .text עם הקוד שלך

מה קורה כשהתוכנית שלך רצה:

  1. מערכת ההפעלה טוענת את התוכנית שלך לזיכרון
  2. היא קוראת את היחידה .data וממקמת את הנתונים שלך בכתובות זיכרון ספציפיות
  1. התוויות שלך (age, price, name) הופכות לכתובות
  2. הקוד שלך יכול עכשיו לגשת לכתובות האלה באמצעות [age], [price], [name]

כללים חשובים:

כללהסבר
מקטע .data אחד לכל תוכניתיש לשים את כל הנתונים במקום אחד
התוויות חייבות להיות ייחודיותלא יכולות להיות שתי תוויות בשם age
הנתונים נוצרים לפני שהקוד שלך רץהם מוכנים לשימוש כשההפעלה של _start מתחילה

בשיעורים הבאים תלמדו כיצד להגדיר סוגי נתונים שונים באמצעות db, dw, dd ו־dq

challenge icon

אתגר

כתבו את הקוד בקובץ data.asm כדי:

  1. ליצור את המקטע .data
  2. ליצור בית בשם count עם הערך 5

נסו בעצמכם

%include "data.asm"

section .text
    global _start

_start:
    ; טען את הערך מ-count אל al
    mov al, [count]
    
    ; שמור אותו להדפסה
    mov r12, rax
    
    ; המר ל-ASCII והדפס (0-9 בלבד)
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; צא
    mov rax, 60
    mov rdi, 0
    syscall

section .bss
    digit resb 1
quiz iconבחנו את עצמכם

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

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

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