Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

‫ﺍﻹﻫﺪﺍء‬

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

‫سيدنا محمد صلى  عليه وسلم‬

‫إلى النبع الذي ال يميل العطاء ‪ ..‬يامن كان دعائھا نوراَ لي في طريق الوفاء ‪ ..‬وحبھا مأل‬
‫األرض والسماء‪..........‬أمي الحبيبة‬

‫إلي الظل الذي أظل حياتي بنصحه وإرشاده‪ ..‬إلي من وھبني عمره لينير لي الطريق‪..‬إلي من‬
‫ھو لي القدوة والمثل‪...........‬أبي العزيز‬

‫إلي من دمي من دمھم وروحي من روحھم إلي من حبھم يجري في عروقي ‪ ...‬إلي نجوم حياتي‬
‫المتألألة دائما ‪ ................‬إخوتي األعزاء‬

‫إلي الذين سعدت برفقتھم ‪ ..‬إلى من سطرت معھم على جدار الزمن أجمل الذكريات‪..‬إلي من‬
‫عرفوا الصداقة بكل معانيھا‪ ................‬أصدقاء الدراسة ‪.‬‬

‫إلى كل شخص بذل من جھده ووقته وفكره لكي ينشر معلومات أو مواضيع مفيدة على الشبكة‬
‫العنكبوتية لكي يستفيد منھا اآلخرين‪.‬‬
‫ﻣﻘﺪﻣﺔ‬

‫بسم  الرحمن الرحيم والصالة والسالم على نبينا محمد وعلى اله وصحبه‬
‫أجمعين‪.‬‬

‫أن اصدق الحديث كالم  وخير الھدى ھدى محمد صلى  علية وسالم‬

‫أما بعد‪:‬‬

‫ھذه الصفحات عبارة عن مجموعة لسلسة من المحاضرات أثناء الفترة الدراسية‬


‫ومجموعة من الدروس على االنترنت قمت بتجميعھا وشرحھا ببساطه حتى يتمكن‬
‫الباحث من فھمھا في سھولة ويسر إن شاء ‪.‬‬

‫وأردت أن يكون امتداداً لي بعد مماتي كما قال علية الصالة والسالم ‪:‬‬

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

‫ولذلك قد أكون ميتا ً أالن وأنت تقرأ ھذه الصفحات‪ ،‬ولكني حيا ً اآلن معك‪ ،‬أتحدث‬
‫أليك وتستمع لي‪.‬‬

‫في ھذه الصفحات لن تجد شفرات برمجية للغة االسمبلى ألن الشرح يھتم من‬
‫الناحية النظرية ‪.‬‬

‫أسأل  أن تكون ھذا الصفحات مفيدة فما كان فيه من صواب فمن  وما كان من‬

‫خطأ فمن نفسي والشيطان‪ ،‬و الھادي إلى سواء السبيل‪.‬‬


