db - تعريف Byte
جزء من قسم الأساسيات في رحلة 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 (أو حرف واحد) |
استخدم سجلًا بعرض 8 بت مثل al للتحميل أو التخزين | al (مثل bl وcl وdl) سجل بعرض 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)تدرّب بنفسك: Playground لـ Assembly