الفرق بين المراجعتين لصفحة: «أسمبلي/قائمة بأوامر أسمبلي لتصميم x86»

تم حذف المحتوى تمت إضافة المحتوى
لا ملخص تعديل
 
لا ملخص تعديل
سطر 1:
إن أجهزة الحاسوب المبنية بتصميم x8 6 فيها ثمانية خانات تخزين (Register) للإستخدام العام من قبل البرامج، 6 خانات تخزين لعناوين مناطق في الذاكرة ، وخانة تخزين واحدة للمعلومات (قيم تحمل إما 0 أو 1). وكذلك مؤشر للأوامر واحد.
 
==خانات الإستخدام العام==
خانات الإستخدام العام الثمانية هي :
#EAX :Accumulator ، أي المجمع أو المراكم
#EDX:Data Register، يستخدم في عمليات الحساب وعمليات الإدخال والإخراج
#ECX:Counter Register، يستخدم كعداد
#EBX: Base Register يستخدم للتأشير على البيانات(الموجودة في الDS عند الإستخدام بتهيئة المناطق.)
#ESP:Stack Pointer، مؤشر المكدّس
#EBP:Stack Base Pointer، مؤشر قاعدة المكدّس
#ESI:Source Register، مؤشر يستخدم للإشارة إلى "المصدر" في بعض العمليات.
#EDI:Destination Register، يستخدم للإشارة إلى "الوجهة" في بعض العمليات.
 
كل من خانات التخزين هذه تتكون من 32 بت ، وتسمى بالممتدة (Extended)، وبذلك تحمل حرف E قبلها، وذلك بناء على ان التصميم السابق كان يحمل 16 بت ، وكانت خانات التخزين فيه تحمل ذات الأسماء ولكن بدون حرف E، ولا زالت تلك يمكن إستخدامها ، وتمثل النصف الدوني (أول 16 بت من ال32 بت الممكن إستخدامها) ، وتسمى AX, DX, CX, BX, SP, BP, SI, DI.
 
وكذلك ، فإن البتتات الثمانية العليا للنصف الدوني للخانات EAX, EDX, ECX, EBX ، والبتتات الثمانية الدنيا للنصف الدوني يمكن الوصول إليها بإسم AH, DH, CH, BH و AL, DL, CL, BL بالترتيب.
 
 
==خانات عناوين المناطق==
 
هناك 6 خانات لعناوين المناطق هي:
 
* SS : Stack Segment. مؤشر على المكدس.
* CS : Code Segment. مؤشر على الكود (شيفرة الحاسوب).
* DS : Data Segment. مؤشر على البيانات.
* ES : Extra Segment. مؤشر على البيانات الإضافية. ('E' تمثل كلمة "Extra")
* FS : F Segment. مؤشر على بيانات إضافية أخرى. ('F' comes after 'E')
* GS : G Segment. مؤشر آخر لبيانات الإضافية . ('G' comes after 'F')
 
معظم البرامج في أنظمة التشغيل الحديثة (كلينوكس ومايكروسوفت ويندوز) تستخدم شكل للتعامل مع الذاكرة تشير فيه كل خانات عناوين المناطق إلى ذات المكان في الذاكرة، وبالتالي مؤدية إلى عدم إستخدامها، ولكن FS و GS هما إستثناء لهذه القاعدة ، فهم يستخدمون لأجل البيانات المتعلقة بالThreads، ليكون لكل Thread بياناته الخاصة.
 
==خانة تخزين المعلومات==
خانة تخزين المعلومات أو Flags Register هي خانة من 32 بت تستخدم لتخزين ومراقبة نتائج العمليات وحالة المعالج. يسمى كل بت منها راية بالإنجليزية Flag.
{| border="1"
|+'''EFLAGS Flags'''
|-
|0
|0
|0
|0
|0
|0
|0
|0
|0
|0
|ID
|VIP
|VIF
|AC
|VM
|RF
|0
|NT
|IOPL
|OF
|DF
|IF
|TF
|ZF
|0
|AF
|0
|PF
|1
|CF
|}
 
 
البتات رقم 0 ورقم 1 محجوزان ومن المفترض ان لا يتم تغييرهما.
 
تستخدم الرايات لاغراض هي :
 
* CF : Carry Flag. الباقي في عمليات رياضية بدون إشارة.
* PF : Parity Flag. تشير إلى كون البايت الأكثر دونية تم آخر تعديل عليه عدد البتات فيه فردي أم زوجي.
* AF : Adjust Flag. الباقي للعمليات الحسابية على Binary Code Decimal (BCD).
* ZF : Zero Flag. يشير إذا ما كانت نتيجة العملية الأخيرة صفر (0).
* SF : Sign Flag. يشير إذا ما كانت إشارة العدد ناقص (سالبة).
* TF : Trap Flag. تشير إلى كون نظام في تهيئة البحث عن المشاكل والأخطاء وبالتالي التصبيق يتم خطوة خطوة.
* IF : Interuption Flag. يشير إلى كون المقاطعات (Interrupts) مسموحة.
* DF : Direction Flag. Stream direction. Set if increments addresses.
* OF : Overflow Flag. Set if overflow on signed arithmetic operations.
* IOPL : I/O Privilege Level field (2 bits). I/O Privilege Level of the current process.
* NT : Nested Task flag. Controls chaining of interrupts. Set if the current process is linked to the next process.
* RF : Resume Flag. Response to debug exceptions.
* VM : Virtual-8086 Mode. Set if in 8086 compatibility mode.
* AC : Alignment Check. Set if alignment checking in of memory references are done.
* VIF : Virtual Interrupt Flag. Virtual image of IF.
* VIP : Virtual Interrupt Pending flag. Set if an interrupt is pending.
* ID : Identification Flag. Support for CPUID instruction if can be set.
 
==MOV==
الأمر mov