نبدا على بركة الله
سنتكلم اليوم عن التعليمات الحسابية و المنطقية
و نظرا لصعوبة الدرس سيتم تقسيمه الى عدة اجزاء
حسنا لدينا اربع انواع رئيسية من الرايات
اولا
Carry flag(cf) this flag is set to 1 when there is an unsigned overflow. For example
when you add bytes 255 + 1 (result is not in range 0...255). When there is no overflow
Zero Flag (ZF) - set to 1 when result is zero. For none zero result this flag is set to 0.
• Sign Flag (SF) - set to 1 when result is negative. When result is positive it is set to 0.
Actually this flag take the value of the most significant bit (MSB).
• Overflow Flag (OF) - set to 1 when there is a signed overflow. For example, when you
add bytes 100 + 50 (result is not in range -128...127).
المجموعة الاولى من المعاملات
ADD, SUB,CMP, AND, TEST , OR, XOR
هذه التعليمات لها المعاملات التالية
REG, memory
memory, REG
REG, REG
memory, immediate
REG, immediate
REG: EAX, AX , AL , AH , EBX , etc…
memory: [BX], [BX+SI+7], variable, etc...
immediate: 5, -24, 3Fh, 10001101b, etc...
بعد هذه التعليمات فالنتيجة تخزن دائما في المعامل الاول لكن تعليمة cmp و test تؤثر على الرايات و لاتخزن الي شيء فالاول تعليمة مقارنة و الثانية للتاكد من صحة التعليمة
الرايات التي تتاثر بهذه التعليمات هي
CF, ZF, SF, OF, PF, AF
عندما يكون هناك تعليمتان two operands فيجب ان يكونا من نفس الحجم مثلا لا يجوز ان تكتب ecx,ax , mov لانهما ليسا من نفس الحجم
اذا وجدت قيمة ما كمعامل لاحدى التعليمات فهذه القيمة هي بالنظام العشري اذا لم تكن هنا لاحقة مثلا mov ebx, 60 تعني اننا سننتقل الى القيمة 30 عشري بينما mov ebx,30h تعني نقل القيمة 30 بالهكس و هكذا
حسنا الى هنا ننتهي من اول جزء من الدرس و ترقبو الجزء الثاني قريبا
اخيرا لا تنسوني من صالح دعائكم و السلام عليكم و رحمة الله و بركاته
__________________
hghsdlfgd >>> hg[.x hgh,g