الفريق العربي للهندسة العكسية

نسخة كاملة : 1.4.15 الطرح الثنائي - Binary Subtraction
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .

R333T

[صورة مرفقة: dark.jpg]
 رحلة في عالم الأسمبلي   dance
 
https://www.youtube.com/playlist?list=PL..._swadKSPga

# الفصل 0 : تمهيد # الفصل 1 : المفاهيم الأساسية في لغة الassembly
 



طرح الأرقام الثنائية الصغيرة غير الموقّعة من الأرقام الكبيرة من السهل إذا تبعت نفس الطريقة التي تتبعها في طرح الأعداد العشرية. إليك مثال:

  0 1 1 0 1   (decimal 13)
- 0 0 1 1 1   (decimal 7)
-----------



طرح البتات في الموضع 0 مباشرة:

  0 1 1 0 1
- 0 0 1 1 1
-----------
          0
          


في الموضع التالي (1 - 0)، يجب علينا استعارة 1 من الموضع التالي إلى اليسار. إليك نتيجة طرح 1 من 2:

  0 1 0 0 1
- 0 0 1 1 1
-----------
        1 0
        


في الموضع التالي، يجب علينا مجدداً استعارة بت من العمود الذي يساره وطرح 1 من 2:

  0 0 0 1 1
- 0 0 1 1 1
-----------
      1 1 0
      


وأخيرًا، البتان الأكثر أهمية هما صفران ناقص صفران:


  0 0 0 1 1
- 0 0 1 1 1
-----------
  0 0 1 1 0   (decimal 6)



طريقة أبسط للتعامل مع الطرح الثنائي هي عكس علامة القيمة التي يتم طرحها، ثم إضافة القيمتين. تتطلب هذه الطريقة أن يكون لديك بت فارغ إضافي لاحتواء علامة العدد. لنجربها مع نفس المشكلة التي قمنا بحسابها للتو: (01101 ناقص 00111). أولاً، نقلب عدد 00111 بعكس بتاته (11000) ونضيف 1، لنحصل على 11001. بعد ذلك، نقوم بجمع القيم الثنائية ونتجاهل حمل البت الأعلى:


0 1 1 0 1   (+13)
1 1 0 0 1   (-7)
---------
0 0 1 1 0   (+6)



النتيجة هي بالضبط ما توقعناه.


 good