|
ثالثا : التعليمات الحسابية
ARITHMETIC
تقوم متحكمات
Atmel
الوميضية بتنفيذ أربع عمليات
حسابية أساسية حيث تستخدم
معاملات ذات طول
8-bit
، وتقوم بتنفيذ العمليات
الحسابية التالية : الجمع ،
الطرح ، الضرب ، التقسيم .
وفي كل العمليات الأربع يجب
أن تكون المعاملات صحيحة
وبدون إشارة .
مسجل الأعلام
FLAG REGISTER
إن أعلام الحالة الثلاثة
OV & AC & CY
تأخذ القيمة إما
(0)
أو
(1)
وذلك بعد تنفيذ التعليمات
الحسابية لتشير إلى خواص ناتج
العملية . وهذه الأعلام لا
تتأثر بتعليمات الزيادة أو
الطرح . ويعبر علم التكافؤ
P
عن حالة خانات المراكم من
ناحية الزوجية أو الفردية .
والجدول التالي يبين خانات
مسجل الأعلام .
·
CY
علم الحمل : يكون
CY=1
في حال أن ناتج العملية أكبر
من
FFH
وذلك في حالات الإضافة أو
الاستعارة للخانة الأكثر
أهمية في
عمليات الطرح . وفي كل
الحالات الأخرى يكون
CY=0
.
·
AC
علم الحمل المساعد : يكون
AC=1
في حال أن ناتج العملية حصل
فيه طفحان من خانة النتيجة
الثالثة إلى الخانة الرابعة .
وفي كل
الحالات الأخرى يكون
AC=0.
·
OV
علم الطفحان : يكون
OV=1
في حال أن ناتج العملية تعرض
إلى حمل من الخانة السادسة
إلى الخانة السابعة والعكس
بالعكس أي
من الخانة السابعة إلى الخانة
الثامنة وفي كل الحالات
الأخرى يكون
OV=0
.
·
P
علم التكافؤ : يكون
P=1
إذا كان العدد الموجود في
المراكم
A
فردي أي أن
A.0=1
وفي كل الحالات الأخرى يكون
P=0
ليشير إلى أن
العدد الثنائي الموجود في
المراكم
A
هو عدد زوجي .
1
– تعليمات الجمع
ADDITION
تقسم تعليمات الجمع إلى أربعة
أقسام وهي :
INC
الزيادة : تقوم بإنجاز
الزيادة بمقدار واحد على
معامل المصدر وتضع الناتج في
نفس المعامل .
ADD
الجمع : تقوم بإنجاز الجمع
المراكم
A
ومعامل المصدر الثاني وتضع
الناتج في المراكم
A
.
ADDC
الجمع مع الحمل : تقوم بإنجاز
الجمع بين المراكم
A
ومعامل المصدر الثاني وعلم
الحمل وتضع الناتج في المراكم
A
.
DA
تعلمية الضبط العشري من أجل
أعداد
BCD
: تقوم بإنجاز عملية التصحيح
العشرية للناتج وذلك بعد
عملية الجمع الثنائية وتضع
الناتج في المراكم
A
. وعلم الحمل يكون
C=1
إذا نتيجة
BCD
مولدة من
99
وإلا
C=0
.
2 – تعليمات الطرح
SUBTRACTION
تقسم تعليمات الطرح إلى قسمين
وهما :
SUBB
طرح مع استعارة : تقوم بإنجاز
عملية طرح معامل المصدر
الثاني من المعامل الأول (
المراكم
A
) ، يطرح واحد
(1)
إذا كان علم الحمل الموجود في
تلك اللحظة
C=1
ويضح الناتج في المراكم .
DEC
طرح : تقوم بإنقاص معامل
المصدر بواحد وتضع الناتج في
نفس المعامل .
3 – تعليمات الضرب
MULTIPLICATION
MUL
الضرب : تقوم بإنجاز عملية
الضرب بين عددين ثنائيين بدون
إشارة الأول متوضع في المراكم
A
والثاني متوضع في المسجل
B
والنتيجة تكون بطول بايتين .
يستقبل المراكم
A
البايت السفلي للنتيجة
ويستقبل المسجل
B
البايت العلوي للنتيجة .
ويكون
OV=0
إذا كان النصف العلوي من
النتيجة صفرا و
OV=1
إذا كان غير صفري . يبقى
C=0
و
AC
بدون تعديل .
4 – تعليمات التقسيم
DIVISION
DIV
التقسيم : تقوم بتقسيم عددين
ثنائيين بدون إشارة الأول
متوضع في المراكم
A
والثاني يتوضع في المسجل
B
. حيث يذهب ناتج العملية
الصحيح إلى المراكم
A
ويذهب باقي عملية التقسيم إلى
المسجل
B
.
نعطي عملية التقسيم على صفر
معطيات غير محددة في المسجل
A
والمسجل
B
ويجعل
OV=1
، وفي كل الحالات الأخرى
OV=0
،
C=0
،
AC
تبقى بدون تعديل .
رابعا : تعليمات نقل التحكم
CONTROL TRANSFER
يوجد ثلاثة تصنيفات لعمليات
نقل التحكم وهي : الاستدعاء
اللامشروط ، الدوران و القفز
، القفز ، القفز المشروط ،
المقاطعات .
إن الاستدعاء اللامشروط :
دوران وقفز ، ينقل التحكم من
القيمة الحالية لعداد
البرنامج
PC
إلى عنوان الهدف ، وتدعم كلا
النقل المباشر وغير المباشر .
وعمليات النقل الثلاث مشروحة
في الأسفل .
-
ACALL & LCALL
: تدفع عنوان التعليمة
التالية إلى المكدس (
PCL
إلى العنوان السفلي و
PCH
إلى العنوان العلوي ) ومن
ثم
تنقل التحكم إلى عنوان
الهدف . تستخدم تعليمة
الاستدعاء الأساسي
2byte ACALL
عندما يكون عنوان الهدف
في صفحة
2K
.
إن تعليمة الاستدعاء
الطويل
LCALL
تكون بطول
3-byte
حيث تأخذ حيز عنونة ضمن
ذاكرة البرنامج
64K
.
-
RET
: تنقل التحكم إلى
العنوان المخزن ضمن مؤشر
المكدس
SP
حيث تسحب البايت الحالي
من المسجل
SP
وتقوم بطرح مؤشر المكدس SP
بمقدار
2
لتضبط
SP
من أجل سحب العنوان .
-
AJMP & LJMP & SJMP
: تنقل التحكم إلى معامل
الهدف ، إن عملية
AJMP & LIMP
مشابه لعملية
LCALL & ACALL
. تدعم تعليمة
SJMP
( قفز قصير ) التفرع ضمن
مجال
256
بايتا متمركزة حول بداية
عنوان التعليمة التالية
(127+÷128-) .
-
JMP @A + DPTR
: تنجز قفزا متناسبا مع
المسجل
DPTR
. حيث يستخدم المعامل في
المراكم كإزاحة (256÷0)
للعنوان في
DPTR
وهكذا فإن تأثير الهدف
للقفز يكون في أي مكان في
حيز ذاكرة البرنامج
والقفز المباشر أيضا يكون
نافعا لتحقيق
N
طريقة
تفرع .
تعليمات القفز المشروط
CONDITIONAL JUMPS
في مجموعة نقل التحكم ، ينجز
القفز المشروط قفزا محتملا
حسب الحالة المحددة ، ويتمركز
الهدف داخل مجال 256 بايتا
وذلك حول بداية عنوان
التعليمة التالية (127+÷128-)
.
-
JZ
: ينفذ قفزا إذا
كان المراكم صفرا .
-
JNZ
: ينفذ قفزا إذا كان
المراكم ليس صفرا .
-
JC
: ينفذ قفزا إذا كان علم
الحمل
C=1
.
-
JNC
: ينفذ قفزا إذا كان
علم الحمل
C=0
.
-
JB
: ينفذ قفزا إذا
كانت الخانة المعنونة (1)
.
-
HNB
: ينفذ قفزا إذا كانت
الخانة المعنونة (2) .
-
CJNE
: يقارن المعامل الأول مع
المعامل الثاني وينجز
قفزا في حال اللامساواة .
ويكون
C=1
في حال المعامل الأول أقل
من المعامل
الثاني وإلا يصبح
C=0
. ونمط المقارنة يكون بين
المراكم
A
وبايتات معنونة بشكل
مباشر في ذاكرة المعطيات
الداخلية ، أو بين قيمة
فورية مع المراكم أو
المسجل
RB
المختار بواسطة بنك
المسجل أو بايت يعنون
مسجل بشكل مباشر ضمن
ذاكرة المعطيات الداخلية
RAM
.
-
DJNZ
: أنقص معامل المصدر
بمقدار واحد وحمل الناتج
إلى نفس المعامل ونفذ
قفزا إذا كانت النتيجة
ليست صفرية .
تجعل تعليمة
DJNZ
حجرات ذاكرة المعطيات
RAM
فعالة من أجل استخدامها كعداد
لحلقات البرنامج حيث تسمح
للمبرمج بطرح وفحص العداد في
كل تنفيذ للحلقة . إن معامل
المصدر لتعليمة
DJNZ
يمكن أن يكون أي بايت في
ذاكرة المعطيات الداخلية .
المقاطعات
INTRRUPTS
يتم الانتقال إلى روتين خدمة
المقاطعات وخدمته عن طريق أحد
المقاطعات الداخلية أو
الخارجية . تنفذ كل المقاطعات
نقل عداد البرنامج
PC
إلى المكدس ومن ثم تتفرع إلى
روتين خدمة المقاطعة الذي
يتوضع بشكل أساسي عند الموقع
35H & 19H & 11H & 3H
في ذاكرة البرنامج . ويجب على
المبرمج أن يدفع كل المسجلات
التي سوف تعدل في برنامج
روتين خدمة المقاطعة إلى
المكدس
SP
.
في نهاية روتين خدمة المقاطعة
من الضروري جدا وضع التعليمة
التالية :
·
RETI
العودة من برنامج روتين خدمة
المقاطعة : تقوم هذه التعليمة
بسحب عنوان التعليمة التالية
للتعليمة التي تم منها التفرع
إلىروتين خدمة المقاطعة من
المكدس ومن ثم طرح مؤشر
المكدس
SP
. بمقدار
2
.
سوف نعطي الآن تلخيصا سريعا
لقائمة التعليمات المجدولة في
الجداول التالية كي تشكل
للمبرمج الدليل السريع لكافة
متحكمات
Atmel
الوميضية .
تستخدم هذه التعليمات لكافة
المتحكمات التي نواتها
الأساسية المتحكم
8051
|