15-05-2024, 05:38 PM
رحلة في عالم الأسمبلي
https://www.youtube.com/playlist?list=PL..._swadKSPga
# الفصل 0 : تمهيد # الفصل 1 : المفاهيم الأساسية في لغة الassembly
أرقام العشري المُشفرة بالنظام الثنائي
Binary-Coded Decimal (BCD) Numbers
أرقام العشري المُشفرة بالنظام الثنائي (BCD)
يمكن تخزين القيم العشرية في تمثيلين عامين، المعروفين عادةً بـ BCD المعبأة و BCD غير المعبأة، حيث يُشير BCD إلى النظام الثنائي المُشفر بالعشري. تعتمد هذه التمثيلات على حقيقة أن يمكن تمثيل الرقم العشري بحد أقصى من 4 بت ثنائية، من 0000 إلى 1001.
BCD غير المعبأة - Unpacked
في BCD غير المعبأة، يُشفر رقم عشري واحد في كل بايت ثنائي. على سبيل المثال، يمكن تخزين القيمة 1,234,567 كمصفوفة من البايتات: 01، 02، 03، 04، 05، 06، 07، موضحة هنا بتنسيق السداسي عشر. إذا حدث الرقم العشري الأعلى أولاً في التسلسل، نسمي ذلك بالترتيب الكبير الأكثر أهمية. على العكس من ذلك، يُسمى الترتيب الآخر بالترتيب الصغير الأكثر أهمية. يمكن أن تكون الأرقام في تنسيق BCD غير المعبأة طولها أي طول يرغب فيه المبرمج ويمكن ترجمتها بسهولة إلى شخصيات ASCII قابلة للعرض (من خلال إضافة 30h) إلى كل بايت. على سبيل المثال، إذا قمت بإضافة 30h إلى القيمة BCD غير المعبأة 07، فإن النتيجة (37h) هي الترميز ASCII للحرف القابل للعرض "7".
BCD المعبأة - Packed
في تنسيق BCD المعبأة، يُشفر رقمان عشريان في كل بايت ثنائي. على سبيل المثال، يمكن تخزين القيمة 1,234,567 كمصفوفة من البايتات (موضحة هنا بالسداسي) كـ 01، 23، 45، 67. نظرًا لأن هناك عددًا فرديًا من الأرقام، يمكن أن تكون الأرقام الأربعة العلوية للبايت الأول جميعها صفراء، أو يمكن استخدامها لتمثيل علامة الرقم. (هناك أنماط قياسية من 4 بت للإشارة إلى ما إذا كان الرقم إيجابيًا أو سلبيًا، ولكننا لن ندخل في ذلك هنا.)
تُستخدم أرقام العشري المُشفرة بالنظام الثنائي في كثير من الأحيان عند تمثيل الأرقام التي تتطلب دقة دقيقة. في لغات مثل جافا أو C++، تحتوي القيم العائمة على خصائص تقريب معينة تجعل من الصعب مقارنتها للمساواة. يتم تكبير أخطاء التقريب الصغيرة عند تكرار الحسابات. ومع ذلك، تتمتع قيم BCD بدقة ومدى تقريبي غير محدودين تقريبًا. مثال جيد على ذلك هو فئة Big Integer في مكتبة فئات جافا.
https://www.youtube.com/playlist?list=PL..._swadKSPga
# الفصل 0 : تمهيد # الفصل 1 : المفاهيم الأساسية في لغة الassembly
- 1.0 مقدمة
- 1.1 مرحبًا بك في لغة الAssembly
- 1.2 تطبيقات لغة الassembly
- 1.3 مفهوم الآلة الافتراضية Virtual Machine
- 1.4 تمثيل البيانات - Data Representation
- 1.4.1 الأعداد الصحيحة الثنائية - Binary Integers
- 1.4.2 ترجمة الأعداد الثنائية غير الموقعة unsigned binary integer إلى العشرية Decimal
- 1.4.3 ترجمة الأعداد العشرية غير الموقعة Unsigned Decimal إلى البيناري Binary
- 1.4.4 الجمع الثنائي - Binary Addition
- 1.4.5 أحجام تخزين الأعداد الصحيحة Integer Storage Sizes
- 1.4.6 الأعداد الست عشرية - Hexadecimal Integers
- 1.4.7 تحويل العدد الست عشري غير الموقع Unsigned Hexadecimal الى عشري Decimal
- 1.4.8 تحويل العدد العشري غير الموقع Unsigned Decimal إلى الست عشرية Hexadecimal
- 1.4.9 الجمع الست عشري - Hexadecimal Addition
- 1.4.10. الأعداد الصحيحة الثنائية الSigned التمثيل بالمكملين الاثنين Two’s-Complement
- 1.4.11 الbinary intervals للأعداد الsigned و unsigned
- 1.4.12. شرح معمق ل Signed Binary Integers
- 1.4.13 المكملين الاثنين للعدد في النظام الست عشري Hexadecimal Two’s Complement
- 1.4.14 القيم القصوى والدنيا - Ranges and Sizes of Signed Integer Types
- 1.4.15 الطرح الثنائي - Binary Subtraction
- 1.4.16 تخزّين الأحرف - Character Storage
- 1.4.17 الControl Characters ل ASCII والمصطلحات لتمثيل البيانات الرقمية
- 1.4.18 أرقام العشري المُشفرة بالنظام الثنائي - Binary-Coded Decimal (BCD) Numbers
- 1.4.1 الأعداد الصحيحة الثنائية - Binary Integers
أرقام العشري المُشفرة بالنظام الثنائي
Binary-Coded Decimal (BCD) Numbers
أرقام العشري المُشفرة بالنظام الثنائي (BCD)
يمكن تخزين القيم العشرية في تمثيلين عامين، المعروفين عادةً بـ BCD المعبأة و BCD غير المعبأة، حيث يُشير BCD إلى النظام الثنائي المُشفر بالعشري. تعتمد هذه التمثيلات على حقيقة أن يمكن تمثيل الرقم العشري بحد أقصى من 4 بت ثنائية، من 0000 إلى 1001.
BCD غير المعبأة - Unpacked
في BCD غير المعبأة، يُشفر رقم عشري واحد في كل بايت ثنائي. على سبيل المثال، يمكن تخزين القيمة 1,234,567 كمصفوفة من البايتات: 01، 02، 03، 04، 05، 06، 07، موضحة هنا بتنسيق السداسي عشر. إذا حدث الرقم العشري الأعلى أولاً في التسلسل، نسمي ذلك بالترتيب الكبير الأكثر أهمية. على العكس من ذلك، يُسمى الترتيب الآخر بالترتيب الصغير الأكثر أهمية. يمكن أن تكون الأرقام في تنسيق BCD غير المعبأة طولها أي طول يرغب فيه المبرمج ويمكن ترجمتها بسهولة إلى شخصيات ASCII قابلة للعرض (من خلال إضافة 30h) إلى كل بايت. على سبيل المثال، إذا قمت بإضافة 30h إلى القيمة BCD غير المعبأة 07، فإن النتيجة (37h) هي الترميز ASCII للحرف القابل للعرض "7".
BCD المعبأة - Packed
في تنسيق BCD المعبأة، يُشفر رقمان عشريان في كل بايت ثنائي. على سبيل المثال، يمكن تخزين القيمة 1,234,567 كمصفوفة من البايتات (موضحة هنا بالسداسي) كـ 01، 23، 45، 67. نظرًا لأن هناك عددًا فرديًا من الأرقام، يمكن أن تكون الأرقام الأربعة العلوية للبايت الأول جميعها صفراء، أو يمكن استخدامها لتمثيل علامة الرقم. (هناك أنماط قياسية من 4 بت للإشارة إلى ما إذا كان الرقم إيجابيًا أو سلبيًا، ولكننا لن ندخل في ذلك هنا.)
تُستخدم أرقام العشري المُشفرة بالنظام الثنائي في كثير من الأحيان عند تمثيل الأرقام التي تتطلب دقة دقيقة. في لغات مثل جافا أو C++، تحتوي القيم العائمة على خصائص تقريب معينة تجعل من الصعب مقارنتها للمساواة. يتم تكبير أخطاء التقريب الصغيرة عند تكرار الحسابات. ومع ذلك، تتمتع قيم BCD بدقة ومدى تقريبي غير محدودين تقريبًا. مثال جيد على ذلك هو فئة Big Integer في مكتبة فئات جافا.