You are on page 1of 83

‫جامعة الشام الخاصة‬

‫مقرر تنظيم الحاسب ولغة التجميع‬


‫المحاضرة األولــــى‬
‫المعالج ‪:‬‬
‫• عبارة عن القلب النابض للحاسوب‬
‫• يقوم بتنفيذ األوامر و البرامج المكتوبة بلغة اآللة فقط‬
‫• من أشهر الشركات المنتجة للمعالجات شركة ‪Intel‬‬
‫الذاكرة ‪:‬‬
‫• تستخدم لتخزين البيانات‬
‫• تتكون من خاليا و لكل خلية عنوان‬
‫• تقسم إلى قسمين رئيسيين ‪:‬‬

‫‪RAM‬‬ ‫‪ROM‬‬
‫وحدات الذاكرة ‪:‬‬
‫البت )‪ : (bit‬وهي أصغر وحدة تخزين (‪)1 , 0‬‬ ‫•‬
‫النيبل )‪ : )nibble‬وهي أربع بتات‬ ‫•‬
‫البايت (‪ : )byte‬وهوعبارة عن ثمانية بتات‬ ‫•‬
‫كلمة )‪ : )word‬وهوعبارة عن ‪16‬بتا‬ ‫•‬
‫الكلمة المزدوجة )‪ : )Double word‬وهوعبارة عن ‪ 32‬بتا‬ ‫•‬
‫كيلو بايت )‪ : )kilo byte‬وهوعبارة عن ‪1024‬بايت‬ ‫•‬
‫ميجابايت )‪ :(mega byte‬وهوعبارة عن ‪1024‬كيلوبايت‬ ‫•‬
‫الناقل ‪:‬‬
‫وهو مجموعة من األسالك التي تقوم بنقل البيانات بين‬ ‫•‬
‫المعالج و الذاكرة ووحدات اإلدخال و اإلخراج‬
‫يتألف الناقل من ‪:‬‬ ‫•‬
‫‪ .I‬ناقل العناوين (‪)Address bus‬‬
‫‪ .II‬نافل البيانات (‪)Data bus‬‬
‫‪ .III‬خطوط التحكم و السيطرة (‪)control lines‬‬
‫مكونات المعالج‬
Arithmetic-logic unit ‫وحدة الحساب و المنطق‬ •
(ALU)
)flag register) ‫مسجل الرايات‬ •
)registers) ‫المسجالت‬ •
، )command decoder( ‫مكونات أخرى مثل‬ •
)instruction queue( ، )address buffer(
‫لغات البرمجة‬
)machine language( ‫• لغة االلة‬
)assembly language) ‫• لغة التجميع‬
)high level language( ‫• لغات عليا‬
‫لغة اسمبلي ‪ASSEMBLY‬‬
‫• هي لغة التجميع‬
‫• اسمبلر(‪:)assembler‬عبارة عن برنامج يقوم بتحويل‬
‫البرامج التي تكتب بلغة التجميع إلى لغة الماكينة‬
‫• اسمبلي (‪:)assembly‬وهي عملية تحويل برنامج مكتوب‬
‫بلغة التجميع بمساعدة األسمبلر إلى لغة الماكينة‬
‫(أنظمة العد)‬

‫النظام الثنائي ‪:‬‬


‫– يتكون من الرموز ‪1 , 0‬‬
‫– لكل بت قيمة كما في الميزان العشري‬

‫الرابعة الخامسة السادسة السابعة الثامنة‬ ‫الثالثة‬ ‫الثانية‬ ‫األولى‬ ‫البت‬

‫‪128‬‬ ‫‪64‬‬ ‫‪32‬‬ ‫‪16‬‬ ‫‪8‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫القيمة‬


‫النظام العشري ‪:‬‬
‫يتكون من الرموز ‪9,8,7,6,5,4,3,2,1,0‬‬

‫النظام السادس عشر( ‪:) hexadicemal‬‬


‫يتكون من الرموز ‪9,8,7,6,5,4,3,2,1,0,A,B,C,D,E,F‬‬

‫الثالثة‬ ‫الثانية‬ ‫األولى‬ ‫الخانة‬


‫‪256‬‬ ‫‪16‬‬ ‫‪1‬‬ ‫القيمة‬
‫جدول ربط نظم العد‬
‫السادس عشر‬ ‫الثنائي‬ ‫العشري‬
‫‪0‬‬ ‫‪0000‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪0001‬‬ ‫‪1‬‬
‫‪2‬‬ ‫‪0010‬‬ ‫‪2‬‬
‫‪3‬‬ ‫‪0011‬‬ ‫‪3‬‬
‫‪4‬‬ ‫‪0100‬‬ ‫‪4‬‬
‫‪5‬‬ ‫‪0101‬‬ ‫‪5‬‬
‫‪6‬‬ ‫‪0110‬‬ ‫‪6‬‬
‫‪7‬‬ ‫‪0111‬‬ ‫‪7‬‬
‫‪8‬‬ ‫‪1000‬‬ ‫‪8‬‬
‫‪9‬‬ ‫‪1001‬‬ ‫‪9‬‬
‫‪A‬‬ ‫‪1010‬‬ ‫‪10‬‬
‫‪B‬‬ ‫‪1011‬‬ ‫‪11‬‬
‫‪C‬‬ ‫‪1100‬‬ ‫‪12‬‬
‫‪D‬‬ ‫‪1101‬‬ ‫‪13‬‬
‫‪E‬‬ ‫‪1110‬‬ ‫‪14‬‬
‫‪F‬‬ ‫‪1111‬‬ ‫‪15‬‬
‫كتابة األعداد في لغة التجميع‬
‫‪ .1‬الثنائي ‪10111B ،110B :‬‬
‫‪ .2‬السادس عشر ‪11H ،12AH ، 10H :‬‬
‫‪ .3‬العشري ‪100D ، 100 ، 102 ، 11D :‬‬
‫‪8086‬مقدمة عن المعالج الصُّ غري‬
‫‪8086‬المعالج الصُّ غري‬
‫‪‬ينتمي هذا المعالج إلى عائلة المعالجات الصُّغرية الشهيرة‬
‫– ‪8086, 80186, 80286, 80386, 80486, Pentium‬‬

‫‪‬قامت شركة انتل ‪ INTEL‬باإلعالن عنه عام ‪.1978‬‬


‫‪‬يتعامل ‪ 8086‬مع طول كلمة ‪ 16-bit‬و فيه‪:‬‬
‫‪ 16 ‬خط نقل معطيات‪.‬‬
‫‪ 20 ‬ناقل (ممر) عنونة‪.‬‬
‫‪8086‬البنية الداخلية لمعالج‬
‫‪ ‬بشكل تفرعي حيث ‪ 8086 :‬يعالج‬
‫‪ ‬وحدة المعالجة المركزية تتألف من جزئين يعمالن على التوازي‬
‫‪Execution Unit‬وحدة التنفيذ‬ ‫‪‬‬
‫‪8086 CPU‬‬
‫‪Bus Interface Unit‬وحدة مالئمة الممرات‬ ‫‪‬‬

‫‪Bus Interface‬‬
‫‪ ‬وظائف الـ ‪: CPU‬‬ ‫)‪Unit (BIU‬‬
‫‪(Fetch‬جلب)‬ ‫‪‬‬

‫‪Decode‬تفسير األمر وتحديد البيانات)‬