‫العمليات الحسابية والمنطقية في لغة االسمبلى‬
‫في لغة االسمبلي ھنالك عمليات حسابية مثل )الجمع ‪ ،‬الطرح ‪ ،‬الضرب ‪ ،‬القسمة(‬
‫وھنالك العمليات المنطقية التي تتعامل مع البتات مثل‬
‫)‪(OR , AND, NOT ,XOR ,TEST‬‬

‫أوالً العمليات الحسابية‬


‫‪ (1‬أمرالجمع ‪ADD‬‬
‫‪ADD Destination,Source‬‬ ‫الصيغة العامة لھذا أالمر ھى‬

‫‪ADD OP1, OP2‬‬

‫‪Op1=op1+op2‬‬
‫نفرض إن قيمة ‪-:‬‬
‫‪ OP1‬تمثل الھدف )‪(Destination‬‬

‫‪ OP2‬تمثل المصدر )‪(Source‬‬

‫مالحظات مھمه‪:‬‬
‫‪ :1‬فى ھذا االمر يتم جمع قيمة المصدر)‪ (OP2‬وقيمة الھدف )‪(OP1‬وتحفظ النتيجة‬
‫في الھدف)‪.(OP1‬‬

‫‪ :2‬بالنسبة للمصدر )‪ (OP2‬والھدف)‪ (OP1‬يجب ان يكون كالھما من نفس‬

‫الحجم )‪.(8 bit – 16bit‬‬

‫‪:3‬بالنسبة للمصدر)‪ (OP2‬يمكن ان يكون قيمة فورية أو سجل أو موقع فى الذاكرة ‪.‬‬

‫‪ :4‬بالنسبة للھدف)‪ (OP1‬يمكن ان يكون سجل أو موقع فى الذاكرة‪.‬‬

‫‪ :5‬بالنسبة للمصدر)‪ (OP2‬والھدف )‪(OP1‬اليمكن ان يكون كالھما موقع بالذاكره‪.‬‬


‫مثال‪:‬‬
‫‪MOV DH,41H‬‬

‫‪ADD DH,3‬‬

‫الحل ‪:‬‬
‫‪DH=DH+41‬‬

‫‪DH=3+41‬‬

‫‪DH=44H‬‬

‫بعد تنفيذ المقطع المسجل ‪ DH‬يصبح ‪44H‬‬


‫مثال ‪:‬‬
‫‪MOV AL , 6‬‬

‫‪MOV CL , 8‬‬

‫‪ADD AL , CL‬‬
‫الحل‪:‬‬
‫‪AL= AL+ CL‬‬

‫‪AL= 6+8‬‬

‫‪AL=0EH‬‬

‫جدول متابعة‪:‬‬
‫االمر‬ ‫‪CL‬‬ ‫‪AL‬‬

‫؟؟‬ ‫؟؟‬

‫‪MOV AL , 6‬‬ ‫؟؟‬ ‫‪06H‬‬

‫‪MOV CL , 8‬‬ ‫‪08H‬‬ ‫‪06H‬‬

‫‪ADD AL , CL‬‬ ‫‪08H‬‬ ‫‪0EH‬‬

‫مالحظات‪:‬‬
‫‪) :1‬؟؟( تعني اننا ال نعلم ما بداخله‪.‬‬

‫‪ :2‬علينا تسجيل القيم في الميزان السادس عشر على شكل منزلتين في المسجالت‬
‫ذات ‪ 8‬بت وعلى شكل ‪ 4‬منازل في المسجالت ذات ‪ 16‬بت‪.‬‬
‫مثال‪:‬‬
‫‪DX=1024H‬‬ ‫‪AL=06H‬‬

‫كل قيمة عددية تبدأ بحرف ‪ A , B ,C ,D ,E ,F‬يجب ان نسجل ‪ 0‬عن يسارھا‬

‫مثال‪:‬اكتب مقطع برنامج ينفذ ما يلي‪CL=2*AL+BL :‬‬

‫الحل‪:‬‬
‫‪MOV CL,AL‬‬

‫‪ADD CL ,CL‬‬

‫‪ADD CL,BL‬‬
‫‪ (2‬أمر الطرح ‪SUB‬‬
‫‪SUB Destination,Source‬‬ ‫الصيغة العامة لھذا أالمر ھى‬

‫‪SUB op1 ,op2‬‬

‫‪ op2‬ــ ‪op1= op1‬‬

‫نفرض إن قيمة ‪-:‬‬


‫‪ OP1‬تمثل الھدف )‪(Destination‬‬

‫‪ OP2‬تمثل المصدر )‪(Source‬‬

‫مالحظات مھمه‪:‬‬
‫‪ :1‬فى ھذا االمر يتم طرح قيمة المصدر)‪ (OP2‬من قيمة الھدف )‪(OP1‬وتحفظ‬
‫النتيجة في الھدف)‪.(OP1‬‬

‫‪ :2‬بالنسبة للمصدر )‪ (OP2‬والھدف)‪ (OP1‬يجب ان يكون كالھما من نفس‬

‫الحجم )‪.(8 bit – 16bit‬‬

‫‪:3‬بالنسبة للمصدر)‪ (OP2‬يمكن ان يكون قيمة فورية أو سجل أو موقع فى الذاكرة ‪.‬‬

‫‪ :4‬بالنسبة للھدف)‪ (OP1‬يمكن ان يكون سجل أو موقع فى الذاكرة‪.‬‬

‫‪ :5‬بالنسبة للمصدر)‪ (OP2‬والھدف )‪(OP1‬اليمكن ان يكون كالھما موقع بالذاكره‪.‬‬


: ‫مثال‬
MOV AL , 8

MOV CL , 6

SUB AL , CL
‫الحل‬
AL= AL – CL

AL= 8 – 6

AL=02H

:‫جدول متابعة‬
‫االمر‬ CL AL

‫؟؟‬ ‫؟؟‬

MOVAL , 8 ‫؟؟‬ 08H

MOV CL , 6 06H 08H

SUB AL , CL 06H 02H


‫‪(3‬الجمع مع الراية أو الحمل ‪ADC (ADD WITH CARRY) CF‬‬

‫ويسمى ايضا ً الجمع بالحمل‪.‬‬

‫‪ADC Destination,Source‬‬ ‫الصيغة العامة لھذا أالمر ھى‬

‫‪ADC OP1 ,OP2‬‬

‫*‪OP1=OP1+OP2+CF‬‬

‫نفرض إن قيمة ‪-:‬‬


‫‪ OP1‬تمثل الھدف )‪(Destination‬‬

‫‪ OP2‬تمثل المصدر )‪(Source‬‬

‫مالحظات مھمه‪:‬‬
‫‪ :1‬المقصود في *‪ CF‬أي قيمة الراية ‪ CF‬التي كانت قبل عملية الجمع وليست القيمة‬
‫الجديدة التي عملتھا عملية الجمع الجديدة‪.‬‬
‫‪ :2‬فى ھذا االمر يتم جمع قيمة المصدر)‪ (OP2‬وقيمة الھدف )‪(OP1‬وقيمة سجل‬
‫الراية )‪ (CF‬وتحفظ النتيجة في الھدف)‪.(OP1‬‬

‫‪ 3‬بالنسبة للمصدر )‪ (OP2‬والھدف)‪ (OP1‬يجب ان يكون كالھما من نفس‬

‫الحجم )‪.(8 bit – 16bit‬‬

‫‪:4‬بالنسبة للمصدر)‪ (OP2‬يمكن ان يكون قيمة فورية أو سجل أو موقع فى الذاكرة ‪.‬‬

‫‪ :5‬بالنسبة للھدف)‪ (OP1‬يمكن ان يكون سجل أو موقع فى الذاكرة‪.‬‬

‫‪ :6‬بالنسبة للمصدر)‪ (OP2‬والھدف )‪(OP1‬اليمكن ان يكون كالھما موقع بالذاكره‪.‬‬


‫مثال‪:‬‬
‫‪MOV AL,90H‬‬

‫‪ADD AL,85H‬‬

‫‪ADC AL,3‬‬

‫جدول متابعة‪:‬‬
‫االمر‬ ‫‪AL‬‬ ‫‪CF‬‬ ‫مالحظات‬

‫??‬ ‫?‬

‫‪MOV AL,90H‬‬ ‫‪90H‬‬ ‫?‬ ‫‪ MOV‬ال تؤثر على الرايات‬

‫‪ADD AL,85H‬‬ ‫‪15H‬‬ ‫‪1‬‬ ‫‪AL=90+85‬‬

‫‪ADC AL,3‬‬ ‫‪19H‬‬ ‫‪0‬‬ ‫‪AL=15H+3+1‬‬

‫مالحظة‪ :‬ان النتيجة غير منطقية النھا بحاجة الى اكثر من ثمانية بتات‬
‫‪(4‬الطرح مع راية ‪SBB (SUBTRUCT WITH CARRY) CF‬‬

‫ويسمى ايضا ً الطرح باإلستالف‪.‬‬

‫‪SBB Destination,Source‬‬ ‫الصيغة العامة لھذا أالمر ھى‬

‫‪SBB OP1,OP2‬‬

‫*‪OP1=OP1-OP2-CF‬‬

‫نفرض إن قيمة ‪-:‬‬


‫‪ OP1‬تمثل الھدف )‪(Destination‬‬

‫‪ OP2‬تمثل المصدر )‪(Source‬‬

‫مالحظات مھمه‪:‬‬
‫‪ :1‬المقصود في *‪ CF‬أي قيمة الراية ‪ CF‬التي كانت قبل عملية الطرح وليست القيمة‬
‫الجديدة التي عملتھا عملية الطرح الجديدة‪.‬‬
‫‪ :2‬فى ھذا االمر يتم طرح قيمة المصدر)‪ (OP2‬وقيمة الھدف )‪(OP1‬وقيمة سجل‬
‫الرية )‪ (CF‬وتحفظ النتيجة في الھدف)‪.(OP1‬‬

‫‪ 3‬بالنسبة للمصدر )‪ (OP2‬والھدف)‪ (OP1‬يجب ان يكون كالھما من نفس‬

‫الحجم )‪.(8 bit – 16bit‬‬

‫‪:4‬بالنسبة للمصدر)‪ (OP2‬يمكن ان يكون قيمة فورية أو سجل أو موقع فى الذاكرة ‪.‬‬

‫‪ :5‬بالنسبة للھدف)‪ (OP1‬يمكن ان يكون سجل أو موقع فى الذاكرة‪.‬‬

‫‪ :6‬بالنسبة للمصدر)‪ (OP2‬والھدف )‪(OP1‬اليمكن ان يكون كالھما موقع بالذاكره‪.‬‬


:‫مثال‬
MOV AL,90H

SUB AL,85H

SBB AL,3

:‫جدول متابعة‬
‫االمر‬ AL CF ‫مالحظات‬

?? ?

MOV AL,90H 90H ? ‫ ال تؤثر على الرايات‬MOV

ADD AL,85H 05H 0 AL=90-85

ADC AL,3 02H 0 AL=05H-3-0


‫اوامر القسمة والضرب‬
‫اوامر الضرب‪:‬‬
‫في لغة االسمبلي توجد اوامر لضرب االعداد الموجبة فقط واوامر لضرب االعداد‬
‫الموجھة أي) الموجبة والسالبة أي دون التقيد باالشارة(‬
‫ضرب االعداد الموجبة‪:‬‬
‫نستعمل ھنا امر الضرب ‪ MUL‬ولكن ھنالك شروط يجب ان تتحقق عندما نريد ان‬
‫نستعمل ھذا االمر ‪MUL OP1 .‬‬

‫مالحظات مھمة‪:‬‬
‫‪ OP1:1‬يمكن ان يكون قيمة فورية أو سجل أو موقع فى الذاكرة‪.‬‬

‫‪ :2‬يمكن ان يكون ‪ OP1‬بطول) ‪.(8 bit – 16bit‬‬

‫‪ :3‬اذا كان ‪ OP1‬من نوع بايت عندھا تتم العملية التالية‪.‬‬

‫‪AX=AL*OP1‬‬

‫أي ان المعالج سوف يقوم بضرب ‪ OP1‬فى المسجل ‪ AL‬وھذا المسجل يضع‬
‫النتيجة في المسجل ‪ .AX‬لھذا السبب يجب ان نضع احدى القيم في المسجل ‪ AL‬وان‬
‫نحفظ قيمة المسجل ‪ AH‬في مكان اخر قبل عملية الضرب النه بعد عملية الضرب‬
‫سوف يقوم المعالج بحذف القيمة القديمة ويضع مكانھا القيمة الجديدة‬
‫مثال‪:‬‬
‫اكتب مقطع برنامج يضرب قيمة الخلية ‪ 20H‬في القيمة ‪ 8‬ويحفظ النتيجة في‬
‫المسجل ‪CX‬‬
‫الحل‪:‬‬
‫‪MOV SI,20H‬‬

‫]‪MOV AL,[SI‬‬

‫‪MOV BL,8‬‬

‫‪MUL BL‬‬

‫‪MOV CX,AX‬‬

‫اذا كان ‪ OP1‬من نوع كلمة أي ‪ 16‬بت عندھا تتم العملية التالية‬

‫‪DX:AX=AX*OP1‬‬

‫عندھا يقوم المعالج بضرب ‪ OP1‬بقيمة المسجل ‪ AX‬ويحفظ النتيجة في المسجلين‬


‫‪ DX‬و ‪ AX‬لھذا السبب يجب ان نضع احدى القيم في المسجل ‪ AX‬وان نحفظ القيمة‬
‫الموجودة في المسجل ‪ DX‬في مكان اخر قبل عملية الضرب‪.‬‬
‫مثال ‪:‬‬
‫عليك ضرب العدد ‪ FFFFH‬بالعدد ‪4‬‬
‫الحل‪:‬‬
‫‪MOV AX,0FFFFH‬‬

‫‪MOV CX,4‬‬

‫‪MUL CX‬‬

‫مالحظة‪ :‬لقد اضفنا صفر امام العدد الذي وضعناه في المسجل ‪ AX‬الن القانون‬
‫يقول كل عدد يبدأ بحرف من الحروف)‪ (A ,B ,C, D ,E , F‬يجب اضافة صفر عن‬
‫يساره‪.‬‬

‫ضرب االعداد الموجھة‬


‫نفس الشروط التي ذكرتھا سابقا ولكن بدال من االمر ‪ MUL‬نستخدم ‪IMUL‬‬

‫مثال ‪:‬‬
‫اكتب مقطع برنامج ينفذ التمرين التالي‬
‫‪CX= -10 * DL‬‬

‫الحل‪:‬‬
‫‪MOV AL,-10‬‬

‫‪IMUL DL‬‬

‫‪MOV CX,AX‬‬
‫القسمة‬
‫تنقسم عمليات القسمة الى قسمين‬
‫‪ :1‬قسمة االعداد الموجبة فقط‬

‫‪ :2‬قسمة االعداد الموجھة)سالبة وموجبة(‬

‫قسمة االعداد الموجبة‬


‫نستخدم في ھذه الحالة االمر ‪DIV‬‬
‫وھو بالشكل التالي‪:‬‬
‫‪DIV OP1‬‬

‫اذا كان ‪ OP1‬من نوع بايت عندھا تتم العملية التالية‪:‬‬

‫‪AX/OP1‬‬

‫يقوم المعالج بتقسيم القيمة الموجودة في المسجل ‪) AX‬فقط ھذا المسجل(‬

‫على ‪ OP1‬ويتم حفظ الناتج في المسجالت التالية‪:‬‬

‫‪ :AL‬يحفظ الناتج الصحيح‬

‫‪:AH‬يحفظ الباقي الصحيح‬


‫مثال‪:‬‬
‫قسم القيمة ‪ 9‬على ‪4‬‬
‫الحل‪:‬‬
‫‪MOV AX,9‬‬

‫‪MOV BL,4‬‬

‫‪DIV BL‬‬

‫بعد تنفيذ ھذا المقطع‬


‫‪AH=1‬‬ ‫‪AL=2‬‬

‫مالحظة‪ :‬ال يجوز االختزال في الباقي الصحيح حتى ولوأمكن ذلك‬


‫مثال‪:‬‬
‫‪MOV AX,8‬‬

‫‪MOV CL,6‬‬

‫‪DIV CL‬‬

‫‪AH=2‬‬ ‫‪AL=1‬‬

‫صحيح انه ‪ 2/6=1/3‬اال انه ال يجوز التبسيط‬

‫اذا كان ‪ OP1‬من نوع ‪ 16‬بت تتم العملية التالية‬

‫‪DX:AX/OP1‬‬

‫أي ان المعالج يتعامل مع المسجلين كانھما مسجال واحدا ويقسمھما على ‪OP1‬‬
‫ويحفظ النتيجة بالشكل التالي‪:‬‬
‫‪ :AX‬يحتوي على الناتج الصحيح‬

‫‪:DX‬يحتوي على الباقي الصحيح‬


‫قسمة االعداد الموجھة‬
‫ھنا نستخدم نفس الشروط مثل االعداد الموجبة ولكن الفرق الوحيد ھو بدال من‬
‫نستخدم االمر ‪IDIV‬‬ ‫االمر ‪DIV‬‬

‫مثال‪:‬‬
‫احسب ما يلي‬
‫‪-120/12H‬‬
‫الحل‪:‬‬
‫‪MOV AX,-120‬‬

‫‪MOV BL,12H‬‬

‫‪IDIV BL‬‬
‫مثال‪:‬‬
‫اكتب مقطع برنامج يحسب‬
‫‪1234H/-1010‬‬

‫الحل‪:‬‬
‫‪MOV DX,0‬‬

‫‪MOV AX,1234H‬‬

‫‪MOV CX,-1010‬‬

‫‪IDIV CX‬‬

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

‫النتيجة من ھذه العمليات تكون اما صدق ‪ TRUE‬والتي نعبر عنھا في القيمة ‪ . 1‬او‬
‫تكون النتيجة من نوع كذب ‪ FALSE‬والتي نعبر عنھا بالقيمة ‪.0‬‬

‫‪ (1‬االمر ‪OR‬‬
‫ھنا يكفي شرطا واحدا ان يتحقق فنحصل على نتيجة صدق‪.‬‬

‫جدول االمر ‪OR‬‬

‫‪A‬‬ ‫النتيجة ‪B A+B‬‬

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

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

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

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

‫مالحظات ‪-:‬‬
‫‪ A,B:1‬عبارة عن بتات ‪.‬‬

‫‪OR OP1 , OP2‬‬ ‫‪ :2‬يأخذ ھذا االمر المصدر والھدف‬

‫‪ :3‬يجب تحويل قيم المصدر والھدف الى الميزان الثنائي حتى نتمكن‬
‫من التعامل مع القيم‪.‬‬
‫مثال‪:‬‬
‫أوجد قيمة كل مسجل من المسجالت بعد تنفيذ العملية المنطقية التالية‪:‬‬
‫‪OR AL , BL‬‬

‫حيث ان‪:‬‬
‫‪AL=2FH‬‬

‫‪BL=52H‬‬

‫الحل‪:‬‬
‫علينا ان نحول الھدف والمصدر الى الميزان الثنائي‬
‫‪AL=2FH= 00101111‬‬

‫‪BL=52H= 01010010‬‬

‫‪ 0‬العدد االول‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪ 0‬العدد الثاني‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬

‫= النتيجة‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫بما ً ان المسجل ‪ BL‬ھو المصدر فان قيمته ال تتغير وتبقى ‪BL=52H‬‬

‫والمسجل ‪ AL‬ھو الھدف اذاً التأثير يتم عليه حسب النتيجة ‪AL=7FH‬‬
‫‪ (2‬االمر ‪AND‬‬
‫ھنا يكفي ان ال يتحقق شرطا واحدا حتى نحصل على نتيجة كذب‬

‫جدول االمر ‪AND‬‬

‫‪A‬‬ ‫النتيجة‪B A*B‬‬

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

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

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

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

‫مالحظات ‪-:‬‬
‫‪ A,B:1‬عبارة عن بتات ‪.‬‬

‫‪AND OP1 , OP2‬‬ ‫‪ :2‬يأخذ ھذا االمر المصدر والھدف‬

‫‪ :3‬يجب تحويل قيم المصدر والھدف الى الميزان الثنائي حتى نتمكن‬
‫من التعامل مع القيم‪.‬‬
‫مثال‪:‬‬
‫‪AL=27H‬‬

‫‪BL=56H‬‬

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


‫‪AND AL , BL‬‬

‫حيث ان ‪:‬‬
‫‪AL=27H‬‬

‫‪BL=56H‬‬
‫الحل‪:‬‬
‫علينا ان نحول الھدف والمصدر الى الميزان الثنائي‬
‫‪AL=27H= 00100111‬‬

‫‪BL=56H= 01010110‬‬

‫‪ 0‬العدد االول‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪ 0‬العدد الثاني‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫=النتيجة‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫بما ً ان المسجل ‪ BL‬ھو المصدر فان قيمته ال تتغير وتبقى ‪BL=56H‬‬

‫والمسجل ‪ AL‬ھو الھدف اذاً التأثير يتم عليه حسب النتيجة ‪AL=06H‬‬
‫‪ (3‬االمر ‪TEST‬‬
‫ھنا يكفي ان ال يتحقق شرطا واحدا حتى نحصل على نتيجة كذب ‪.‬‬

‫جدول االمر ‪TEST‬‬

‫‪A‬‬ ‫النتيجة‪B A*B‬‬

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

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

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

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

‫مالحظات ‪-:‬‬
‫‪A,B:1‬عبارة عن بتات ‪.‬‬

‫‪TEST OP1 , OP2‬‬ ‫‪ :2‬يأخذ ھذا االمر المصدر والھدف‬

‫‪ :3‬يجب تحويل قيم المصدر والھدف الى الميزان الثنائي حتى نتمكن من‬
‫التعامل مع القيم‪.‬‬

‫‪ :4‬يعمل ھذا االمر مثل االمر ‪ AND‬ولكن مع فرق بسيط وھو انه ال يؤثر على‬
‫الھدف وال على المصدر وانما يؤثر فقط على الرايات ويقوم بتغيير بعض الرايات‬
‫مثال‪:‬‬
‫أوجد قيمة كل مسجل من المسجالت بعد تنفيذ العملية المنطقية التالية‪:‬‬
‫‪TEST AL , BL‬‬

‫حيث ان ‪:‬‬
‫‪AL=27H‬‬

‫‪BL=56H‬‬

‫الحل‪:‬‬
‫علينا ان نحول الھدف والمصدر الى الميزان الثنائي‬
‫‪AL=27H= 00100111‬‬

‫‪BL=56H= 01010110‬‬

‫‪ 0‬العدد االول‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪ 0‬العدد الثاني‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫=النتيجة‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫بما ً ان المسجل ‪ BL‬ھو المصدر فان قيمته ال تتغير وتبقى ‪BL=56H‬‬

‫والمسجل ‪ AL‬ھو الھدف ولكن االمر ‪ TEST‬ال يؤثر على الھدف المسجل يحافظ‬
‫على قيمته السابقة ‪AL=27H‬‬

‫اذاً ما ھي الفائدة منه؟‬


‫الجواب ‪ :‬في بعض االحيان نحتاج الى فحص بت معينة دون ان نؤثر على القيمة‬
‫االصلية‪ .‬فنستخدم ھذا االمر‬
‫‪(4‬االمر ‪XOR‬‬

‫ھنا اذا كانت البتات مختلفة النتيجة ‪ 1‬واذا كانت متشابھة النتيجة ‪0‬‬

‫جدول االمر ‪XOR‬‬

‫‪A‬‬ ‫‪B‬‬ ‫النتيجة‬

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

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

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

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

‫مالحظات ‪-:‬‬
‫‪A,B:1‬عبارة عن بتات ‪.‬‬

‫‪TEST OP1 , OP2‬‬ ‫‪ :2‬يأخذ ھذا االمر المصدر والھدف‬

‫‪ :3‬يجب تحويل قيم المصدر والھدف الى الميزان الثنائي حتى نتمكن من‬
‫التعامل مع القيم‪.‬‬
‫مثال‪:‬‬
‫‪AL=A7H‬‬

‫‪BL=76H‬‬

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


‫‪XOR AL , BL‬‬

‫حيث ان ‪:‬‬
‫‪AL=A7H‬‬

‫‪BL=76H‬‬

‫الحل‪:‬‬
‫علينا ان نحول الھدف والمصدر الى الميزان الثنائي‬
‫‪AL=A7H= 10100111‬‬

‫‪BL=76H= 01110110‬‬

‫‪ 1‬العدد االول‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪ 0‬العدد الثاني‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫= النتيجة‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬

‫بما ً ان المسجل ‪ BL‬ھو المصدر فان قيمته ال تتغير وتبقى ‪BL=76H‬‬

‫والمسجل ‪ AL‬ھو الھدف اذاً التأثير يتم عليه حسب النتيجة ‪AL=D1H‬‬
‫‪(5‬االمر‪NOT‬‬

‫ھنا يتم عكس البتات البت التي قيمتھا ‪ 1‬تأخذ القيمة ‪ 0‬والبت التي قيمتھا ‪ 0‬تأخذ‬
‫القيمة ‪1‬‬

‫جدول االمر ‪not‬‬

‫‪A‬‬ ‫النتيجة‬

‫‪0‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪0‬‬

‫مالحظات ‪-:‬‬
‫‪A:1‬عبارة عن بت‪.‬‬

‫‪ 2‬يأخذ ھذا االمر ‪ OPERAND‬واحد فقط ‪NOT OP1‬‬

‫‪ 3‬يجب تحويل قيمته الى الميزان الثنائي حتى نتمكن من التعامل معه‪.‬‬
‫مثال‪:‬‬
‫أوجد قيمة كل مسجل من بعد تنفيذ العملية المنطقية التالية‪:‬‬
‫‪NOT AL‬‬

‫حيث ان‪:‬‬
‫‪AL=A7H‬‬

‫الحل‪:‬‬
‫علينا ان نحول الى الميزان الثنائي‬
‫‪AL=A7H= 10100111‬‬

‫‪ 1‬العدد االول‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫النتيجة‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫المسجل ‪ AL‬ھو الذي يتأثر حسب النتيجة ‪AL=58H‬‬


‫اللھم علمنا ما ينفعنا وانفعنا بما علمتنا‬
‫وانفع الناس بنا واغفر لنا وارحمنا إنك أنت الغفور الرحيم‬
‫م ‪ /‬محمد عـيـد الفائـدى‬

‫‪Alfayde 2002@yahoo.com‬‬

You might also like