Professional Documents
Culture Documents
مسجل البيارق
أحد أهم مميزات الحاسب هي القدرة علي اتخاذ القرارات ويتم ذلك
عن طريق تحديد حالة المعالج الدقيق بعد تنفيذ عملية محددة .في
المعالج 8086يتم تمثيل حالة المعالج بعد تنفيذ آخر عملية في 9
خانات ثنائية تسمي البيارق Flagsويتم اتخاذ القرارات المختلفة حسب
قيمة هذه البيارق.
يتم تخزين البيارق في مسجل يسمي مسجل البيارق Flag Register
ويمكن تقسيم البيارق إلي نوعين وهما بيارق التحكم Control Flags
وبيارق الحالة .Status Flagsوتقوم بيارق التحكم لتشغيل أو تعطيل
عمليات محددة أثناء تنفيذ البرنامج بينما تقوم بيارق الحالة بعكس
حالة المعالج بعد تنفيذ أمر محدد كأن يتم إظهار أن النتيجة تساوي
صفر وذلك عن طريق رفع بيرق الصفر كما سنري في الجزء التالي.
مسجل البيارق
يحتوي هذا المسجل علي البيارق المختلفششة كمشا هششو موضشح بالششكل
حيث يتم تمثيل بيارق الحالششة فششي الخانششات 0و 2و 4و 6و 7و 11
بينما تشغل بيارق التحكم الخانات 8و 9و 10وتبقششي بقيششة الخانششات
بششدوت اسششتخدام ) ليششس مششن الضششروري معرفششة موقششع الششبيرق مششن
المسجل في أغلب الحالت حيث توجد أوامر للتخاطب مع كششل بيششرق
علي حدة ( ،سنتناول في الجزء التالي بيارق الحالة
Of Df If Tf Sf Zf Af Pf Cf
شكل يوضح مسجل البيارق
Status Flags بيارق الحالة
تقوم هذه البيارق بإظهار حالة المعالج بعد تنفيذ آخر أمر فمثل ً عند
تنفيذ المر SUB Ax,Bxفإن بيرق الصفر يتأثر وتصبح قيمته تساوي 1
إذا كانت النتيجة تساوي صفر .الجدول التالي يوضح البيارق المختلفة
التطابق
4 Auxiliary Carry بيرق المحمول AF
Flag
المساعد
6 Zero Flag بيرق الصفر ZF
7 Sign Flag بيرق الشارة SF
11 Overflow Flag بيرق الفيضان OF
ـــــــــــــــــــــــــــــــــــــــــــــــــــ
- 42 - SUST
الفصل الرابع :مسجل البيارق
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــ
يحتوي هذا البيرق علي القيمة ‘ ’1إذا كانت الخانة ذات الوزن
الكبر MSBتساوي ‘ ’1حيث يعني هذا أن النتيجة سالبة ) .أي
أن SF = 1إذا كانت MSB =1و SF= 0إذا كانت (MSB= 0
بيرق الفيضان (Overflow Flag (OF
يحتوي هذا البيرق علي القيمة ‘ (OF=1) ’1إذا حدث فائض في
حالة الرقام ذات الشارة Signed Numbersوإل فإنه سيحتوي علي
صفر .وسنناقش هذا الموضوع بالتفصيل في الجزاء المتبقية
من هذا الفصل.
الفيضان Overflow
كما نعلم فإن إمكانية تخزين الرقام في الحاسوب محدودة
وذلك حسب المكان الذي سيتم فيه تخزين الرقم ) مثل ً أكبر
رقم يمكن تمثيله وتخزينه في خانة واحدة One Byteهو الرقم
( 255وعلي ذلك إذا أردنا إجراء عملية حسابية وزاد الناتج عن
هذه القيمة فإن المكان لن يسمح بتخزين النتيجة وفي هذه
الحالة يكون قد حدث فيضان.
أمثلة علي الفيضان
يختلف الفيضان عند التحدث عن الرقام الموجبة فقط
) الرقام بدون إشارة ( Unsigned Numbersعنه في الرقام بإشارة
.Signed Numbersوعند إجراء عملية مثل الجمع هنالك أربع
احتمالت للنتيجة:
- 1ل يوجد فيضان
- 2فيضان بإشارة فقط
- 3فيضان بدون إشارة فقط
- 4فيضان بإشارة وبدون إشارة
وكمثال للفيضان بدون إشارة وليس بإشارة افترض أن المسجل AX
يحتوي علي الرقم FFFFhوأن المسجل BXيحتوي علي الرقم 1وقمنا
بتنفيذ المر ADD AX, BXستكون النتيجة علي النحو التالي :
1111 1111 1111 1111
+ 0000 0000 0000 0001
=1 0000 0000 0000 0000
وبالتالي يكو لدينا أحد احتمالين
إذا فسرنا هذه الرقام علي أنها أرقام بدون إشارة فإن -1
النتيجة الصحيحة هي الرقم 65536أي الرقم السداسي عشر
10000hولكن هذه النتيجة ل يمكن تخزينها في المسجل ) أكبر
من أكبر رقم يمكن تخزينه ( 65535حيث سيتم فقد الرقم 1
وتخزين الرقم 0000hفي المسجل AXوبالتالي فإن النتيجة التي
تم تسجيلها هي نتيجة خاطئة.
أما إذا فسرنا هذه الرقام علي أنها أرقام بإشارة فإن -2
الرقم الول FFFFhهوالرقم – 1وعند جمع الرقم 1إليه فإن
ـــــــــــــــــــــــــــــــــــــــــــــــــــ
- 43 - SUST
الفصل الرابع :مسجل البيارق
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــ
وفي هذه الحالة التفسير للرقم 7FFFhفي حالة الرقام بإشارة أو
بدون إشارة هو تفسير واحد حيث أن الخانة ذات الوزن الكبر تساوي
( MSB = 0 ) 0وهو الرقم (7FFFh) 32767وعلي ذلك فإن نتيجة حاصل
الجمع يجب أن تكون واحدة في الحالتين وهي الرقم 65534وهذه
النتيجة ل يمكن تخزينها في حالة الرقام بإشارة حيث أن تفسير هذه
النتيجة في حالة الرقام بإشارة هو الرقم السالب ) ( 2-
وعلي ذلك فلدينا في هذا المثال فيضان بإشارة ول يوجد فيضان
بدون إشارة
ـــــــــــــــــــــــــــــــــــــــــــــــــــ
- 45 - SUST
الفصل الرابع :مسجل البيارق
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــ
الحل :
80h
80h+
100h
00h الرقم ALعلي يحتوي المسجل
ـــــــــــــــــــــــــــــــــــــــــــــــــــ
- 46 - SUST
الفصل الرابع :مسجل البيارق
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ـــــــــــــــــــــــــــــــــــــــــــــــــــ
- 47 - SUST
الفصل الرابع :مسجل البيارق
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــ
وذلك لننا نجمع رقم سالب إلي رقم OF=0 OF :بيرق الفيضان
موجب ) المحمول إلي
يساوي المحمول منها (. MSB الخانة
مثال :5
نفذ المر
MOV AX,-5
يتم وضع الرقم – (FFFBh) 5في المسجل AXول تتأثر أي من البيارق
بالمر . MOV
مثال :6
نفذ المر NEG AXحيث يحتوي المسجل AXعلي الرقم 8000h
8000h = 1000 0000 0000 0000
COMPLEMENT = 1000 0000 0000 0000
1000 0000 0000 0000
SF=1 بيرق الشارة SF :
PF=1 بيرق خانة التطابق PF:
ZF=0 بيرق الصفر ZF :
بيرق المحمول CF=1 CF :لنه في حالة تغيير الشارة فإن CF =1
دائما ً إل إذا كان الرقم
يساوي صفر .
بيرق الفيضان OF=1 OF :لننا عند تنفيذ المر NEGنتوقع تغيير
إشارته وفي هذه الحالة لم
تتغير الشارة .
برنامج : DEBUG
يمكن باستخدام برنامج DEBUGمتابعة تنفيذ البرنامج خطوة_خطوة
وإظهار النتيجة وتأثر المسجلت بعد كل خطوة كما يمكن كتابة
برنامج بلغة التجميع حيث يقوم بتحويله إلي لغة اللة مباشرة
وتخزينها في الذاكرة
ولستعمال برنامج الش DEBUGنقوم بكتابة برنامج بلغة التجميع
وتجهيزه حتى نحصل علي الملف القابل للتنفيذ EXCUTABLE FILEبعد
ذلك يمكننا تحميل البرنامج بواسطة المر
C:\DOS\DEBUG TEST.EXE
يقوم البرنامج بالرد بالشارة " "-دليل علي أنه في حالة انتظار لحد
الوامر وهنا توضيح لبعض الوامر الهامة -:
.1المر Rوهو يوضح محتويات المسجلت .ولوضع قيمة محددة
في أحد المسجلت يتم كتابة المر Rمتبوعا ً بإسم المسجل )مثل ُ R
.(IP
.2المر (T (TRACEوهو يؤدي إلي تنفيذ الخطوة الحالية فقط من
البرنامج .
.3المر ( G ( GOيؤدي إلي تنفيذ البرنامج .
.4المر (Q (QUITيؤدي إلي الخروج من البرنامج .
ـــــــــــــــــــــــــــــــــــــــــــــــــــ
- 48 - SUST
الفصل الرابع :مسجل البيارق
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ـــــــــــــــــــــــــــــــــــــــــــــــــــ
- 49 - SUST
مسجل البيارق: الفصل الرابع
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــ
-R
AX=0000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=0000 NV UP DI PL NZ NA PO NC
0EE6:0000 B80040 MOV AX , 4000
MOV AX , 4000h المر الول:ثم نبدأ التنفيذ
-T
AX=4000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=0003 NV UP DI PL NZ NA PO NC
0EE6:0003 03C0 ADD AX , AX في المسجل
AX التنفيذ يضع
4000h
ولم يتم تغيير4000H أصبح به الرقمAX لحظ أن المسجل
ADD AX,AX محتويات البيارق وأن المر التالي أصبح المر
-T
AX=8000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=0005 OV UP DI NG NZ NA PE NC
السابقة أثرت
0EE6:0005 النتيجة
2DFFFF وأن
SUB AX 8000H أصبح به الرقمAX المسجل
, FFFF لحظ أن
في البيارق حيث تم رفع بيرق الفيضان ليشير إلي حدوث فيضان
بإشارة وبيرق الشارة ليشير إلي أن النتيجة سالبة وكذلك بيرق
( تحتوي علي عددAL )أيAX التطابق لن الخانة الصغر من المسجل
والن نتابع تنفيذ البرنامج حيث. 1 زوجي من الخانات التي بها الرقم
SUB AX,FFFFh المر التالي هو المر
-T
AX=8001 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=0008 NV UP DI NG NZ AC PO CY
0EE6:0008 F7D8 NEG AX
-T
AX=7FFF BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=000A NV UP DI PL NZ AC PE CY
0EE6:000A 40 INC AX
-T
AX=8000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=000B OV UP DI NG NZ AC PE CY
0EE6:000B B44C MOV AH , 4C
-G
PROGRAM TERMINATED NORMALLY
-Q
C:\> ـــــــــــــــــــــــــــــــــــــــــــــــــــ
- 50 - SUST
الفصل الرابع :مسجل البيارق
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــ
تمارين :
وضع محتويات المسجل المستودع DESTINATION REGوكذلك قيم
البيارق بعد تنفيذ كل من الوامر التالية .
ADD AX,BX .1حيث يحتوي المسجل AXعلي الرقم 7FFFh
والمسجل BXعلي .0001h
SUB AL,B .2حيث AL=01hو BL=FFh
DEC AL .3حيث AL=00h
NEG AL .4حيث AL=7F
XCHG AX,BX .5حيث AX=1ABChو . BX=712h
ADD AL,BL .6حيث AL=80hو . BL=FFh
SUB AX,BX .7حيث AX=0000hو . BX=8000h
NEG AX .8حيث . AX=0001h
ـــــــــــــــــــــــــــــــــــــــــــــــــــ
- 51 - SUST