‫‪Execution‬‬ ‫‪‬‬
‫‪( Unit‬‬
‫)‪(EU‬‬
‫‪Execute ( ‬تنفيذ)‬
‫‪BIU‬وظائف‬
‫‪‬إرسال العناوين الى مواقع في الذاكرة‬
‫‪‬جلب األوامر من الذاكرة‬
‫‪‬قراءة ‪ /‬ارسال المعطيات من ‪ /‬إلى الذاكرة العشوائية‬
‫‪‬إرسال عناوين المعطيات إلى المنافذ‬
‫‪‬قراءة‪/‬كتابة المعطيات من‪/‬الى منافذ الدخل‪/‬الخرج‬
‫وظائف الـ ‪EU‬‬
‫‪‬إخبار الـ ‪ BIU‬عناوين األوامر والمعطيات لجلبها‪.‬‬

‫‪‬تفكيك األوامر و تنفيذها‪.‬‬

‫‪‬تقسيم العمل بين ‪ BIU & EU‬مما يؤدي الى زيادة سرعة العمل‪.‬‬
‫‪ 8086‬المخطط البنيوي لـ‬
Memory
∑ Interface

EXTRA SEGMENT (ES) BIU


CODE SEGMENT (CS) 6 5 4 3 2 1
STACK SEGMENT (SS)
DATA SEGMENT (DS) Instruction Queue
INSTRUCTION POINTER (IP)

Instruction
Decoder
AH AL
BH BL ARITHMETIC
CH CL LOGIC UNIT
CONTROL
DH DL
SYSTEM
STACK POINTER (SP)
BASE POINTER (BP) OPERANDS
FLAGS
SOURCE INDEX (SI)
DESTINATION INDEX (DI)
EU
‫‪Execution Unit‬أقسام‬
‫‪‬األقسام الرئيسية ‪:‬‬
‫مفسر (مفكك) أوامر ‪. Decoder‬‬ ‫ّ‬ ‫•‬
‫• نظام تحكم ‪.‬‬
‫• ‪ ALU‬وحدة الحساب والمنطق ‪.‬‬
‫• مسجالت أغراض عامة ‪.‬‬
‫• مسجل األعالم (الرايات)‬
‫• مسجالت الفهرسة والتأشير ‪.‬‬
‫‪ُ ‬مف ّكك (مترجم‪,‬مفسر) األوامر‬
‫‪ ‬يفسر األوامر المجلوبة من الذاكرة ويحدد المعطيات المطلوبة‬
‫ويقولب األوامر إلى سالسل يمكن لوحدة التنفيذ أن تفهمها وتنفذها‪.‬‬

‫‪‬نظام التحكم‬
‫‪ ‬يولد إشارات التحكم إلجراء العمليات الداخلية للمعالج‬
‫الصغري‪.‬‬

‫‪‬وحدة الحساب والمنطق‬


‫‪ ‬خالل ‪ 16 bit‬يتم اجراء العمليات الحسابية والمنطقية جمع وطرح‬
‫وضرب او منطقية كـ ‪ And , Or , Nand‬الخ‬
‫مسجالت األغراض العا ّمة‬
‫‪ ‬تملك ‪ EU‬وحدة التنفيذ ‪ 8‬مسجالت‬ ‫‪AH‬‬ ‫‪AL‬‬
‫عامة‪.‬‬
‫‪BH‬‬ ‫‪BL‬‬
‫‪ ‬يمكن استخدامها بشكل فردي وأيضا ً‬
‫استخدام ‪ 8‬بت فقط منها‬ ‫‪CH‬‬ ‫‪CL‬‬

‫‪ ‬مسجل ‪ AL‬يطلق عليه المراكم‪.‬‬ ‫‪DH‬‬ ‫‪DL‬‬


‫‪ ‬يمكن دمج مسجلين بمسجل واحد‬ ‫‪AH‬‬ ‫‪AL‬‬ ‫‪AX‬‬
‫وذلك بغية استخدمها لبيانات من‬
‫طول ‪ 16‬بت‪.‬‬ ‫‪BH‬‬ ‫‪BL‬‬ ‫‪BX‬‬
‫‪ ‬المسجالت الصالحة الستعمالها‬
‫كثنائيات هي‪– AX, BX, CX, DX‬‬ ‫‪CH‬‬ ‫‪CL‬‬ ‫‪CX‬‬

‫‪DH‬‬ ‫‪DL‬‬ ‫‪DX‬‬


‫سجل أعالم (رايات) الحالة‬
‫‪‬يمتلك معالج ‪ 8086‬مسجل أعالم طوله ‪ 16‬بت‪.‬‬
‫‪‬منها ‪ 9‬بتات تم ّثل األعالم الفعالة‪.‬‬

‫‪‬يوجد نوعان من الرايات ‪:‬‬


‫‪ .1‬رايات مشروطة ‪ :‬تحدد قيمة ب ّتها من خالل نتيجة بعض‬
‫العمليات الحسابية والمنطقية التي تطبق في وحدة التنفيذ‪.‬‬
‫‪ .2‬رايات تحكمية ‪ :‬تستخدم ألغراض تحكمية في بعض‬
‫العمليات للمعالج‪.‬‬
‫وحدة مالئمة (موائمة) الممرات‬
‫‪‬األقسام الرئيسية‪:‬‬

‫– رتل األوامر‬
‫– سجالت المقاطع‬
‫– مؤشر األوامر‬
Memory
∑ Interface

EXTRA SEGMENT (ES) BIU


CODE SEGMENT (CS) 6 5 4 3 2 1
STACK SEGMENT (SS)
DATA SEGMENT (DS) Instruction Queue
INSTRUCTION POINTER (IP)

Instruction
Decoder
AH AL
BH BL ARITHMETIC
CH CL LOGIC UNIT
CONTROL
DH DL
SYSTEM
STACK POINTER (SP)
BASE POINTER (BP) OPERANDS
FLAGS
SOURCE INDEX (SI)
DESTINATION INDEX (DI)
EU
‫رتل التعليمة‬
‫‪ ‬يعمل هذا المعالج بشكل تفرعي وظيفيا ً‬
‫‪ ‬عندما تكون وحدة التنفيذ مشغولة بتفكيك أمر أو تنفيذه ال تكون‬
‫الممرات مستخدمة‬
‫‪ ‬في هذا الوقت من الممكن جلب ‪ 6‬تعليمات عبر الممرات وتنفيذها‬
‫الحقا في وحدة التنفيذ وهذا ما يمكننا من فعله الرتل‪.‬‬
‫‪ ‬وحدة مالئمة الممرات تخزن هذه التعليمات المجلوبة سابقا ً وذلك في‬
‫رتل التعليمة الذي يعمل بتقنية ‪. FIFO‬‬
‫‪ ‬عندما تكون وحدة التنفيذ جاهزة للتعامل مع تعليمة جديدة يتم أخذها‬
‫من هذا الرتل الموجود في وحدة موائمة الممرات ‪.‬‬
‫‪Pipelining‬عملية الـ‬
‫‪‬ال تنتظر الـ ‪ EU‬وحدة الـ ‪ BIU‬حتى تقوم بجلب التعليمة‬
‫التالية من الذاكرة ‪.‬‬

‫‪‬لذلك يتواجد الرتل كي يسرع عمل المعالج‪.‬‬

‫‪‬عملية جلب تعليمة من الذاكرة في حين أن التعليمة الحالية‬


‫مازالت تن ّفذ في وحدة التنفيذ تدعى ‪. Pipelining‬‬
‫المسجالت‬
‫• المسجالت هي عبارة ذاكرة سريعة تستخدم لكي يخزن فيها‬
‫المعالج األرقام التي يريد أن يجري عليها حساباته‪ ،‬فوحدة‬
‫الحساب والمنطق ال يمكنها تنفيذ أي عملية حسابية إال بعد أن‬
‫تجلب األرقام المراد إجراء العمليات عليها إلى المسجالت‪.‬‬
‫حيث أن حجم المسجالت مهم ألنه يحدد حجم البيانات التي‬
‫يستطيع الحاسب إجراء الحسابات عليها‪.‬‬
‫املسجالت ‪Registers‬‬
‫يمتلك المعالج ‪ 8086‬أربعة مجموعات من المسجالت ذات ‪ 16‬بت‬
‫يستطيع المبرمج الوصول إليها والتعامل معها وهي‪:‬‬
‫– أربعة مسجالت مقاطع ‪. CSR,DSR,SSR,ESR‬‬
‫– أربعة مسجالت تأشير و فهرسة ‪. SI,DI,BP,SP‬‬
‫– أربعة مسجالت لألغراض العامة ‪. AX,BX,CX,DX‬‬
‫– مؤشر التعليمة ‪IP‬‬
‫باإلضافة إلى ذلك يوجد مسجل آخر هو مسجل األعالم أو الحالة‬
‫وهو مسجل بحجم ‪ 16‬بت يستخدم منها المعالج ‪ 9‬خانات فقط‪.‬‬
‫ً‬
‫أوال مسجالت املقاطع ‪Segment Registers‬‬
‫وهي عبارة عن أربعة مسجالت طول كل منها ‪ 16 bit‬أي ‪2‬‬
‫‪ Bytes‬وهي‪:‬‬
‫‪ .1‬مسجل مقطع الشفرة ‪Code Segment Register CSR‬‬
‫يحتوي هذا المسجل على عنوان أول حجرة في المقطع‬
‫المخصص لشفرة البرنامج في الذاكرة‪ ،‬أي أنه يشير إلى بداية‬
‫مقطع الشفرة بالذاكرة‪.‬‬

‫‪ .2‬مسجل مقطع البيانات ‪Data Segment Register DSR‬‬


‫يحتوي هذا المسجل على عنوان أول حجرة في مقطع البيانات في‬
‫الذاكرة‪ ،‬أي أنه يشير إلى بداية مقطع البيانات بالذاكرة‪.‬‬
‫تابع مسجالت املقاطع‬
‫‪ .3‬مسجل مقطع المكدس ‪Stack Segment Register SSR‬‬
‫يحتوي هذا المسجل على عنوان أول حجرة في مقطع المكدس في‬
‫الذاكرة ‪ ،‬أي أنه يشير إلى نهاية مقطع المكدس‪.‬‬

‫‪ .4‬مسجل مقطع البيانات اإلضافي ‪Extra Segment‬‬


‫‪Register ESR‬‬
‫يحتوي هذا المسجل على عنوان أول حجرة في مقطع البيانات‬
‫اإلضافي في الذاكرة‪ ،‬أي أنه يشير إلى بداية مقطع البيانات‬
‫اإلضافي‪.‬‬
‫مسجالت املقاطع للمعاجل الدقيق ‪8086‬‬

‫‪00000h‬‬

‫‪15‬‬ ‫‪0‬‬
‫مقطع الشيفرة ‪CS‬‬
‫‪CS‬‬
‫‪DS‬‬ ‫مقطع البيانات ‪DS‬‬ ‫‪64 KB‬‬

‫‪SS‬‬
‫‪ES‬‬ ‫مقطع المكدس ‪SS‬‬

‫مقطع البيانات‬
‫اإلضافي ‪ES‬‬

‫‪FFFFFh‬‬
‫ً‬
‫ثانيا مسجالت الفهرسة و التأشري‬
‫وهي عبارة عن أربعة مسجالت مساعدة تساعد في إيجاد العنوان الفيزيائي‬
‫بالتعاون مع مسجالت المقاطع ‪ ،‬و طول هذه المسجالت ‪ 16‬بت أي ‪ 2‬بايت ‪ ،‬و‬
‫هي ‪:‬‬

‫‪ .1‬مسجل دليل المصدر ‪Source Index Register SI‬‬

‫يخزن في هذا المسجل عنوان يدل على اإلزاحة ضمن مقطع البيانات ‪، DS‬‬
‫بمعنى آخر يستعمل في االحتفاظ بالعناوين الفعالة من أجل التعليمات التي تتناول‬
‫البيانات المخزنة في مقطع البيانات في الذاكرة‪.‬‬
‫تابع مسجالت الفهرسة و التأشري‬
‫‪ .2‬مسجل دليل الهدف ‪Destination Index Register DI‬‬

‫يخزن فيه عنوان يدل على اإلزاحة ضمن مقطع البيانات اإلضافي ‪ ، ES‬بمعنى‬

‫آخر يستعمل مسجل دليل الهدف ‪ DI‬من أجل استنتاج العنوان الفيزيائي الذي‬

‫يحدد موقع بيانات معينة في حجرة الذاكرة ضمن مقطع البيانات االضافي ‪.‬‬
‫تابع مسجالت الفهرسة و التأشري‬
‫‪ .3‬مسجل مؤشر المكدس ‪Stack Pointer Register SP‬‬

‫يسمح مؤشر المكدس بوصول سهل للحجرات في مقطع المكدس الموجود في‬

‫الذاكرة حيث أن القيمة في ‪ SP‬تمثل العنوان الفعال لحجرة المكدس التالية التي‬

‫يمكن الوصول إليها نسبة إلى العنوان الحالي الموجود في مسجل مقطع المكدس‬

‫‪ SS‬و يحتفظ ‪ SP‬دوما بقيمة تدل على قمة المكدس ‪ ،‬هذا و إن قيمة هذا المسجل‬

‫تتعدل تلقائيا عند وضع أو سحب معلومة بالمكدس‪.‬‬


‫تابع مسجالت الفهرسة و التأشري‬
‫‪ .4‬مسجل مؤشر القاعدة ‪Base Pointer BP‬‬

‫يحتوي قيمة تدل على اإلزاحة بالنسبة لمقطع المكدس ‪ SS‬و هو يستخدم لقراءة‬
‫البيانات ضمن مقطع المكدس بدون إزالتها من المكدس‪.‬‬
‫مسجل مؤشر التعليمة ‪Instruction Pointer IP‬‬

‫هذا المسجل يحدد موقع التعليمة التالية التي ستنفذ في مقطع الشفرة و بعد جلب‬
‫شفرة التعليمة من الذاكرة فإن ‪ BIU‬تعدل قيمة ‪ IP‬بحيث تشير إلى التعليمة التالية‬
‫في الذاكرة ( التعديل يتم آليا )‪.‬‬
‫مسجل احلالة (األعالم) ‪Status (Flags) Register‬‬
‫هو مسجل ذو ‪ 16‬بت موجود في وحدة التنفيذ كما هو واضح‬
‫بالشكل ‪:‬‬
‫‪15‬‬ ‫‪14‬‬ ‫‪13‬‬ ‫‪12‬‬ ‫‪11 10‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪OF DF‬‬ ‫‪IF‬‬ ‫‪TF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪AF‬‬ ‫‪PF‬‬ ‫‪CF‬‬

‫من الشكل السابق يمكن تقسيم األعالم الى نوعين من االعالم‬


‫هي ‪:‬‬
‫‪ .1‬أعالم الحالة وهي عبارة عن ستة أعالم هي‬
‫‪CF, PF, AF, ZF, SF, OF‬‬
‫‪ .2‬أعالم التحكم وهي عبارة عن ثالثة أعالم للتحكم هي‬
‫‪DF, IF, TF‬‬
‫مالحظات‬ ‫النوع‬ ‫اسم الراية‬ ‫الرمز‬
‫يأخذ ‪ 1‬إذا أعطت البت األخيرة عن اليسار‪ 1‬إلى‬ ‫وضع‬ ‫‪Carry flag‬‬ ‫‪CF‬‬
‫الخارج أو أخذت ‪ 1‬من الخارج و إال يأخذ ‪0‬‬
‫إذا كان عدد الـ ‪ 1‬في أول ‪ 8‬بتات من النتيجة‬ ‫وضع‬ ‫‪Parity flag‬‬ ‫‪PF‬‬
‫زوجي تأخذ هذه الراية ‪ 1‬و إال صفر‬
‫إذا البت الرابعة البت الخامسة ‪ 1‬أو أخذت البت‬ ‫وضع‬ ‫‪Auxiliary flag‬‬ ‫‪AF‬‬
‫الرابعة من البت الخامسة ‪ 1‬تأخذ هذه الراية ‪1‬و‬
‫إال صفر‬
‫إذا كانت النتيجة صفر تأخذ هذه الراية ‪1‬و إال‬ ‫وضع‬ ‫‪Zero flag‬‬ ‫‪ZF‬‬
‫تأخذ القيمة صفر‬
‫إذا كانت النتيجة سالبة تأخذ هذه الراية ‪1‬و إال‬ ‫وضع‬ ‫‪Sign flag‬‬ ‫‪SF‬‬
‫تأخذ القيمة صفر‬

‫إذا وضع المبرمج بها القيمة ‪ 1‬يتم تنفيذ أمر‬ ‫سيطرة‬ ‫‪Trap flag‬‬ ‫‪TF‬‬
‫واحد فقط من األوامر و بعدها تأخذ القيمة صفر‬
‫نضعه ‪ 1‬للسماح لعمليات ‪ interrupt‬في مدخل‬ ‫سيطرة‬ ‫‪Interrupt flag‬‬ ‫‪IF‬‬
‫‪ interrupt‬للمعالج‬
‫لتحديد اتجاه الحركة في حالة قراءة النصوص‬ ‫سيطرة‬ ‫‪Direction flag‬‬ ‫‪DF‬‬

‫تأخذ ‪ 1‬إذا كانت النتيجة أكبر من المكان‬ ‫وضع‬ ‫‪Overflow flag‬‬ ‫‪OF‬‬
‫المخصص لحفظها و أال تأخذ صفر‬
‫أعالم احلالة‬
‫تشير إلى الحاالت الناتجة كنتيجة لتنفيذ تعليمة منطقية أو رياضية حيث تكون إما‬
‫في حالة واحد منطقي ‪ Set‬أو تكون في حالة صفر منطقي ‪ ، Reset‬و سنلخص‬
‫فيما يلي عمل كل منها‪:‬‬

‫أوالً‪ :‬إشارة المحمول )‪Carry Flag (CF‬‬


‫يكون في حالة الواحد المنطقي إذا وجد حمل خارجي او استعارة من أجل الخانة‬
‫األخيرة (البت األخير) و ذلك أثناء تنفيذ التعليمات الرياضية‪.‬‬
‫و يكون في حالة الصفر المنطقي إذا لم يوجد حمل أو استعارة من أجل البت‬
‫األخير‪.‬‬
‫أمثلة على علم احملمول‬
‫أ‪.‬حالة االنزياح ‪:‬‬
‫الحظ بأن النتيجة لم تتسع في ثمانية بتات و إنما تحتاج إلى تسع بتات و نعبر عن‬
‫ذلك بثمانية بتات و ‪ CF=1‬أي أنه لدينا في اليد واحد‪.‬‬
‫ببساطة‪ :‬فمهما َكب َُر العددان فإن تسعة بتات يمكن أن تستوعبها‪.‬‬

‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬


‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪CF=1‬‬
‫تابع أمثلة على علم احملمول‬
‫ب‪ .‬حالة االستعارة‬
‫الحظ بأن العدد األول الممثل ثنائيا أصغر من العدد الثاني الممثل ثنائيا أيضا ‪،‬‬
‫لذلك فعند إجراء عملية الطرح و في مثالنا هذا تخيلنا بت تاسع فيه القيمة واحد‬
‫(استعرنا) و بالتالي فإن ‪ CF=1‬أي لدينا استعارة من أجل البت األعلى رتبة‪.‬‬
‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬

‫**و في المثالين السابقين نطبق نفس الكالم من أجل ‪ 2‬بايت و لكن االنزياح‬
‫الخارج و االستعارة تكون من أجل البت الخامس عشر (األخير)‪.‬‬
‫ً‬
‫ثانيا‪ :‬علم الزوجية )‪Parity Flag (PF‬‬

‫يصبح في حالة واحد منطقي إذا كانت نتيجة آخر تعليمة تحتوي على عددا زوجيا‬
‫من الخانات التي قيمتها الواحد ( بعد التحويل إلى النظام الثنائي طبعا ) و إال‬
‫يكون في حالة الصفر المنطقي‪.‬‬

‫نالحظ أن علم ‪ PF‬يفحص البايت السفلي فقط حتى لو كنا نتعامل مع كلمة ( ‪2‬‬
‫بايت ) ‪ ،‬أما عندما نتعامل مع بايت واحد فقط فإنه يفحصه كله‪.‬‬
‫ً‬
‫ثالثا‪ :‬علم االنزياح املساعد )‪Auxiliary Flag (AF‬‬
‫يكون في حالة الواحد المنطقي إذا وجد انزياح من النصف السفلي إلى النصف‬
‫العلوي أو استعارة من النصف العلوي إلى النصف السفلي و ذلك من أجل البايت‬
‫السفلي من الكلمة ( ‪ 2‬بايت ) و بمعنى آخر أنه إذا كان لدينا انزياح من الخانة ‪3‬‬
‫إلى الخانة ‪ 4‬فإن ‪ AF=1‬و ذلك في حال كانت البيانات بايت واحد أو ‪ 2‬بايت‬
‫(كلمة)‪ ،‬و فيما عدا ذلك يكون ‪. AF=0‬‬
‫مثال على علم االنزياح املساعد‬
‫في هذه الحالة يكون ‪ AF=0‬ألنه لم يكن معنا باليد واحد عند االنتقال من‬
‫الخانة الثالثة إلى الخانة الرابعة في الناتج‬

‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬


‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪+‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫الخانة الرابعة‬ ‫الخانة الثالثة‬


‫ً‬
‫رابعا‪ :‬علم الصفر )‪Zero Flag (ZF‬‬
‫يصبح في حالة واحد منطقي عندما يكون ناتج آخر عملية حسابية أو منطقية‬
‫يساوي الصفر‪.‬‬

‫يصبح في حالة صفر منطقي عندما يكون ناتج آخر عملية حسابية أو منطقية ال‬
‫يساوي الصفر‪.‬‬
‫ً‬
‫خامسا‪ :‬علم اإلشارة )‪Sign Flag (SF‬‬
‫يكون علم ‪ SF‬في حالة واحد منطقي ‪ Set‬إذا كانت نتيجة آخر عملية حسابية عددا سالبا‪.‬‬

‫يكون علم ‪ SF‬في حالة صفر منطقي ‪ Reset‬إذا كانت نتيجة آخر عملية حسابية عددا‬

‫موجبا‪.‬‬

‫مصطلح‪ :‬من إحدى طرق تمثيل األعداد السالبة في الكمبيوتر هي اعتبار الخانة األخيرة‬

‫مخصصة لإلشارة و بما أن البايت مكون من ثمانية خانات فسيتم اقتطاع الخانة األخيرة منه‬

‫من أجل اإلشارة فإن احتوت على القيمة واحد فإن الخانات السبعة الباقية هي عدد ثنائي‬

‫سالب أما إذا احتوت على القيمة صفر فإن الخانات السبعة المتبقية ما هي إال عدد موجب‪.‬‬

‫و بذلك يكون ‪ SF‬هو نسخة عن الخانة األخيرة في الناتج عند اعتماد هذا النظام لتمثيل‬

‫األعداد السالبة‪.‬‬
‫ً‬
‫سادسا‪ :‬علم الفيضان )‪Overflow Flag (OF‬‬
‫يكون في حالة واحد منطقي عندما ال تتسع النتيجة في المكان المخصص‬
‫لتخزينها أي تتجاوز القدرة التخزينية‪ ،‬أما إذا لم تكن النتيجة خارج المجال‬
‫المحدد فإن ‪ OF‬يبقى في حالة الصفر المنطقي‪.‬‬

‫يحدث الفيضان في الحاالت التالية‪:‬‬

‫‪ )1‬جمع أعداد موجبة كبيرة‪.‬‬

