شـبـكــة عـمّـــار
إخبارية - ترفيهية
- تعليمية



جديد الصور
جديد الأخبار
جديد المقالات


جديد الصور

جديد البطاقات

جديد الصوتيات

المتواجدون الآن


تغذيات RSS

2012-08-15 05:57

بسم الله الرحمن الرحيم

في درسنا الثاني نستكمل الحديث عن التعليمات:

17- التعليمة MOV:

MOV {destination},{source}
يتم هنا نسخ قيمة المصدر {source} في الوجهة {destination}.

18- التعليمة MOVS:

MOVS [B/D/W]
هذه التعليمة تنسخ البايت/الكلمة/الكلمة_المضاعفة من القطاع والفرع الذاكريين DS :ESI إلى القطاع والفرع الذاكريين ES :EDI.

19- التعليمة MOVZX:

MOVZX {destination},{source}
تقوم هذه التعليمة بتوسعة العدد الموجود في المصدر، والمشفر على 8 بت، ويتم تحويل الناتج إلى الوجهة بحجم 16 بت أو 32 بت، مثال:

MOVZX ax, al
يقوم هذا المثال بمحو الجزء المرتفع من السجل AX، (أي محو الجزء AH).

20- التعليمة MUL:

MUL {source}
تحدد هذه التعليمة جداء الوجهة المصرح بها من قبل في المصدر المشار إليه كبارامتر.

العددين (الوجهة والمصدر) يتم اعتبارهما غير مؤشرين (not signed). يمكن استعمال التعليمة JC {address} لتجربة الفائض.

كما يجب الإشارة إلى أن الوجهة يتم استخدامها بدلالة طول المصدر:

8 بت: الوجهة هي AX (العدد المضروب فيه هو AL).

16 بت : الوجهة هي DX :AX، هذا يعني أن AX يحوي الجزء المنخفض و DX يحوي الجزء المرتفع (العدد المضروب فيه هو AX).

32 بت : الوجهة هي EDX :EAX، هذا يعني أن EAX يحوي الجزء المنخفض و EDX يحوي الجزء المرتفع (العدد المضروب فيه هو EAX).

21- التعليمة NOT:

NOT {destination}
تسمح هذه التعليمة، والتي تعتبر أحادية وليست ثنائية (تحتاج لبارامتر واحد) بقلب بت الوجهة كما يشير إلى ذلك جدول الحقيقة.

22- التعليمة OR:

OR {destination},{mask}
تطبق هذه التعليمة " أو " منطقيا على الوجهة اعتمادا على القناع، فكل بت من الوجهة سيتم جعله مساويا للواحد إذا كان بت القناع مساويا للواحد، في حين يتم ترك بت الوجهة من دون تغيير إذا ما كان بت القناع معدوما. لاحظ جدول الحقيقة.





Destination := Destination or Mask ; // بلغة الباسكال
Destination |= Mask ; // بلغة السي
23- التعليمة OUT:

OUT {source},{port}
عكس تعليمة IN، فإن هذه التعليمة تكتب القيمة الموجودة في المصدر {source} (ذات 8 بت) على المنفذ {port}. أما السجل الوحيد المسموح باستعماله في هذه العملية فهو DX.

24- التعليمة PUSH:

PUSH {value}
تسمح هذه التعليمة بوضع القيمة {value} في المكدس {Stack}.

25- التعليمة POP:

POP {register}
تقوم هذه التعليمة بإخراج قيمة من المكدس ثم تخزنها في السجل {register}.

26- التعليمة REP:

REP {instruction}
تقوم REP بتكرار التعليمة {instruction} نون مرة، (حيث نون هو محتوى السجل ECX).

27- التعليمة RET:

RET {value}
تسمح هذه التعليمة بمغادرة الإجراء الساري.

إذا ما تم إرسال بارامترات إلى CALL، فإن [xxxx] هو عدد البايتات المرسلة الواجب إخراجها من المكدس.

28- التعليمة SHL:

SHL {register},{value}
تقوم هذه التعليمة بإزاحة ثنائية (binary) على جهة اليسار (L = Left) لمحتوى السجل {register} بمقدار {value} مرة، وبالتالي فإن البتات التي تظهر على اليمين يتم تعويضها بأصفار. مثال:

Mov al, 3;// تخزين القيمة 3 في السجل
Shl al, 2;// إزاحة مرتين لبتات العدد 3
ستكون نتيجة المثال إذن 12، لأن تمثيل 3 في الثنائي هو 00000011، إذن الإزاحة مرتين على اليسار تعطي 00001100، وهو العدد 12.





29- التعليمة SHR:

SHR {register},{value}
تقوم هذه التعليمة بإزاحة ثنائية (binary) على جهة اليسار (R = Right) لمحتوى السجل {register} بمقدار {value} مرة، وبالتالي فإن البتات التي تظهر على اليسار يتم تعويضها بأصفار. يمكن تطبيق نفس منهاج المثال السابق.

الإزاحة على اليسار تساوي الضرب في 2 نون مرة، والإزاحة على اليمين تساوي القسمة على 2 نون مرة،(حيث نون هو قيمة {value}).

30- التعليمة STOS:

STOS [B/D/W]
هذه التعليمة تنسخ EAX/AX/AL في البايت/الكلمة/الكلمة_المضاعفة الموجودة في القطاع والفرع الذاكريين ES :EDI (عكس التعليمة LODS).

31- التعليمة SUB :

SUB {destination},{source} // ADD {الوجهة},{القناع}
وبعكس عملية الجمع، فإن التعليمة sub تقوم بطرح قيمة المصدر من قيمة الوجهة، وينجم عن هذه العملية تغيير في محتوى الرايات، ويتم تخصيص النتيجة للسجل (المعامل الأول).

* تنطبق الخواص نفسها على كل من ADD، MOV و SUB.

32- التعليمة SCAS:

SCAS [B/D/W]
هذه التعليمة تقارن EAX/AX/AL بالبايت/الكلمة/الكلمة_المضاعفة الموجودة في القطاع والفرع الذاكريين ES :EDI (يمكن القول أنها تبحث عن قيمة في حزمة_رموز (string)).



33- التعليمة TEST:

TEST {source},{mask}
تقوم هذه التعليمة تسمح باختبار بت خاص للمورد، وتعمل بالمقابل على تغيير الراية JZ، فإذا كان البتات فائضة أم لا.

بأسلوب آخر، تقوم التعليمة TEST {a},{a} إذا ما كان المتغير a معدوما أم لا.

34- التعليمة XOR:

XOR {destination},{mask}
تطبق هذه التعليمة " أو المانع = eXclusive OR" على الوجهة اعتمادا على القناع، فكل بت من الوجهة سيتم جعله مساويا للواحد إذا كان مخالفا لبت القناع ، ومساويا للصفر إذا كان موافقا لبت القناع. لاحظ جدول الحقيقة في آخر الدرس.

تقوم التعليمة XOR {a},{a} بجعل قيمة a معدومة، وتمتاز بسرعة أكبر من التعليمة

MOV {a}, 0.



Destination := Destination xor Mask ; // بلغة الباسكال
Destination ^ = Mask ; // بلغة السي



تعليقات 0 | إهداء 0 | زيارات 394


خدمات المحتوى
  • مواقع النشر :
  • أضف محتوى في Digg
  • أضف محتوى في del.icio.us
  • أضف محتوى في StumbleUpon
  • أضف محتوى في Google


تقييم
0.00/10 (0 صوت)


Powered by Dimofinf cms Version 3.0.0
Copyright© Dimensions Of Information Inc.