قائمة السجلات:
يوجد العديد من السجلات، ولكل سجّل دور محدد على الأقل (هناك بعض السجّلات لها عدة أدوار وعدة مهام).
AL/AH/EAX: هو السجل العام، والذي تتغير قيمته بسرعة أثناء عمل الحاسب.
BL/BH/EBX: هو أيضا سجل عام، يمكن استخدامه كفرع للذاكرة (Offset)، كمثال:
"mov al, byte ptr ds:[bx+10]".
CL/CH/ECX: عامة، يستخدم هذا السجل كعداد للحلقات (loops)، كمثال:
"mov ecx, 5; rep movsd"، ويعمل هذا المثال على نسخ 5 كلمات مضاعفة.
DL/DH/EDX: هذا الأخير هو أيضا سجّل عام، وهو إجباري عند العمل للوصول إلى المداخل(ports)، (المداخل هي واسطة للتواصل بين مختلف رقائق الحاسب، مثل المدخل 42h و 43h تستعمل لمراقبة مكبرات الصوت الداخلية).
CS: قطاع ذاكري مخصص للكود (Code Segment).
DS: قطاع ذاكري مخصص للبيانات (Data Segment).
ES: قطاع ذاكري.
FS: قطاع ذاكري آخر.
GS: قطاع ذاكري آخر.
SS: قطاع ذاكري خاص بالمكدس (Stack Segment).
BP: فرع (Offset) ذاكري، وغالبا هو نسخة من السجل SP، حيث يمكننا طرح قيمة من أجل قراءتها في المكدس. (لا يجب علينا تغيير محتوى SP).
EDI/DI: فرع ذاكري يستخدم من قبل ES (أو FS أو GS إذا ما تم تحديده)، كمثال:
"mov al, byte ptr gs:[10]"
EIP/IP: فرع ذاكري خاص بالكود (غير يمكن الوصول إليه مباشرة، لكن يمكن تغيير محتواه بطريقة مباشرة من خلال التعليمات: CALL, JMP أو J[case]، حيث case هي حالة من حالات القفز التي سنراها لاحقا).
ESI/SI: فرع ذاكري يستخدم من قبل DS
ESP/SP: فرع ذاكري يستخدم من قبل المكدس (Stack).
الجدول الآتي يلخص أهم سجلات 16 بت، وحجم كل سجّل:
Register Bits 7..0
Bits 15..8
Main Function
AX
AL
AH
Accumulator
BX
BL
BH
Base
CX
CL
CH
Count
DX
DL
DH
Data
SI
-
-
Source Increment
DI
-
-
Destination Increment
SP
-
-
Stack Pointer
BP
-
-
Base Pointer
CS
-
-
Code Segment
DS
-
-
Data Segment
SS
-
-
Stack Segment
ES
-
-
Extra Segment
IP
-
-
Instruction Pointer
يوجد العديد من السجلات، ولكل سجّل دور محدد على الأقل (هناك بعض السجّلات لها عدة أدوار وعدة مهام).
AL/AH/EAX: هو السجل العام، والذي تتغير قيمته بسرعة أثناء عمل الحاسب.
BL/BH/EBX: هو أيضا سجل عام، يمكن استخدامه كفرع للذاكرة (Offset)، كمثال:
"mov al, byte ptr ds:[bx+10]".
CL/CH/ECX: عامة، يستخدم هذا السجل كعداد للحلقات (loops)، كمثال:
"mov ecx, 5; rep movsd"، ويعمل هذا المثال على نسخ 5 كلمات مضاعفة.
DL/DH/EDX: هذا الأخير هو أيضا سجّل عام، وهو إجباري عند العمل للوصول إلى المداخل(ports)، (المداخل هي واسطة للتواصل بين مختلف رقائق الحاسب، مثل المدخل 42h و 43h تستعمل لمراقبة مكبرات الصوت الداخلية).
CS: قطاع ذاكري مخصص للكود (Code Segment).
DS: قطاع ذاكري مخصص للبيانات (Data Segment).
ES: قطاع ذاكري.
FS: قطاع ذاكري آخر.
GS: قطاع ذاكري آخر.
SS: قطاع ذاكري خاص بالمكدس (Stack Segment).
BP: فرع (Offset) ذاكري، وغالبا هو نسخة من السجل SP، حيث يمكننا طرح قيمة من أجل قراءتها في المكدس. (لا يجب علينا تغيير محتوى SP).
EDI/DI: فرع ذاكري يستخدم من قبل ES (أو FS أو GS إذا ما تم تحديده)، كمثال:
"mov al, byte ptr gs:[10]"
EIP/IP: فرع ذاكري خاص بالكود (غير يمكن الوصول إليه مباشرة، لكن يمكن تغيير محتواه بطريقة مباشرة من خلال التعليمات: CALL, JMP أو J[case]، حيث case هي حالة من حالات القفز التي سنراها لاحقا).
ESI/SI: فرع ذاكري يستخدم من قبل DS
ESP/SP: فرع ذاكري يستخدم من قبل المكدس (Stack).
الجدول الآتي يلخص أهم سجلات 16 بت، وحجم كل سجّل:
Register Bits 7..0
Bits 15..8
Main Function
AX
AL
AH
Accumulator
BX
BL
BH
Base
CX
CL
CH
Count
DX
DL
DH
Data
SI
-
-
Source Increment
DI
-
-
Destination Increment
SP
-
-
Stack Pointer
BP
-
-
Base Pointer
CS
-
-
Code Segment
DS
-
-
Data Segment
SS
-
-
Stack Segment
ES
-
-
Extra Segment
IP
-
-
Instruction Pointer