‫‪ )2‬جمع أعداد سالبة كبيرة‪.‬‬

‫‪ )3‬طرح عدد موجب كبير من عدد سالب كبير‪.‬‬

‫‪ )4‬طرح عدد سالب كبير من عدد موجب كبير‪.‬‬


‫تابع االعالم‬

‫مالحظة‪ :‬جميع األعالم السابقة ما عدا ‪ُ CF‬تقرأ فقط أي ال نستطيع تغيير‬

‫محتواها لذلك يمكن قراءتها فقط و ال يمكن تغيير محتوياتها بواسطة تعليمات‬

‫برمجية مباشرة‪.‬‬

‫المعالج مزود بتعليمات تستطيع اختبار حالة هذه األعالم لتغيير تتابع تنفيذ‬

‫البرنامج فمثال يمكن اختبار علم ‪ ZF=1‬كشرط من أجل القفز إلى جزء آخر من‬

‫البرنامج‪.‬‬

‫و فيما يلي سنشرح أعالم التحكم‪:‬‬


‫مسجل األعالم ‪Flags‬‬
‫‪‬يحتوي مسجل األعالم على معلومات تعبر عن الوضع الحالي‬
‫للمعالج ‪ ,‬كما يحوي أيضا المعلومات التي تتحكم بتشغيل المعالج ‪.‬‬

