db - تعريف Byte
جزء من قسم الأساسيات في رحلة Assembly على Coddy — الدرس 24 من 45.
الطريقة الأكثر أساسية لإنشاء البيانات في الذاكرة هي db — Define Byte. وهي تقوم بإنشاء بايت واحد (8 بت) من البيانات.
الصيغة:
label db valuelabel— الاسم الذي تطلقه على عنوان الذاكرة هذاdb— توجيه تعريف بايت (Define Byte)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كيفية استخدام بايت (byte) في الكود الخاص بك:
section .data
myByte db 42
section .text
mov al, [myByte] ; تحميل القيمة 42 في al
add al, 1 ; يصبح al يساوي 43
mov [myByte], al ; تخزين 43 مرة أخرى في myByteقاعدة هامة:
| القاعدة | الشرح |
|---|---|
| يجب أن تتناسب القيمة مع 1 بايت | من 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يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4تعريف البيانات
قسم .datadb - تعريف Bytedw - تعريف Worddd - تعريف Double Worddq - تعريف Quad Wordالسلاسل النصية باستخدام dbالرمز $ملخص: بناء data.asm2أنظمة العد
لماذا النظام الثنائي؟الأعداد الثنائيةمن العشري إلى الثنائيلماذا النظام الست عشري؟من الست عشري إلى العشريمن العشري إلى الست عشريASCII والست عشري5استدعاء النظام Exit Syscall
ما هو الـ Syscall؟استدعاء النظام Exit Syscall (60)رموز الخروج (Exit Codes)ملخص: الخروج النظيف (Clean Exit)