Menu
Coddy logo textTech

db - הגדרת בית

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

הדרך הבסיסית ביותר ליצור נתונים בזיכרון היא db: הגדרת בית. היא יוצרת בית אחד (8 ביטים) של נתונים.

תחביר:

label db value
  • label: השם שניתן לכתובת הזיכרון הזו
  • db: הנחיית הגדרת בית
  • value: המספר או התו שיש לאחסן (0 עד 255)

דוגמאות:

section .data
    age db 25          ; יוצר בית בשם "age" המכיל 25
    grade db 'A'       ; יוצר בית בשם "grade" המכיל 65 (קוד ASCII של 'A')
    zero db 0          ; יוצר בית בשם "zero" המכיל 0

מה אפשר לאחסן בבית אחד:

סוגטווחדוגמה
מספר קטן0 עד 255db 100
תו'A' עד 'z'db 'X'
קוד ASCII0 עד 255db 65 (זהה ל-'A')

כמה בתים בשורה אחת:

אפשר להגדיר כמה בתים ברצף באמצעות פסיקים:

section .data
    numbers db 5, 10, 15, 20    ; יוצר 4 בתים: 5, 10, 15, 20
    letters db 'A', 'B', 'C'    ; יוצר 3 בתים: 65, 66, 67

איך להשתמש בבית בקוד שלך:

section .data
    myByte db 42

section .text
    mov al, [myByte]    ; טען את הערך 42 אל al
    add al, 1           ; al מקבל את הערך 43
    mov [myByte], al    ; אחסן את 43 בחזרה ב-myByte

כלל חשוב:

כללהסבר
הערך חייב להתאים לבייט אחד0 עד 255 (או תו יחיד)
השתמשו ב־al כדי לטעון או לאחסןal הוא אוגר 8-ביט לבייטים

טעות נפוצה:

; שגוי: ניסיון לאחסן מספר גדול מדי עבור בית
section .data
    error db 300    ; 300 גדול מדי (המקסימום הוא 255)
challenge icon

אתגר

קל

צרו בית בשם score עם הערך 15 ביחידה .data.

כתבו את הקובץ data.asm עם היחידה .data וההנחיה db הנכונות.

נסו בעצמכם

%include "data.asm"

section .text
    global _start

_start:
    mov al, [score]
    
    mov r12, rax
    
    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 אונליין