‫‪15‬‬ ‫‪0‬‬
‫‪‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪OF DF IF TF SF ZF‬‬ ‫‪‬‬ ‫‪AF‬‬ ‫‪‬‬ ‫‪PF‬‬ ‫‪‬‬ ‫‪CF‬‬

‫‪‬األعالم التحكمية ‪:‬‬ ‫‪‬أعالم الحالة ‪:‬‬

‫تمكين المقاطعة‬ ‫‪IF:‬‬ ‫المنقول‬ ‫‪CF:‬‬


‫علم االتجاه‬ ‫‪DF:‬‬ ‫الندية‬ ‫‪PF:‬‬
‫علم التتبع‬ ‫‪TF:‬‬ ‫المنقول المساعد‬ ‫‪AF:‬‬
‫النتيجة الصفرية‬ ‫‪ZF:‬‬
‫علم االشارة‬ ‫‪SF:‬‬
‫علم الطفح (الفائض)‬ ‫‪OF:‬‬

‫‪3-52‬‬ ‫‪Microprocessor System Design‬‬


‫أعالم التحكم‬
‫أوالً‪ :‬علم الخطوة الوحيدة )‪Trap Flag (TF‬‬

‫يوضع بالحالة واحد منطقي عندما نرغب بتنفيذ البرنامج خطوة خطوة و هو مفيد‬
‫عندما نريد تصحيح برنامجنا و استكشاف مواقع األخطاء‪.‬‬

‫ثانيا ً‪ :‬علم المقاطعة )‪Interrupt Flag (IF‬‬

‫يستخدم من أجل التعبير عن إمكانية أو عدم إمكانية تنفيذ المقاطعة ‪ ،‬فيوضع‬


‫بالحالة واحد منطقي عندما ال نرغب بتنفيذ أي مقاطعة (المقاطعة محجوبة) أما‬
‫عند وضعه في حالة الصفر المنطقي فإن المقاطعة مسموح بها‪.‬‬

‫مالحظة‪ :‬المقاطعة هي عبارة عن خدمة تؤدي إلى عمل معين فمثال المقاطعة‬
‫‪ 21‬و التي من أحد خدماتها العودة إلى نظام التشغيل‪.‬‬
‫أعالم التحكم‬
‫ثالثا ً‪ :‬علم االتجاه )‪Direction Flag (DF‬‬

‫يدل على اتجاه سير العمليات التسلسلية‪.‬‬

‫عندما يكون في حالة واحد منطقي فإن السلسلة تكون من العنوان األعلى إلى‬
‫العنوان األدنى‪.‬‬

‫عندما يكون في حالة صفر منطقي فإن السلسلة تكون من العنوان األدنى إلى‬
‫العنوان األعلى‪.‬‬
‫تقطيع الذاكرة‬
. ‫ بت خط عنونة‬20 ‫ يملك‬8086 

. 64KB ‫ حجم كل مقطع من المقاطع‬

: ‫ هذه المقاطع هي‬


Code segment 
Stack segment 
Data segment 
Extra segment 
Memory
‫حجم كل‬64KB 1 00000H
‫مقطع‬ 2

3
4
4
5

6 1MB
7 Address
8 Range
9
‫مجال‬
10

11
‫العنونة‬
12

13

14

15

16 FFFFFH
‫‪Code Segment ‬مقطع تخزين الشيفرة‬
‫‪ ‬هو المنطقة من الذاكرة التي تتم فيها تخزين التعليمات التي يتم‬
‫جلبها من ‪ BIU‬أي أنها تخزن كود البرنامج المراد تنفيذه‪.‬‬

‫‪‬مقطع المكدس ‪Stack Segment‬‬


‫‪ ‬المكدس الذي يتم فيه تخزين عناوين البيانات التي سيتم معالجتها ‪.‬‬

‫‪‬المقطعين (اإلضافي ‪ -‬البيانات) ‪Data & Extra‬‬


‫‪Segments‬‬
‫‪ ‬يستخدمان لتخزين البيانات التي تستخدم في البرنامج‬
Memory
Code Segment 1 00000H
‫مقطع الشيفرة‬ 2

4
Data & Extra 5

‫مقطع‬Segments 6

‫البيانات والمقطع‬ 7

‫االضافي وهما‬ 8
1MB
‫متقاطعان‬ 9 Address
10 Range
11

12

13

14

15

Stack Segment 16 FFFFFH


‫مقطع المكدس‬
‫مسجالت المقاطع‬Segment Registers
‫بت‬16 ‫تمسك بقيمة أول عنوان من كل مقطع وهي من‬
: ‫المسجالت األربع هي‬
CS (Code Segment register) –
DS (Data Segment register) –
SS (Stack Segment register) –
ES (Extra Segment register) –
Memory
1 00000H
CS 1000 0H Code Segment
3

DS 4000 0H Data Segment

ES 5000 0H Extra Segment


7

Starting Addresses of
Segments
8
1MB
9
Address
10
Range
11

12

13

14

15

SS F000 0H Stack Segment


FFFFFH
‫‪‬عنوان المقطع مؤلف من ‪. 20 bit‬‬
‫‪‬سجل المقطع يخزن فقط ‪ 16‬بت ‪.‬‬
‫‪‬يقوم الـ ‪ BIU‬بتصفير البتات األربع الدنيا ‪.‬‬

‫‪‬على سبيل المثال ‪:‬إذا كان ‪CS = 348AH‬‬


‫سيبدأ مقطع الشيفرة من العنوان ‪348A0H‬‬
‫‪IP‬مؤشر التعليمات‬
‫‪‬مسجل من ‪16 bit‬‬
‫‪‬مسجل إزاحة حيث أنه يمسك التعليمة الحالية ‪16 bit‬‬
‫في مقطع الشيفرة ويزيح الى التعليمة التالية‪.‬‬
‫‪‬تستخدم وحدة مالئمة الممرات كل من ‪ CS‬و ‪IP‬‬
‫لمعرفة الموقع الفيزيائي في الذاكرة من ‪ 20 bit‬و‬
‫جلب البيانات‪.‬‬
‫الذاكرة‬
‫عنوان بداية مقطع الشفرة‬
1 00000H
348A0H Data
Segment
IP = 4214H 3

4
Code Byte 38AB4H MOV AL, BL
Code
Segment
Extra
Segment
7 1MB
8 Address
9 Range
CS 348A 0 H 10

11
IP + 4214 H
12
‫العنوان الفيزيائي‬ 38AB4 H 13
14

15

Stack
Segment FFFFFH
‫‪Stack Segment (SS) Register‬‬
‫‪Stack Pointer (SP) Register‬‬
‫‪‬العنوان األول لمقطع المكدس يتوضع في هذا مسجل ‪.SS‬‬
‫‪‬يوجد هذا السجل في وحدة مالئمة الممرات ‪.‬‬

‫‪ : SP ‬يمسك ‪16 bit‬وهي قمة المكدس أي أنه يؤشر على‬


‫آخر معطى تم إدخاله إلى المكدس ‪.‬‬
‫‪‬يتوضع هذا السجل في وحدة التنفيذ ‪.‬‬
‫سجالت خاصة أخرى‬
‫‪ Base Pointer (BP) register ‬وظيفته ‪:‬‬
‫• يؤشر على العطيات في المكدس‬

‫‪Source Index (SI) register ‬‬


‫‪Destination Index (DI) register‬‬
‫• تستخدم للتخزين اإلضافي المؤقت للبيانات‬
‫• تستخدم بشكل رئيسي لتعويض فائض الـ ‪16‬بت لبعض‬
‫البيانات الذي ال يمكن أن تتحمله المسجالت األخرى ‪.‬‬
‫وحدة التنفيذ – مسجالت األعالم‬
‫• ‪ 6‬األعالم هي مؤشرات حالة تبين خصائص آخر تعليمة منطقية أو‬
‫حسابية‬
‫على سبيل المثال ‪ ,‬اذا كان المسجل ‪AL=7Fh‬‬
‫ونفذت التعليمة ‪:‬‬
‫فان التالي سوف يحدث ‪ADD AL , 1:‬‬
‫‪AL = 80h‬‬
‫;‪CF = 0‬اليوجد أي منقول من البت السابع‬
‫;‪ PF = 0‬له عدد فردي من الواحدات‪80h‬‬
‫;‪AF = 1‬يوجد منقول من البت الثالث إلى البت الرابع‬
‫;‪ZF = 0‬النتيجة التساوي الصفر‬
‫;‪SF = 1‬البت السابع يساوي الواحد‬
‫;‪OF = 1‬بت اإلشارة قد تغير‬
‫‪66‬‬
‫توصيف المعالج ‪8086‬‬
‫• ‪ 8086‬هو معالج بـ ‪ 16‬بت للمعطيات ‪ ,‬وهو رقاقة مؤلفة‬
‫من ‪ 40‬بن ‪ ,‬يتطلب تغذية وحيدة القطبية (‪ .)5v‬يستخدم ممر‬
‫عناوين ‪ 20‬بت‪ .‬وممر بيانات ‪ 16‬بت ‪ .‬خطوط العنونة‬
‫العشرون تعمل في نمط العنونة المضاعفة‪.‬خطوط العنونة الـ‬
‫‪ 16‬المنخفضة هي خطوط مضاعفة مع المعطيات ‪ ,‬وخطوط‬
‫العنونة الـ ‪ 4‬المرتفعة هي خطوط مضاعفة مع اشارات‬
‫التحكم‪ .‬يظهر الرسم البياني اطراف المعالج إنتل ‪ 8086‬في‬
‫الشكل ‪. 4‬‬
‫‪ : ALE‬نوع المعلومة الموجودة على مجمل األرجل ‪ AD0 – AD15‬فهي‬
‫إما معطيات أو عناوين‬
‫‪ : ALE = 0‬المعلومات على الخرج هي معطيات ‪.‬‬
‫‪ : ALE = 1‬المعلومات على الخرج هي عناوين ‪.‬‬
‫تسمى عملية الفصل بين المعطيات والعناوين بالتوزيع‬
‫‪. demultiplexing‬‬
‫)‪ ( BHE (BUS HIGH ENABEL‬إشارة خرج )‪ :‬تميز البايت‬
‫السفلي من البايت العلوي للمعطيات ‪.‬‬
‫مقاطعة غير محجوبة ‪ NMI non maskable interrput‬إشارة دخل‬
‫تنقل المعالج إلى جدول أشعة المقاطعة بعد االنتهاء من التعليمة‬
‫الحالية ‪.‬‬

‫‪ : INTER‬طلب المقاطعة عندما تكون فعالة ينهي المعالج تنفيذ التعليمة‬


‫الحالية وينتقل إلى المقاطعة ‪.‬‬
‫‪( : RESET‬التصفير) إشارة دخل إلنهاء جميع أنشطة المعالج الحالية حيث‬
‫يعود المعالج إلى وضعه األول ويكون محتوى السجالت ‪IB – DS‬‬
‫‪ – SS - ES‬هي ‪ 0000H‬بينما ‪. CS FFFFH‬‬
‫‪( READY‬الجاهزية) ‪ :‬إشارة دخل تساعد في إضافة حاالت إنتظار في حال‬
‫كون أجهزة الدخل والخرج أو الذواكر أبطأ من المعالج ‪.‬‬
‫‪ : TEST‬إشارة دخل تاتي من المعالج الحسابي ‪ 8087‬يفحص المعالج هذه‬
‫اإلشارة أثناء تنفيذ التعليمة ‪ WAIT‬إذا كانت (‪ )0‬يتابع المعالج تنفيذ‬
‫البرنامج أما إذا كانت (‪ )1‬فإنه يتوقف عن تنفيذ البرنامج ‪ ،‬تستخدم‬
‫هذه اإلشارة لتأمين التزامن بين المعالج ‪ 8086‬والمعالج الحسابي‬
‫‪.8087‬‬
‫المخطط الصندوقي للمنظومة‬
‫• ‪ ROM‬ذاكرة للقراءة فقط تحوي برنامج‬
‫البدء (‪)start up program‬‬
‫المعالج‬ ‫• ‪ RAM‬ذاكرة الوصول العشوائي‪:‬‬
‫•مهتز كريستالي‬ ‫•متحكم الممر‬ ‫الصغري‬ ‫• ‪ RAM( DRAM‬الديناميكية)‪:‬‬
‫•دارة التوقيت‬ ‫•أجهزة قيادة الممر‬ ‫و الدارات‬ ‫سعة كبيرة ‪ ,‬تحتاج انعاش (تحديث)‬
‫(عدادات تقسم التردد الى‬ ‫المنطقية‬ ‫• ‪ RAM( SRAM‬الستاتيكية)‪:‬‬
‫ترددات أصغر )‬ ‫•المعالج المساعد‬ ‫المرافقة‪:‬‬ ‫•استهالك طاقة قليل ‪ ,‬سريعة ‪ ,‬سهلة‬
‫الربط‬
‫التوقيت‬ ‫المعالج‬ ‫الذاكرة‬

‫ممر النظام (اشارات العناوين و المعطيات و التحكم)‬

‫التفرعية‪I/O‬‬ ‫التسلسلية‪I/O‬‬ ‫دارة المقاطعة‬


‫أسالك كثيرة ‪ ,‬سريعة‬ ‫بسيطة تحتاج سلكين فقط‬
‫عند وقوع أحداث خارجية غير متوقعة‬
‫•الطابعة عالية الدقة‬ ‫باالضافة الى األرضي ‪ ,‬بطيئة‬ ‫يتوجب على المعالج أن يستجيب لهذه‬
‫•الذاكرة الخارجية‬ ‫•الطابعة منخفضة الدقة‬ ‫المقاطعات (بتنفيذ برنامج خدمة المقاطعة)‬
‫•قرص مرن‬ ‫•المودم‬ ‫ثم يجب أن يعود المعالج الى تنفيذ البرنامج‬
‫•قرص صلب‬ ‫•منصة المشغل‬ ‫األساسي الذي كان يعمل قبل حدوث‬
‫•قرص مضغوط‬ ‫•الحواسيب الضخمة‬ ‫المقاطعة‪.‬‬
‫•أجهزة سريعة أخرى‬ ‫•الحواسيب الشخصية‬
‫الحاسب الشخصي‬
‫سماعة‬

‫معالج ( من‬ ‫معالج مساعد‬


‫منطق توقيت‬ ‫‪ 8086‬حتى‬ ‫(من ‪ 8087‬و‬
‫)‪(8253‬‬ ‫بنتيوم)‬ ‫حتى ‪)80387‬‬ ‫‪ROM‬‬ ‫‪640KB‬‬
‫النظام‬ ‫‪DRAM‬‬

‫ممر النظام (اشارات المعطيات و العناوين و التحكم)‬

‫منطق لوحة المفاتيح‬ ‫متحكم الوصول‬ ‫منطق التوسيع‬ ‫منطق المقاطعة‬


‫‪((8253‬‬ ‫المباشر للذاكرة‬ ‫)‪(8259‬‬
‫)‪(8237‬‬
‫بطاقة العرض‬
‫متحكم القرص‬
‫المنفذ التسلسلي‬
‫لوحة المفاتيح‬ ‫‪...‬‬
‫مقابس توسيع‬
‫كيف يتخاطب المعالج ‪ 8086‬مع الوسط المحيط ‪:‬‬

‫يتخاطب املعاجل بثالثة أساليب ‪:‬‬

‫‪ – 1‬بواسطة الولوج املباشر أو غري املباشر للذاكرة‬


‫‪direct & indirect memory access‬‬

‫‪ – 2‬عرب منافذ الدخل و اخلرج ‪I/O Port‬‬

‫‪ – 3‬عرب اشارات تدعى إشارات املقاطعة ‪Interrupt‬‬


‫يستخدم املعاجل الذاكرة إما لقراءة املعلومات أو لكتابتها يف عناوين ذاكرية تتحدد بعنوان‬
‫وحيد ‪ ،‬وميكن الولوج للذاكرة بطريقتني ‪:‬‬
‫عرب دارة الولوج للذاكرة املباشر ( ‪Direct Memory Access : ) DMA‬‬
‫أو عرب املسجالت الداخلية لوحدة املعاجلة املركزية‬
‫منافذ الدخل اخلرج ‪: I/O Port‬‬
‫متثل منافذ الدخل ‪ /‬اخلرج الوسيلة األساسية أمام املعاجل لالتصال مع دارة أخرى غري الذاكرة و‬
‫تتحدد املنافذ بعناوين وحيدة ( أي عنوان وحيد لكل منفذ من هذه املنافذ )‬
‫و ميكن قراءة أو كتابة املعطيات من و إىل أي منفذ من هذه املنافذ ‪.‬‬

‫املقاطعات ‪: Interrupts‬‬
‫و هي الوسيلة الوحيدة اليت تتمكن هبا الدارات االلكرتونية املوجودة خارج وحدة املعاجلة املركزية‬
‫من لفت انتباه هذه الوحدة إلعالمها حبدوث طارئ معني‬

‫‪:‬‬ ‫صيغ املعطيات يف املعاجل ‪Data format 8086‬‬


‫يعمل املعاجل ‪ 8086‬على أربع صيغ بسيطة ‪..‬‬
‫‪1 – Byte = 8 Bit‬‬
‫‪2 – Word = 16 Bit‬‬
‫و يعمل املعاجل على قيم ذات اشارة و بدون اشارة و حبجم ‪Bit 16‬‬
‫ختزن الكلمات يف الذاكرة ضمن أزواج من اخلانات املتجاورة‬
‫كيف يعنون المعالج ‪ 8086‬الذاكرة ‪: Address Memory‬‬

‫مبا أن املعاجل ذو ‪ 16 Bit‬فإنه يستطيع الولوج إىل أي ‪ 64KByte‬فقط كذاكرة من الناحية‬


‫النظرية ‪ ،‬لكن من الناحية العملية يستطيع عنونة حيز ذاكرة أكرب من ‪ 64 KByte‬بكثري حبيث‬
‫يستطيع الولوج إىل ‪ 1024 KByte‬وفق العنونة ذات العشرين ‪ Bit‬هلذا املعاجل و اليت توسع‬
‫‪20‬‬
‫‪2‬‬ ‫‪216‬‬ ‫اجملال من إىل‬
‫يقسم املعاجل احليز الذاكري القابل للعنونة إىل مقاطع ‪ Segments‬حيتوي كل مقطع على‬
‫‪ 64KByte‬من الذاكرة‬
‫مسجالت المعالج ‪: 8086‬‬
‫صمم املعاجل ‪ 8086‬لتلقي تعليمات من الذاكرة و تنفيذها و إجناز عمليات حسابية و منطقية‬
‫على املعطيات و مترير املعطيات من و إىل الذاكرة ‪ ،‬لذلك يستخدم عدد من السجالت ذات‬
‫طول ‪Bit16‬‬
‫‪ 4 -‬مسجالت تدعى مسجالت املسودة و حتتفظ بشكل مؤقت باحلدود ( العامل )‬
‫‪Operands‬‬
‫و بالنتائج املرحلية للعمليات احلسابية و املنطقية‬
‫‪ 4 -‬مسجالت مقطعية ‪ Segments Register‬حتتفظ بقيم عناوين املقطع‬
‫‪ 5 -‬مسجالت إزاحة ‪ Offset Register‬حتتفظ باإلزاحات املستخدمة مع قيم مسجالت‬
‫املقاطع لتشكيل العناوين الفيزيائية اليت حتدد املواقع يف الذاكرة ‪.‬‬
‫‪ 1 -‬مسجل يدعى مسجل الرايات ‪ Flags Register‬و حيتوي على تسع رايات كل منها‬
‫متثل بـ ‪ 1 Bit‬لتسجيل معلومات عن حالة املعاجل ‪ 8086‬و للتحكم بعمليات هذا املعاجل ‪..‬‬
‫مسجالت املسودة ‪Scratch – pad Register :‬‬
‫حتتفظ باحلدود ( العوامل ) املستخدمة بكثرة و بالنتائج و تعرف باألمساء التالية ‪:‬‬
‫‪ AX , BX , CX , DX‬و كل مسجل طوله ‪ 16 Bit‬و كل مسجل له شقني كل‬
‫منهما ‪ ، 8 Bit‬وميكن الولوج إىل أي منهما مبعزل عن اآلخر ‪ ،‬و يرمز له بالرمز ‪H , L‬‬
‫و لكل مسجل وظيفة خاصة ‪..‬‬
‫‪ ( : AX‬املراكم ) ‪ Accumulator‬يستخدم إلجناز العمليات احلسابية‬
‫‪ : Base Register : BX‬يستخدم لإلشارة إىل بداية جدول الرتمجة يف الذاكرة‬
‫‪ Counter Register : CX‬املسجل العداد ‪ ،‬يستخدم كعداد للتحكم مبرات تكرار‬
‫احللقة و مبرات نقل املعلومات ‪.‬‬
‫‪ Date Register : DX‬يستخدم لتخزين املعطيات لألغراض العامة ‪.‬‬
‫مسجالت املقاطع ‪: Segments Register‬‬
‫حيتوي العنوان الكامل ملوقع الذاكرة من قيمة مقطع بطول ‪ 16Bit‬و من إزاحة بطول‬
‫‪ 16Bit‬و يوجد أربع مسجالت تدعى ‪:‬‬
‫‪ SS , ES , DS , CS‬تستخدم لتعريف أربع مقاطع من الذاكرة خمتلفة كما توجد مخس‬
‫مسجالت إزاحة ‪ ،‬ميكن استخدامها لإلزاحات النسبية للمعطيات ضمن املقاطع األربعة ‪.‬‬
‫املسجل ‪: CS‬‬
‫و يعرف مقطع الشيفرة ( ‪ ) Code segment‬و هي تلك املنطقة من الذاكرة احلاوية على‬
‫جمموعة التعليمات أو على الربنامج املراد تنفيذه ‪..‬‬
‫املسجل ‪ : DS , ES‬يعرفان مقاطع للمعطيات اليت خيزن الربنامج املعطيات فيها‬
‫املسجل ‪ : SS‬يعرف مقطع املكدس ‪Stack segment‬‬
‫نادرا ما تستخدم الربامج أربع مقاطع مستقلة لعنونة أربع مناطق خمتلفة حبجم ‪ 64KByte‬لكل‬
‫منها و بدال من ذلك نستخدم قيم املسجالت األربعة احملدودة يف ‪CS , DS , SS , ES‬‬
‫باإلشارة إىل مناطق متداخلة يف الذاكرة و بالواقع نعرف مسجالت املقاطع املختلفة مناطق من‬
‫الذاكرة مستخدمة لوظائف خمتلفة ‪..‬‬

‫(( شكل صغري ))‬


‫حيتوي كل مسجل على عنوان بداية مقطع يف منطقة خمتلفة من الذاكرة‬
‫الشكل يبني قيما ملسجالت املقاطع تدل على مواقع يف الذاكرة مستخدمة من قبل برنامج يعمل‬
‫حتت ‪ MS-DOS‬و انتقيت قيم مسجالت املواقع لتدل يف هذا املثال كال منها إىل منطقة من‬
‫الذاكرة خمتلفة منطقيا و لكن مع ذلك تتشابه هذه املناطق و املعرف كل منها مبسجل مقطع حجم‬
‫كل منها ‪64 KByte‬‬
‫تستعمل كل تعليمات املعاجل ‪ 8086‬اليت تلج إىل الذاكرة مسجل مقطع خاص‬
‫مسجالت اإلزاحة ‪Offset register‬‬
‫يوجد مخس مسجالت إزاحة مستخدمة مع مسجالت املقاطع لالحتفاظ بالعناوين املقطعية ‪،‬‬
‫املسجل األول يسمى مؤشر التعليمات ‪ ) IP ( Instruction pointer‬أو ( ‪) PC‬‬
‫حيتوي هذا املسجل على إزاحة التعليمة احلالية ضمن مقطع الشيفرة ‪CODE SEGMENT‬‬
‫املسجلني اآلخرين يدعيان ‪ :‬مسجلني الدليلني ‪ Index Register‬و يستخدمان لعنونة‬
‫املعطيات يف الذاكرة ‪ RAM‬و مسجالت املكدس ‪ Stack Registers‬يستخدمان ملعاجلة‬
‫املكدس‬
‫مسجالت املكدس ‪Stack Register :‬‬
‫املسجل األول يدعى ‪ ، SP : Stack pointer‬مؤشر املكدس‬
‫و الثاين ‪ BP : Base Pointer‬املؤشر القاعدي ‪.‬‬
‫يعطي ‪ SP‬موقع القمة ‪POP‬احلايل للمكدس واملسجل ‪ BP‬يستخدم للولوج اىل مقطع املكدس‬
‫مباشرة‬
‫‪ -‬املسجالن الدليالن ‪: Index Register‬‬
‫يدعى االول ‪ Source index‬دليل املصدر ( ‪) SI‬‬
‫و الثاين دليل اجلهة ‪ ) DI ( Destination Index‬يستخدمان ألغراض عنونة املعطيات‬
‫‪ -‬مسجل الرايات ‪Flag Register :‬‬
‫ميثل جمموعة من البتات للتحكم و احلالة و يتألف من ‪ ، 16 bit‬يتعامل املعاجل مع ‪ 9‬رايات و‬
‫ترتك ‪ 7‬بتات فارغة ( استخدمت فيما بعد يف املعاجلات الالحقة )‬
‫تقسم الرايات إىل جمموعتني األول رايات احلالة ‪ Status Flags‬و عددها ‪ ، 6‬يشمل‬
‫معلومات املعاجل ( وتدل على ما جيري نتيجة العمليات احلسابية أو املقارنة )‬
‫واجملموعة الثانية ‪ 3‬رايات تدعى رايات التحكم ‪ Control Flags‬و تتحكم مبهام حمددة‬
‫للمعاجل ‪8086‬‬
‫املكدس ‪: Stack‬‬

‫هو جزء من ذاكرة النظام ‪RAM‬ووحدة املعاجلة املركزية تعطي معامل خاصة للولوج اىل هذا‬
‫اجلزء وتتابع مساره ‪ .‬تضاف املعطيات يف قمة املكدس وتنتزع من القمة أيضا ويعمل وفق الرتتيب‬
‫من يدخل اخرا خيرج أوال }‪ {LIFO} {lost in first on‬يعترب املكدس مثاليا عندما‬
‫يستخدم كمكان جيب الرجوع اليه يف برنامج ما على التيار أن الرجوع سيكون أوال اىل الربنامج‬
‫الطالب الستدعاء االحداث عهدا وهبذه الطريقة يرتب املكدس أعمال الربنامج والربامج الفرعية‬
‫وبرامج املقاطعة‬

‫كيف يستعمل املعاجل ‪8086‬منافذ الدخل ‪/‬اخلرج ‪(I/O) Ports‬‬


‫يتصل املعاجل مع معظم أجزاء احلاسب باستخدام ‪(I/O) ports‬‬
‫وهذه املنافذ ميكن تشبيهها وكأهنا نوافذ تسلكها املعلومات أثناء سفرها من واىل جهاز دخل‪/‬خرج‬
‫كلوحة املفاتيح والطابعة‬
‫يعرف كل منفذ برقم منفذ وطول ‪( 16 bit‬أو بعنوان) ويقع ضمن اجملال ‪ OOH‬وحىت‬
‫)‪(FFFFH‬وتعرف وحدة املعاجلة املركزية أي منفذ من عنوانه وللولوج اىل أي منفذ ترسل‬
‫وحدة املعاجلة املركزية ‪ cpu‬اشارة عرب ممر النظام ‪ System Bus‬إلعالم مجيع االجهزة‬
‫(الدخل ‪/‬اخلرج) أن العنوان التايل ميثل عنوان منفذ ال عنوان ذاكرة مث ترسل عنوان املنفذ‬
‫ويستجيب لذلك املنفذ اخلاص‬

‫حيدد عنوان املنفذ موقعا مرافقا جلهاز دخل‪/‬خرج ما بدال من جزء من الذاكرة الرئيسية أو تعليمة‬
‫أخرى (عنوان منفذ دخل‪/‬خرج ما خيتلف عن عنوان ذاكرة )‬
‫مثال ‪ 003D8H‬عنوان منفذ ال يرتبط بعنوان الذاكرة ‪ 003D8H‬الن‬
‫تعليمات الدخل ‪/‬خرج ‪ IN‬و ‪ OUT‬بينما تعليمات الذاكرة ‪ MOV‬أي التعليمات خمتلفة‬
‫وتعطي معظم اللغات الراقية تعليمات خمتلفة للولوج اىل الدخل ‪/‬خرج لغة‬
‫البيسك ‪ INP‬و ‪ OUT‬ولغة ‪ INP C‬و ‪OUT P‬‬
‫كيف يستخدم المعالج ‪8086‬المقاطعات ‪: Interrupts‬‬

‫املقاطعة اشارة اىل املعاجل للفت انتباهه وتكون اما برجمية او من كيان صلب (فيزيائية ) أي من‬
‫دارة حتكم ‪..‬‬
‫ويف كال احلالتني يتوقف املعاجل عن أي مهمة جارية وينفذ برنامج فرعيا يسمى برنامج املقاطعة‬
‫ويستأنف عمله بعد انتهاء برنامج املقاطعة‬

You might also like