db - הגדרת בית
חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 24 מתוך 45.
הדרך הבסיסית ביותר ליצור נתונים בזיכרון היא db: הגדרת בית. היא יוצרת בית אחד (8 ביטים) של נתונים.
תחביר:
label db valuelabel: השם שניתן לכתובת הזיכרון הזוdb: הנחיית הגדרת ביתvalue: המספר או התו שיש לאחסן (0 עד 255)
דוגמאות:
section .data
age db 25 ; יוצר בית בשם "age" המכיל 25
grade db 'A' ; יוצר בית בשם "grade" המכיל 65 (קוד ASCII של 'A')
zero db 0 ; יוצר בית בשם "zero" המכיל 0מה אפשר לאחסן בבית אחד:
| סוג | טווח | דוגמה |
|---|---|---|
| מספר קטן | 0 עד 255 | db 100 |
| תו | 'A' עד 'z' | db 'X' |
| קוד ASCII | 0 עד 255 | db 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)אתגר
קלצרו בית בשם 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השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
תרגלו בעצמכם: Assembly אונליין