Professional Documents
Culture Documents
هيكلية الحاسوب ولغة التجميع
هيكلية الحاسوب ولغة التجميع
ﻫﯾﻛﻠﯾﺔ اﻟﺣﺎﺳوب
ﺗﻣﺗﺎز اﻟﻣﺳﺟﻼت ﺑﺄﻧﻬﺎ ﻋﺑﺎرة ﻋن ﻣواﻗﻊ ﺗﺧزﯾﻧﯾﺔ ذات ﺳرﻋﺔ ﻋﺎﻟﯾﺔ وﺗﺳﺗﺧدم ﻋﺎدة ﻟﺗﺧزﯾن:
-اﻟﻘﯾم اﻟﻣﺷﺎرﻛﺔ ﻓﻲ اﻟﻌﻣﻠﯾﺎت اﻟﺗﻲ ﺗﻧﻔذ ﻓﻲ وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق
-اﻟﻘﯾم اﻟﻧﺎﺗﺟﺔ ﻋن اﻟﻌﻣﻠﯾﺎت اﻟﺗﻲ ﺗﻧﻔذ ﻓﻲ وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق
-ﺗﻌﻠﯾﻣﺎت اﻟﺑرﻧﺎﻣﺞ أو أﺟزاء ﻣﻧﻬﺎ
ﺗﺻﻧف اﻟﻣﺳﺟﻼت ﻓﻲ وﺣدة اﻟﻣﻌﺎﻟﺟﺔ اﻟﻣرﻛزﯾﺔ ﺣﺳب اﺳﺗﺧداﻣﺎﺗﻬﺎ إﻟﻰ ﻧوﻋﯾن:
-١-
-١ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض:
ﺗﺳﺗﺧدم ﻣن ﻗﺑل اﻟﻣﺑرﻣﺟﯾن ﻟﺗﺧزﯾن ﺟﻣﯾﻊ أﻧواع اﻟﺑﯾﺎﻧﺎت وﻣن أﻣﺛﻠﺗﻬﺎ:
-ﻣﺳﺟﻼت اﻟﻔﺎﺻﻠﺔ اﻟﺛﺎﺑﺗﺔ Fixed point Reg.
-ﻣﺳﺟﻼت اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎﺋﻣﺔ Floating point Reg.
-ﻣﺳﺟﻼت اﻟﺑﯾﺎﻧﺎت Data Reg.
-اﻟﻣرﻛم
-٢ﻣﺳﺟﻼت ﺧﺎﺻﺔ اﻷﻏراض:
ﺗﺳﺗﺧدم ﻣن ﻗﺑل اﻟﺣﺎﺳوب ﻟﺗﺧزﯾن ﺑﯾﺎﻧﺎت أو ﻋﻧﺎوﯾن ﺧﺎﺻﺔ ﻻ ﯾﺳﻣﺢ ﻟﻠﻣﺑرﻣﺞ ﺑﺎﺳﺗﺧداﻣﻬﺎ وﻣن
أﻣﺛﻠﺗﻬﺎ:
-ﻣﺳﺟل اﻟﺗﻌﻠﯾﻣﺔ ) :Instruction Reg. (IRﯾﺳﺗﺧدم ﻟﺗﺧزﯾن اﻟﺗﻌﻠﯾﻣﺔ اﻟﺗﻲ ﯾﺟري ﺗﻧﻔﯾذﻫﺎ اﻵن.
-ﻋداد اﻟﺑرﻧﺎﻣﺞ ) :Program Counter (PCﯾﺳﺗﺧدم ﻟﺗﺧزﯾن ﻋﻧوان اﻟﺗﻌﻠﯾﻣﺔ اﻟﻼﺣﻘﺔ ﻓﻲ
اﻟﺗﻧﻔﯾذ.
-ﻣﺳﺟل اﻟراﯾﺎت :Status Reg.ﯾﺳﺗﺧدم ﻟﺗﺧزﯾن ﺣﺎﻟﺔ اﻟﺑرﻧﺎﻣﺞ وﺣﺎﻟﺔ اﻟﺣﺎﺳوب ﺑﻌد ﺗﻧﻔﯾذ ﻛل
ﺗﻌﻠﯾﻣﺔ .ﯾﺗﻛون ﻫذا اﻟﻣﺳﺟل ﻣن ﻣﺟﻣوﻋﺔ ﺛﻧﺎﺋﯾﺎت ﺗﺳﻣﻰ ﻛل ﺛﻧﺎﺋﯾﺔ ﻣﻧﻬﺎ راﯾﺔ .Flag
-ﻣﺳﺟل اﻟﺑﯾﺎﻧﺎت :Data Reg.ﯾﺳﺗﺧدم ﻟﺗﺧزﯾن اﻟﺑﯾﺎﻧﺎت اﻟﻘﺎدﻣﺔ ﻣن اﻟذاﻛرة اﻟرﺋﯾﺳﺔ أو اﻟﻣرﺳﻠﺔ
إﻟﯾﻬﺎ.
-ﻣﺳﺟل اﻟﻌﻧوان :Address Reg.ﯾﺳﺗﺧدم ﻟﺗﺧزﯾن ﻋﻧوان اﻟﺑﯾﺎﻧﺎت اﻟﻘﺎدﻣﺔ ﻣن اﻟذاﻛرة اﻟرﺋﯾﺳﺔ أو
اﻟﻣرﺳﻠﺔ إﻟﯾﻬﺎ.
ﺗﻘوم وﺣدة اﻟﺗﺣﻛم ﺑﺎﻹﺷراف ﻋﻠﻰ ﻋﻣل وﺣدة اﻟﻣﻌﺎﻟﺟﺔ اﻟﻣرﻛزﯾﺔ ﺑﺷﻛل ﻋﺎم
ﻛﻣﺎ ﺗﻘوم ﺑﺗﻧظﯾم ﻋﻣﻠﯾﺎت اﻻﺗﺻﺎل وﺗﺑﺎدل اﻟﺑﯾﺎﻧﺎت ﺑﯾن وﺣدة اﻟﻣﻌﺎﻟﺟﺔ اﻟﻣرﻛزﯾﺔ ﻣن ﺟﻬﺔ وﺑﯾن
اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ووﺣدات اﻹدﺧﺎل واﻹﺧراج ﻣن ﺟﻬﺔ أﺧرى.
إن اﻟﻣﻌﺎﻟﺞ ﯾﺷﻛل ﻗﻠب ﻧظﺎم اﻟﺣﺎﺳوب ﺣﯾث أن ﻗدرة وﻛﻔﺎءة اﻟﺣﺎﺳوب ﺗﻌﺗﻣد ﻋﻠﻰ ﻗدرة وﻛﻔﺎءة
اﻟﻣﻌﺎﻟﺞ ﻧﻔﺳﻪ ،واﻟﺗﻲ ﺗﻌﺗﻣد ﺑدورﻫﺎ ﻋﻠﻰ اﻟﻌواﻣل اﻟﺗﺎﻟﯾﺔ:
-١ﻋدد اﻟﺛﻧﺎﺋﯾﺎت اﻟﺗﻲ ﺗﻌﺎﻟﺞ ﻓﻲ ﻧﻔس اﻟﻠﺣظﺔ.
-٢ﻋدد اﻟﺗﻌﻠﯾﻣﺎت اﻟﺗﻲ ﯾﺳﺗطﯾﻊ اﻟﻣﻌﺎﻟﺞ ﺗﻧﻔﯾذﻫﺎ.
-٣اﻹﻣﻛﺎﻧﯾﺎت اﻟﻣﺗوﻓرة ﻓﻲ ﻛل ﺗﻌﻠﯾﻣﺔ.
-٤زﻣن ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ اﻟواﺣدة.
-٥ﻋدد اﻟﺗﻌﻠﯾﻣﺎت اﻟﺗﻲ ﺗﻧﻔذ ﻓﻲ ﻧﻔس اﻟﻠﺣظﺔ.
-٢-
-٦ﺳﻌﺔ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ اﻟﺗﻲ ﯾﺳﺗطﯾﻊ اﻟﻣﻌﺎﻟﺞ إدارﺗﻬﺎ.
-٣-
-٢ﻛﺑﯾرة اﻟﺣﺟم
-٣ﻛﺛﯾرة اﻷﻋطﺎل
ﻧﺳﺑﯾﺎ
ً -٤ﻗﻠﯾﻠﺔ اﻟﺳرﻋﺔ
-٥ﻛﻠﻔﺗﻬﺎ ﻋﺎﻟﯾﺔ )ﺗﺻﻧﻊ ﺑطرﯾﻘﺔ ﯾدوﯾﺔ(
ﺗم اﻻﺳﺗﻐﻧﺎء ﻋﻧﻬﺎ.
-٤-
اﻟـﺷرﯾط اﻟﻣﻐﻧﺎطﯾــﺳﻲ ﻫـو ﻋﺑـﺎرة ﻋــن ﺷـرﯾط ﺑﻼﺳـﺗﯾﻛﻲ ﻣﻐطــﻰ ﻣـن ﺟﻬـﺔ واﺣــدة ﺑﻣـﺎدة ﺳـﻬﻠﺔ اﻟﻣﻐﻧطــﺔ
ﻣﺛ ــل أﻛ ــﺳﯾد اﻟﺣدﯾ ــد .ﺗﺗﻛ ــون ﻣ ــن ﺣﺑﯾﺑ ــﺎت ﺻ ــﻐﯾرة .ﺗﺧ ــزن اﻟﺑﯾﺎﻧ ــﺎت ﺑواﺳ ــطﺔ ﻣﺟ ــﺎل ﻛﻬروﻣﻐﻧﺎطﯾ ــﺳﻲ
ﯾؤدي إﻟﻰ ﺗرﺗﯾب اﻟﺣﺑﯾﺑﺎت ﻋﻠﻰ اﻟﺷرﯾط ﻓﻲ وﺿﻌﯾﺔ ﻣﻌﯾﻧﺔ.
ﺗــﻧظم اﻟﺑﯾﺎﻧــﺎت ﻋﻠــﻰ اﻟــﺷرﯾط اﻟﻣﻐﻧﺎطﯾــﺳﻲ ﻓــﻲ ﻣﺟﻣوﻋــﺎت ﺗــﺳﻣﻰ ﻛــل واﺣــدة ﻣﻧﻬــﺎ ﺳــﺟﻼً .Record
وﯾﻣﻛن ﺗﺧزﯾن اﻟﺳﺟﻼت ﺑطرﯾﻘﺔ إﻓرادﯾﺔ أو ﻛﺗﻠﯾﺔ .Blocks
ﺗﻌﺗﻣــد طرﯾﻘــﺔ اﻟﻛﺗــل ﻋﻠــﻰ دﻣــﺞ اﻟــﺳﺟﻼت ﺑﻌــﺿﻬﺎ ﻣــﻊ ﺑﻌــض ﻓــﻲ ﻛﺗــل وﯾــﺳﻣﻰ ﻋــدد اﻟــﺳﺟﻼت ﻓــﻲ
اﻟﻛﺗﻠــﺔ اﻟواﺣــدة ﺑﻣﻌﺎﻣــل اﻟﺗﻛﺗــل .Blocking Factorوﺗﻔــﺻل ﻋــن ﺑﻌــض ﺑواﺳــطﺔ اﻟﻔﺟ ـوات اﻟﻛﺗﻠﯾــﺔ
).Interblock gaps (IBG
إن اﺳﺗﺧدام طرﯾﻘﺔ اﻟﻛﺗل ﻓﻲ ﺗﺧزﯾن اﻟﺑﯾﺎﻧﺎت ﻋﻠﻰ اﻟﺷرﯾط ﯾؤدي إﻟﻰ:
-زﯾﺎدة اﻟﺳﻌﺔ اﻟﻔﻌﺎﻟﺔ ﻋﻠﻰ اﻟﺷرﯾط
-زﯾﺎدة ﺳرﻋﺔ ﻧﻘل اﻟﺑﯾﺎﻧﺎت
-ﺿرورة زﯾﺎدة ﺣﺟم اﻟذاﻛرة اﻟرﺋﯾﺳﺔ اﻟﺗﻲ ﺗﺗﻌﺎﻣل ﻣﻊ اﻟﻛﺗل ﺑدل اﻟﺳﺟﻼت
-ﺿرورة اﺳﺗﺧدام ﺑراﻣﺞ ﺧﺎﺻﺔ ﻟﺗﻛوﯾن اﻟﻛﺗل وﺗﻔﻛﯾﻛﻬﺎ.
أﻫم ﺣﺳﻧﺎت اﻷﺷرطﺔ اﻟﻣﻐﻧﺎطﯾﺳﯾﺔ:
-ﻏﯾر ﻣﺗطﺎﯾرة
-رﺧﯾﺻﺔ اﻟﺛﻣن وﯾﻣﻛن إﻋﺎدة اﺳﺗﺧداﻣﻬﺎ
-ﻛﺛﺎﻓﺔ اﻟﺗﺧزﯾن ﻋﺎﻟﯾﺔ
-ﻗﺎﺑﻠﺔ ﻟﻠﺗداول واﻟﺗﺑﺎدل ﺑﯾن اﻟﺣواﺳﯾب اﻟﻣﺧﺗﻠﻔﺔ
ﻣﺳﺎوئ اﻷﺷرطﺔ اﻟﻣﻐﻧﺎطﯾﺳﯾﺔ:
-طرﯾﻘﺔ اﻟوﺻول ﺗﺳﻠﺳﻠﯾﺔ ﻓﻘط
-ﺣﺳﺎﺳﺔ ﻟﻠﻐﺑﺎر واﻟرطوﺑﺔ ودرﺟﺎت اﻟﺣرارة
أﺻـﺑﺣت اﻷﻗـراص اﻟﻣﻐﻧﺎطﯾــﺳﯾﺔ ﻣـن أﻛﺛــر وﺣـدات اﻟﺗﺧـزﯾن ﺷـﯾوﻋﺎً ﺑـﺳﺑب إﻣﻛﺎﻧﯾــﺔ اﻟوﺻـول اﻟﻣﺑﺎﺷــر
إﻟﻰ اﻟﺑﯾﺎﻧﺎت اﻟﻣﺧزﻧﺔ ﻋﻠﯾﻬﺎ .وﻫﻧﺎك ﻧوﻋﺎن ﻣﻧﻬﺎ :اﻷﻗراص اﻟﺻﻠﺑﺔ واﻟﻣرﻧﺔ.
ﯾﺻﻧﻊ اﻟﻘرص اﻟﺻﻠب ﻣن اﻷﻟﻣﻧﯾوم وﯾﻐطﻰ ﻛﻼ وﺟﻬﯾﻪ ﺑﻣﺎدة ﺳﻬﻠﺔ اﻟﻣﻐﻧطﺔ.
أﻣــﺎ اﻟﻘـــرص اﻟﻣـــرن ﻓﯾ ــﺻﻧﻊ ﻣــن اﻟﺑﻼﺳ ــﺗﯾك وﯾﻐطــﻰ أﺣــد وﺟﻬﯾ ــﻪ أو ﻛﻠﯾﻬﻣــﺎ ﺑﻣ ــﺎدة ﺳــﻬﻠﺔ اﻟﻣﻐﻧط ــﺔ.
وﻫﻧﺎك أﻗراص ذات ﻗطر ٣.٥إﻧش و ٥.٢٥إﻧش.
ﯾﻘــﺳم ﺳــطﺢ اﻟﻘــرص إﻟــﻰ ﻣــﺳﺎرات داﺋرﯾــﺔ ﻣرﻛزﯾــﺔ ﯾﺗـراوح ﻋــددﻫﺎ ﺑــﯾن ٤٠ﻣــﺳﺎراً ﻓــﻲ اﻷﻗـراص اﻟﻣرﻧــﺔ
وأﻛﺛــر ﻣــن ٨٠٠ﻣــﺳﺎراً ﻓــﻲ اﻷﻗ ـراص اﻟــﺻﻠﺑﺔ .ﺗﻘــﺳم اﻟﻣــﺳﺎرات إﻟــﻰ أﺟ ـزاء ﯾــﺳﻣﻰ ﻛــل ﻣﻧﻬــﺎ ﻗطﺎﻋــﺎً
.Sector
-٥-
٤-٢وﺣدات اﻹدﺧﺎل واﻹﺧراج :
ﺗﺻﻧف وﺣدات اﻹدﺧﺎل ﺣﺳب ﻧوﻋﯾﺔ اﻟﺑﯾﺎﻧﺎت اﻟﺗﻲ ﯾﺗم ادﺧﺎﻟﻬﺎ إﻟﻰ:
-وﺣدات إدﺧﺎل اﻟﻧﺻوص )ﻟوﺣﺔ اﻟﻣﻔﺎﺗﯾﺢ(
-وﺣدات إدﺧﺎل اﻟرﺳوﻣﺎت واﻟﺻور )اﻟﻣرﻗﻣﺎت (Digitizer
-وﺣدات إدﺧﺎل اﻟﺻوت
-وﺣدات إدﺧﺎل أﺧرى )اﻟﻔﺄرة ،اﻟﻘﻠم اﻟﺿوﺋﻲ ،ﺷﺎﺷﺎت اﻟﻠﻣس(
ﺷﯾوﻋﺎ:
ً أﻛﺛر وﺣدات اﻹﺧراج
اﻟﺷﺎﺷﺎت ،اﻟطﺎﺑﻌﺎت ،اﻟراﺳﻣﺎت
٥-٢اﻟﻧﺎﻗﻠﺔ : Bus
ﺗﺗــﺻل وﺣــدات اﻟﺣﺎﺳــوب ﺑﻌــﺿﻬﺎ ﻣــﻊ ﺑﻌــض ﺑواﺳــطﺔ ﻣﺟﻣوﻋــﺔ ﻣــن وﺳــﺎﺋل اﻟﻧﻘــل اﻟﺧﺎﺻــﺔ اﻟﻣــﺳﻣﺎﻩ
ﺑﺎﻟﻧﺎﻗﻼت.
ﺗﻌرف اﻟﻧﺎﻗﻠـﺔ ﺑﺄﻧﻬـﺎ ﻋﺑـﺎرة ﻋـن ﻣﺟﻣوﻋـﺔ ﻣـن اﻷﺳـﻼك ووﺣـدات وﺻـل ﻟﻧﻘـل اﻟﺑﯾﺎﻧـﺎت وٕاﺷـﺎرات اﻟـﺗﺣﻛم
ﺑ ــﯾن اﻟ ــذاﻛرة اﻟرﺋﯾ ــﺳﺔ ووﺣ ــدة اﻟﻣﻌﺎﻟﺟ ــﺔ اﻟﻣرﻛزﯾ ــﺔ ﻣ ــن ﺟﻬ ــﺔ ،وﺑ ــﯾن وﺣ ــدة اﻟﻣﻌﺎﻟﺟ ــﺔ اﻟﻣرﻛزﯾ ــﺔ وﻣ ــﻧظم
وﺣدات اﻹدﺧﺎل واﻹﺧراج ﻣن ﺟﻬﺔ أﺧرى.
ﺗﺗﻛون اﻟﻧﺎﻗﻠﺔ ﻣن ﺛﻼث أﻧواع ﻣن اﻟﺧطوط:
أوﻻ :ﺧطوط اﻟﻌﻧوان :Address Line
ً
ﺗﺳﺗﺧدم ﺧطوط اﻟﻌﻧوان ﻟﻧﻘل اﻹﺷﺎرات اﻟﺗـﻲ ﺗﺣـدد ﻋﻧـوان ﻣوﻗـﻊ اﻟـذاﻛرة اﻟرﺋﯾـﺳﺔ اﻟﻣـراد اﻟﻘـراءة ﻣﻧـﻪ أو
اﻟﺗﺧزﯾن ﻓﯾﻪ.
ﻋدد ﺧطوط اﻟﻌﻧوان ﯾﺟـب أن ﯾﻛـون ﻛﺎﻓﯾـﺎً ﻟﺣﻣـل ﻋﻧـوان أي ﻣوﻗـﻊ ﻓـﻲ اﻟـذاﻛرة اﻟرﺋﯾـﺳﺔ .أي أﻧـﻪ ﯾﺟـب
أن ﺗﻛون ﻫﻧﺎك ﻋﻼﻗﺔ ﺗرﺑط ﻋدد ﺧطوط اﻟﻌﻧوان واﻟﺳﻌﺔ اﻟﻘﺻوى ﻟﻠذاﻛرة اﻟرﺋﯾﺳﺔ وﻫﻲ:
،N = ٢ﺣﯾث أن mﻫﻲ ﻋدد ﺧطوط اﻟﻌﻧوان N ،ﻫﻲ اﻟﺳﻌﺔ اﻟﻘﺻوى ﻟﻠذاﻛرة اﻟرﺋﯾﺳﺔ.
ﻓﻣﺛﻼً إذا ﻛﺎن ﻋدد ﺧطوط اﻟﻌﻧوان ﻓﻲ ﺣﺎﺳوب ﻣﺎ ﻫو ١٦ﺧـط ،ﻓـﺈن ﻫـذا اﻟﺣﺎﺳـوب ﯾـﺳﺗطﯾﻊ ﻋﻧوﻧـﺔ
٦٤ = ٢ﻛﯾﻠوﺑﺎﯾت. ذاﻛرة رﺋﯾﺳﺔ ذات ﺳﻌﺔ ﺗﺻل ﻟﻐﺎﯾﺔ
ﻣــﺛﻼً إذا ﻋﻠﻣ ــت أن ﺳ ــﻌﺔ اﻟ ــذاﻛرة اﻟرﺋﯾ ــﺳﺔ ﻓ ــﻲ أﺣ ــد اﻟﺣواﺳ ــﯾب ﺗ ــﺳﺎوي ١ﻣﯾﺟﺎﺑﺎﯾ ــت = ١٠٤٨٥٧٦
ﺑﺎﯾت ،ﻓﺈن ﻋدد ﺧطوط اﻟﻌﻧوان mﯾﺣدد ﻛﻣﺎ ﯾﻠﻲ:
N=2
M = log N
-٦-
ﺑﺗﻌوﯾض ﻗﯾﻣﺔ Nﻓﻲ اﻟﻣﻌﺎدﻟﺔ ،ﻧﺟد أن .m = 20
ﺗﻧﺗﻘل إﺷﺎرات اﻟﻌﻧوان ﺑﺎﺗﺟﺎﻩ واﺣد ﻣن اﻟﻣﻌﺎﻟﺞ إﻟﻰ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ.
ﺛﺎﻧﯾﺎً :ﺧطوط اﻟﺑﯾﺎﻧﺎت :Data Lines
ﺗــﺳﺗﺧدم ﻟﻧﻘ ــل اﻟﺑﯾﺎﻧــﺎت وﺗﻌﻠﯾﻣ ــﺎت اﻟﺑرﻧ ــﺎﻣﺞ ﻣــن ٕواﻟ ــﻰ اﻟــذاﻛرة اﻟرﺋﯾ ــﺳﺔ .ﯾﺣ ــدد ﻋــدد ﺧط ــوط اﻟﺑﯾﺎﻧ ــﺎت
ﺳرﻋﺔ ﻧﻘل اﻟﺑﯾﺎﻧﺎت ﺑﯾن اﻟذاﻛرة اﻟرﺋﯾﺳﺔ واﻟﻣﻌﺎﻟﺞ.
ﯾﻠزم ٤ﺣرﻛﺎت ﻟﻧﻘل ﻗﯾﻣﺔ طوﻟﻬﺎ ٣٢ﺛﻧﺎﺋﯾﺔ ٨ﺧطوط
ﺣرﻛﺗﺎن ﻧﻔس اﻟطول ١٦ﺧط
ﺣرﻛﺔ واﺣدة ﻧﻔس اﻟطول ٣٢ﺧط
ﺧطوط اﻟﺑﯾﺎﻧﺎت ﺗﺳﺗﺧدم ﻟﻧﻘل اﻟﺑﯾﺎﻧﺎت ﻓﻲ اﺗﺟﺎﻫﯾن ﻣن اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ٕواﻟﯾﻬﺎ.
ﺛﺎﻟﺛﺎً :ﺧطوط اﻟﺗﺣﻛم :Control Lines
ﺗﺳﺗﺧدم ﻟﻧﻘل إﺷﺎرات اﻟﺗﺣﻛم ﻣن اﻟﻣﻌﺎﻟﺞ إﻟﻰ ﺟﻣﯾﻊ وﺣدات اﻟﺣﺎﺳوب اﻷﺧرى وﺑﺎﻟﻌﻛس .ﻣﺛل:
إﺷﺎرة اﻟﻘراءة ،readإﺷﺎرة اﻟﻛﺗﺎﺑﺔ ،writeإﺷﺎرة ﺗﺻﻔﯾر اﻟﻧظﺎم ... resetوﻏﯾرﻫﺎ.
-٧-
وﺗﺻﻧف ﻫذﻩ اﻟﺑﯾﺎﻧﺎت إﻟﻰ ﻋددﯾﺔ ورﻣزﯾﺔ .أﻣﺎ اﻟﻌددﯾﺔ ﻓﺗﻧﻘﺳم إﻟﻰ أرﺑﻌﺔ أﻧواع ﻫﻲ:
-اﻷﻋداد اﻟﺛﻧﺎﺋﯾﺔ ﺑﺻﯾﻐﺔ اﻟﻔﺎﺻﻠﺔ اﻟﺛﺎﺑﺗﺔ Fixed-point binary
-اﻷﻋداد اﻟﺛﻧﺎﺋﯾﺔ ﺑﺻﯾﻐﺔ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎﺋﻣﺔ Floating-point binary
-اﻷﻋداد اﻟﻌﺷرﯾﺔ اﻟﻣﺣزوﻣﺔ Packed decimal
-اﻷﻋداد اﻟﻌﺷرﯾﺔ ﻏﯾر اﻟﻣﺣزوﻣﺔ )اﻟﻣﻣﺗدة( Unpacked decimal
ﺳــﻣﯾت اﻷﻋــداد ﺑــﺻﯾﻐﺔ اﻟﻔﺎﺻــﻠﺔ اﻟﺛﺎﺑﺗــﺔ ﻧظ ـراً ﻟﻛــون اﻟﻔﺎﺻــﻠﺔ اﻟﻛــﺳرﯾﺔ ﺗﺣﺗــل ﻣوﻗﻌــﺎً ﺛﺎﺑﺗــﺎً ﻋﻠــﻰ ﯾــﺳﺎر
آﺧر رﻗم.
ﺗﺗﻛون ﻫذﻩ اﻷﻋداد ﻣن ﺟزﺋﯾن :اﻹﺷﺎرة واﻟﻣﻘدار.
ﺗﺗﺿﻣن ﺣواﺳـﯾب IBM 360/370ﺗﻌﻠﯾﻣـﺎت ﻟﻣﻌﺎﻟﺟـﺔ اﻷﻋـداد اﻟﻣﻣﺛﻠـﺔ ﺑـﺻﯾﻐﺔ اﻟﻔﺎﺻـﻠﺔ اﻟﺛﺎﺑﺗـﺔ اﻟﺗـﻲ
ﯾﻛون طوﻟﻬﺎ ٣٢أو ١٦ﺛﻧﺎﺋﯾﺔ.
أﻣــﺎ اﻷﻋــداد اﻟﻣﻣﺛﻠــﺔ ﺑــﺻﯾﻐﺔ اﻟﻔﺎﺻــﻠﺔ اﻟﻌﺎﺋﻣــﺔ ﻓﻘــد ﺳــﻣﯾت ﺑﻬــذا اﻻﺳــم ﻧظ ـراً ﻟﻛــون اﻟﻔﺎﺻــﻠﺔ اﻟﻛــﺳرﯾﺔ
ﯾﻣﻛن أن ﺗﺣﺗل أي ﻣوﻗﻊ ﻓﻲ اﻟﻌدد.
ﺗﺗﺿﻣن ﺣواﺳﯾب IBM 360/370ﺗﻌﻠﯾﻣﺎت ﻟﻣﻌﺎﻟﺟﺔ اﻷﻋداد اﻟﻣﻣﺛﻠﺔ ﺑـﺻﯾﻐﺔ اﻟﻔﺎﺻـﻠﺔ اﻟﻌﺎﺋﻣـﺔ اﻟﺗـﻲ
ﯾﻛون طوﻟﻬﺎ ٣٢أو ٦٤أو ١٢٨ﺛﻧﺎﺋﯾﺔ.
ﺗﺗﻛون ﻫذﻩ اﻷﻋداد ﻣن ﺛﻼث ﺣﻘول ﻫﻲ:
-١ﺣﻘل إﺷﺎرة اﻟﻌدد )ﺛﻧﺎﺋﯾﺔ واﺣدة(
-٢ﺣﻘل اﻷس وﯾﺧﺻص ﻟﻪ ٨أو ١١ﺛﻧﺎﺋﯾﺔ
-٣ﺣﻘل اﻟﻛﺳر وﯾﺧﺻص ﻟﻪ ٢٣أو ٥٢ﺛﻧﺎﺋﯾﺔ
ﺗﻣﺛل اﻷﻋداد اﻟﻌﺷرﯾﺔ ﻓﻲ ﺣواﺳـﯾب IBM 360/370ﺣـﺳب ﻧظـﺎم ،BCDﺣﯾـث ﯾﻣﺛـل ﻛـل رﻗـم ﻓـﻲ
اﻟﻌدد ﺑواﺳطﺔ ٤ﺛﻧﺎﺋﯾﺎت )ﻣن ٠٠٠٠إﻟﻰ ٠)-(١٠٠١إﻟﻰ (٩
ﻣﺛﺎل:
١ ٩ ٨ ٦
-٨-
-٢اﻷﻋداد اﻟﻌﺷرﯾﺔ ﻏﯾر اﻟﻣﺣزوﻣﺔ )اﻟﻣﻣﺗدة( :Unpacked BCD
ﯾﺧــﺻص ﺑﺎﯾــت واﺣــد ﻟﻛــل رﻗــم ﻋــﺷري .ﻓــﺈن اﻟــرﻗم اﻟﻌــﺷري ﯾﺣﺗــل اﻟﻧــﺻف اﻷﯾﻣــن ﻓــﻲ اﻟﺑﺎﯾــت .أﻣــﺎ
اﻟﻧـﺻف اﻷﯾـﺳر )ﯾـﺳﻣﻰ ﻧطـﺎق( ﻓــﯾﻣﻛن أن ﯾﺣﺗـوي ﻋﻠـﻰ أﯾـﺔ ﻗﯾﻣــﺔ ﻣﺣـﺻورة ﺑـﯾن اﻟـرﻗم ٠٠٠٠واﻟــرﻗم
.١١١١وﻓﻲ أﻗﺻﻰ اﻟﯾﻣﯾن ﯾﺣﺗوي اﻟﺑﺎﯾت ﻋﻠﻰ إﺷﺎرة اﻟرﻗم ﺑدﻻً ﻣن اﻟﻧطﺎق.
أﻣﺎ اﻟﺑﯾﺎﻧﺎت اﻟرﻣزﯾﺔ ﻓﺗﻣﺛل ﺑﺎﺳﺗﺧدام ﻧظﺎم ﺷﯾﻔرة EBCDICﺣﯾث ﯾﺗﺳﻊ اﻟﺑﺎﯾت اﻟواﺣد ﻟرﻣز واﺣد.
-٩-
٣-١-٣ﺻﯾﻎ اﻟﺗﻌﻠﯾﻣﺎت وطرق اﻟﻌﻧوﻧﺔ :
ﺗﺗﻛون ﺗﻌﻠﯾﻣﺎت ﺣواﺳﯾب IBM 360/370ﻣن ٢ﺑﺎﯾت أو ٤أو .٦وﯾﺗراوح ﻋدد اﻟﻌﻧـﺎوﯾن ﻓﯾﻬـﺎ ﻣـن
ﻋﻧوان واﺣد إﻟﻰ ﺛﻼﺛﺔ ﻋﻧﺎوﯾن.
ﻧﻌﻧـﻲ ﺑطــرق اﻟﻌﻧوﻧـﺔ اﻷﺳــﺎﻟﯾب اﻟﻣﺗﺑﻌـﺔ ﻓــﻲ ﺗﺣدﯾــد ﻣواﻗـﻊ اﻟﺑﯾﺎﻧــﺎت .أﻣـﺎ طــرق اﻟﻌﻧوﻧـﺔ اﻟﻣــﺳﺗﺧدﻣﺔ ﻓــﻲ
ﻫذﻩ اﻟﺣواﺳﯾب ﻓﻬﻲ:
-اﻟﻌﻧوﻧﺔ اﻟﻔورﯾﺔ
-اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻟﻣﺳﺟﻼت
-اﻟﻌﻧوﻧﺔ اﻟﻣﺑﺎﺷرة
-اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻷﺳﺎس
-اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻷﺳﺎس واﻟﻔﻬرس
ﺳﯾﺗم اﻟﺷرح ﻓﻲ وﺣدة ﻻﺣﻘﺔ
- ١٠ -
-وﺣدات اﻟﺗﺣﻛم ﺑوﺣدات اﻹدﺧﺎل واﻹﺧراج
-ﻣﻌﺎﻟﺟﺎت اﻹدﺧﺎل واﻹﺧراج
ﻣن ﻫﻧﺎ ﯾﺗﺿﺢ أن ﻫذﻩ اﻟﺣواﺳﯾب ﺗﺣﺗوي ﻋﻠﻰ ﻋدة ﻣﻌﺎﻟﺟﺎت:
-ﻣﻌﺎﻟﺟــﺎت اﻹدﺧــﺎل واﻹﺧ ـراج ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ اﻟﻣﻌــﺎﻟﺞ اﻟرﺋﯾــﺳﻲ اﻟــذي ﯾﻧﻔــذ ﺟﻣﯾــﻊ أﻧ ـواع اﻟﺗﻌﻠﯾﻣــﺎت
ﺑﺎﺳﺗﺛﻧﺎء ﺗﻌﻠﯾﻣﺎت اﻹدﺧﺎل واﻹﺧراج.
وﺣﺗﻰ ﻻ ﺗﺣـﺻل ﺧﻼﻓـﺎت Conflictsﺑـﯾن اﻟﻣﻌﺎﻟﺟـﺎت ،ﯾـﺗم ﺗوﺟﯾـﻪ اﻟﺗﻌﻠﯾﻣـﺎت إﻟـﻰ اﻟﻣﻌـﺎﻟﺞ اﻟرﺋﯾـﺳﻲ.
واﻟــذي ﯾﻘ ــوم ﺑ ــدورﻩ ﺑﺗﺣدﯾــد ﻧ ــوع اﻟﺗﻌﻠﯾﻣ ــﺔ .وﯾﻧﻔــذﻫﺎ إذا ﻛﺎﻧ ــت ﻣ ــن اﺧﺗــﺻﺎﺻﻪ أو ﯾرﺳ ــﻠﻬﺎ إﻟ ــﻰ ﻣﻌ ــﺎﻟﺞ
اﻹدﺧﺎل واﻹﺧراج اﻟﻣﺧﺗص.
وﻫـ ــذا ﯾﺗطﻠـ ــب أن ﯾﺣﺗـ ــوي طـ ــﺎﻗم ﺗﻌﻠﯾﻣـ ــﺎت اﻟﻣﻌـ ــﺎﻟﺞ اﻟرﺋﯾـ ــﺳﻲ ﻋﻠـ ــﻰ ﺗﻌﻠﯾﻣـ ــﺎت ﺧﺎﺻـ ــﺔ ﻟﺗﻧظـ ــﯾم ﻋﻣﻠﯾـ ــﺔ
اﻻﺗﺻﺎل ﺑﯾﻧﻪ وﺑﯾن ﻣﻌﺎﻟﺟﺎت اﻹدﺧﺎل واﻹﺧراج .وﻣﻧﻬﺎ:
-ﺗﻌﻠﯾﻣﺔ أﺑدأ اﻹدﺧﺎل/اﻹﺧراج )Start input/output (SIO
-ﺗﻌﻠﯾﻣﺔ أوﻗف اﻹدﺧﺎل/اﻹﺧراج )Halt input/output (HIO
-ﺗﻌﻠﯾﻣﺔ اﻓﺣص اﻹدﺧﺎل/اﻹﺧراج )Test input/output (TIO
وﻣن اﻷﻣﺛﻠﺔ ﻋﻠﻰ ﺗﻌﻠﯾﻣﺎت ﻣﻌﺎﻟﺟﺎت اﻹدﺧﺎل واﻹﺧراج ﻣﺎ ﯾﻠﻲ:
-ﺗﻌﻠﯾﻣﺔ اﻗرأ read
-ﺗﻌﻠﯾﻣﺔ ﺧزن write
-ﺗﻌﻠﯾﻣﺔ اﻗﻠب اﻟﺻﻔﺣﺔ eject
- ١١ -
ﯾﻣﻛﻧﻧــﺎ اﻻﺳــﺗﻧﺗﺎج أﻧــﻪ ﻟﻣﻌﺎﻟﺟــﺔ اﻟﺑﯾﺎﻧــﺎت اﻟطوﯾﻠــﺔ ﺑﻔﻌﺎﻟﯾــﺔ ﻓــﻲ اﻟﺣواﯾــب اﻟﻣــﺻﻐرة ﯾﺟــب أن ﺗﺣﺗــوي ﻫــذﻩ
اﻟﺣواﺳﯾب ﻋﻠﻰ ﻣﻌﺎﻟﺟﺎً رﯾﺎﺿﯾﺎً.
- ١٢ -
ﺗﻌﺗﺑــر اﻟوﺳــﯾط ﺑــﯾن اﻟﻣﻌــﺎﻟﺞ ٢٨٦ﻣــن ﺟﻬــﺔ ،واﻟــذاﻛرة اﻟرﺋﯾــﺳﺔ ووﺣــدات اﻹدﺧــﺎل واﻹﺧ ـراج ﻣــن ﺟﻬــﺔ
أﺧرى .ووﺣدات اﻟﺣﺎﺳوب اﻷﺧرى.
-٤وﺣدة اﻟﻌﻧوان :Address Unit
ﺗﺗــوﻟﻰ ﻣﻬﻣــﺔ ﺣــﺳﺎب اﻟﻌﻧــﺎوﯾن اﻟﻔﻌﻠﯾــﺔ Physical Addressﻟﻣواﻗــﻊ اﻟــذاﻛرة اﻟرﺋﯾــﺳﺔ اﻟﻣــﺷﺎرﻛﺔ ﻓــﻲ
اﻟﺗﻌﻠﯾﻣﺎت.
- ١٣ -
ﺗﺻﻧف اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﺣواﺳﯾب إﻟﻰ ﺛﻼث أﻧواع:
-اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣرﻛﻣﯾﺔ Accumulator-based computers
-اﻟﻬﯾﻛﻠﯾﺎت ذات اﻟﻣﺳﺟﻼت اﻟﻌﺎﻣﺔ General-register computers
-اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣﻛدﺳﯾﺔ Stack computers
اﻟــﺷﻛل اﻟﺗــﺎﻟﻲ ﯾﺑــﯾن ﻣﺧطــط ﺳــﯾر اﻟﻌﻣﻠﯾــﺎت وﻣراﺣــل ﺗﻧﻔﯾــذ اﻟﺗﻌﻠﯾﻣــﺎت ﻓــﻲ اﻟﺣواﺳــﯾب ذات اﻟﻬﯾﻛﻠﯾــﺎت
اﻟﻣرﻛﻣﯾﺔ.
- ١٤ -
ﺗﻣﺗﺎز اﻟﺣواﺳﯾب اﻟﺗـﻲ ﺗـﺳﺗﺧدم اﻟﻬﯾﻛﻠﯾـﺎت ذات اﻟﻣـﺳﺟﻼت اﻟﻌﺎﻣـﺔ ﺑـﺄن ﻣﻌظـم ﺗﻌﻠﯾﻣﺎﺗﻬـﺎ ذات ﻋﻧـواﻧﯾن
أو ذات ﺛﻼﺛﺔ ﻋﻧﺎوﯾن.
ـﺛﻼ :ﻟﺟﻣــﻊ اﻟﻘﯾﻣﺗــﯾن X,Yاﻟﻣﺧ ـزﻧﺗﯾن ﻓــﻲ اﻟــذاﻛرة اﻟرﺋﯾــﺳﺔ وﺗﺧ ـزﯾن اﻟﻣﺟﻣــوع ﻓــﻲ اﻟﻣوﻗــﻊ ،Zﻓﺈﻧﻧــﺎ
ﻓﻣـ ً
ﻧﺳﺗﺧدم ﺗﻌﻠﯾﻣﺔ اﻟﺟﻣﻊ اﻟﺗﺎﻟﯾﺔ:
ADD Z, Y, X
ﯾﻼﺣــظ أن ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﺗﺣﺗــوي ﻋﻠــﻰ ٣ﻋﻧــﺎوﯾن :ﯾﺧــﺻص اﻷول واﻟﺛــﺎﻧﻲ ﻣﻧﻬــﺎ ﻟﺗﺧ ـزﯾن اﻟﻘــﯾم اﻟﻣ ـراد
ﺟﻣﻌﻬﺎ وﯾﺧﺻص اﻟﻌﻧوان اﻟﺛﺎﻟث ﻟﺗﺧزﯾن اﻟﻧﺗﯾﺟﺔ .وﯾﻣﻛن ﺗوﺿﯾﺢ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻛﻣﺎ ﯾﻠﻲ:
)(Z) = (Y) + (X
أﻣــﺎ ﻓــﻲ ﺣﺎﻟــﺔ ﺟﻣــﻊ اﻟﻘﯾﻣﺗــﯾن Xو Yوﺗﺧ ـزﯾن اﻟﻣﺟﻣــوع ﻓــﻲ Xأو Yﻓﺈﻧﻧــﺎ ﺳــوف ﻧــﺳﺗﺧدم ﺗﻌﻠﯾﻣــﺔ
اﻟﺟﻣﻊ ذات اﻟﻌﻧواﻧﯾن اﻟﺗﺎﻟﯾﺔ:
ADD X, Y
واﻟﺗﻲ ﺗﻌﻧﻲ:
)(X) = (X) + (Y
ﺗﻣﺗﺎز ﺣواﺳﯾب اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣﻛدﺳﯾﺔ ﺑـﺄن ﻣﻌظـم ﺗﻌﻠﯾﻣﺎﺗﻬـﺎ ﻻ ﺗﺣﺗـوي أﯾـﺔ ﻋﻧـﺎوﯾن .ﺗﺗﻛـون اﻟﺗﻌﻠﯾﻣـﺔ ﻣـن
ﻛود اﻟﻌﻣﻠﯾﺔ ﻓﻘط.
ﻣﺛﻼً :ﺧطوات ﺟﻣﻊ ﻗﯾﻣﺗﯾن ﻣﺧزﻧﺗﯾن ﻓﻲ ﻣواﻗﻊ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ Xو Y
PUSH ;X -١ﻧﻘل ﻣﺣﺗوﯾﺎت اﻟﻣوﻗﻊ Xإﻟﻰ اﻟﻣﻛدس
- ١٥ -
PUSH ;Y -٢ﻧﻘل ﻣﺣﺗوﯾﺎت اﻟﻣوﻗﻊ Yإﻟﻰ اﻟﻣﻛدس
ADD ; -٣ﺟﻣﻊ اﻟﻘﯾﻣﺗﯾن وﺗﺧزﯾن اﻟﻣﺟﻣوع ﻓﻲ ﻗﻣﺔ اﻟﻣﻛدس
ﺗﺟـدر اﻹﺷــﺎرة ﻫﻧــﺎ إﻟــﻰ أن ﻛﺛﯾــر ﻣــن اﻟﺣواﺳــﯾب ﻻ ﯾﻣﻛـن ﺗــﺻﻧﯾﻔﻬﺎ إﻟــﻰ أﺣــد أﻧـواع اﻟﻬﯾﻛﻠﯾــﺎت اﻟــﺳﺎﻟﻔﺔ
اﻟذﻛر وذﻟك ﻟﻛوﻧﻬﺎ ﺗﺟﻣﻊ ﺑﯾن ﺧﺻﺎﺋص ﻋدة أﻧواع ﻣن اﻟﻬﯾﻛﻠﯾﺎت.
- ١٦ -
أ -ﻣﺎ ﻫو أﻗل ﻋدد ﻣن اﻟﺛﻧﺎﺋﯾﺎت ﯾﻠزم ﻟﺗﺷﻔﯾر ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺎت ؟
ب -أرﺳم ﺟدوﻻً ﯾﺑﯾن اﻟﻛود ﻟﻛل ﺗﻌﻠﯾﻣﺔ ؟
ج -ﺣدد ﻧوع داﺋرة ﺗﺣﻠﯾل اﻟﻌﻣﻠﯾﺔ اﻟﻼزﻣﺔ ؟
اﻟﺣل:
m = Log N أ-
ﺑﺗﻌوﯾض N = 8إذن m = 3
وﻫذا ﯾﻌﻧﻲ أﻧﻪ ﯾﻠزم ٣ﺛﻧﺎﺋﯾﺎت ﻟﺗﺷﻔﯾر ﻛل ﻋﻣﻠﯾﺔ.
ب -ﺑﺎﺳﺗﺧدام ٣ﺛﻧﺎﺋﯾﺎت ﯾﻣﻛن ﺗﺷﻔﯾر اﻟﻌﻣﻠﯾﺎت ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
ج -ﻟﺗﺣدﯾـد ﻧـوع اﻟﻌﻣﻠﯾـﺔ اﻟﻼزﻣـﺔ ﯾﻣﻛﻧﻧـﺎ اﺳـﺗﺧدام ﻣﺣﻠـل ﺷـﯾﻔرة ذو ٣ﻣـداﺧل و ٨ﻣﺧـﺎرج (3 to 8
) decoderﻣﺛل 74LS138
أﻣــﺎ ﺣﻘـــل اﻟﻣﻌـــﺎﻣﻼت ،ﻓﯾــﺳﺗﺧدم ﻓــﻲ ﺑﻌــض اﻟﺗﻌﻠﯾﻣــﺎت ﻟﺗﺣدﯾــد اﻟﻣﻌــﺎﻣﻼت اﻟﻣــﺷﺎرﻛﺔ ﻓــﻲ اﻟﻌﻣﻠﯾــﺎت.
ﺣﯾ ــث ﯾﻣﻛ ــن ﻟﻠﺗﻌﻠﯾﻣ ــﺔ أن ﺗﺣﺗ ــوي ﻋﻠ ــﻰ اﻟﻣﻌ ــﺎﻣﻼت ﻧﻔ ــﺳﻬﺎ ﻣﺑﺎﺷـ ـرة أو ﻋﻧـ ـوان اﻟﻣﻌ ــﺎﻣﻼت إذا ﻛﺎﻧ ــت
ﻣﺧزﻧ ـ ـﺔ ﻓـ ــﻲ اﻟـ ــذاﻛرة اﻟرﺋﯾـ ــﺳﺔ أو رﻗـ ــم )اﺳـ ــم( أﺣـ ــد اﻟﻣـ ــﺳﺟﻼت ﻓـ ــﻲ اﻟﻣﻌـ ــﺎﻟﺞ .أي أﻧـ ــﻪ ﯾﻣﻛـ ــن ﺗﺧ ـ ـزﯾن
اﻟﻣﻌﺎﻣﻼت ﻓﻲ أﺣد اﻷﻣﺎﻛن اﻟﺗﺎﻟﯾﺔ:
-اﻟﺗﻌﻠﯾﻣﺔ ﻧﻔﺳﻬﺎ
-اﻟﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض ﻓﻲ اﻟﻣﻌﺎﻟﺞ
-ﻣواﻗﻊ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ
-ﻣﻧﺎﻓذ اﻟﻣداﺧل
ﯾﻌﺗﻣــد طــول اﻟﺗﻌﻠﯾﻣــﺔ ﻋﻠــﻰ :ﻋــدد اﻟﻌﻧــﺎوﯾن ﻓ ــﻲ اﻟﺗﻌﻠﯾﻣــﺔ ،وطرﯾﻘــﺔ اﻟﻌﻧوﻧــﺔ اﻟﻣــﺳﺗﺧدﻣﺔ ﻟﻠﺗﻌﺑﯾــر ﻋ ــن
اﻟﻣﻌﺎﻣﻼت.
أﻣﺎ ﻋدد اﻟﻌﻧﺎوﯾن ﻓﻲ اﻟﺗﻌﻠﯾﻣﺔ ﻓﯾﻌﺗﻣد ﺑدورﻩ ﻋﻠﻰ ﻧوع اﻟﻬﯾﻛﻠﯾﺔ اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﻣﻌﺎﻟﺞ.
وﯾﻣﻛن ﺗﺻﻧﯾف اﻟﺗﻌﻠﯾﻣﺎت ﺣﺳب ﻋدد اﻟﻌﻧﺎوﯾن ﻓﯾﻬﺎ إﻟﻰ اﻷﻧواع اﻟﺗﺎﻟﯾﺔ:
-١ﺗﻌﻠﯾﻣﺎت ﺻﻔرﯾﺔ اﻟﻌﻧوان
-٢ﺗﻌﻠﯾﻣﺎت أﺣﺎدﯾﺔ اﻟﻌﻧوان
-٣ﺗﻌﻠﯾﻣﺎت ﺛﻧﺎﺋﯾﺔ اﻟﻌﻧوان
- ١٧ -
-٤ﺗﻌﻠﯾﻣﺎت ﺛﻼﺛﯾﺔ اﻟﻌﻧوان
أﻧواع اﻟﺗﻌﻠﯾﻣﺎت:
ﺗﺗﻛ ــون اﻟﺗﻌﻠﯾﻣ ــﺔ ﺻ ــﻔرﯾﺔ اﻟﻌﻧـ ـوان ﻣ ــن ﺣﻘ ــل ﻛ ــود اﻟﻌﻣﻠﯾ ــﺔ ﻓﻘ ــط ،ﻟ ــذا ﻓ ــﺈن اﻟﺗﻌﻠﯾﻣ ــﺎت ﺻ ــﻔرﯾﺔ اﻟﻌﻧـ ـوان
ﺗﺳﺗﺧدم ﺑﺷﻛل رﺋﯾﺳﻲ ﻓﻲ اﻟﺣواﺳﯾب ذات اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣﻛدﺳﯾﺔ.
ﺗﺗﻛــون اﻟﺗﻌﻠﯾﻣــﺔ أﺣﺎدﯾــﺔ اﻟﻌﻧ ـوان ﻣــن ﺣﻘﻠــﯾن اﺛﻧــﯾن :اﻷول ﻟﻛــود اﻟﻌﻣﻠﯾــﺔ ،واﻟﺛــﺎﻧﻲ ﻟﻠﻣﻌﺎﻣﻠــﺔ ﻧﻔــﺳﻬﺎ أو
ﻋﻧواﻧﻬﺎ .وﺗﺳﺗﺧدم ﻏﺎﻟﺑﺎً ﻓﻲ اﻟﺣواﺳﯾب ذات اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣرﻛﻣﯾﺔ.
ﺗﺗﻛون اﻟﺗﻌﻠﯾﻣﺔ ﺛﻧﺎﺋﯾﺔ اﻟﻌﻧوان ﻣن ٣ﺣﻘول ﻫﻲ:
-ﺣﻘل ﻛود اﻟﻌﻣﻠﯾﺔ
-ﺣﻘل اﻟﻣﻌﺎﻣﻠﺔ اﻷوﻟﻰ
-ﺣﻘل اﻟﻣﻌﺎﻣﻠﺔ اﻟﺛﺎﻧﯾﺔ
ﺗﺳﺗﺧدم اﻟﺗﻌﻠﯾﻣﺎت ﺛﻧﺎﺋﯾﺔ اﻟﻌﻧوان ﻓﻲ اﻟﺣواﺳﯾب اﻟﺗﻲ ﺗﺣﺗوي ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض.
ﺗﺗﻛون اﻟﺗﻌﻠﯾﻣﺎت ﺛﻼﺛﯾﺔ اﻟﻌﻧوان ﻣن ٤ﺣﻘول ﻫﻲ:
-ﺣﻘل ﻛود اﻟﻌﻣﻠﯾﺔ
-ﺣﻘل اﻟﻣﻌﺎﻣﻠﺔ اﻷوﻟﻰ
-ﺣﻘل اﻟﻣﻌﺎﻣﻠﺔ اﻟﺛﺎﻧﯾﺔ
-ﺣﻘل اﻟﻧﺗﯾﺟﺔ
ﺗﺳﺗﺧدم اﻟﺗﻌﻠﯾﻣﺎت ﺛﻼﺛﯾﺔ اﻟﻌﻧوان ﻓﻲ اﻟﺣواﺳﯾب اﻟﺗﻲ ﺗﺣﺗوي ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض.
ﻟﺗوﺿــﯾﺢ ﺗــﺄﺛﯾر ﻋــدد اﻟﻌﻧــﺎوﯾن ﻋﻠــﻰ طــول اﻟﺑرﻧــﺎﻣﺞ ﺳــوف ﻧﻛﺗــب ﺑراﻣﺟــﺎً ﺑﺎﺳــﺗﺧدام أﻧ ـواع اﻟﺗﻌﻠﯾﻣــﺎت
اﻵﻧﻔﺔ اﻟذﻛر ﻟﺣﺳﺎب اﻟﻌﻼﻗﺔ اﻟرﯾﺎﺿﯾﺔ اﻟﺗﺎﻟﯾﺔ:
)X = (A+B)*(C+D
- ١٨ -
Acc اﻟﻣرﻛم-
R1, R2 ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض-
TOS ﻗﻣﺔ اﻟﻣﻛدس-
M(A),M(B) A,B... ﻣواﻗﻊ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ اﻟﺗﻲ ﺗﺣﺗوي اﻟﻘﯾم-
- ١٩ -
-ﻓﻲ اﻟﺗﻌﻠﯾﻣﺎت ﺻﻔرﯾﺔ اﻟﻌﻧوان ﺗﻧﺟز ﺟﻣﯾﻊ اﻟﺗﻌﻠﯾﻣﺎت ﺑﺎﺳﺗﺧدام اﻟﻣﻛدس.
-ﻓﻲ اﻟﺗﻌﻠﯾﻣﺎت أﺣﺎدﯾﺔ اﻟﻌﻧوان ﺗﻧﺟز ﺟﻣﯾﻊ اﻟﺗﻌﻠﯾﻣﺎت ﺑﺎﺳﺗﺧدام اﻟﻣرﻛم.
-ﻓ ــﻲ اﻟﺗﻌﻠﯾﻣ ــﺎت ﺛﻧﺎﺋﯾ ــﺔ اﻟﻌﻧـ ـوان ﻻ ﯾﺟ ــوز إﺟـ ـراء اﻟﻌﻣﻠﯾ ــﺎت ﻋﻠ ــﻰ اﻟﻘ ــﯾم اﻟﻣﺧزﻧ ــﺔ ﻓ ــﻲ ﻣوﻗ ــﻊ اﻟ ــذاﻛرة
اﻟرﺋﯾ ــﺳﺔ ﻣﺑﺎﺷـ ـرة .ﺑ ــل ﯾﺟ ــب أن ﺗﻛ ــون إﺣ ــدى اﻟﺗﻌﻠﯾﻣ ــﺎت ﻓ ــﻲ أﺣ ــد اﻟﻣ ــﺳﺟﻼت ،واﻟﺛﺎﻧﯾ ــﺔ ﻓ ــﻲ اﻟ ــذاﻛرة
اﻟرﺋﯾﺳﺔ.
-ﯾزداد ﻋدد اﻟﺗﻌﻠﯾﻣﺎت ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ﺑﺗﻘﻠﯾل ﻋدد اﻟﻌﻧﺎوﯾن ﻓﻲ اﻟﺗﻌﻠﯾﻣﺎت.
- ٢٠ -
اﻟوﺣدة اﻟﺛﺎﻧﯾﺔ
ﺑﻧﯾﺔ اﻟﻣﻌﺎﻟﺞ اﻟدﻗﯾق
- ٢١ -
وﺣدة اﻟﺗوﺳط ﺗﺗوﻟﻰ ﻣﻬﻣﺔ ﺗﻧﻔﯾذ اﻟﺧطوات ) (٤،٢،١أﻣﺎ وﺣدة اﻟﺗﻧﻔﯾذ ﻓﺗﻧﻔذ اﻟﺧطوة اﻟﺛﺎﻟﺛﺔ ﻓﻘط.
ﻣن ﻫذﯾن اﻟﺷﻛﻠﯾن ﯾﻣﻛن اﻟوﺻول إﻟﻰ اﻻﺳﺗﻧﺗﺎﺟﺎت اﻟﺗﺎﻟﯾﺔ:
-١ﻓﻌﺎﻟﯾﺔ اﺳﺗﺧدام اﻟﻣﻌﺎﻟﺞ ٨٠٨٠ﺣواﻟﻲ %٥٠
-٢ﻓﻌﺎﻟﯾﺔ اﺳﺗﺧدام اﻟﻧﺎﻗﻠﺔ ﻓﻲ ﻧظﺎم ٨٠٨٠ﺗﺻل إﻟﻰ ﺣواﻟﻲ %٥٠
-٣ﻓﻌﺎﻟﯾﺔ اﺳﺗﺧدام اﻟﻣﻌﺎﻟﺞ واﻟﻧﺎﻗﻠﺔ ﻓﻲ ﻧظﺎم ٨٠٨٨ﺗﺻل إﻟﻰ ﺣواﻟﻲ %١٠٠
وﻫــذا ﯾﻌﻧــﻲ أﻧــﻪ ﻓــﻲ ﻧظــﺎم ٨٠٨٨ﻓــﻲ ﻟﺣظــﺔ زﻣﻧﯾــﺔ ﯾﻌﻣــل اﻟﻣﻌــﺎﻟﺞ واﻟﻧﺎﻗﻠــﺔ ﻣﻌــﺎً ﻋﻠــﻰ اﻟﺗ ـوازي وﻟــﯾس
ﻋﻠﻰ اﻟﺗﻧﺎوب ﻛﻣﺎ ﻫو اﻟﺣﺎل ﻓﻲ ﻧظﺎم .٨٠٨٠
٢-٢وﺣدة اﻟﺗﻧﻔﯾذ : EU
وﺗﺗﻛون ﻣن:
-وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق
-وﺣدة اﻟﺗﺣﻛم ﺑوﺣدة اﻟﺗﻧﻔﯾذ
-ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض
-ﻣﺳﺟل اﻟﺣﺎﻟﺔ
أﻧظر ﺷﻛل )(٣.٢
٣-٢وﺣدة اﻟﻣواﺟﻬﺔ اﻟﺑﯾﻧﯾﺔ : BIU
وﺗﺗﻛون ﻣن:
-داﺋرة اﻟﺟﻣﻊ adder
-ﻣﺟﻣوﻋﺔ اﻟﻣﺳﺟﻼت Peen
-طﺎﺑور اﻟﺗﻌﻠﯾﻣﺎت ------
-وﺣدة اﻟﺗﺣﻛم ﺑوﺣدة اﻟﺗوﺳط
ﺗﺳﺗﺧدم داﺋرة اﻟﺟﻣﻊ واﻟﻣﺳﺟﻼت ﻟﺣﺳﺎب ﻋﻧﺎوﯾن اﻟﺑﯾﺎﻧﺎت
ـﺳﺑﻘﺎ ،وﻋﻠـﻰ اﻟﻧﺣــو
ﯾـﺳﺗﺧدم طـﺎﺑور اﻟﺗﻌﻠﯾﻣــﺎت ﻟﺗﺧـزﯾن اﻟﺗﻌﻠﯾﻣــﺎت )أو ﺟـزء ﻣﻧﻬــﺎ( اﻟﺗـﻲ ﺗــم إﺣـﺿﺎرﻫﺎ ﻣـ ً
اﻟﺗﺎﻟﻲ:
ﻋﻧــدﻣﺎ ﺗﻛــون وﺣــدة اﻟﺗﻧﻔﯾــذ ﻣــﺷﻐوﻟﺔ ﺑﺗﻧﻔﯾــذ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺣﺎﻟﯾــﺔ ﻓــﺈن وﺣــدة اﻟﺗوﺳــط ﺗﺗــوﻟﻰ ﻣﻬﻣــﺔ إﺣــﺿﺎر
اﻟﺗﻌﻠﯾﻣﺔ اﻟﺗﺎﻟﯾﺔ وﺗﺧزﯾﻧﻬﺎ ﻓﻲ طﺎﺑور اﻟﺗﻌﻠﯾﻣﺎت ﻟﺣﯾن اﻻﻧﺗﻬﺎء ﻣـن ﺗﻧﻔﯾـذ اﻟﺗﻌﻠﯾﻣـﺔ اﻟﺣﺎﻟﯾـﺔ .ﻓﻌﻧـدﻣﺎ ﺗﻔـرغ
وﺣــدة اﻟﺗﻧﻔﯾــذ ﻣــن اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺣﺎﻟﯾــﺔ ﻓﺈﻧﻬــﺎ ﺗﻧﺗﻘــل ﻓــوراً إﻟــﻰ ﺗﻧﻔﯾــذ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺗﺎﻟﯾــﺔ اﻟﻣوﺟــودة ﻓــﻲ طــﺎﺑور
اﻟﺗﻌﻠﯾﻣــﺎت وﻫــذا ﺑــدورﻩ ﯾﻠﻐــﻲ زﻣــن اﻧﺗظــﺎر وﺣــدة اﻟﺗﻧﻔﯾــذ اﻟــﻼزم ﻹﺣــﺿﺎر اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺗﺎﻟﯾــﺔ ﻣــن اﻟــذاﻛرة
اﻟرﺋﯾﺳﯾﺔ.
- ٢٢ -
٤-٢ﻧظﺎم اﻟﻧواﻗل : BUS
ﺗﻌﺗﺑــر اﻟﻧﺎﻗﻠــﺔ وﺳــﯾﻠﺔ ﻟ ـرﺑط اﻟوﺣــدات اﻟﻣﻛوﻧــﺔ ﻟﻠﺣﺎﺳــوب ﺑﻌــﺿﻬﺎ ﻣــﻊ ﺑﻌــض ﺑﺎﻹﺿــﺎﻓﺔ ﻟﻛوﻧﻬــﺎ اﻟوﺳــﯾﻠﺔ
اﻟﺗﻲ ﻣن ﺧﻼﻟﻬﺎ ﯾرﺗﺑط اﻟﻣﻌﺎﻟﺞ اﻟدﻗﯾق ﻣﻊ اﻟﻌﺎﻟم اﻟﺧﺎرﺟﻲ.
وﺗﺟدر اﻹﺷﺎرة إﻟﻰ أن ﻋدد ﺧطوط اﻟﺑﯾﺎﻧﺎت ﯾﺣدد ﺳرﻋﺔ ﻧﻘل اﻟﺑﯾﺎﻧﺎت.
-٣اﻟﻣﺳﺟﻼت : Registers
ﯾﺣﺗ ــوي اﻟﻣﻌ ــﺎﻟﺞ اﻟﻣﯾﻛ ــروي ٨٠٨٨/٨٠٨٦ﻋﻠ ــﻰ ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﻣ ــﺳﺟﻼت اﻟﺗ ــﻲ ﺗ ــﺳﺗﺧدم ﻷﻏـ ـراض
اﻟﺣﺎﺳوب وﻻ ﯾﺳﺗطﯾﻊ اﻟﻣﺑرﻣﺞ اﺳﺗﺧداﻣﻬﺎ ﻓﻲ ﺑراﻣﺟﻪ.
ﻣﺛل :ﻣﺳﺟل اﻟﺗﻌﻠﯾﻣﺔ IRواﻟﻣﺳﺟﻼت اﻟﻣؤﻗﺗﺔ.
وﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ﻫذﻩ اﻟﻣﺳﺟﻼت ﯾﺣﺗوي ﻫذا اﻟﻣﻌﺎﻟﺞ ﻋﻠﻰ ﻣﺟﻣوﻋﺔ اﻟﻣـﺳﺟﻼت اﻟﺗـﻲ ﯾـﺳﺗطﯾﻊ اﻟﻣﺑـرﻣﺞ
اﺳﺗﺧداﻣﻬﺎ ﻣﺛل:
Data Reg. -ﻣﺳﺟﻼت اﻟﻣﻌطﯾﺎت
Index & Pointer Reg. -ﻣﺳﺟﻼت اﻟﻔﻬرﺳﺔ واﻟﺗﺄﺷﯾر
Segment Reg. -ﻣﺳﺟﻼت اﻟﻘطﺎﻋﺎت
Program Status Reg. -ﻣﺳﺟﻼت ﺣﺎﻟﺔ اﻟﺑرﻧﺎﻣﺞ
اﺑﺗداء ﻣن اﻟﺻﻔر .وأن اﻟﺛﻧﺎﺋﯾـﺔ اﻟواﻗﻌـﺔ ﻓـﻲ
ً إن اﻟﺛﻧﺎﺋﯾﺎت اﻟﻣﻛوﻧﺔ ﻟﻠﻣﺳﺟل ﺗرﻗم ﻣن اﻟﯾﻣﯾن إﻟﻰ اﻟﯾﺳﺎر
أﻗﺻﻰ ﯾﺳﺎر اﻟﻣﺳﺟل ﺗﺳﺗﺧدم ﻟﺗﻣﺛﯾل إﺷﺎرة اﻟرﻗم.
ﯾــﺳﺗطﯾﻊ اﻟﻣﺑــرﻣﺞ اﺳــﺗﺧدام اﻟﻣــﺳﺟﻼت ﻓــﻲ ﺑراﻣﺟــﻪ اﻟﻣﻛﺗوﺑــﺔ ﺑﻠﻐــﺔ اﻷﺳــﻣﺑﻠﻲ .وﻟﺗﺣﻘﯾــق ﻫــذﻩ اﻹﻣﻛﺎﻧﯾــﺔ
زود ﻛــل ﻣــﺳﺟل ﺑﺎﺳــم ﺧــﺎص ﺑــﻪ ﯾﻣﯾ ـزﻩ ﻋــن ﻏﯾ ـرﻩ ﻣــن اﻟﻣــﺳﺟﻼت ،ﺑﺎﺳــﺗﺛﻧﺎء ﻣــﺳﺟل اﻟﺣﺎﻟــﺔ اﻟــذي ﻻ
ﯾﺣﻣل إﺳم.
١-٣اﻟﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض : General Purpose Reg.
أﻧظر اﻟﺷﻛل )(٤.٢
٢-٣ﻣﺳﺟﻼت اﻟﺗﺄﺷﯾر واﻟﻔﻬرﺳﺔ : Index Reg.
أﻧظر اﻟﺷﻛل )(٤.٢
٣-٣ﻣﺳﺟﻼت اﻟﻘطﺎﻋﺎت : Sndex Reg.
أﻧظر اﻟﺷﻛل )(٤.٢
٣-٣ﻣﺳﺟﻼت ﺣﺎﻟﺔ اﻟﺑرﻧﺎﻣﺞ : Status Reg.
ﺗﺳﺗﺧدم ﻣﺳﺟﻼت ﺣﺎﻟﺔ اﻟﺑرﻧﺎﻣﺞ ﻟﺗﺣدﯾد ﺣﺎﻟﺔ اﻟﺑرﻧﺎﻣﺞ واﻟﺣﺎﺳوب ﺑﻌـد ﺗﻧﻔﯾـذ ﻛـل ﺗﻌﻠﯾﻣـﺔ ﻣـن ﺗﻌﻠﯾﻣـﺎت
اﻟﺑرﻧﺎﻣﺞ .ﺗﺗﻛون ﻫذﻩ اﻟﻣﺟﻣوﻋﺔ ﻣن ﻣﺳﺟﻠﯾن طول ﻛل ﻣﻧﻬﻣﺎ ١٦ﺛﻧﺎﺋﯾﺔ وﻫﻣﺎ:
-ﻣؤﺷر اﻟﺗﻌﻠﯾﻣﺔ )Instruction Pointer (IP
داﺋﻣﺎ إﻟﻰ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺗﺎﻟﯾﺔ ﻓﻲ اﻟﺗﻧﻔﯾذ ﺑﻌد اﻻﻧﺗﻬﺎء ﻣن ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺣﺎﻟﯾﺔ.
ً وﯾﺷﯾر
- ٢٣ -
-ﻣﺳﺟل اﻟراﯾﺎت Flags Reg.
ﯾﺗﻛ ــون ﻣ ــﺳﺟل اﻟراﯾ ــﺎت ﻣ ــن ١٦ﺛﻧﺎﺋﯾ ــﺔ ﯾ ــﺳﺗﺧدم ﻣﻧﻬ ــﺎ ٩ﻓﻘ ــط ،أﻣ ــﺎ ﺑ ــﺎﻗﻲ اﻟﺛﻧﺎﺋﯾ ــﺎت اﻟ ــﺳﺑﻌﺔ ﻓﻬ ــﻲ ﻻ
ﺗـﺳﺗﺧدم ﻓــﻲ اﻟﻣﻌــﺎﻟﺞ ٨٠٨٨/٨٠٨٦وﻟﻘــد ﺗرﻛــت ﻫــذﻩ اﻟراﯾــﺎت ﻟﻠﺗطــوﯾرات اﻟﻣــﺳﺗﻘﺑﻠﯾﺔ أو ﻻﺳــﺗﺧداﻣﺎت
اﻟﻣﺑرﻣﺟﯾن إن ﻟزم ذﻟك.
ﺗﻘﺳم اﻟراﯾﺎت إﻟﻰ ﻣﺟﻣوﻋﺗﯾن:
-راﯾﺎت اﻟﺣﺎﻟﺔ Status Flagsوﻋددﻫﺎ ﺳﺗﺔ
-راﯾﺎت اﻟﺗﺣﻛم Control Flagsوﻋددﻫﺎ ﺛﻼﺛﺔ
ﺗــﺳﺗﺧدم ارﯾــﺎت اﻟﺣﺎﻟــﺔ ﻟﻠﺗﻌﺑﯾــر ﻋــن ﺧــﺻﺎﺋص ﻧﺗــﺎﺋﺞ اﻟﻌﻣﻠﯾــﺎت اﻟﺣــﺳﺎﺑﯾﺔ واﻟﻣﻧطﻘﯾــﺔ ،ﻓطــﺎﻗم ﺗﻌﻠﯾﻣــﺎت
اﻟﻣﻌﺎﻟﺞ ٨٠٨٨/٨٠٨٦ﯾﺗﺿﻣن ﺗﻌﻠﯾﻣﺎت ﻟﻠﺗﺣﻛم ﻓﻲ ﺗﺳﻠـﺳل ﺗﻌﻠﯾﻣـﺎت اﻟﺑرﻧـﺎﻣﺞ ﺑﺎﻻﻋﺗﻣـﺎد ﻋﻠـﻰ ﺣﺎﻟـﺔ
ﻫذﻩ اﻟراﯾﺎت.
ﺗوﺿﯾﺢ ﻣﻌﻧﻰ ﻛل راﯾﺔ:
١٥ ١٤ ١٣ ١٢ ١١ ١٠ ٩ ٨ ٧ ٦ ٥ ٤ ٣ ٢ ١ ٠
X X X X O D I T S Z X A X P X C
- ٢٤ -
-راﯾﺔ اﻟﻣﺻﯾدة ):Trap (T
وﺿـﻊ راﯾــﺔ اﻟﻣـﺻﯾدة ﻓــﻲ ﺣﺎﻟـﺔ " "١ﯾﺣــول اﻟﻣﻌـﺎﻟﺞ إﻟــﻰ أﺳـﻠوب اﻟﺧطــوة ﺧطـوة ،أي اﻟﺗوﻗــف ﺑﻌـد ﺗﻧﻔﯾــذ
ﻛــل ﺗﻌﻠﯾﻣــﺔ .أﻣــﺎ إذا وﺿــﻌت راﯾــﺔ اﻟﻣــﺻﯾدة ﻓــﻲ ﺣﺎﻟــﺔ " "٠ﻓــﺈن اﻟﻣﻌــﺎﻟﺞ ﯾﻧﻔــذ ﺟﻣﯾــﻊ ﺗﻌﻠﯾﻣــﺎت اﻟﺑرﻧــﺎﻣﺞ
ﻣرة واﺣدة ﺑدون ﺗوﻗف.
-راﯾﺔ اﻻﻋﺗراض ):Interrupt (I
ﺗﺣ ــدد ﻫ ــذﻩ اﻟراﯾ ــﺔ إﻣﻛﺎﻧﯾ ــﺔ ﻗﺑ ــول )أو ﻋ ــدم ﻗﺑ ــول( اﻻﻋﺗراﺿ ــﺎت اﻟﻘﺎدﻣ ــﺔ ﻣ ــن وﺣ ــدات اﻟﺣﺎﺳ ــوب إﻟ ــﻰ
اﻟﻣﻌﺎﻟﺞ.
-راﯾﺔ اﻻﺗﺟﺎﻩ ):Direction (D
إذا وﺿﻌت راﯾﺔ اﻻﺗﺟﺎﻩ ﻓﻲ ﺣﺎﻟﺔ " "٠ﻓﺈن ﺳﻼﺳل اﻟرﻣوز ﺗﻌﺎﻟﺞ ﻣن اﻟﯾﺳﺎر إﻟﻰ اﻟﯾﻣﯾن ،واﻟﻌﻛس.
-٤اﻻﻋﺗراﺿﺎت : Interrupts
ﺗ ــﺳﻣﻰ ظ ــﺎﻫرة إﯾﻘ ــﺎف ﺗﻧﻔﯾ ــذ اﻟﺑرﻧـ ــﺎﻣﺞ اﻟﺣ ــﺎﻟﻲ ﺑ ــﺳﺑب ﺣ ــﺎدث ﻣ ــﺎ واﻻﻧﺗﻘـ ــﺎل إﻟ ــﻰ ﺗﻧﻔﯾ ــذ ﺑرﻧ ــﺎﻣﺞ آﺧـ ــر
اﻋﺗراﺿــﺎَ .ﺗﻧﺑــﻊ أﻫﻣﯾــﺔ اﻻﻋﺗراﺿــﺎت ﻣــن ﻛوﻧﻬــﺎ ﺗــوﻓر اﻟظــروف اﻟﻼزﻣــﺔ ﻟﺗﺣﻘﯾــق ﻓﻛ ـرة ﺗﻌددﯾــﺔ اﻟﺑ ـراﻣﺞ
.Multiprogramming
ﯾـ ـ ــﺳﺗطﯾﻊ اﻟﻣﻌـ ـ ــﺎﻟﺞ ٨٠٨٨/٨٠٨٦اﻟﺗﻌﺎﻣـ ـ ــل ﻣـ ـ ــﻊ ٢٥٦ﻧوﻋـ ـ ــﺎً ﻣﺧﺗﻠﻔـ ـ ــﺎً ﻣـ ـ ــن اﻻﻋﺗراﺿـ ـ ــﺎت .ﺗﺣـ ـ ــدث
اﻻﻋﺗراﺿﺎت ﻋﺎدة ﻣن اﻟﻣﺻﺎدر اﻟﺗﺎﻟﯾﺔ:
-وﺣدات اﻹدﺧﺎل واﻹﺧراج واﻟﺗﺧزﯾن )وﺣدات ﺧﺎرﺟﯾﺔ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﻣﻌﺎﻟﺞ(
-ﺗﻌﻠﯾﻣﺎت اﻻﻋﺗراض اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ
-اﻟﻣﻌﺎﻟﺞ ﻧﻔﺳﻪ أو اﻟﻣﻌﺎﻟﺟﺎت اﻷﺧرى
ﻓﻣﻼ :ﺗﺻور أﻧك ﻓﻲ ﻟﯾﻠﺔ اﻻﻣﺗﺣﺎن وﻣﻧﻬﻣﻛﺎً ﻓﻲ دراﺳﺗك .وﻓﺟﺄة ﯾرن ﺟرس اﻟﻬﺎﺗف.
ً
وﻫﻛــذا ﺑﺎﻟﻧــﺳﺑﺔ ﻟﻠﺣﺎﺳــوب .ﻓﺄﺛﻧــﺎء ﺗﻧﻔﯾــذ اﻟﻣﻌــﺎﻟﺞ ﻟﺗﻌﻠﯾﻣــﺎت ﺑرﻧــﺎﻣﺞ ﻣــﺎ ﻓﻌﻧــد وﺻــول إﺷــﺎرة ﻣــن إﺣــدى
وﺣــدات اﻟﺣﺎﺳــوب .ﻓــﺈن اﻟﻣﻌــﺎﻟﺞ ﻗــد ﯾوﻗــف ﺗﻧﻔﯾــذ اﻟﺑرﻧــﺎﻣﺞ وﯾﻧــﺻرف إﻟــﻰ ﻣﻌﺎﻟﺟــﺔ اﻹﺷــﺎرة اﻟواﺻــﻠﺔ
ﻟﻠﺗو .وﺑﻌد اﻻﻧﺗﻬﺎء ﻗد ﯾﻌود اﻟﻣﻌﺎﻟﺞ ﻹﻛﻣﺎل ﺗﻧﻔﯾذ اﻟﺑرﻧـﺎﻣﺞ اﻟـﺳﺎﺑق أو ﯾﻧﻬﯾـﻪ وﯾﻧﺗﻘـل إﻟـﻰ ﺗﻧﻔﯾـذ ﺑرﻧـﺎﻣﺞ
ﺟدﯾد.
ﻣــن ﻫــذا ﻧــﺳﺗﻧﺗﺞ أن ﻫﻧــﺎك أﺣــداث ﯾﻣﻛــن ﻣﻧــﻊ ﺣــدوﺛﻬﺎ أو إﻫﻣﺎﻟﻬــﺎ إذا وﻗﻌــت ،ﻣﺛــل ﺟــرس اﻟﻬــﺎﺗف،
وﻫﻧــﺎك أﺣــداﺛﺎً ﻻ ﯾﻣﻛــن ﻣﻧــﻊ ﺣــدوﺛﻬﺎ أو ﺗﺟﺎﻫﻠﻬــﺎ إذا وﻗﻌــت .ﻣﺛــل ﻫــذﻩ اﻷﺣــداث ﺗــﺳﻣﻰ اﻋﺗراﺿــﺎت
ﻣﻘﻧﻌــﺔ ) .Maskable Interrupts (INTوﻫﻧــﺎك أﺣــداﺛﺎً ﻻ ﯾﻣﻛــن ﻣﻧــﻊ ﺣــدوﺛﻬﺎ أو إﻫﻣﺎﻟﻬــﺎ ﻋﻧــد
ً
وﻗوﻋﻬﺎ .ﻣﺛل ﻫذﻩ اﻷﺣداث ﺗﺳﻣﻰ اﻋﺗراﺿﺎت ﻏﯾر ﻣﻘﻧﻌﺔ .Nonmaskable Interrupts
١-٤ﻛﯾف ﯾﺗﻌرف اﻟﻣﻌﺎﻟﺞ ﻋﻠﻰ اﻻﻋﺗراﺿﺎت :
ﯾﺣﺗـوي اﻟﻣﻌـﺎﻟﺞ ٨٠٨٨/٨٠٨٦ﻋﻠــﻰ ﻣـدﺧﻠﯾن )ﺧطــﯾن( ﻻﺳـﺗﻘﺑﺎل إﺷـﺎرات اﻻﻋﺗراﺿــﺎت اﻟـﺻﺎدرة ﻣــن
اﻟوﺣدات اﻟﺧﺎرﺟﯾﺔ:
- ٢٥ -
اﻟﻣﻘﻧﻌـ ـ ــﺔ وﯾـ ـ ــدار ﺑواﺳـ ـ ــطﺔ وﺣـ ـ ــدة ﺧﺎﺻـ ـ ــﺔ ﺗـ ـ ــﺳﻣﻰ ﻣـ ـ ــﻧظم
-ﺧـ ـ ــط :INTRﯾـ ـ ــﺳﺗﻘﺑل اﻻﻋﺗراﺿـ ـ ــﺎت ُ
اﻻﻋﺗراﺿﺎت.
ﻣﻘﻧﻌـﺔ ،وﺗﻣﺗـﺎز ﻫـذﻩ اﻻﻋﺗراﺿـﺎت ﺑﺧطورﺗﻬـﺎ
-ﺧط :NMIﯾﺧـﺻص ﻻﺳـﺗﻘﺑﺎل اﻻﻋﺗراﺿـﺎت ﻏﯾـر اﻟ ُ
)ﻣﺛل اﻧﻘطﺎع اﻟﺗﯾﺎر اﻟﻛﻬرﺑﺎﺋﻲ واﻛﺗﺷﺎف أﺧطﺎء ﻓﻲ اﻟذاﻛرة(
أﻧظر اﻟﺷﻛل )(٦.٢
ﻣﻣﺎ ﺳﺑق ﯾﻣﻛن أن ﻧﺳﺗﻧﺗﺞ ﻣﺎ ﯾﻠﻲ:
-ﯾﺳﺗﺧدم اﻟﻣﻌﺎﻟﺞ ٨٠٨٨/٨٠٨٦ﻧظﺎم اﻻﻋﺗراﺿﺎت ذي اﻷوﻟوﯾﺔ
-ﺗﺣدد أوﻟوﯾﺔ ﻛل ﻧوع ﻣن اﻻﻋﺗراﺿﺎت ﺣﺳب اﻷﻫﻣﯾﺔ
٢-٤ﺟدول ﻣؤﺷر اﻻﻋﺗراض : Interrupt Pointer Table
٣-٤ﻣﻌﺎﻟﺟﺔ اﻻﻋﺗراﺿﺎت :
ﺗﻌﺗﻣــد ﺑــﺷﻛل رﺋﯾــﺳﻲ ﻋﻠــﻰ ﻧــوع اﻻﻋﺗ ـراض وﺣﺎﻟــﺔ راﯾــﺔ اﻻﻋﺗ ـراض ﻓــﻲ ﻟﺣظــﺔ اﺳــﺗﻘﺑﺎل اﻻﻋﺗـ ـراض.
اﻟﻣﻘﻧﻌﺔ ﻓﻲ اﻟﻣﻌﺎﻟﺞ ٨٠٨٨/٨٠٨٦ﻛﺎﻟﺗﺎﻟﻲ:
وﯾﻣﻛن ﺗﻠﺧﯾص ﻋﻣﻠﯾﺔ ﻣﻌﺎﻟﺟﺔ اﻻﻋﺗراﺿﺎت ُ
-إﻛﻣﺎل ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺣﺎﻟﯾﺔ.
-إﻫﻣــﺎل إﺷــﺎرة اﻻﻋﺗ ـراض واﻻﻧﺗﻘــﺎل إﻟــﻰ ﺗﻧﻔﯾــذ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺗﺎﻟﯾــﺔ إذا ﻛﺎﻧــت راﯾــﺔ اﻻﻋﺗ ـراض ﻓــﻲ ﺣﺎﻟــﺔ
"."٠
-أﻣﺎ إذا ﻛﺎﻧت راﯾﺔ اﻻﻋﺗراض ﻓﻲ ﺣﺎل " "١ﯾﺑدأ اﻟﻣﻌﺎﻟﺞ ﻓوراً ﺗﺣﻠﯾل اﻻﻋﺗراض واﻟﺗﻌﺎﻣل ﻣﻌﻪ.
-اﻻﻧﺗﻘﺎل إﻟﻰ ﺑرﻧﺎﻣﺞ ﺧدﻣﺔ اﻻﻋﺗراض اﻟﻣﻧﺎﺳب وﺗﻧﻔﯾذﻩ.
-اﻟﻌودة إﻟﻰ ﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ اﻟﻣﻌﺗرض.
وﯾﻣﻛن ﺗوﺿﯾﺢ اﻟﻌﻣﻠﯾﺎت اﻟﺗﻲ ﺗﻧﻔذ ﻓﻲ ﺑرﻧﺎﻣﺞ ﺧدﻣﺔ اﻻﻋﺗراض ﻛﻣﺎ ﯾﻠﻲ:
-ﺗﺧزﯾن ﻣﺳﺟل اﻟراﯾﺎت ﻓﻲ اﻟﻣﻛدس.
-ﺗﺣوﯾل راﯾﺔ اﻻﻋﺗراض وراﯾﺔ اﻟﻣﺻﯾدة إﻟﻰ ﺣﺎﻟﺔ " "٠ﻟﻣﻧﻊ ﺣدوث اﻋﺗراﺿﺎت أﺧرى.
-ﺗﺧزﯾن ﻋﻧوان اﻟﻌودة Return Addressﻓﻲ اﻟﻣﻛدس.
-ﺗﻧﻔﯾذ ﻣﻬﺎم ﻣﻌﯾﻧﺔ ﺗﻌﺗﻣد ﻋﻠﻰ ﻧوع اﻻﻋﺗراض.
أﻧظر اﻟﺷﻛل ) (٨.٢ﻣﺧطط ﺳﯾر اﻟﻌﻣﻠﯾﺎت ﻟﻣﻌﺎﻟﺟﺔ اﻻﻋﺗراﺿﺎت
- ٢٦ -
اﻟوﺣدة اﻟراﺑﻌﺔ
ﻣﻘدﻣﺔ إﻟﻰ ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ
أﻣﺎ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﻐﺎت اﻟﺑرﻣﺟﺔ ﻋﺎﻟﯾﺔ اﻟﻣﺳﺗوى ﻓﺗﺗﻛون ﺑراﻣﺟﻬﺎ ﻣـن ﻛﻠﻣـﺎت وﺗﻌـﺎﺑﯾر ﻣـن اﻟﻠﻐـﺎت اﻹﻧـﺳﺎﻧﯾﺔ
ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ اﻟﺗﻌﺎﺑﯾر اﻟرﯾﺎﺿﯾﺔ.
- ٢٧ -
ﺗﻣﺗﺎز ﻟﻐﺎت اﻟﺑرﻣﺟﺔ ﻋﺎﻟﯾﺔ اﻟﻣﺳﺗوى ﺑﺎﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ:
-ﺳﻬوﻟﺔ ﻛﺗﺎﺑﺔ اﻟﺑراﻣﺞ واﻛﺗﺷﺎف وﺗﺻﺣﯾﺢ اﻷﺧطﺎء.
-ﺗﻣﺗﺎز ﺑراﻣﺟﻬﺎ ﺑﺈﻣﻛﺎﻧﯾﺔ ﻧﻘﻠﻬﺎ ﺑﯾن اﻟﺣواﺳﯾب اﻟﻣﺧﺗﻠﻔﺔ.
-ﺗدﻧﻲ ﻓﻌﺎﻟﯾﺗﻬﺎ ﻗﯾﺎﺳﺎً ﺑﻠﻐﺎت اﻷﺳﻣﺑﻠﻲ أو ﻟﻐﺎت اﻵﻟﺔ.
-ﺗﺣﺗﺎج ﺑراﻣﺟﻬﺎ إﻟﻰ ﻣراﺣل ﻣﻌﺎﻟﺟﺔ إﺿﺎﻓﯾﺔ ﺗﺳﺑق ﻋﻣﻠﯾﺔ اﻟﺗﻧﻔﯾذ ﻋﺑر اﻟﻣﺗرﺟﻣﺎت Compilers
ﯾﺳﻣﻰ اﻟﺑرﻧﺎﻣﺞ اﻟﻣﻛﺗوب ﺑﺈﺣـدى ﻟﻐـﺎت اﻟﺑرﻣﺟـﺔ ﻋﺎﻟﯾـﺔ اﻟﻣـﺳﺗوى أو ﻟﻐـﺎت اﻷﺳـﻣﺑﻠﻲ ﺑرﻧﺎﻣﺟـﺎً ﻣـﺻدرﯾﺎً
.Source Programﻓــﻲ ﺣ ــﯾن أن اﻟﺑرﻧ ــﺎﻣﺞ اﻟﻧــﺎﺗﺞ ﻋ ــن ﻋﻣﻠﯾ ــﺔ اﻟﺗرﺟﻣــﺔ ﺑواﺳ ــطﺔ اﻟﻣﺗرﺟﻣ ــﺎت أو
اﻷﺳﻣﺑﻠر ﯾﺳﻣﻰ ﺑرﻧﺎﻣﺟﺎً ﻫدﻓﯾﺎً .Object Program
إن اﺳ ــﺗﺧدام ﻟﻐ ــﺎت اﻟﺑرﻣﺟ ــﺔ ﻋﺎﻟﯾ ــﺔ اﻟﻣ ــﺳﺗوى ﻓ ــﻲ ﺣ ــل أﯾ ــﺔ ﻣ ــﺳﺄﻟﺔ ،ﺗﺗطﻠ ــب ﻣ ــن اﻟﻣﺑ ــرﻣﺞ أن ﯾ ــﺻف
ﺧطـوات اﻟﺣــل ﺑــﺷﻛل ﻣﻔــﺻل ﺑﺣﯾــث ﯾــﺳﺗطﯾﻊ اﻟﺣﺎﺳــوب ﻓﻬــم ﻛــل ﺧطــوة ،.أﻣــﺎ ﻟﻐــﺎت اﻟﺑرﻣﺟــﺔ اﻟﻌﺎﻟﯾــﺔ
ﺟــداً ﻓﯾﻛﻔــﻲ ﺗﺣدﯾــد اﻷواﻣــر اﻟﻼزﻣــﺔ ﻟﻠﺣــل اﻟﺗــﻲ ﺗوﺿــﺢ ﻟﻠﺣﺎﺳــوب ﻣــﺎذا ﯾﺟــب أن ﯾﻔﻌــل ،وﻟــﯾس ﻛﯾــف
ﯾﻔﻌل.
-٣ﻣﻛوﻧﺎت ﻧظﺎم اﻟﺑرﻣﺟﺔ ﺑﻠﻐﺔ اﻷﺳﻣﺑﻠﻲ :
اﻟﻣراﺣل اﻟﺗﻲ ﯾﻣر ﺑﻬﺎ ﺑرﻧﺎﻣﺞ ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ وﻫﻲ ﺷﺎﻣﻠﺔ ﻷي ﺑرﻧﺎﻣﺞ ﺑﻠﻐﺔ اﻷﺳﻣﺑﻠﻲ وﻫﻲ:
اﻟﻣرﺣﻠﺔ اﻷوﻟﻰ :إدﺧﺎل اﻟﺑرﻧﺎﻣﺞ :Program input
ﻧﻘل اﻟﺑرﻧﺎﻣﺞ إﻟﻰ اﻟﺣﺎﺳوب وﺗﺧزﯾﻧﻪ ﻋﻠﻰ اﻟذاﻛرة اﻟﻣﺳﺎﻋدة.
اﻟﻣرﺣﻠﺔ اﻟﺛﺎﻧﯾﺔ :ﺗرﺟﻣﺔ اﻟﺑرﻧﺎﻣﺞ : Program Compilation
ﺗﻬدف ﻫذﻩ اﻟﻣرﺣﻠـﺔ إﻟـﻰ اﻛﺗـﺷﺎف وﺗـﺻﺣﯾﺢ اﻷﺧطـﺎء اﻟﻣطﺑﻌﯾـﺔ واﻟﻘواﻋدﯾـﺔ ،وﻣـن ﺛـم ﺗﺣوﯾـل اﻟﺑرﻧـﺎﻣﺞ
اﻟﻣــﺻدري إﻟــﻰ ﺑرﻧــﺎﻣﺞ ﻫــدﻓﻲ ،ﺣﯾــث ﺗــﺳﺗﻣر ﻋﻣﻠﯾــﺔ اﻻﻧﺗﻘــﺎل ﺑــﯾن ﻣرﺣﻠﺗــﻲ اﻹدﺧــﺎل واﻟﺗرﺟﻣــﺔ ﻟﺣــﯾن
اﻟﺣﺻول ﻋﻠﻰ اﻟﺑرﻧﺎﻣﺞ اﻟﻬدﻓﻲ.
اﻟﻣرﺣﻠﺔ اﻟﺛﺎﻟﺛﺔ :اﻟرﺑط واﻟﺗﺣرﯾر : Program Linking
ﺗﺗم ﻓﻲ ﻫـذﻩ اﻟﻣرﺣﻠـﺔ ﺗرﺟﻣـﺔ اﻻﺳـﺗدﻋﺎءات ﻟﻠﺑـراﻣﺞ اﻟﻣﻛﺗﺑﯾـﺔ أو ﺑـراﻣﺞ أﺧـرى ﻟﻠﻣـﺳﺗﺧدم ﺗﻣـت ﺗرﺟﻣﺗﻬـﺎ
ﺳــﺎﺑﻘﺎً ﺑ ــﺷﻛل ﻣﻧﻔــﺻل ﻋ ــن اﻟﺑرﻧ ــﺎﻣﺞ اﻟﺣــﺎﻟﻲ ،وﻣ ــن ﺛ ــم دﻣﺟﻬــﺎ ﻣ ــﻊ اﻟﺑرﻧ ــﺎﻣﺞ اﻟﺣــﺎﻟﻲ ﻟﺗﻛ ــوﯾن ﺑرﻧ ــﺎﻣﺞ
ﺗﻧﻔﯾذي واﺣد.
اﻟﻣرﺣﻠﺔ اﻟراﺑﻌﺔ :ﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ : Program Execution
ﺗﻬدف ﻣرﺣﻠﺔ اﻟﺗﻧﻔﯾذ إﻟﻰ اﻟﺣﺻول ﻋﻠﻰ اﻟﻧﺗﺎﺋﺞ اﻟﻣطﻠوﺑﺔ.
وﻫﻧﺎك طرﯾﻘﺗﺎن ﻟﺗﻧﻔﯾذ اﻟﺑراﻣﺞ ﻫﻣﺎ:
-اﻟطرﯾﻘﺔ اﻟﻣﺑﺎﺷرة ﻣن ﺧﻼل ﻧظﺎم Dos
-اﺳﺗﺧدام ﺑرﻧﺎﻣﺞ ﻣﻛﺗﺷف اﻷﺧطﺎء Debug
- ٢٨ -
-٤ﺗﻌﻠﯾﻣﺎت اﺳﺗﺧدام ﻧظﺎم اﻷﺳﻣﺑﻠﻲ :
ﺗﻛﺗــﺷف أﺧطــﺎء ﻣرﺣﻠــﺔ اﻟﺗرﺟﻣــﺔ ﺑواﺳــطﺔ ﺑرﻧــﺎﻣﺞ اﻷﺳــﻣﺑﻠر ،MASMوﺗﻧــﺷﺄ ﻫــذﻩ اﻷﺧطــﺎء ﺑــﺳﺑب
ﻣﺧﺎﻟﻔﺔ ﻗواﻋد اﻟﻠﻐﺔ.
وﺣﺳب ﺗﺄﺛﯾر اﻷﺧطﺎء ﻋﻠﻰ ﻋﻣﻠﯾﺔ اﻟﺗرﺟﻣﺔ ﺗﺻﻧف اﻷﺧطﺎء اﻟﻘواﻋدﯾﺔ إﻟﻰ ﻣﺳﺗوﯾﯾن ﻫﻣﺎ:
-أﺧطﺎء ﺗﺣذﯾرﯾﺔ :Warnings
ﺗﺗــﺳﺑب ﻋــﺎدة ﻋــن ﺑﻌــض اﻷﺧطــﺎء اﻟﻣطﺑﻌﯾــﺔ ،ووﺟــود ﻣﺛــل ﻫــذﻩ اﻷﺧطــﺎء ﻻ ﯾﻣﻧــﻊ ﺗﻛــوﯾن اﻟﺑرﻧ ــﺎﻣﺞ
اﻟﻬدﻓﻲ ،ﻏﯾر أﻧﻪ ﻗد ﯾؤدي إﻟﻰ اﻟﺣﺻول ﻋﻠﻰ ﻧﺗﺎﺋﺞ ﺧﺎطﺋﺔ.
-أﺧطﺎء ﺟدﯾﺔ :Sever errors
ﺗﺗﺳﺑب ﻋن ﻣﺧﺎﻟﻔﺔ ﻗواﻋد اﻟﻠﻐﺔ ﻣﺛل زﯾـﺎدة ﻋـدد اﻟﻣﻌـﺎﻣﻼت ﻋـن اﻟﺣـد اﻟﻣطﻠـوب ﻓـﻲ إﺣـدى ﺗﻌﻠﯾﻣـﺎت
ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ ،وﻫذا ﺑدورﻩ ﯾؤدي إﻟﻰ ﻋدم ﺗﻛوﯾن اﻟﺑرﻧﺎﻣﺞ اﻟﻬدﻓﻲ.
أﻣﺎ أﺧطﺎء ﻣرﺣﻠﺔ اﻟرﺑط واﻟﺗﺣرﯾر ﺗﻛﺗﺷف ﺑواﺳـطﺔ ﺑرﻧـﺎﻣﺞ ﺗﺣرﯾـر اﻟوﺻـل ،Linkerﻣﺛـل ﻛﺗﺎﺑـﺔ اﺳـم
اﻟﺑرﻧــﺎﻣﺞ اﻟﻣﻛﺗﺑــﻲ ﺑــﺷﻛل ﺧــﺎطﺊ ،وﻣﺛــل ﻫــذﻩ اﻷﺧطــﺎء ﻻ ﯾﻣﻧــﻊ ﺗﻛــوﯾن اﻟﺑرﻧــﺎﻣﺞ اﻟﺗﻧﻔﯾــذي ،وﻟﻛــن رﺑﻣــﺎ
ﯾؤدي ذﻟك إﻟﻰ ﺣﺻول أﺧطﺎء ﻓﻲ اﻟﻧﺗﺎﺋﺞ أو ﻋدم اﻟﺣﺻول ﻋﻠﻰ أﯾﺔ ﻧﺗﺎﺋﺞ.
أﻣــﺎ ﺑﺎﻟﻧــﺳﺑﺔ إﻟــﻰ أﺧطــﺎء ﻣرﺣﻠــﺔ اﻟﺗﻧﻔﯾــذ ﻓﯾــﺗم اﻛﺗــﺷﺎﻓﻬﺎ ﺑطرﯾﻘــﺔ أوﺗوﻣﺎﺗﯾﻛﯾــﺔ أﺛﻧــﺎء ﻣرﺣﻠــﺔ اﻟﺗﻧﻔﯾــذ ،ﻣﺛــل
اﻟﻘﺳﻣﺔ ﻋﻠﻰ ﺻﻔر ،وﯾﺗم اﻹﺑﻼغ ﻋﻧﻬﺎ.
وﻫﻧــﺎك أﺧطــﺎء ﻣــن ﻧــوع آﺧــر ﺗــﺳﺑب ﺗﻌﻠﯾﻘــﺔ ﻓــﻲ اﻟﺑرﻧــﺎﻣﺞ ﻣﺛــل اﻟــدوران اﻟﻼﻧﻬــﺎﺋﻲ ﻫــذا ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ
اﻷﺧطﺎء اﻟﺑرﻣﺟﯾﺔ اﻟﺗﻲ ﺗؤدي إﻟﻰ ﻧﺗﺎﺋﺞ ﺧﺎطﺋﺔ.
إن أﺧطﺎء ﻣرﺣﻠﺔ اﻟﺗﻧﻔﯾذ ﺗﻌﺗﺑر ﻣن أﺧطر أﻧواع اﻷﺧطـﺎء وأﻛﺛرﻫـﺎ ﺗﻌﻘﯾـداً ﻣـن ﺣﯾـث ﺻـﻌوﺑﺔ اﻛﺗـﺷﺎﻓﻬﺎ
وﺗﺄﺛﯾرﻫ ــﺎ اﻟﻣﺑﺎﺷ ــر ﻋﻠ ــﻰ اﻟﻧﺗ ــﺎﺋﺞ اﻟﺗ ــﻲ ﺗ ــﺳﺗﺧدم ﻓ ــﻲ اﺗﺧ ــﺎذ اﻟﻘـ ـرارات .وﻓ ــﻲ ﻛﺛﯾ ــر ﻣ ــن اﻷﺣﯾ ــﺎن ﺗ ــﺳﻣﻰ
أﺧطﺎء ﻫذﻩ اﻟﻣرﺣﻠﺔ ﺑﺎﻷﺧطﺎء اﻟﻣﻧطﻘﯾﺔ ﻻرﺗﺑﺎطﻬﺎ اﻟﻣﺑﺎﺷر ﺑﻣﻧطق اﻟﺑرﻧﺎﻣﺞ.
- ٢٩ -
-٦ﻋﻧﺎﺻر وﻣﻛوﻧﺎت ﺗﻘرﯾر اﻷﺳﻣﺑﻠر : Assembly Listing
ﯾﺗﻛ ــون ﺗﻘرﯾ ــر اﻷﺳ ــﻣﺑﻠر ﻣ ــن اﻟﺑرﻧ ــﺎﻣﺞ اﻟﻣ ــﺻدري ،واﻟﺑرﻧ ــﺎﻣﺞ اﻟﻬ ــدﻓﻲ ،وﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﺟ ــداول اﻟﺗ ــﻲ
ﺗﺣﺗــوي ﻣﻌﻠوﻣــﺎت ﺣــول ﻋﻧﺎﺻــر اﻟﺑرﻧــﺎﻣﺞ اﻟﻣﺧﺗﻠﻔــﺔ ﻣﺛــل أﺳــﻣﺎء اﻟﻘطﺎﻋــﺎت وﺣﺟﻣﻬــﺎ ،أﺳــﻣﺎء اﻟﻣــﺎﻛرو
وﺣﺟﻣﻬﺎ ...وﻏﯾرﻫﺎ.
ﯾﺗﻛون اﻟﺳطر ﻓﻲ ﺗﻘرﯾر ﺑرﻧﺎﻣﺞ اﻷﺳﻣﺑﻠر ﻣن ﺛﻼﺛﺔ ﻋﻧﺎﺻر ﻫﻲ:
اﻟﺟﻣﻠﺔ اﻟﻣﺻدرﯾﺔ ...اﻟﻛود ...اﻹ زاﺣﺔ
اﻹ زاﺣﺔ ﻫﻲ ﻣﻘدار اﻟﻣﺳﺎﻓﺔ ﺑﺎﻟﺑﺎﯾت ﺑﯾن ﻛل ﺟﻣﻠﺔ وﺑداﯾﺔ اﻟﻘطﺎع اﻟذي ﯾﺣﺗوي ﺗﻠك اﻟﺟﻣﻠﺔ.
أﻣــﺎ اﻟﻛــود ﻓﻬــو ﻋﺑــﺎرة ﻋــن أرﻗــﺎم ﻓــﻲ اﻟﻧظــﺎم اﻟــﺳﺎدس ﻋــﺷري ﺗﻣﺛــل اﻟﻌﻣﻠﯾــﺔ اﻟﻣﺗــﺿﻣﻧﺔ ﻓــﻲ اﻟﺗﻌﻠﯾﻣــﺔ
وﻋﻧﺎوﯾن اﻟﻣﻌﺎﻣﻼت اﻟﻣﺷﺎرﻛﺔ ﻓﻲ اﻟﻌﻣﻠﯾﺔ ﻧﻔﺳﻬﺎ.
ٕواﻟﻰ ﯾﻣﯾن اﻟﻛود ﺗﻘﻊ اﻟﺟﻣﻠﺔ اﻟﻣﺻدرﯾﺔ اﻟﻣﻛﺗوﺑﺔ ﺑﻠﻐﺔ اﻷﺳﻣﺑﻠﻲ.
وﻓــﻲ ﺣﺎﻟــﺔ ﺣــدوث أﺧطــﺎء ﻓــﻲ ﺗرﺟﻣــﺔ أﯾــﺔ ﺟﻣﻠــﺔ ﺗظﻬــر ﻓــوراً ﺑﻌــد اﻟﺟﻣﻠــﺔ اﻟﺧﺎطﺋــﺔ رﺳــﺎﻟﺔ اﻟﺧطــﺄ اﻟﺗــﻲ
ﺗﺣﺗوي رﻗم اﻟﺳطر ،ورﻗم اﻟﺧطﺄ ،ووﺻف ﻟﻠﺧطﺄ ﺑﻣﺎ ﻻ ﯾزﯾد ﻋن ﺳطر أو ﺳطرﯾن.
وﯾﻠــﻲ اﻟﺑرﻧ ــﺎﻣﺞ اﻟﻣ ــﺻدري واﻟﻬ ــدﻓﻲ داﺋﻣــﺎً ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﺟ ــداول ﺗظﻬــر ﻓ ــﻲ ﻣﻠ ــف ﺗﻘرﯾ ــر اﻷﺳ ــﻣﺑﻠﻲ
ﺣﺳب ﺣﺎﺟﺔ اﻟﻣﺑرﻣﺞ ﻣﺛل:
-ﺟدول اﻟﻣﺎﻛرو
-ﺟدول اﻟﻘطﺎﻋﺎت واﻟﻣﺟوﻋﺎت
-ﺟدول اﻟرﻣوز
وﯾﻠـﻲ ﻫـذﻩ اﻟﺟـداول ﻣﻌﻠوﻣــﺎت إﺣـﺻﺎﺋﯾﺔ ﺣـول اﻟﺑرﻧــﺎﻣﺞ ﻣﺛـل :ﻋـدد ﺳــطور اﻟﺑرﻧـﺎﻣﺞ اﻟﻣـﺻدري ،وﻋــدد
اﻟرﻣوز اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ،وﻋدد اﻷﺧطﺎء ﻣن اﻷﻧواع اﻟﺗﺣذﯾرﯾﺔ أو اﻟﺟدﯾﺔ إن وﺟدت.
- ٣٠ -
١-٧اﻟﺛواﺑت : Constants
-اﻟﺛواﺑت اﻟرﻣزﯾﺔ:
اﻟﺛﺎﺑــت اﻟرﻣــزي ﻫــو رﻣــز واﺣــد أو ﺳﻠــﺳﻠﺔ ﻣــن اﻟرﻣــوز اﻟﻣﻛﺗوﺑــﺔ ﺑــﯾن ﺣﺎﺻ ـرﺗﯾن ﻋﻠــﻰ اﻟﻧﺣــو اﻟﺗــﺎﻟﻲ:
' ،'Charactersﯾﻌ ــرف ط ــول اﻟﺛﺎﺑ ــت اﻟرﻣ ــزي ﺑﻌ ــدد اﻟرﻣ ــوز اﻟﻣﻛوﻧ ــﺔ ﻟ ــﻪ ﺑ ــدون اﻟﺣﺎﺻـ ـرﺗﯾن ،ﺗﻣﺛ ــل
اﻟرﻣوز اﻟﻣﻛوﻧﺔ ﻟﻠﺛﺎﺑت ﻓﻲ ﻧظﺎم ASCIIﺑﺑﺎﯾت واﺣد ﻟﻛل رﻣز.
-اﻟﺛواﺑت اﻟﻌددﯾﺔ:
ﺗﺳﺗﺧدم اﻟﺛواﺑت اﻟﺻﺣﯾﺣﺔ ﻟﺗﻣﺛﯾل اﻷﻋداد اﻟﺻﺣﯾﺣﺔ وﺗﻛﺗب ﻓـﻲ ﻧظـﺎم اﻟﻌـدد اﻟﺛﻧـﺎﺋﻲ ،أو اﻟﺛﻣـﺎﻧﻲ ،أو
اﻟﻌﺷري ،أو اﻟﻧظﺎم اﻟﺳﺎدس ﻋﺷري.
ﯾﻛﺗب اﻟﺛﺎﺑت اﻟﺛﻧﺎﺋﻲ ﻛﺳﻠﺳﻠﺔ ﻣن اﻷﺻﻔﺎر واﻟواﺣدات ﻣﺗﺑوﻋﺔ ﺑﺎﻟﺣرف ) (Bأو ) (bﻣﺛل:
).(101001b) ،(101B
ﯾﺣﺗوي اﻟﺛﺎﺑت اﻟﺛﻣﺎﻧﻲ اﻷرﻗﺎم ) (0-7وﯾﺗﺑﻊ ﺑﺎﻟﺣرف ) (Qﻣﺛل.(37Q) :
أﻣﺎ اﻟﺛﺎﺑت اﻟﻌﺷري ﻓﯾﺣﺗوي اﻷرﻗﺎم ) (0-9وﯾﺗﺑﻊ ﺑﺎﻟﺣرف ) (Dأو ) (dأو ﺑدون ﺣرف ﻣﺛل:
).(102) ،(1994D
واﻟﺛﺎﺑــت اﻟــﺳﺎدس ﻋــﺷري ﯾﻛﺗــب ﻛﺳﻠــﺳﻠﺔ ﻣــن اﻷرﻗــﺎم ) A-Fو (٠-٩ﻣﺗﺑوﻋــﺔ ﺑــﺎﻟﺣرف ) (Hأو )(h
ﻣﺛل ،(0A79H ،3CH) :ﻣﻊ ﻣﻼﺣظﺔ أن اﻟﺛﺎﺑت اﻟﺳﺎدس ﻋﺷري ﯾﺟـب أن ﯾـﺳﺑق ﺑـﺎﻟرﻗم ﺻـﻔر ﻓـﻲ
ﺣﺎﻟﺔ اﺑﺗداﺋﻪ ﺑﺄﺣد اﻟﺣروف ) (A-Fﻟﺗﻣﯾﯾزﻩ ﻋن أﺳﻣﺎء اﻟﻣﺗﻐﯾرات.
٢-٧اﻷﺳﻣﺎء : Names
ﺗــﺳﺗﺧدم اﻷﺳــﻣﺎء ﻓــﻲ ﻟﻐــﺔ اﻷﺳــﻣﺑﻠﻲ ﺑــﺷﻛل واﺳــﻊ وﺗﻌﺑــر ﻋــن أﺳــﻣﺎء اﻟﻣﺗﻐﯾ ـرات ،وأﺳــﻣﺎء اﻟﻘطﺎﻋــﺎت،
وأﺳﻣﺎء اﻹﺟراءات ،وأﺳﻣﺎء اﻟوﺳﺎﻣﺎت ،وأﺳﻣﺎء اﻟﻣﺎﻛرو.
ﻋﻧد اﺧﺗﯾﺎر اﻷﺳﻣﺎء ﻟﻠﺗﻌﺑﯾر ﻋن ﻫذﻩ اﻟﻌﻧﺎﺻر ﯾﺟب ﻣراﻋﺎة ﻣﺎ ﯾﻠﻲ:
-ﯾﺻل طول اﻹﺳم ﻟﻐﺎﯾﺔ ) (٣١رﻣز.
-ﯾﺗﻛون اﻻﺳم ﻣن اﻟﺣروف ،واﻷرﻗﺎم ،وﺑﻌض اﻟرﻣوز اﻟﺧﺎﺻﺔ.
-اﻟرﻣز اﻷول ﻓﻲ اﻻﺳم ﯾﺟب أن ﯾﻛون ﺣرﻓﺎً أو أﺣد اﻟرﻣوز اﻟﺧﺎﺻﺔ أو اﻟﻧﻘطﺔ.
-ﻻ ﯾﺟوز اﺧﺗﯾﺎر أﺳﻣﺎء ﻣطﺎﺑﻘﺔ ﻷﺳﻣﺎء اﻟﻛﻠﻣﺎت اﻟﻣﺣﺟوزة.
٣-٧أدوات اﻟﻌﻣﻠﯾﺎت : Operators
ﺗﺻﻧف اﻟﻌﻣﻠﯾﺎت اﻟﺗﻲ ﯾﻣﻛن أن ﺗﺳﺗﺧدم ﻓﻲ ﺗﻌﺎﺑﯾر ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ إﻟﻰ ٥ﻣﺟﻣوﻋﺎت ﻫﻲ:
Arithmetic Operators -١اﻟﻌﻣﻠﯾﺎت اﻟﺣﺳﺎﺑﯾﺔ
Operators Logical -٢اﻟﻌﻣﻠﯾﺎت اﻟﻣﻧطﻘﯾﺔ
Relational Operators -٣اﻟﻌﻣﻠﯾﺎت اﻟﻧﺳﺑﯾﺔ
Value-Returning Operators -٤ﻋﻣﻠﯾﺎت إرﺟﺎع اﻟﻘﯾﻣﺔ
- ٣١ -
Attribute Operators -٥ﻋﻣﻠﯾﺎت اﻟﺻﻔﺎت
ﺗﺷﻣل اﻟﻌﻣﻠﯾﺎت اﻟﺣﺳﺎﺑﯾﺔ ﻣﺎ ﯾﻠﻲ:
Value1 + Value2 -ﻋﻣﻠﯾﺔ اﻟﺟﻣﻊ
Value1 - Value2 -ﻋﻣﻠﯾﺔ اﻟطرح
Value1 * Value2 -ﻋﻣﻠﯾﺔ اﻟﺿرب
Value1 / Value2 -ﻋﻣﻠﯾﺔ اﻟﻘﺳﻣﺔ
-ﻋﻣﻠﯾﺎت ﺑﺎﻗﻲ اﻟﻘﺳﻣﺔ Value1 MOD Value2
ﺗﺷﻣل اﻟﻌﻣﻠﯾﺎت اﻟﻣﻧطﻘﯾﺔ ﻣﺎ ﯾﻠﻲ:
NOT Value -ﻋﻣﻠﯾﺔ اﻟﻧﻔﻲ NOT
ﺗؤدي ﻫذﻩ اﻟﻌﻣﻠﯾﺔ إﻟﻰ ﻋﻛس ﻗﯾﻣﺔ ﻛل ﺑت ﻓﻲ اﻟﻘﯾﻣﺔ.
Value1 AND Value2 -ﻋﻣﻠﯾﺔ اﻟﺿرب AND
ﺗؤدي إﻟﻰ ﺗﻧﻔﯾذ ﻋﻣﻠﯾﺔ اﻟﺿرب اﻟﻣﻧطﻘﻲ ﻋﻠﻰ ﻛل ﺑت ﻣن اﻟﻘﯾﻣﺗﯾن اﻟﻣﺷﺎرﻛﺗﯾن ﻓﻲ اﻟﻌﻣﻠﯾﺔ.
Value1 OR Value2 -ﻋﻣﻠﯾﺔ اﻟﺟﻣﻊ اﻟﻣﻧطﻘﻲ OR
ﺗؤدي ﻋﻣﻠﯾﺔ اﻟﺟﻣﻊ اﻟﻣﻧطﻘﻲ ﻋﻠﻰ ﻛل ﺑت ﻓﻲ اﻟﻘﯾﻣﺗﯾن اﻟﻣﺷﺎرﻛﺗﯾن ﻓﻲ اﻟﻌﻣﻠﯾﺔ.
Value1 SHR Value2 -ﻋﻣﻠﯾﺔ اﻹزاﺣﺔ إﻟﻰ اﻟﯾﻣﯾن
ﺗــؤدي إﻟــﻰ إزاﺣــﺔ اﻟﻘﯾﻣــﺔ اﻷوﻟــﻰ إﻟــﻰ اﻟﯾﻣــﯾن ﺑﻣﻘــدار اﻟﻘﯾﻣــﺔ اﻟﺛﺎﻧﯾــﺔ وﺗﻣــﻸ اﻟﺑﺗــﺎت ﻓــﻲ أﻗــﺻﻰ اﻟﯾــﺳﺎر
ﺑﺎﻷﺻﻔﺎر.
Value1 SHL Value2 -ﻋﻣﻠﯾﺔ اﻹزاﺣﺔ إﻟﻰ اﻟﯾﺳﺎر
ﺗــؤدي إﻟــﻰ إزاﺣــﺔ اﻟﻘﯾﻣــﺔ اﻷوﻟــﻰ إﻟــﻰ اﻟﯾــﺳﺎر ﺑﻣﻘــدار اﻟﻘﯾﻣــﺔ اﻟﺛﺎﻧﯾــﺔ وﺗﻣــﻸ اﻟﺑﺗــﺎت ﻓــﻲ أﻗــﺻﻰ اﻟﯾﻣــﯾن
ﺑﺎﻷﺻﻔﺎر.
ﺗﺳﺗﺧدم اﻟﻌﻣﻠﯾﺎت اﻟﻧﺳﺑﯾﺔ ﻟﻣﻘﺎرﻧﺔ ﻗﯾﻣﺗﯾن ﻟﺗﺣدﯾـد اﻟﻌﻼﻗـﺔ ﺑﯾﻧﻬﻣـﺎ وﺗﻛـون ذات ﺻـﯾﻐﺔ اﺳـﺗﻔﻬﺎﻣﯾﺔ،
وﺗﺷﻣل ﻫذﻩ اﻟﻌﻣﻠﯾﺎت:
NE, EQ, GE, LE, GT, LT
ﺗــﺳﺗﺧدم ﻋﻣﻠﯾــﺎت إرﺟـــﺎع اﻟﻘــﯾم ﻟﺗﺣدﯾــد ﺑﻌـــض اﻟﻣﻌﻠوﻣــﺎت اﻟﺗــﻲ ﺗﺧـــص اﻟﻣﺗﻐﯾــرات أو اﻟوﺳـــﺎﻣﺎت
اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﺑراﻣﺞ وﺗﺿم ﻫذﻩ اﻟﻣﺟﻣوﻋﺔ اﻟﻌﻣﻠﯾﺎت اﻵﺗﯾﺔ:
- ٣٢ -
-ﻋﻣﻠﯾﺔ :TYPE
ﺗﺳﺗﺧدم ﻫذﻩ اﻟﻌﻣﻠﯾﺔ ﻟﺗﺣدﯾد طول اﻟﻣﺗﻐﯾر أو ﻧوع اﻟوﺳﺎم.
) (TYPE T2ﯾﻌطﻲ اﻟﻘﯾﻣﺔ ) (١إذا ﻛﺎن اﻻﺳم T2ﯾﻌﺑر ﻋن ﻣﺗﻐﯾر طوﻟﻪ ﺑﺎﯾت واﺣد
ﺑﻌﯾدا
ً ) (TYPE T3ﯾﻌطﻲ اﻟﻘﯾﻣﺔ ) (١-إذا ﻛﺎن اﻟوﺳﺎم T3ﻗرﯾﺑﺎً أو اﻟﻘﯾﻣﺔ ) (٢-إذا ﻛﺎن اﻟوﺳﺎم
-ﻋﻣﻠﯾﺔ :LENGTH
ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﻌﻣﻠﯾــﺔ ﻟﺗﺣدﯾــد ﻋــدد وﺣــدات اﻟــذاﻛرة )ﺑﺎﯾﺗــﺎت أو ﻛﻠﻣــﺎت( اﻟﺗــﻲ ﯾﺣﺗﻠﻬــﺎ اﻟﻣﺗﻐﯾــر اﻟﻣﻌــرف
ﺑواﺳطﺔ اﻟﻌﻣﻠﯾﺔ ) (dupﻓﻣﺛﻼً إذا ﻛﺎن اﻟﻣﺗﻐﯾر ) (T4ﻣﻌرﻓﺎً ﺣﺳب اﻟﺟﻣﻠﺔ اﻟﺗﺎﻟﯾﺔ:
T4 )DW 100 DUP (3
ﻓﺎﻟﻌﻣﻠﯾﺔ ) (LENGTH T4ﺗؤدي إﻟﻰ اﻟﺣﺻول ﻋﻠﻰ اﻟﻘﯾﻣﺔ ).(١٠٠
-ﻋﻣﻠﯾﺔ :SIZE
ﺗـﺳﺗﺧدم ﻟﺗﺣدﯾـد ﻋـدد اﻟﺑﺎﯾﺗـﺎت اﻟﺗـﻲ ﯾﺣﺗﻠﻬـﺎ اﻟﻣﺗﻐﯾـر اﻟﻣﻌـرف ﺑواﺳـطﺔ .DUPﻓﺎﻟﻌﻣﻠﯾـﺔ )(SIZE T4
ﺗــؤدي إﻟــﻰ اﻟﺣــﺻول ﻋﻠــﻰ اﻟﻘﯾﻣــﺔ ) .٢٠٠ﺣﯾــث أن ﻧﺗﯾﺟــﺔ ﻋﻣﻠﯾــﺔ SIZEﻫــﻲ ﺣﺎﺻــل ﺿــرب ﻧﺗﯾﺟــﺔ
ﻋﻣﻠﯾﺔ ) (LENGTHوﻧﺗﯾﺟﺔ ﻋﻣﻠﯾﺔ ).(TYPE
ﺗﺳﺗﺧدم ﻋﻣﻠﯾـﺎت اﻟـﺻﻔﺎت ﻟﺗﺧطـﻲ اﻟـﺻﻔﺎت اﻻﻋﺗﯾﺎدﯾـﺔ اﻟﻣﻔﻬوﻣـﺔ ﺿـﻣﻧﺎً ﻟـﺑﻌض ﻋﻧﺎﺻـر اﻟﺑرﻧـﺎﻣﺞ
ﻣﺛل اﻟوﺳﺎم أو ﻧوع اﻟﻘطﺎع اﻟﻣﺳﺗﺧدم .وﺗﺿم ﻫذﻩ اﻟﻣﺟﻣوﻋﺔ اﻟﻌﻣﻠﯾﺎت اﻵﺗﯾﺔ:
-ﻋﻣﻠﯾﺔ :PTR
ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﻌﻣﻠﯾــﺔ ﻟﺗﺧطــﻲ ﺻــﻔﺔ اﻟﻣﻌﺎﻣﻠــﺔ )ﺑﺎﯾــت أو ﻛﻠﻣــﺔ( أو ﺻــﻔﺔ اﻟﻣــﺳﺎﻓﺔ ﻟﻠﻣﻌﺎﻣﻠــﺔ )ﻗرﯾــب أو
ﺑﻌﯾد(.
-ﻋﻣﻠﯾﺔ ﺗﺧطﻲ ﻧوع اﻟﻘطﺎع ES: , SS: , DS: , CS:
ﻷﻏراض اﻟوﺻول إﻟﻰ أي ﺑﺎﯾت ﯾﻠزم ﺣﺳﺎب اﻟﻌﻧوان اﻟطﺑﯾﻌﻲ ﻟﻪ.
-ﻋﻣﻠﯾﺔ :SHORT
ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﻌﻣﻠﯾــﺔ ﻟﺗﺣدﯾــد ﻧــوع اﻟﻣﻌﺎﻣﻠــﺔ ﻓــﻲ ﺑﻌــض اﻟﺗﻌﻠﯾﻣــﺎت ﺑﺣﯾــث ﯾﻛــون ﻣــدى ﻫــذﻩ اﻟﻣﻌﺎﻣﻠــﺔ
ﻣﺣﺻور ﺑﯾن ) (-128 , +127ﺑﺎﯾت.
-ﻋﻣﻠﯾﺔ :LOW , HIGH
ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﻌﻣﻠﯾــﺎت ﻻﺳ ــﺗﻧﺑﺎط اﻟﺑﺎﯾــت اﻷﯾﻣــن ) (LOWأو اﻟﺑﺎﯾ ــت اﻷﯾــﺳر ) (HIGHﻣــن ﻗﯾﻣ ــﺔ
طوﻟﻬﺎ ﻛﻠﻣﺔ واﺣدة ) ٢ﺑﺎﯾت(.
-ﻋﻣﻠﯾﺔ :THIS
ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﻌﻣﻠﯾــﺔ ﻟﺗﻌرﯾــف ﻣﻌﺎﻣﻠــﺔ طوﻟﻬــﺎ ﺑﺎﯾــت أو ﻛﻠﻣــﺔ وٕاﻋطﺎﺋﻬــﺎ ﻗــﯾم اﻹزاﺣــﺔ واﻷﺳــﺎس ﻟﻠﻘﯾﻣــﺔ
اﻟﺗﺎﻟﯾﺔ.
- ٣٣ -
-٨اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺟﻣﻠﺔ ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ :
ﺗﺗﻛون اﻟﺟﻣﻠﺔ ﻣن أرﺑﻌﺔ ﺣﻘول:
-ﺣﻘل اﻟوﺳﺎم أو اﻻﺳم :Label
ﯾﺳﺗﺧدم ﻫذا اﻟﺣﻘل ﻟﺗﺣدﯾد ﻋﻼﻣﺔ )وﺳﺎم( ﻹﺣدى ﺟﻣل اﻟﺑرﻧﺎﻣﺞ وﻻ ﯾزﯾد ﻋن ٣١رﻣزًا.
وﯾﻔﺻل ﺣﻘل اﻟوﺳﺎم ﻋن اﻟﺣﻘل اﻟﺗﺎﻟﻲ ﺑواﺳطﺔ اﻟﻔراﻏﺎت أو اﻟﻧﻘطﺗﯾن اﻟرأﺳﯾﺗﯾن ".":
-ﺣﻘل اﻟﻌﻣﻠﯾﺔ :Operation
ﯾﺳﺗﺧدم ﻟﺗﺣدﯾد ﻧوع اﻟﻌﻣﻠﯾﺔ اﻟﻣﻣﺛﻠﺔ ﻓﻲ اﻟﺟﻣﻠﺔ .وﯾﺻل طوﻟﻪ ﻟﻐﺎﯾﺔ ٢٠رﻣز.
-ﺣﻘل اﻟﻣﻌﺎﻣﻼت :Operands
ﯾﺳﺗﺧدم ﻟﺗﺣدﯾد ﻣواﻗﻊ ﺗﺧزﯾن اﻟﻘﯾم اﻟﻣﺷﺎرﻛﺔ ﻓﻲ اﻟﻌﻣﻠﯾﺔ واﻟﻘﯾم اﻟﻧﺎﺗﺟﺔ ﺑﻌد ﺗﻧﻔﯾذ اﻟﻌﻣﻠﯾﺔ.
-ﺣﻘل اﻟﻣﻼﺣظﺎت :Comments
ﻟﻛﺗﺎﺑﺔ اﻟﻣﻼﺣظﺎت ﻟزﯾﺎدة اﺳﺗﯾﻌﺎب اﻟﺑرﻧﺎﻣﺞ ﻟدى اﻟﻣﺳﺗﺧدﻣﯾن ﻣﺛل .Basic
-٩ﺟﻣل ﺑرﻧﺎﻣﺞ اﻷﺳﻣﺑﻠﻲ :
ﺗﺻﻧف إﻟﻰ ﺛﻼث أﻧواع:
-اﻟﺗوﺟﯾﻬﺎت Directives
-اﻟﺗﻌﻠﯾﻣﺎت Instructions
-اﻟﺗﻌﻠﯾﻣﺎت اﻟﻣﺗﺳﻌﺔ Macrocalls
اﻟﺗوﺟﯾﻬـــﺎت ﻋﺑـــﺎرة ﻋـــن أواﻣـــر ﺗﻧﻔـــذ ﻣـــن ﻗﺑـــل ﺑرﻧـــﺎﻣﺞ اﻷﺳـــﻣﺑﻠر ﻓـــﻲ ﻣرﺣﻠـــﺔ اﻟﺗرﺟﻣـــﺔ وﺗـــﺳﺗﺧدم
ﻟﻸﻏراض اﻟﺗﺎﻟﯾﺔ:
-ﺑﻧﺎء وﺗﺣدﯾد ﻗطﺎﻋﺎت اﻟذاﻛرة واﻹﺟراءات
-ﺗﻌرﯾف اﻷﺳﻣﺎء اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ
-ﺣﺟز ﻣواﻗﻊ ﻓﻲ اﻟذاﻛرة ﻟﻠﻣﻌطﯾﺎت واﻟﻧﺗﺎﺋﺞ
-اﻟﺗﺣﻛم ﺑﻌﻣﻠﯾﺔ اﻟﺗرﺟﻣﺔ
-ﺗﺣدﯾد ﻋدد اﻟﺳطور ﻓﻲ ﺻﻔﺣﺎت ﺗﻘرﯾر اﻷﺳﻣﺑﻠر
-ﺗﺣدﯾد ﻋدد اﻟرﻣوز ﻓﻲ ﺳطور ﺻﻔﺣﺎت ﺗﻘرﯾر اﻷﺳﻣﺑﻠر
إن ﻣﻌظم اﻟﺗوﺟﯾﻬﺎت ﻻ ﺗؤدي إﻟﻰ ﺗﻛوﯾن ﻛود ﻫدﻓﻲ ﺑﺳﺑب ﻛوﻧﻬـﺎ ﺟﻣـل إﺧﺑﺎرﯾـﺔ ﺿـرورﯾﺔ ﻓـﻲ ﻋﻣﻠﯾـﺔ
اﻟﺗرﺟﻣﺔ.
ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ ﻟﻠﻣﻌﺎﻟﺞ 8086/8088ﺗﺣﺗوي ﺣواﻟﻲ ٦٠ﺗوﺟﯾﻬﺔ ،ﺳﯾﺗم ﺷرﺣﻬﺎ ﻻﺣﻘﺎً.
اﻟﺗﻌﻠﯾﻣــﺎت ﻫــﻲ أواﻣــر ﺗﻧﻔــذ ﻣــن ﻗﺑــل اﻟﻣﻌــﺎﻟﺞ اﻟــدﻗﯾق ﻓــﻲ ﻣرﺣﻠــﺔ ﺗﻧﻔﯾــذ اﻟﺑرﻧــﺎﻣﺞ وﻧﺗﯾﺟــﺔ ﻟﺗﻧﻔﯾــذ
اﻟﺗﻌﻠﯾﻣﺎت ﯾﺗم اﻟﺣﺻول ﻋﻠﻰ اﻟﻧﺗﺎﺋﺞ.
- ٣٤ -
ﺗﺻﻧف اﻟﺗﻌﻠﯾﻣﺎت إﻟﻰ ﻋدة ﻣﺟﻣوﻋﺎت ﻫﻲ:
-ﺗﻌﻠﯾﻣﺎت ﻧﻘل )ﺗﺣرﯾك( اﻟﺑﯾﺎﻧﺎت
-اﻟﺗﻌﻠﯾﻣﺎت اﻟﺣﺳﺎﺑﯾﺔ
-ﺗﻌﻠﯾﻣﺎت ﻣﻌﺎﻟﺟﺔ اﻟﺑﺗﺎت )اﻟﺛﻧﺎﺋﯾﺎت(
-ﺗﻌﻠﯾﻣﺎت ﻧﻘل اﻟﺗﺣﻛم
-ﺗﻌﻠﯾﻣﺎت ﺳﻼﺳل اﻟرﻣوز
-ﺗﻌﻠﯾﻣﺎت اﻻﻋﺗراﺿﺎت
-ﺗﻌﻠﯾﻣﺎت اﻟﺗﺣﻛم ﺑﺎﻟﻣﻌﺎﻟﺞ
ﻻﺣﻘﺎ.
ً ﯾﺗﻛون طﺎﻗم ﺗﻌﻠﯾﻣﺎت اﻟﻣﻌﺎﻟﺞ 8086/8088ﻣن ﺣواﻟﻲ ١٥٠ﺗﻌﻠﯾﻣﺔ ،ﺳﯾﺗم ﺷرﺣﻬﺎ
اﻟﺗﻌﻠﯾﻣــﺎت اﻟﻣﺗـــﺳﻌﺔ ﻫـــﻲ ﻋﺑـــﺎرة ﻋــن ﺟﻣﻠـــﺔ واﺣـــدة ﺗـــؤدي إﻟـــﻰ ﺗوﻟﯾــد ﻣﺟﻣوﻋـــﺔ ﻣـــن اﻟﺟﻣـــل ﻋﻧـــد
اﺳﺗدﻋﺎﺋﻬﺎ وﻫذا ﯾﺗطﻠب ﻣن اﻟﻣﺑرﻣﺞ ﺗﺣدﯾد اﻟﺟﻣل اﻟﺗﻲ ﺗﻘﺎﺑل ﻛل ﺗﻌﻠﯾﻣﺔ ﻣﺗﺳﻌﺔ.
ﺳﯾﺗم اﻟﺷرح ﻻﺣﻘﺎً.
-١٠ﻫﯾﻛل ﺑرﻧﺎﻣﺞ ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ :
إن ﺑرﻧــﺎﻣﺞ اﻷﺳــﻣﺑﻠﻲ ﯾﺗﻛــون ﻣــن ﻣﺟﻣوﻋــﺔ ﻣــن اﻟﻘطﺎﻋــﺎت ﻻ ﯾﻘــل ﻋــددﻫﺎ ﻋــن ﺛﻼﺛــﺔ ،ﺣﯾــث أن ﻫﻧــﺎك
أرﺑﻌﺔ أﻧواع ﻣن اﻟﻘطﺎﻋﺎت ﻫﻲ:
-ﻗطﺎع اﻟﻛود
-ﻗطﺎع اﻟﻣﻌطﯾﺎت
-ﻗطﺎع اﻟﻛدس
-ﻗطﺎع اﻹﺿﺎﻓﺔ
ﯾﻣﻛن ﻟﺑرﻧﺎﻣﺞ اﻷﺳﻣﺑﻠﻲ أن ﯾﺣﺗل ﻣﻠﻔﺎً واﺣداً أو ﻋدة ﻣﻠﻔﺎت ﻓﻲ اﻟذاﻛرة اﻟﻣﺳﺎﻋدة.
أﻧظر اﻟﺷﻛل ) (٦.٤اﻟﻧﻣوذج اﻟرﺋﯾﺳﻲ ﻟﺑرﻧﺎﻣﺞ اﻷﺳﻣﺑﻠﻲ
واﻟﺷﻛل ) (٧.٤اﻟﻧﻣوذج اﻟﺛﺎﻧوي ﻟﺑرﻧﺎﻣﺞ اﻷﺳﻣﺑﻠﻲ
- ٣٥ -
اﻟوﺣدة اﻟﺧﺎﻣﺳﺔ
اﻟﺗوﺟﯾﻬﺎت Directive or Pseudo-Operation
ﻣﺛﺎل ):(5.5
Message 'EQU 'Enter Your Name Please:
- ٣٧ -
٢-١-٤ﺗوﺟﯾﻬﺔ اﻟﻣﺳﺎواة اﻟﻌددﯾﺔ )=( :
ﺗـﺳﺗﺧدم ﻹﺳـﻧﺎد ﻗﯾﻣــﺔ ﺛﺎﺑـت ﻋــددي إﻟـﻰ اﺳــم ﺗﻌرﯾﻔـﻲ ﺣﯾـث أﻧــﻪ ﻣـن اﻟﻣﻣﻛــن ﺗﻐﯾـر اﻟﻘﯾﻣــﺔ اﻟﻣـﺳﻧدة إﻟــﻰ
اﻻﺳم اﻟﺗﻌرﯾﻔﻲ ﻓﻲ أي ﻣﻛﺎن ﻓﻲ اﻟﺑرﻧﺎﻣﺞ.
ﻣﺛﺎل ):(7.5
Count = 0
BArray LABEL BYTE
REPT 100
DB Count
Count = Count + 1
ENDM
ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﺗوﺟﯾﻬﺔ اﻟﺗﻲ ﺗﻠﻲ اﺳم اﻟﻣﺗﻐﯾر واﻟﺗﻲ ﺗﻌﻣل ﻋﻠﻰ ﺣﺟز اﻟﻣواﻗﻊ ﻓﺗﺄﺧذ أﺣد اﻷﺷﻛﺎل اﻟﺗﺎﻟﯾﺔ:
) (DT, DQ, DD, DW, DBﺣﯾث أن:
: DBﺗﻌﻧﻲ Define Byteوﻫﻲ ﺗوﺟﯾﻬﺔ ﻟﺣﺟز ﺑﺎﯾت.
) ٠إﻟﻰ ( ٢٥٥أو ﺗﺗراوح ﺑﯾن ) ١٢٨-إﻟﻰ ( ١٢٧
: DWوﺗﻌﻧـﻲ Define Wordوﻫـﻲ ﺗوﺟﯾﻬـﺔ ﺗـﺳﺗﺧدم ﻟﺣﺟـز وﺣـدات ﺗﺧزﯾﻧﯾـﺔ ﻣﻛوﻧـﺔ ﻣـن ٢ﺑﺎﯾـت
) ١٦ﺧﺎﻧﺔ ﺛﻧﺎﺋﯾﺔ(.
) ٠و ( ٦٥.٥٣٥أو ﺗﺗراوح ) -٣٢٧٦٨و ( ٣٢٧٦٧
: DDوﺗﻌﻧﻲ Define Doublewordوﻫﻲ ﺗوﺟﯾﻬـﺔ ﺗـﺳﺗﺧدم ﻟﺣﺟـز وﺣـدات ﺗﺧزﯾﻧﯾـﺔ ﻣـن ٤ﺑﺎﯾـت
)أي ﻛﻠﻣﺗﯾن( أو ﻣﺎ ﯾﻌﺎدل ٣٢ﺛﻧﺎﺋﯾﺔ.
: DQوﺗﻌﻧـﻲ Define Quadwordوﻫــﻲ ﺗوﺟﯾﻬـﺔ ﺗــﺳﺗﺧدم ﻟﺣﺟـز وﺣـدات ﺗﺧزﯾﻧﯾــﺔ طـول اﻟواﺣــدة
٨ﺑﺎﯾت )أي ٤ﻛﻠﻣﺎت( أو ﻣﺎ ﯾﻌﺎدل ٦٤ﺛﻧﺎﺋﯾﺔ.
: DTوﺗﻌﻧــﻲ Define Ten Bytesوﻫــﻲ ﺗوﺟﯾﻬــﺔ ﺗــﺳﺗﺧدم ﻟﺣﺟــز وﺣــدات ﺗﺧزﯾﻧﯾــﺔ ﺑطــول ١٠
ﺑﺎﯾت .وﯾﺳﺗﺧدم ﻫذا اﻟﻧوع ﻣن اﻟﺗوﺟﯾﻬﺎت ﻣﻊ اﻷﻋداد اﻟﻣﻣﺛﻠﺔ ﺑﻧظﺎم BCDاﻟﻣﺿﻐوطﺔ.
- ٣٨ -
أﻣــﺎ ﺑﺎﻟﻧــﺳﺑﺔ ﻟﻠﺗﻌﺑﯾــر expressionﯾﻣﻛــن أن ﯾﻛــون ﺛﺎﺑﺗــﺎً ﻋــددﯾﺎً أو رﻣزﯾــﺎً أو إﺷــﺎرة اﺳــﺗﻔﻬﺎم أو ﯾﻣﻛــن
أن ﯾﺳﺗﺧدم رﻣز اﻟﺗﻛرار DUPواﻟذي ﯾﺄﺧذ اﻟﺻﯾﻐﺔ اﻟﺗﺎﻟﯾﺔ:
…)[Name] Dn value DUP (expression
٣-٤ﺗوﺟﯾﻬﺔ : LABEL
ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﺗوﺟﯾﻬــﺔ ﻹﻋــﺎدة ﺗﻌرﯾــف ﺧــواص ﺑﻌــض اﻷﺳــﻣﺎء اﻟﺗــﻲ ﺗــم ﺗﻌرﯾﻔﻬــﺎ ﻣــﺳﺑﻘﺎً ﻓــﻲ اﻟﺑرﻧــﺎﻣﺞ،
ﺣﯾث ﯾﻌطﻲ ذﻟك ﻣروﻧﺔ أﻛﺛر ﻟﻠﻣﺑرﻣﺞ ﻟﻠﺗﺣﻛم ﻓﻲ اﻷﺳﻣﺎء وﺧواﺻﻬﺎ.
اﻟﺷﻛل اﻟﻌﺎم ﻟﻠﺗوﺟﯾﻬﺔ ﻫو:
Name LABEL type
ﺣﯾـث أن Nameﻫـو اﻻﺳـم اﻟﺟدﯾــد ﺑـﺎﻟﺧواص اﻟﺟدﯾـدة واﻟـذي ﯾﻣﻛــن اﺳـﺗﺧداﻣﻪ ﺑﺎﻹﺿـﺎﻓﺔ إﻟـﻰ اﻻﺳــم
اﻟذي ﺗم ﺗﻌرﯾﻔﻪ ﻣﺳﺑﻘﺎً وﺑﺧواص ﻣﺧﺗﻠﻔﺔ.
أﻣﺎ typeﻓﯾﻣﻛن أن ﯾﻛون أﺣد اﻟﻘﯾم اﻟﺗﺎﻟﯾﺔ:
ﺣﯾث أن FAR, NEARﺗﺳﺗﺧدم ﻣﻊ اﻹﺟراءات واﻟﺷﺎرات وﺑﻘﯾﺔ اﻟﻘﯾم ﺗﺳﺗﺧدم ﻣﻊ اﻟﻣﺗﻐﯾرات.
-٥ﺗوﺟﯾﻬﺎت ﺗﻌرﯾف اﻟﻘطﺎﻋﺎت واﻟﺑراﻣﺞ اﻟﻔرﻋﯾﺔ :
أﻧواع ﻗطﺎﻋﺎت ﺑرﻧﺎﻣﺞ ﻟﻐﺔ اﻟﺗﺟﻣﯾﻊ ﻫﻲ:
-١ﻗطﺎع اﻟﺑﯾﺎﻧﺎت Data Segmentوﺗﺗم ﻋﻧوﻧﺗﻪ ﺑواﺳطﺔ ﻣﺳﺟل ﻗطﺎع اﻟﺑﯾﺎﻧﺎت .DS
-٢ﻗطﺎع اﻟﻣﻛدس Stack Segmentوﺗﺗم ﻋﻧوﻧﺗﻪ ﺑواﺳطﺔ ﻣﺳﺟل اﻟﻣﻛدس .SS
-٣اﻟﻘطﺎع اﻹﺿﺎﻓﻲ Extra Segmentوﺗﺗم ﻋﻧوﻧﺗﻪ ﺑواﺳطﺔ ﻣﺳﺟل اﻟﻘطﺎع اﻹﺿﺎﻓﻲ .ES
-٤اﻟﺗﻌﻠﯾﻣﺎت Code Segmentوﺗﺗم ﻋﻧوﻧﺗﻪ ﺑواﺳطﺔ ﻣﺳﺟل ﻗطﺎع اﻟﺗﻌﻠﯾﻣﺎت .CS
١-٥ﺗوﺟﯾﻬﺔ : SEGMENT
ﺗﺳﺗﺧدم ﻟﺗﺣدﯾد ﺑداﯾﺔ اﻟﻘطﺎع .واﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻬﺎ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
]Name SEGMENT [align] [combine] [class
: Name -ﯾﺑﯾن اﺳم اﻟﻘطﺎع وﯾﻣﻛن ﻟﻬذا اﻻﺳم أن ﯾﻛون ﻓرﯾداً أو ﻣﻛرراً ﻓﻲ اﻟﺑرﻧﺎﻣﺞ.
ﺑﺎﻟﻧ ـ ــﺳﺑﺔ ﻟﻸﻧـ ـ ـواع اﻟـ ـ ـواردة ﺑ ـ ــﯾن أﻗـ ـ ـواس ﻣرﺑﻌ ـ ــﺔ ﻓﻬ ـ ــﻲ اﺧﺗﯾﺎرﯾ ـ ــﺔ .وأن ﻣﻌظ ـ ــم اﻟﻣﺑ ـ ــرﻣﺟﯾن اﻟﻣﺑﺗ ـ ــدﺋﯾن
ﯾــﺳﺗﺧدﻣون ﻫــذﻩ اﻟﺗوﺟﯾﻬــﺔ ﻓــﻲ أﺑــﺳط ﺻــورﻫﺎ دون اﺳــﺗﺧدام اﻷﻧ ـواع اﻻﺧﺗﯾﺎرﯾــﺔ ﺣﯾــث ﯾﺗــرك ﻟﻸﺳــﻣﺑﻠر
اﺳﺗﺧدام اﻟﻘﯾم اﻟﺿﻣﻧﯾﺔ .Default Values
- ٣٩ -
: Align -ﯾﺣـدد ﻟﻸﺳــﻣﺑﻠر ﻣــدى اﻟﻌﻧــﺎوﯾن اﻟﻣﺣﺗﻣﻠــﺔ واﻟﺗــﻲ ﯾﻣﻛــن اﺳــﺗﺧداﻣﻬﺎ ﻛﻘﯾﻣــﺔ اﺑﺗداﺋﯾــﺔ ﻟﻌﻧـوان
اﻟﻘطــﺎع )أي ﻋﻧ ـوان ﺑداﯾــﺔ اﻟﻘطــﺎع( وﺗﺟــدر اﻹﺷــﺎرة إﻟــﻰ وﺟــود ﻋــدة ﻗــﯾم ﻟﻬــذا اﻟﺧﯾــﺎر ﯾﻣﻛــن ﺗﻠﺧﯾــﺻﻬﺎ
ﺑﻣﺎ ﯾﻠﻲ:
: BYTEﺣﯾث ﯾﺣدد اﻟﺑﺎﯾت اﻵﺗﻲ اﻟﻣﺗوﻓر واﻟذي ﺳـﯾﺗم اﺳـﺗﺧداﻣﻪ ﻟﺗﺣدﯾـد ﺑداﯾـﺔ اﻟﻘطـﺎع اﻟـذي ﺳـﯾﺗم
ﺗﻌرﯾﻔﻪ.
: Wordوﯾﻌﻧﻲ اﺳﺗﺧدام اﻟﻛﻠﻣﺔ اﻵﺗﯾﺔ اﻟﻣﺗوﻓرة ﻋﻠﻰ أﻧﻬﺎ ﻋﻧواﻧﺎً ﻟﺑداﯾﺔ اﻟﻘطﺎع.
: DWORDوﯾﻌﻧﻲ اﺳﺗﺧدام ﺑداﯾﺔ اﻟﻛﻠﻣﺔ اﻟﻣﺿﺎﻋﻔﺔ اﻟﺗﺎﻟﯾﺔ ﺑداﯾﺔ ﻟﻌﻧوان اﻟﻘطﺎع.
: PARAوﯾﻌﻧﻲ اﺳﺗﺧدام ﺑداﯾﺔ اﻟﻔﻘرة اﻵﺗﯾﺔ ﺑداﯾﺔ ﻟﻌﻧوان اﻟﻘطﺎع.
: PAGEوﯾﻌﻧ ــﻲ اﺳ ــﺗﺧدام ﺑداﯾ ــﺔ اﻟ ــﺻﻔﺣﺔ اﻟﺗﺎﻟﯾ ــﺔ ﺑداﯾ ــﺔ ﻟﻌﻧـ ـوان اﻟﻘط ــﺎع )اﻟ ــﺻﻔﺣﺔ اﻟواﺣ ــدة ٢٥٦
ﺑﺎﯾت(.
وﻓـﻲ ﺣﺎﻟـﺔ ﻋـدم ﺗﺣدﯾـد أي ﻣــن ﻫـذﻩ اﻷﻧـواع ﻋﻧـد ﺗﻌرﯾـف اﻟﻘطــﺎع ،ﯾﻌﻧـﻲ أن اﻟﻧـوع PARAﻫـو اﻟــذي
ﺿﻣﻧﯾﺎ.
ً ﺳﯾﺳﺗﺧدم
: Combine -ﻓﻬــو ﯾﺣــدد ﻛﯾــف ﯾــﺗم ﺗﺟﻣﯾــﻊ اﻟﻘطﺎﻋــﺎت اﻟﺗــﻲ ﺗﺣﻣــل ﻧﻔــس اﻻﺳــم ،وﯾوﺟــد ﻋــدة ﻗــﯾم
ﻟﻠﻧوع Combineﻫﻲ:
: PUBLICوﺗﺳﺗﺧدم ﻟﺗﺟﻣﯾﻊ ﺟﻣﯾﻊ اﻟﻘطﺎﻋﺎت اﻟﺗﻲ ﺗﺣﻣل ﻧﻔس اﻻﺳم ﻟﺗﻛوﯾن ﻗطﺎع واﺣد.
: STACKﯾــﺷﺑﻪ اﻟﻧــوع اﻟــﺳﺎﺑق ﺑﺎﺳــﺗﺛﻧﺎء أن ﺟﻣﯾــﻊ اﻟﻌﻧــﺎوﯾن ﻓــﻲ اﻟﻘطــﺎع اﻟﺟدﯾــد ﺗــﺻﺑﺢ ﻧــﺳﺑﺔ إﻟــﻰ
ﻣﺳﺟل ﻗطﺎع اﻟﻣﻛدس ).(SS
: COMMONﯾــﺗم إﻧــﺷﺎء ﻋــدة ﻗطﺎﻋــﺎت ﻣﺗراﻛﻣــﺔ ﺣﯾــث ﺗﺑــدأ ﺟﻣﯾــﻊ اﻟﻘطﺎﻋــﺎت اﻟﺗــﻲ ﺗﺣﻣــل ﻧﻔــس
اﻻﺳم ﻣن ﻧﻔس اﻟﻌﻧوان ،وﺑﺎﻟﻧﺳﺑﺔ ﻟطول اﻟﻘطﺎع اﻟﻧﺎﺗﺞ ﻓﻬو ﻣﺳﺎو ﻟطول أطول ﻫذﻩ اﻟﻘطﺎﻋﺎت.
: MEMORYﻋﻧد اﺳـﺗﺧدام ﻫـذﻩ اﻟﻘﯾﻣـﺔ ﯾـﺗم ﺗﺟﻣﯾـﻊ ﺟﻣﯾـﻊ اﻟﻘطﺎﻋـﺎت اﻟﺗـﻲ ﺗﺣﻣـل ﻧﻔـس اﻻﺳـم ﻓـﻲ
ﻗطﺎع واﺣد ﻣﺗﺗﺎﺑﻊ وﯾﺗم ﻣﻌﺎﻟﺟﺔ ﺟﻣﯾﻊ اﻟﻘطﺎﻋﺎت ﻣن ﻫذا اﻟﻧـوع ﺑـﻧﻔس اﻷﺳـﻠوب اﻟـذي ﯾـﺗم ﺑـﻪ ﻣﻌﺎﻟﺟـﺔ
اﻟﻘطﺎﻋﺎت اﻟﺗﻲ ﺗﺣﻣل اﻟﻧوع اﻟﺳﺎﺑق .Common
: AT addressاﺳــﺗﺧداﻣﻬﺎ ﯾــؤدي إﻟــﻰ ﺟﻌـل ﺟﻣﯾــﻊ ﻋﻧــﺎوﯾن اﻟــﺷﺎرات واﻟﻣﺗﻐﯾـرات اﻟﻣﻌرﻓــﺔ ﻓــﻲ ذﻟــك
اﻟﻘطﺎع ﻧﺳﺑﯾﺔ إﻟﻰ اﻟﻌﻧوان اﻟوارد ﺑﻌد .AT
وﻓــﻲ ﺣﺎﻟــﺔ ﻋــدم اﺳــﺗﺧدام أي ﻣــن أﻧ ـواع Combineاﻟﻣــذﻛورة أﻋــﻼﻩ ﻣــﻊ ﺗوﺟﯾﻬــﺔ ،SEGMENT
ﻓﻬــذا ﯾﻌﻧــﻲ أن ﻛــل ﻗطــﺎع ﻟــﻪ ﻧوﻋــﻪ اﻟﺧــﺎص .وﻓــﻲ ﻣﺛــل ﻫــذﻩ اﻟﺣﺎﻟــﺔ ﻻ ﯾــﺗم ﺗﺟﻣﯾــﻊ اﻟﻘطﺎﻋــﺎت اﻟﺗــﻲ
ﺗﺣﻣل ﻧﻔس اﻻﺳم إﻟﻰ ﻗطﺎع واﺣد.
- ٤٠ -
: Class -ﯾﺳﺗﺧدم ﻟرﺑط ﻗطﺎﻋﺎت ذات أﺳـﻣﺎء ﻣﺧﺗﻠﻔـﺔ وﻟﻛﻧﻬـﺎ ﺗﺗـﺷﺎﺑﻪ ﻓـﻲ اﻟﻐـرض اﻟـذي ﻧـﺷﺄت ﻣـن
أﺟﻠـ ــﻪ .وﻓـ ــﻲ ﺣﺎﻟـ ــﺔ ﺗﺣدﯾ ــد اﻟﻧـ ــوع ﻟﻠﻘطـ ــﺎع ،ﯾﺟـ ــب أن ﯾظﻬـ ــر اﻟﻧـ ــوع ﺑـ ــﯾن ﺣﺎﺻ ـ ـرات ﻋﻠوﯾـ ــﺔ ﻛﻣـ ــﺎ ﻓـ ــﻲ
' 'CLASSأو ' 'DATAوﻓـﻲ ﺣﺎﻟـﺔ ﻋـدم ﺗﺣدﯾـد اﻟﻧـوع ﻟﻠﻘطـﺎع ﻓـﯾﻔﻬم ﺿـﻣﻧﺎً أن ﻧـوع ﻫـذا اﻟﻘطـﺎع ﻫـو
.Null
٢-٥ﺗوﺟﯾﻬﺔ : ENDS
ﺗﺳﺗﺧدم ﻹﺧﺑﺎر اﻷﺳﻣﺑﻠر ﺑﻧﻬﺎﯾﺔ اﻟﻘطﺎع.
٣-٥ﺗوﺟﯾﻬﺔ : ASSUME
ﺗ ــﺳﺗﺧدم ﻹﺧﺑ ــﺎر اﻷﺳــﻣﺑﻠر ﻋ ــن إﻗـ ـران اﻟﻘطﺎﻋـ ــﺎت اﻟﻣﻌرﻓ ــﺔ ﻓ ــﻲ اﻟﺑرﻧ ــﺎﻣﺞ ﻣ ــﻊ اﻟﻣ ــﺳﺟﻼت اﻟﺧﺎﺻـ ــﺔ
ﺑﺎﻟﻘطﺎﻋﺎت وﻫﻲ ).(ES, SS, DS, SS
ﺗوﺟد ﻋدة ﺻﯾﻎ ﻟﻬذﻩ اﻟﺗوﺟﯾﻬﺔ ﻛﻣﺎ ﯾﻠﻲ:
ASSUME Segment Register
]… Name [, Segment Register: Name
ASSUME Segment Register
NOTHING
ASSUME NOTHING
ﺣﯾث أن:
: Nameﯾﻌﻧ ــﻲ اﺳــم اﻟﻘط ــﺎع أو ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﻘطﺎﻋ ــﺎت اﻟﺗ ــﻲ ﺳ ــﯾﺗم إﻗراﻧﻬ ــﺎ ﻣ ــﻊ أﺣ ــد ﻣ ــﺳﺟﻼت
اﻟﻘطﺎﻋﺎت.
: Segment Registerﺗﺳﺗﺧدم ﻹﻟﻐﺎء أي اﻗﺗران ﺳﺎﺑق ﻟﻠﻘطﺎع ﻣﻊ أي ﻣن ﻣﺳﺟﻼت اﻟﻘطﺎﻋﺎت
ﻣﺛﺎل ):(12.5
ASSUME: DS: NOTHING
إن ﻫـذا ﺑﻣﺛﺎﺑــﺔ إﺧﺑــﺎر ﻟﻸﺳــﻣﺑﻠر ﺑﻌــدم اﺳــﺗﺧدام اﻟﻣــﺳﺟل DSﻓــﻲ ﻋﻣﻠﯾــﺔ ﺣــﺳﺎب اﻟﻌﻧـوان اﻟﻔﻌﻠــﻲ ﻷي
ﻣن اﻟﻌﻧﺎوﯾن داﺧل اﻟﻘطﺎع اﻟﻣذﻛور ﻣن اﻵن ﻓﺻﺎﻋداً.
إن اﻟﻣﻛﺎن اﻟﻣﻧﺎﺳب ﻟﺗوﺟﯾﻬﺔ ASSUMEﻫو ﺑﻌد ﻧوﺟﯾﻬﺔ SEGMENTﻣﺑﺎﺷرة.
ﻣﺛﺎل:
ASSUME CS: CSEG, DS: DSEG
ﯾﻌﻧـﻲ أن اﻟﻘطــﺎع اﻟﻣــﺳﻣﻰ CSEGﺳــوف ﯾــﺳﺗﺧدم ﻋﻠــﻰ أﻧــﻪ ﻗطــﺎع اﻟﺗﻌﻠﯾﻣــﺎت ،وأن اﻟﻘطــﺎع اﻟﻣــﺳﻣﻰ
DSEGﺳوف ﯾﺳﺗﺧدم ﻋﻠﻰ أﻧﻪ ﻗطﺎع اﻟﺑﯾﺎﻧﺎت.
- ٤١ -
٥-٥ﺗوﺟﯾﻬﺔ ﻧﻬﺎﯾﺔ اﻟﺑرﻧﺎﻣﺞ اﻟﻔرﻋﻲ )اﻹﺟراء( : ENDP
ﺗوﺟﯾﻬﺔ إﺷﻌﺎر اﻟﻣﺗرﺟم ﺑﻧﻬﺎﯾﺔ اﻹﺟراء ﺣﯾث ﯾوﺟد ﺟﻣﻠﺔ ENDPﻟﻛل ﺟﻣﻠﺔ .PROC
٧-٥ﺗوﺟﯾﻬﺔ : PUBLIC
ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﺗوﺟﯾﻬــﺔ ﻟﻺﻋــﻼن ﻋــن اﻷﺳــﻣﺎء ﻋﻠــﻰ أﻧﻬــﺎ ﻋﺎﻣــﺔ ﺑﺎﻟﻧــﺳﺑﺔ ﻟﻠوﺣــدات اﻷﺧــرى )أي أﻧــﻪ
ﯾﻣﻛن اﺳﺗﺧداﻣﻬﺎ ﻣن ﻗﺑل وﺣدات أﺧرى ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ﻏﯾر اﻟوﺣدة اﻟﺗﻲ ﻋرﻓت ﻓﯾﻬﺎ(.
ﻓﻲ ﺣﺎﻟﺔ ﺗﻌرﯾف اﺳم ﻣﻌﯾن ﻋﻠﻰ أﻧﻪ ﻣـن اﻟﻧـوع PUBLICﻓﺈﻧـﻪ ﯾـﺗم ﺗﺟﻣﯾـﻊ ﺟﻣﯾـﻊ اﻷﺳـﻣﺎء اﻟﺗﻌرﯾﻔﯾـﺔ
اﻟﺗــﻲ ﺗﺣﻣــل ﻧﻔــس اﻻﺳــم ﻓــﻲ اﻟوﺣــدات اﻟﻣﺧﺗﻠﻔــﺔ ٕواﻋطﺎءﻫــﺎ ﻋﻧواﻧــﺎً واﺣــداً ﻣــن ﻗﺑــل اﻟﺑرﻧــﺎﻣﺞ Linker
اﻟ ــذي ﯾﻘ ــوم ﺑﺗﺣدﯾ ــد ﻣواﻗ ــﻊ ﻓ ــﻲ اﻟ ــذاﻛرة ﻟﺟﻣﯾ ــﻊ اﻷﺳ ــﻣﺎء واﻟﻘطﺎﻋ ــﺎت واﻹﺟـ ـراءات واﻟوﺣ ــدات اﻟﻣﻛوﻧ ــﺔ
ﻟﻠﺑرﻧﺎﻣﺞ.
اﻟﺷﻛل اﻟﻌﺎم ﻟﻠﺗوﺟﯾﻬﺔ:
PUBLIC ]… Name [, name
- ٤٢ -
٨-٥ﺗوﺟﯾﻬﺔ : EXTRN
ﺗﺳﺗﺧدم ﻫذﻩ اﻟﺗوﺟﯾﻬﺔ ﻟﻠدﻻﻟﺔ ﻋﻠﻰ اﻷﺳﻣﺎء اﻟﻣﻌرﻓﺔ ﻓﻲ وﺣدات أﺧرى ﻏﯾر ﺗﻠـك اﻟﺗـﻲ ﺳﺗـﺳﺗﺧدم ﺑﻬـﺎ.
ﺣﯾــث ﺗﻌﻣــل ﻋﻠــﻰ إﺧﺑــﺎر اﻷﺳــﻣﺑﻠر ﺑﻌــدم إﺻــدار اﺷــﻌﺎر ﺧطــﺄ ﻋﻧــد اﺳــﺗﺧدام اﺳــم ﻣــن اﻷﺳــﻣﺎء ﻏﯾــر
اﻟﻣﻌرﻓﺔ ﻓﻲ اﻟوﺣدة اﻟﺣﺎﻟﯾﺔ.
اﻟﺷﻛل اﻟﻌﺎم ﻟﻠﺗوﺟﯾﻬﺔ:
… ]EXTRN name: type [, name: type
وﻫﻧـﺎك ﻋـدة أﻧـواع ﺗـﺳﺗﺧدم ﻣـﻊ ﺗوﺟﯾﻬـﺔ EXTRNﺗﻌﺗﻣـد ﻋﻠـﻰ ﻧـوع اﻻﺳـم اﻟﻣﻌـرف .ﻓـﺈذا ﻛـﺎن اﻻﺳــم
QWORD, DWORD, اﻟﻣﻌ ــرف ﻣ ــن اﻟﻣﺗﻐﯾـ ـرات ﻓﯾﻛ ــون اﻟﻧ ــوع typeأﺣ ــد اﻷﻧـ ـواع اﻟﺗﺎﻟﯾ ــﺔ:
.TBYTE, WORD, BYTE
أﻣ ــﺎ إذا ﻛ ــﺎن اﻻﺳ ــم ﯾﻣﺛ ــل اﺳ ــم إﺟـ ـراء أو ﺷ ــﺎرة Labelﻓ ــﻲ اﻟﺑرﻧ ــﺎﻣﺞ ﻓ ــﯾﻣﻛن ﻟﻠﻧ ــوع typeأن ﯾﻛ ــون
.PROC, FAR, NEAR
أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ ﻛون اﻻﺳم ﻣﻌرﻓﺎً ﺑﺎﺳﺗﺧدام EQUأو = ﻓﯾﻛون اﻟﻧوع ﻓﻐﺣث ﻣﺳﺎوﯾﺎً ﻟﻠﻘﯾﻣﺔ .ABS
ﻣﺛﺎل ):(15.5
PUBLIC Rows ; Declare absolute Symbol
(Rows) as Public
Rows EQU 25 ; Assign value of 25 to Rows
ﻓ ــﻲ ﻫ ــذا اﻟﻣﺛ ــﺎل ﺗ ــم ﺗﻌرﯾ ــف اﻻﺳ ــم Rowsﻋﻠ ــﻰ أﻧ ــﻪ ،PUBLICوذﻟ ــك ﻟﻠ ــﺳﻣﺎح ﺑﺎﺳ ــﺗﺧداﻣﻪ ﻓ ــﻲ
اﻟوﺣدات اﻷﺧرى اﻟﻣﻛوﻧﺔ ﻟﻠﺑرﻧﺎﻣﺞ اﻟرﺋﯾس ،ﺷرﯾطﺔ أن ﯾﺗم اﻹﻋﻼن ﻋن ﻫذا اﻻﺳم ﻓﻲ ﺗﻠـك اﻟوﺣـدات
ﻋﻠﻰ أﻧﻪ ﻣن اﻟﻧوع EXTRNﻛﻣﺎ ﯾﻠﻲ:
EXTRN Rows: ABS
أﻧظــر اﻟﻣﺛــﺎل ) (16.5ﻟﺑﯾــﺎن اﺳــﺗﺧدام اﻟﺗــوﺟﯾﻬﺗﯾن PUBLICو EXTRNﻓــﻲ ﺑرﻧــﺎﻣﺞ واﺣــد ﺣﯾــث
ﯾﺣﺗوي اﻟﺑرﻧﺎﻣﺞ ﻋﻠﻰ ﺑﻌض اﻟﻣﻔﺎﻫﯾم اﻟﺗﻲ ﺳﯾﺗم ﺷرﺣﻬﺎ ﻻﺣﻘﺎً.
- ٤٣ -
: ENDSﺗﻌﻧﻲ ﻧﻬﺎﯾﺔ اﻟﻘطﺎع
: ENDPﺗﻌﻧﻲ ﻧﻬﺎﯾﺔ اﻹﺟراء
: ENDﺗﻌﻧﻲ ﻧﻬﺎﯾﺔ اﻟﺑرﻧﺎﻣﺞ ﺑﻛﺎﻣﻠﻪ
واﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺗوﺟﯾﻬﺔ ENDﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
]END [Name
ﺣﯾث أن Nameﺗﻌﻧﻲ اﺳم اﻟﺑرﻧﺎﻣﺞ.
٢-٦ﺗوﺟﯾﻬﺔ : ORG
ﺗﺳﺗﺧدم ﻹﺧﺑﺎر اﻟﻣﺗرﺟم Assemblerﻋن ﻋﻧوان ﺑداﯾﺔ ﻣﻧطﻘﺔ اﻟـذاﻛرة اﻟﻣﺧﺻـﺻﺔ ﻟﺗﺧـزﯾن اﻟﺑرﻧـﺎﻣﺞ
اﻟﻬ ــدﻓﻲ اﻟﻧـ ـﺎﺗﺞ ﻣ ــن ﻋﻣﻠﯾ ــﺔ اﻟﺗرﺟﻣ ــﺔ ﻟﻠﺑرﻧ ــﺎﻣﺞ اﻟﻣ ــﺻدري .وﯾ ــﺗم ذﻟ ــك ﺑﺗﺧ ــﺻﯾص ﻋﻧـ ـوان اﻟﺑداﯾ ــﺔ إﻟ ــﻰ
ﻣﺳﺟل ﺧﺎص ﺑﻌﻧوان اﻟﻣوﻗﻊ ﯾطﻠق ﻋﻠﯾﻪ اﺳم .Location Counter
اﻟﺷﻛل اﻟﻌﺎم ﻟﻬذﻩ اﻟﺗوﺟﯾﻬﺔ:
ORG expression
ﺣﯾ ــث أن expressionﯾﻣﺛ ــل ﻋﻧـ ـوان ﻣﻧطﻘ ــﺔ اﻟﺗﺧـ ـزﯾن ،وﯾﺟ ــب أن ﺗ ــؤول ﻗﯾﻣﺗ ــﻪ إﻟ ــﻰ ﺛﺎﺑ ــت ﻋ ــددي
ﺻﺣﯾﺢ.
ﻣﺛﺎل:
ORG 100H
ﺣﯾ ــث ﺗﻌﻣ ــل ﻋﻠ ــﻰ ﺗﺧـ ـزﯾن اﻟﺑرﻧ ــﺎﻣﺞ اﻟﻬ ــدﻓﻲ اﺑﺗ ــداء ﻣ ــن ﻋﻧـ ـوان ) 100Hأي ١٠٠ﺑﺎﻟﻧظ ــﺎم اﻟ ــﺳﺎدس
ﻋﺷر(.
٣-٦ﺗوﺟﯾﻬﺔ : EVEN
ﺗﻌﺗﺑ ــر ﻫ ــذﻩ اﻟﺗوﺟﯾﻬ ــﺔ ﻣ ــن اﻟﺗوﺟﯾﻬ ــﺎت ﻧ ــﺎدرة اﻻﺳ ــﺗﺧدام ،وﻋﻣﻠﻬ ــﺎ ﻫ ــو ﺟﻌ ــل ﻣﺣﺗوﯾ ــﺎت ﻋ ــداد اﻟﻣواﻗ ــﻊ
Location Counterﻗﯾﻣﺔ زوﺟﯾﺔ ﻓﻲ ﺣﺎﻟﺔ اﺣﺗواء ﻫذا اﻟﻌداد ﻋﻠﻰ ﻗﯾﻣﺔ ﻓردﯾﺔ.
وﺗﻛﻣن اﻟﻔﺎﺋدة اﻟرﺋﯾﺳﺔ ﻟﻬذﻩ اﻟﺗوﺟﯾﻬﺔ ﻣﻊ أﻧـواع اﻟﺣواﺳـﯾب اﻟﺗـﻲ ﺗـﺳﺗﺧدم ﻣﻌﺎﻟﺟـﺎت ﻣﯾﻛروﯾـﺔ ﻣـن اﻟﻧـوع
٨٠٨٦أو ٨٠٢٨٦واﻟﺗﻲ ﺗﺳﺗﺧدم ١٦ﺧطﺎً ﻟﻧﻘـل اﻟﺑﯾﺎﻧـﺎت ﻣـن ٕواﻟـﻰ اﻟـذاﻛرة .وﻓـﻲ ﻣﺛـل ﻫـذﻩ اﻟﺣﺎﻟـﺔ
ﻓﺈن اﺳﺗﺧدام ﻫذﻩ اﻟﺗوﺟﯾﻬﺔ ﻣﻊ ﻣﺛل ﻫـذﻩ اﻷﻧـواع ﻣـن اﻟﻣﻌﺎﻟﺟـﺎت ﯾزﯾـد ﻣـن ﻛﻔـﺎءة ﺗﻧﻔﯾـذ اﻟﺑرﻧـﺎﻣﺞ ﺣﯾـث
ﯾﻣﻛن ﻧﻘل ﻣﺣﺗوﯾﺎت ١٦ﻣوﻗﻌﺎً ﺛﻧﺎﺋﯾﺎً ﻣن ٕواﻟﻰ اﻟذاﻛرة ﻓﻲ ﻋﻣﻠﯾﺔ واﺣدة.
٤-٦ﺗوﺟﯾﻬﺔ : INCLUDE
ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﺗوﺟﯾﻬــﺔ ﻋﻧــد اﻟﺣﺎﺟــﺔ ﻟﺗــﺿﻣﯾن ﻣﺟﻣوﻋــﺔ ﻣــن اﻟﺟﻣــل ﻓــﻲ أﻛﺛــر ﻣــن ﺑرﻧــﺎﻣﺞ ﻣــﺻدري
واﺣد.
- ٤٤ -
ﻟـ ــو ﻓرﺿـ ــﻧﺎ أﻧـ ــﻪ ﺗـ ــم ﺗﺧ ـ ـزﯾن ﻣﺟﻣوﻋ ـ ــﺔ ﻣـ ــن اﻟﺟﻣـ ــل ﺗﺣـ ــت اﻻﺳـ ــم Statements.Incﻓـ ــﺈن اﻟﺟﻣﻠ ـ ــﺔ
INCLUDE Statements.Incﺗﺷﻌر اﻷﺳﻣﺑﻠر ﺑﺄن ﯾﻘـوم ﺑﻧﻘـل ﻣﺟﻣوﻋـﺔ اﻟﺟﻣـل اﻟﻣﻛوﻧـﺔ ﻟﻠﻣﻠـف
Statements.Incإﻟﻰ اﻟﺑرﻧﺎﻣﺞ اﻟﻣﺻدري اﻟذي ﯾﺣﺗوي ﻋﻠﻰ ﺗوﺟﯾﻬﺔ .INCLUDE
- ٤٥ -
٥-٧ﺗوﺟﯾﻬﺎت LISTو XLISTو : % OUT
ﺗـﺳﺗﺧدم ﻟﻠـﺗﺣﻛم ﺑﻣﺣﺗوﯾـﺎت ﻣﻠـف اﻟطﺑﺎﻋـﺔ اﻟﻧـﺎﺗﺞ ﻋـن اﻷﺳـﻣﺑﻠر أﺛﻧـﺎء ﻋﻣﻠﯾـﺔ اﻟﺗرﺟﻣـﺔ ،ﺣﯾـث أﻧـﻪ ﻋﻧــد
ﻣ ــﺻﺎدﻓﺔ ﺗوﺟﯾﻬ ــﺔ XLISTﯾﺗوﻗ ــف اﻷﺳ ــﻣﺑﻠر ﻋ ــن اﻟﻛﺗﺎﺑ ــﺔ إﻟ ــﻰ ﻣﻠ ــف اﻟطﺑﺎﻋ ــﺔ وﯾ ــﺗم ﻣﺗﺎﺑﻌ ــﺔ ﻋﻣﻠﯾ ــﺔ
اﻟﻛﺗﺎﺑﺔ إﻟﻰ اﻟﻣﻠف ﻋﻧد وﺟود ﺗوﺟﯾﻬﺔ .LIST
وﻛــذﻟك ﻓــﺈن ﺗوﺟﯾﻬــﺔ %OUTﺗــﺳﺗﺧدم ﻹظﻬــﺎر اﺷــﻌﺎرات ﻣﻌﯾﻧــﺔ ﻋﻠــﻰ ﺷﺎﺷــﺔ اﻟﻌــرض ،وﻋﻠــﻰ ﺳــﺑﯾل
اﻟﻣﺛﺎل ﻋﻧد ﻣﺻﺎدﻓﺔ اﻟﺟﻣﻠﺔ:
%OUT Starting Assembling Main Procedure
ﯾﺗم ﻋرض اﻟﻧص Starting Assembling Main Procedureﻋﻠﻰ ﺷﺎﺷﺔ اﻟﺣﺎﺳوب.
١-٨ﺗوﺟﯾﻬﺔ : IF
اﻟﺷﻛل اﻟﻌﺎم:
IF expression ; condition
.
.
[ELSE] ; optional
.
.
ENDIF ; end of IF
أو -----------------------------------------------
IF expression
.
.
ENDIF
وﻓـﻲ ﻣﺛـل ﻫـذﻩ اﻟﺣﺎﻟـﺔ ،ﻓـﺈن ﺗﺣﻘـق ﺷـرط اﻟﺗرﺟﻣــﺔ ﯾـؤدي إﻟـﻰ ﻣﻌﺎﻟﺟـﺔ ﺟﻣﯾـﻊ اﻟﺟﻣـل اﻟواﻗﻌـﺔ ﺑــﯾن IFو
ENDIFﻣ ــن ﻗﺑ ــل اﻷﺳ ــﻣﺑﻠر ،وأن ﻋ ــدم ﺗﺣﻘ ــق اﻟ ــﺷرط ﻓﯾ ــﺗم اﺳ ــﺗﺛﻧﺎء ﺟﻣﯾ ــﻊ اﻟﺟﻣ ــل ﻓ ــﻲ اﻟﻣﻌﺎﻟﺟـ ــﺔ
ﺑواﺳطﺔ اﻷﺳﻣﺑﻠر وذﻟك ﻓﻲ ﺣﺎﻟﺔ ﻋدم اﺳﺗﺧدام ﻋﺑﺎرة .ELSE
- ٤٦ -
ﻣﺛﺎل ):(21.5
IF X GT 20
.
.
ELSE
.
.
ENDIF
٣-٨ﺗوﺟﯾﻬﺔ : IF1
ﻓﻲ ﻫذﻩ اﻟﺟﻣﻠﺔ ﯾﺗﺣﻘق اﻟﺷرط إذا ﻛـﺎن اﻷﺳـﻣﺑﻠر ﯾﻌﻣـل ﻓـﻲ اﻟﺟوﻟـﺔ )اﻟﻣرﺣﻠـﺔ( اﻷوﻟـﻰ ،وﺗﻌطـﻲ اﻟﻘﯾﻣـﺔ
ٕ ،Trueواﻻ ﻓﺈن ﻧﺗﯾﺟﺔ ﻫذﻩ اﻟﺗوﺟﯾﻬﺔ ﺗﻌطﻲ اﻟﻘﯾﻣﺔ .False
واﻟﺷﻛل اﻟﻌﺎم ﻫو:
IF1
.
.
ENDIF
وﺗﯾـرز ﻓﺎﺋـدة ﻫـذﻩ اﻟﺗوﺟﯾﻬـﺔ ﻋﻧــد اﺳـﺗﺧدام ﺑﻌـض اﻟﻣـﺎﻛرو ،ﺣﯾـث أن ﻣﻌﺎﻟﺟــﺔ اﻟﻣـﺎﻛرو ﺗـﺗم ﻋـﺎدة ﺧــﻼل
اﻟﺟوﻟﺔ اﻷوﻟﻰ ﻣن ﺟوﻻت اﻷﺳﻣﺑﻠر أﺛﻧﺎء ﻋﻣﻠﯾﺔ اﻟﺗرﺟﻣﺔ
ﻣﺛﺎل:
IF1
INCLUDE Mylib.Mac
ENDIF
- ٤٧ -
ﺣﯾ ـ ــث ﯾ ـ ــﺗم اﺳ ـ ــﺗﺧدام ﻣﻛﺗﺑ ـ ــﺔ اﻟﻣ ـ ــﺎﻛرو اﻟﻣ ـ ــﺳﻣﺎة Mylib.Macوﻣﻌﺎﻟﺟﺗﻬ ـ ــﺎ ﺧ ـ ــﻼل اﻟﺟوﻟ ـ ــﺔ اﻷوﻟ ـ ــﻰ
ﻟﻸﺳﻣﺑﻠر ،وﻻ ﺗوﺟد ﺣﺎﺟﺔ ﻻﺳﺗدﻋﺎءﻫﺎ ﻓﻲ اﻟﺟوﻟﺔ اﻟﺛﺎﻧﯾﺔ ،وﻫذا ﺑـﺎﻟطﺑﻊ ﯾـوﻓر اﻟﻛﺛﯾـر ﻣـن اﻟوﻗـت أﺛﻧـﺎء
ﻋﻣﻠﯾﺔ ﺗرﺟﻣﺔ اﻟﺑرﻧﺎﻣﺞ اﻟﻣﺻدري إﻟﻰ ﺑرﻧﺎﻣﺞ ﻫدﻓﻲ.
٤-٨ﺗوﺟﯾﻬﺔ : IF2
ﺗــﺷﺑﻪ ﻫــذﻩ اﻟﺟﻣﻠــﺔ IF1ﺑﺎﺳــﺗﺛﻧﺎء أن ﺗﺣﻘــق اﻟــﺷرط ﯾــﺗم ﻓــﻲ اﻟﺟوﻟــﺔ اﻟﺛﺎﻧﯾــﺔ ﻣــن ﺟــوﻻت اﻷﺳــﻣﺑﻠر ،أﻣــﺎ
ﻓﻲ اﻟﺟوﻟﺔ اﻷوﻟﻰ ﻓﺈن ﻧﺗﯾﺟﺔ اﺳﺗﺧدام ﻫذﻩ اﻟﺗوﺟﯾﻬﺔ ﯾﻌطﻲ اﻟﻘﯾﻣﺔ .False
٥-٨ﺗوﺟﯾﻬﺔ : (IF Symbol Defined) IFDEF
ﺗﺳﺗﺧدم ﻫذﻩ اﻟﺗوﺟﯾﻬﺔ ﻟﻔﺣص ﻣﺎ إذا ﻛﺎن اﺳم ﻣﻌﯾن ﻗد ﻋرف ﻓﻲ اﻟﺑرﻧﺎﻣﺞ أم ﻻ.
وﻓـﻲ ﺣﺎﻟــﺔ ﻛــون اﻻﺳــم ﻗـد ﻋــرف ﻣــﺳﺑﻘﺎً ﺗــؤدي ﻧﺗﯾﺟـﺔ اﻟﻔﺣــص إﻟــﻰ ﺗﺣﻘــق اﻟـﺷرط .أﻣــﺎ ﻓــﻲ ﺣﺎﻟــﺔ ﻋــدم
ﺗﻌرﯾف اﻻﺳم ﻓﺈن ﻧﺗﯾﺟﺔ ﻓﺣص اﻟﺷرط ﻟن ﺗﺗﺣﻘق أي أن اﻟﻧﺗﯾﺟﺔ ﻫﻲ .False
ﻣﺛﺎل ):(23.5
IFDEF X
)?( Y DB X DUP
ENDIF
ﻣﺳﺑﻘﺎ ﻓﻘط.
ً ﻓﻲ ﻫذا اﻟﻣﺛﺎل ﺗﺗم ﻋﻣﻠﯾﺔ ﺣﺟز ﻣواﻗﻊ ﻟﻠﻣﺗﻐﯾر Yﻓﻲ ﺣﺎﻟﺔ ﻛون اﻟﻣﺗﻐﯾر Xﻗد ﻋرف
٦-٨ﺗوﺟﯾﻬﺔ : (Not Define Symbol) IFNDEF
ﺗﺷﺑﻪ ﻫذﻩ اﻟﺟﻣﻠﺔ اﻟﺟﻣﻠﺔ اﻟﺳﺎﺑﻘﺔ ﺑﺎﺳـﺗﺛﻧﺎء أن ﻋـدم ﺗﻌرﯾـف اﻻﺳـم ﯾـؤدي إﻟـﻰ ﺗﺣﻘـق اﻟـﺷرط وﺑـذﻟك ﯾـﺗم
ﺷﻣول اﻟﺟﻣل اﻟواﻗﻌﺔ ﺑﯾن IFNDEFو ENDIFﻟﻠﻣﻌﺎﻟﺟﺔ ﻣن ﻗﺑل اﻷﺳﻣﺑﻠر.
اﻟﺷﻛل اﻟﻌﺎم:
IFNDEF Symbol
.
.
][ELSE
.
.
ENDIF
٧-٨ﺗوﺟﯾﻬﺔ : (IF Identical) IFIDN
اﻟﺷﻛل اﻟﻌﺎم:
>IFIDN <Arg1>, <Arg2
.
.
][ELSE
.
.
ENDIF
- ٤٨ -
ﻓ ــﻲ ﺣﺎﻟ ــﺔ ﺗ ــﺳﺎوي اﻟﻣﻌ ــﺎﻣﻠﯾن Arg2و Arg1ﻓ ــﺈن اﻷﺳ ــﻣﺑﻠر ﯾﻘ ــوم ﺑﻣﻌﺎﻟﺟ ــﺔ اﻟﺟﻣ ــل اﻟواﻗﻌ ــﺔ ﺑ ــﯾن
IFIDNو ،ENDIFأﻣــﺎ إذا ﻟــم ﯾﺗــﺳﺎوى اﻟﻣﻌــﺎﻣﻠﯾن ﻓــﺈن اﻷﺳــﻣﺑﻠر ﺳــوف ﯾــﺳﺗﺛﻧﻲ ﻫــذﻩ اﻟﺟﻣــل ﻣــن
اﻟﻣﻌﺎﻟﺟﺔ.
ﻣﺛﺎل ): (24.5
XXX MACRO N1,N2
IFIDN <N1> ;; IF N1 is AL
.
.
ENDIF
.
.
ENDM
ﺣﯾث أن MACROو ENDMﺗﺳﺗﺧدم ﻟﺗﻌرﯾف ﺑداﯾﺔ وﻧﻬﺎﯾﺔ اﻟﻣﺎﻛرو.
وﻓــﻲ ﺣﺎﻟــﺔ ﻛــون N1ﻣــﺳﺎوﯾﺔ ﻟـ ـ ALﻓــﻲ اﻟﻘﯾﻣ ــﺔ ﻓﺈﻧــﻪ ﯾــﺗم ﻣﻌﺎﻟﺟــﺔ اﻟﺟﻣــل اﻟواﻗﻌــﺔ ﺑ ــﯾن IFIDNو
ENDIFﻣن ﻗﺑل اﻷﺳﻣﺑﻠر.
- ٤٩ -
إذا أردﻧــﺎ اﺳــﺗﺧدام أﻛﺛــر ﻣــن ﺗوﺟﯾﻬــﺔ ﻣ ـن ﺗوﺟﯾﻬــﺎت اﻟﺗرﺟﻣــﺔ اﻟﻣــﺷروطﺔ داﺧــل ﺑﻌــﺿﻬﺎ اﻟــﺑﻌض ﻓــﺈن
ذﻟك ﻣﺳﻣوح ﺑﻪ ﻓﻲ ﻟﻐﺔ اﻟﺗﺟﻣﯾﻊ.
ﻣﺛﺎل:
IFE LANGUAGE
… ; Arabic
…
ELSE
IFE LANGUAGE-1
… ; English
…
ELSE
IFE LANGUAGE-2
… ; French
…
ELSE
… ; German
ENDIF
ENDIF
ENDIF
٩-٨ﺗوﺟﯾﻬﺔ : IFB
ﻫﻧﺎك ﺗوﺟﯾﻬﺎت أﺧرى ﻟﻠﺗرﺟﻣﺔ اﻟﻣﺷروطﺔ واﻟﻣﺳﺗﺧدﻣﺔ ﺧﺎﺻﺔ ﻣﻊ اﻟﻣﺎﻛرو وﻣن أﺑرزﻫﺎ:
IFB <Argument> -واﻟﺗـﻲ ﺗﻌﻧـﻲ إذا ﻛـﺎن اﻟﻣﻌﺎﻣـل Argumentﻓﺎرﻏـﺎً Blankﯾﻘـوم اﻟﻣﺗـرﺟم
ﺑﻣﻌﺎﻟﺟﺔ اﻟﺟﻣل اﻟواﻗﻌﺔ ﺑﯾن IFBو .ENDIF
IFNB <Argument> -واﻟﺗﻲ ﺗﻌﻧﻲ إذا ﻟم ﯾﻛـن اﻟﻣﻌﺎﻣـل Argumentﻓﺎرﻏـﺎً ﻓﺈﻧـﻪ ﺳـﯾﺗم ﻣﻌﺎﻟﺟـﺔ
اﻟﺟﻣل اﻟواﻗﻌﺔ ﺑﯾن IFNBو .ENDIF
١٠-٨ﺗوﺟﯾﻬﺔ : EXITM
وﺗﻌﻣــل ﻫــذﻩ اﻟﺗوﺟﯾﻬــﺔ ﻋﻠــﻰ إﺷــﻌﺎر اﻟﻣﺗــرﺟم ﺑــﺎﻟﺗوﻗف ﻋــن اﻻﺳــﺗﻣرار ﺑﻌﻣﻠﯾــﺔ ﻣﻌﺎﻟﺟــﺔ اﻟﻣــﺎﻛرو واﻟﺗــﻲ
ﯾطﻠـق ﻋﻠﯾﻬــﺎ Macro Expansionﻋﻧــد ﻣــﺻﺎدﻓﺔ ﻫـذﻩ اﻟﺗوﺟﯾﻬــﺔ ﻓــﻲ اﻟﺑرﻧـﺎﻣﺞ ،وﯾﻧﺗﻘــل اﻟــﺗﺣﻛم إﻟــﻰ
اﻟﺟﻣﻠﺔ اﻟﺗﺎﻟﯾﺔ ﻟﻧﻬﺎﯾﺔ اﻟﻣﺎﻛرو.
- ٥٠ -
اﻟوﺣدة اﻟﺳﺎدﺳﺔ
طرق اﻟﻌﻧوﻧﺔ وطﺎﻗم اﻟﺗﻌﻠﯾﻣﺎت اﻷﺳﺎﺳﯾﺔ
ﯾــﺗم ﺗﻣﺛﯾــل ﻫــذﻩ اﻷﻧ ـواع ،ﺑﺎﺳــﺗﺛﻧﺎء اﻟﺑﯾﺎﻧــﺎت اﻟرﻗﻣﯾــﺔ ﻓــﻲ ذاﻛ ـرة اﻟﺣﺎﺳــوب وﻣــﺳﺟﻼﺗﻪ ﺑﺎﺳــﺗﺧدام إﺣــدى
طرق اﻟﺗرﻣﯾز اﻟﻣﺧﺗﻠﻔـﺔ ،ﺣﯾـث ﯾﻣﺛـل ﻛـل رﻣـز ﻣـن ﻫـذﻩ اﻟرﻣـوز أو ﺣـرف ﻣـن ﻫـذﻩ اﻟﺣـروف ﺑﻣﺟﻣوﻋـﺔ
ﻣــن اﻟﺛﻧﺎﺋﯾــﺎت ﺗﻌﺗﻣــد ﻋﻠــﻰ ﻧظــﺎم اﻟﺗﻣﺛﯾــل اﻟﻣــﺳﺗﺧدم وﻋﻠــﻰ اﻟرﻣــز أو اﻟﺣــرف ﻧﻔــﺳﻪ ،ﻋﻠﻣــﺎً ﺑــﺄن ﻣﻌظــم
اﻟﺣواﺳﯾب ﯾﻣﻛﻧﻬﺎ اﻟﺗﻌﺎﻣل ﻣﻊ ﻣﺟﻣوﻋﺔ ﻣﺧﺗﻠﻔـﺔ ﻣـن اﻷﻧظﻣـﺔ اﻟﻌددﯾـﺔ إﺿـﺎﻓﺔ إﻟـﻰ اﻟﻧظـﺎم اﻟﺛﻧـﺎﺋﻲ ﻣﺛـل
اﻟﺛﻣﺎﻧﻲ واﻟﺳﺎدس ﻋﺷري.
إن اﻟﻧظــﺎﻣﯾن اﻟﺛﻣــﺎﻧﻲ واﻟــﺳﺎدس ﻋــﺷري ﯾﻌﺗﺑ ـران ﻣــن اﻷﻧظﻣــﺔ اﻟﻌددﯾــﺔ اﻷﻛﺛــر اﻧﺗــﺷﺎراً ﻓــﻲ ﻛﺛﯾــر ﻣــن
ﻟﻐـﺎت اﻟﺗﺟﻣﯾـﻊ ﻷن اﻟﻌـدد اﻟﺛﻧـﺎﺋﻲ ذو اﻟﺛﻧﺎﺋﯾـﺎت اﻟﻛﺛﯾـرة ﯾﻣﻛـن أن ﯾﻣﺛـل ﺑﻬـذﯾن اﻟﻧظـﺎﻣﯾن ﺑﻌـدد أﻗـل ﻣـن
اﻟﺧﺎﻧﺎت.
- ٥١ -
إن ﻫــذﻩ اﻟطــرق ﻟﺗﻣﺛﯾــل اﻟﺑﯾﺎﻧــﺎت اﻟرﻗﻣﯾــﺔ اﻟــﺻﺣﯾﺣﺔ ﺗــﺳﺗﺧدم ﻓــﻲ ﺣﺎﻟــﺔ ﻛــون اﻟﺑﯾﺎﻧــﺎت اﻟرﻗﻣﯾــﺔ ﺑﺈﺷــﺎرة
)ﺳــﺎﻟﺑﺔ أو ﻣوﺟﺑــﺔ( .أﻣــﺎ ﻓــﻲ ﺣﺎﻟــﺔ ﻛــون اﻟﺑﯾﺎﻧــﺎت اﻟرﻗﻣﯾــﺔ اﻟــﺻﺣﯾﺣﺔ ﺑــدون إﺷــﺎرة )ﻣﺛــل ﻋﻧــﺎوﯾن ﻣواﻗــﻊ
اﻟذاﻛرة( ﻓﯾﺗم ﺗﻣﺛﯾﻠﻬﺎ ﺑﺎﺳﺗﺧدام اﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ ﺑدون إﺷﺎرة.
- ٥٢ -
إن ﻫــذﻩ اﻟطرﯾﻘــﺔ ﺗﻌــﺎﻧﻲ ﻣــن ﻧﻔــس اﻟﻌﯾــوب اﻟﺗــﻲ ﺗﻌــﺎﻧﻲ ﻣﻧﻬــﺎ طرﯾــق اﻹﺷــﺎرة واﻟﻣﻘــدار ﻣــن ﺣﯾــث وﺟــود
ﺗﻣﺛﯾﻠﯾن ﻣﺧﺗﻠﻔﯾن ﻟﻠﺻﻔر.
-٣ﺗﻣﺛﯾل اﻟﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ ﺑﺎﺳﺗﺧدام طرﯾﻘﺔ اﻟﻣﻛﻣل ﻷﺛﻧﯾن :
ﻓﻲ ﻫذﻩ اﻟطرﯾﻘﺔ ﯾوﺟد ﺗﻣﺛﯾل واﺣد ﻟﻠﻌدد .٠
أﻣﺎ ﺑﺎﻟﻧﺳﺑﺔ ﻟﺗﻣﺛﯾـل اﻷﻋـداد اﻟـﺻﺣﯾﺣﺔ اﻟﻣوﺟﺑـﺔ ﻓﻬـو ﻣـﺷﺎﺑﻪ ﻟﻠطـرﯾﻘﺗﯾن اﻟـﺳﺎﺑﻘﺗﯾن ،واﻻﺧـﺗﻼف ﻫـو ﻓـﻲ
ﺗﻣﺛﯾل اﻷﻋداد اﻟﺳﺎﻟﺑﺔ.
ﺟدول )(3.6
ﯾﺗﺑﯾن ﻣن اﻟﺟدول اﻟﺳﺎﺑق أن ﻫﻧﺎك ﻋـدداً إﺿـﺎﻓﯾﺎً ﯾﻣﻛـن ﺗﻣﺛﯾﻠـﻪ ﻣﻘﺎرﻧـﺔ ﻣـﻊ اﻟﻧظـﺎﻣﯾن اﻟـﺳﺎﺑﻘﯾن ﻟﻠﺗﻣﺛﯾـل
ﻋﻧد اﺳﺗﺧدام ﻧﻔس اﻟﻌدد ﻣن اﻟﻣواﻗﻊ اﻟﺛﻧﺎﺋﯾﺔ ﻟﺗﻣﺛﯾل اﻷﻋداد.
وﻟﺗﻣﺛﯾــل اﻷﻋ ــداد اﻟ ــﺻﺣﯾﺣﺔ اﻟ ــﺳﺎﻟﺑﺔ ﺑﺎﺳــﺗﺧدام ﻧظ ــﺎم اﻟﻣﻛﻣ ــل ﻻﺛﻧ ــﯾن ﯾﻣﻛــن اﺳ ــﺗﺧدام إﺣ ــدى اﻟط ــرق
اﻟﺗﺎﻟﯾﺔ:
اﻟطرﯾﻘﺔ اﻷوﻟﻰ:
ﻧوﺟد أوﻻً اﻟﻣﻛﻣل ﻟواﺣد ﺛم ﯾﺿﺎف ﻋﻠﯾﻪ اﻟﻌدد .١
ﻣﺛﺎل ): (5.6
ﻣﺛل اﻟﻌدد -١٧ﻣﺳﺗﺧدﻣﺎً ٨ﻣواﻗﻊ ﺛﻧﺎﺋﯾﺔ.
اﻟﺣل:
-ﯾﻣﺛل اﻟﻌدد -١٧ﺣﺳب طرﯾﻘﺔ اﻟﻣﻛﻣل ﻟواﺣد ﻟﻠﺣﺻول ﻋﻠﻰ.١١١٠١١١٠ :
-ﯾﺿﺎف اﻟﻌدد ١إﻟﻰ ﻫذا اﻟﻌدد ﻟﻠﺣﺻول ﻋﻠﻰ اﻟﻧﺗﯾﺟﺔ اﻟﻧﻬﺎﺋﯾﺔ وﻫﻲ.١١١٠١١١١ :
اﻟطرﯾﻘﺔ اﻟﺛﺎﻧﯾﺔ:
ﯾﻣﺛل ﻣﻘدار اﻟﻌدد ﺑﺎﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ ﺑدون إﺷﺎرة .ﺑﻌد ذﻟك ﻧﻔﺣص ﺧﺎﻧﺎت اﻟﻌـدد اﻟﺛﻧـﺎﺋﻲ ﻣـن اﻟﯾﻣـﯾن إﻟـﻰ
اﻟﯾﺳﺎر ﺣﯾث ﺗﺑﻘﻰ ﺟﻣﯾـﻊ اﻷﺻـﻔﺎر ﻣـن أﻗـﺻﻰ اﻟﯾﻣـﯾن ﻣـﻊ أول رﻗـم واﺣـد ﻣﺟـﺎور ﻟﻬـﺎ ﻣـن اﻟﯾـﺳﺎر ﻛﻣـﺎ
ﻫﻲ .وﻣن ﺛم ،وﺣﺗﻰ ﻧﻬﺎﯾﺔ اﻟﺗﻣﺛﯾل اﻟﺛﻧﺎﺋﻲ ﻟﻠﻣﻘدار ،ﯾﺑدأ ﺗﺣوﯾل ﻛل ٠إﻟﻰ ١واﻟﻌﻛس.
ﻣﺛﺎل ): (6.6
ﻣﺛل اﻟﻌدد -١٩ﻣﺳﺗﻌﻣﻼً ٨ﻣواﻗﻊ ﺛﻧﺎﺋﯾﺔ.
اﻟﺣل:
-ﺗﻣﺛﯾل اﻟﻌدد ١٩ﺑﺎﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ .٠٠٠١٠٠١١
-ﺑﻣـﺎ أن اﻟــﻧﻣط اﻟﺛﻧــﺎﺋﻲ اﻟﻧــﺎﺗﺞ ﻻ ﯾﺣﺗــوي ﻋﻠــﻰ أﺻــﻔﺎر ﻓـﻲ أﻗــﺻﻰ اﻟﯾﻣــﯾن ،ﯾﺄﺧــذ اﻟــرﻗم ١ﻣــن أﺻــﻰ
اﻟﯾﻣــﯾن وﻣــن ﺛــم ﺗﺣــول ﺑــﺎﻗﻲ اﻟﻣواﻗــﻊ ﻣــن ٠إﻟــﻰ ١واﻟﻌﻛــس ﻟﻠﺣــﺻول ﻋﻠــﻰ اﻟﻧﺗﯾﺟــﺔ اﻟﻣطﻠوﺑــﺔ وﻫــﻲ:
.١١١٠١١٠١
- ٥٣ -
اﻟطرﯾﻘﺔ اﻟﺛﺎﻟﺛﺔ:
إن إﯾﺟﺎد اﻟﻣﻛﻣل ﻟﻸﺳﺎس )أي ﻻﺛﻧـﯾن ﻋﻧـد اﻟﺗﻣﺛﯾـل ﺑﺎﺳـﺗﺧدام اﻟﻧظـﺎم اﻟﺛﻧـﺎﺋﻲ( ﺗـﺗم ﺑطـرح ﻣﻘـدار اﻟﻌـدد
(2ﺣﯾـث أن nﺗﻣﺛـل ﻋـدد اﻟﻣواﻗـﻊ اﻟﺛﻧﺎﺋﯾـﺔ اﻟﻣـﺳﺗﺧدﻣﺔ ﻟﺗﻣﺛﯾـل اﻟﻌـدد اﻟﻣﻌطـﻰ ﻣـن اﻟﻌـدد اﻟﺛﻧـﺎﺋﻲ )
ﺣﺳب ﻫذا اﻟﻧظﺎم.
ﻣﺛﺎل ): (7.6
ﻣﺛل اﻟﻌدد -١٩ﻣﺳﺗﻌﻣﻼً ٨ﻣواﻗﻊ ﺛﻧﺎﺋﯾﺔ.
اﻟﺣل:
-ﺗﻣﺛﯾل اﻟﻌدد ١٩ﺑﺎﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ .٠٠٠١٠٠١١
) ٢أي (١٠٠٠٠٠٠٠٠ﻟﻠﺣـ ــﺻول -اطـ ــرح اﻟﻌـ ــدد اﻟﺛﻧـ ــﺎﺋﻲ ) (٠٠٠١٠٠١١ﻣـ ــن اﻟﻌـ ــدد اﻟﺛﻧـ ــﺎﺋﻲ
ﻋﻠﻰ اﻟﻧﺗﯾﺟﺔ اﻟﻧﻬﺎﺋﯾﺔ ).(١١١٠١١٠١
ﻣﺛﺎل ): (8.6
ﯾﻣﺛـل اﻟﻌـدد -١٧ﺑطرﯾﻘـﺔ اﻟﻣﻛﻣـل ﻟواﺣـد ﺑطـرح اﻟﻣﻘـدار ١٧ﻣﻣـﺛﻼً ﺑﺎﻟﻧظـﺎم اﻟﺛﻧـﺎﺋﻲ )(٠٠٠١٠٠٠١
) (2أي ) (٢٥٥أي ١١١١١١١١ﺑﺎﻟﻧظــﺎم اﻟﺛﻧــﺎﺋﻲ( ﻋﻠــﻰ ﻓــرض أن n=8 ﻣــن اﻟﻣﻘــدار )-1
ﻟﻠﺣﺻول ﻋﻠﻰ اﻟﻧﻣط اﻟﺛﻧﺎﺋﻲ .١١١٠١١١٠
ﻛـذﻟك إذا أﻋطﯾـت اﻟﺗﻣﺛﯾــل ﺑطرﯾﻘـﺔ اﻟﻣﻛﻣــل ﻻﺛﻧـﯾن ﻷي ﻋــدد ،ﯾﻣﻛﻧـك إﯾﺟــﺎد ﺗﻣﺛﯾـل ذﻟــك اﻟﻌـدد ﺑطرﯾﻘــﺔ
اﻟﻣﻛﻣل ﻟواﺣد ﻋن طرﯾق طرح اﻟﻌدد ١ﻣن اﻟﺗﻣﺛﯾل ﺑطرﯾﻘﺔ اﻟﻣﻛﻣل ﻻﺛﻧﯾن.
-أﻓرض أن :ﺗﻣﺛﯾل اﻟﻌدد -١٩ﺑطرﯾﻘﺔ اﻟﻣﻛﻣل ﻻﺛﻧﯾن ﻣﻊ ٨ﻣواﻗﻊ ﻫو .١١١٠١١٠١
-ﻟﺗﻣﺛﯾل ﻧﻔس اﻟﻌدد ﺑطرﯾﻘﺔ اﻟﻣﻛﻣل ﻟواﺣد ﻧﻘوم ﺑطرح اﻟﻌدد ١ﻣن اﻟﻌدد .١١١٠١١٠١
-واﻟﺣﺻول ﻋﻠﻰ اﻟﻧﺗﯾﺟﺔ اﻟﻧﻬﺎﺋﯾﺔ وﻫﻲ.١١١٠١١٠٠ :
ﻣﻣﺛﻼ ﺑﺈﺣدى طرق اﻟﺗﻣﺛﯾل اﻟﺳﺎﺑﻘﺔ؟
ً ﻛﯾف ﯾﻣﻛن ﻣﻌرﻓﺔ ﻗﯾﻣﺔ ﻋدد ﻣﻌﯾن إذا ﻛﺎن
إذا ﻛﺎﻧت إﺷﺎرة اﻟﻌدد اﻟﻣﻣﺛل ﺳﺎﻟﺑﺔ ﻓﺈن ﻗﯾﻣﺗﻪ ﺑﺎﻟﻧظﺎم اﻟﻌﺷري ﺗﻌﺗﻣد ﻋﻠﻰ طرﯾﻘـﺔ اﻟﺗﻣﺛﯾـل اﻟﻣـﺳﺗﺧدﻣﺔ
وﯾﻣﻛن إﯾﺟﺎد ﻫذﻩ اﻟﻘﯾﻣﺔ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
أوﻻ :إذا ﻛﺎن اﻟﻌدد ﻣﻣﺛﻼً ﺑطرﯾﻘﺔ اﻹﺷﺎرة واﻟﻣﻘدار.
ً
ﺛﺎﻧﯾﺎً :إذا ﻛﺎن اﻟﻌدد ﻣﻣﺛﻼً ﺑطرﯾﻘﺔ اﻟﻣﻛﻣل ﻟواﺣد.
ﯾﻣﻛ ــن ﺗﻌﻣ ــﯾم ط ــرق اﻟﺗﻣﺛﯾ ــل اﻟ ــﺳﺎﺑﻘﺔ ﻟﻛ ــﻲ ﺗ ــﺷﻣل اﻷﻋ ــداد ﺑ ــﺄﺟزاء ﻋ ــﺷرﯾﺔ ،إﺿ ــﺎﻓﺔ إﻟ ــﻰ ذﻟ ــك ﺗوﺟ ــد
طرﯾﻘﺗﯾن ﻟﺗﻣﺛﯾل اﻷﻋداد اﻟﺗﻲ ﺗﺷﻣل اﻟﻧﻘطﺔ اﻟﻌﺷرﯾﺔ ﻫﻣﺎ:
-ﺻﯾﻐﺔ اﻟﻧﻘطﺔ اﻟﺛﺎﺑﺗﺔ .Fixed-Point Format
-ﺻﯾﻐﺔ اﻟﻧﻘطﺔ اﻟﻌﺎﺋﻣﺔ .Floating-Point Format
- ٥٤ -
ﻓــﻲ ﺻــﯾﻐﺔ اﻟﻧﻘطــﺔ اﻟﺛﺎﺑﺗــﺔ ﻋــدد اﻟﺧﺎﻧــﺎت إﻟــﻰ ﯾﻣــﯾن اﻟﻧﻘطـﺔ اﻟﻌــﺷرﯾﺔ )ﻓــﻲ اﻟﻧظــﺎم اﻟﻌــﺷري( أو اﻟﺛﻧﺎﺋﯾــﺔ
)ﻓﻲ اﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ( ﺛﺎﺑﺗﺎً.
أم ﻣن ﺣﯾـث اﻟﺣﺎﺳـوب ﻓﻬـو ﻻ ﯾﻣﯾـز ﺑـﯾن اﻷﻋـداد اﻟـﺻﺣﯾﺣﺔ أو ﺗﻠـك اﻟﺗـﻲ ﺗـدﺧل ﻓﯾﻬـﺎ اﻟﻧﻘطـﺔ اﻟﺛﻧﺎﺋﯾـﺔ
أو اﻟﻌ ــﺷرﯾﺔ .ﻟ ــذﻟك ﻓﺈﻧ ــﻪ ﻣ ــن واﺟـ ــب اﻟﻣﺑ ــرﻣﺞ ﻣﺗﺎﺑﻌ ــﺔ ﻣوﻗ ــﻊ اﻟﻧﻘطـ ــﺔ ﻓ ــﻲ اﻟﻌ ــدد وﻣﺗﺎﺑﻌ ــﺔ اﻟﺗﻌﻠﯾﻣـ ــﺎت
اﻟﻣﺳﺗﺧدﻣﺔ ﻟﻣﻌﺎﻟﺟﺔ ﻫذﻩ اﻟﺑﯾﺎﻧﺎت ﺣﺳب اﻷﺻول.
ﺑﺎﺳﺗﺧدام أﺳﻠوب اﻟﺗدرج Scalingوﻫو ﺑﺿرب اﻟﻌدد اﻟﻔﻌﻠﻲ ﺑﻣﻌﺎﻣل اﻟﺗدرﯾﺞ .Scale Factor
101.01 ﻓﻣﺛﻼ اﻟﻌدد:
ً
10101.*2 ﯾﻣﻛن ﺗﻣﺛﯾﻠﻪ ﺑﺎﻟﺻﯾﻐﺔ
0.10101*2 أو ﺑﺎﻟﺻﯾﻐﺔ
- ٥٥ -
ﻣﺛﺎل ): (11.6
ﻣﺛل اﻟﻌدد اﻟﺛﻧﺎﺋﻲ 11011.1001101ﻣﺳﺗﺧدﻣﺎً ١٥ﻣوﻗﻌﺎً ﻟﻠﻛﺳر و ٧ﻣواﻗﻊ ﻟﻸس.
اﻟﺣل:
-٢اﻟطرﯾﻘﺔ اﻟﺛﺎﻧﯾﺔ ﺣﯾث ﯾﺗم اﻻﺳﺗﻐﻧﺎء ﻋن إﺷﺎرة اﻷس ،وذﻟك ﺑﺟﻌل ﻗﯾﻣﺔ اﻷس داﺋﻣﺎً ﻣوﺟﺑﺔ:
ﯾﻣﻛن ﺗﻣﺛﯾل ﻫذﻩ اﻟطرﯾﻘﺔ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
- ٥٦ -
١-٢-٢ﻧظﺎم ): (EBCDIC
وﻫو اﻣﺗداد ﻟﻧظﺎم BCDوﻣن ﻣﻣﯾزات ﺷﯾﻔرة BCDﻣﺎ ﯾﻠﻲ:
-ﺗﺳﺗﺧدم ٦ﺧﺎﻧﺎت ﺛﻧﺎﺋﯾﺔ ﻟﺗﻣﺛﯾل اﻟرﻣوز.
-ﺗﺟـزأ ﺷـﯾﻔرة اﻟرﻣـز إﻟـﻰ ﻗـﺳﻣﯾن :اﻷول ﻣﻛـون ﻣــن ﺧـﺎﻧﺗﯾن وﯾـﺳﻣﻰ ﻧطـﺎق ،واﻟﺛـﺎﻧﻲ ﯾﻛـون ﻣﻛـون ﻣــن
٤ﺧﺎﻧﺎت وﯾﺳﻣﻰ ﺑﺎﻟرﻗم.
ﻓﻣﺛﻼً ﻟو ﻓرﺿﻧﺎ رﻣزاً ﻣﻌﯾﻧﺎً ﯾﻘﻊ ﻓﻲ اﻟﻣﺟﻣوﻋﺔ اﻟﺛﺎﻧﯾﺔ وﻛﺎن ﺗرﺗﯾﺑﻪ ﺿـﻣن ﻋﻧﺎﺻـر ﻣﺟﻣوﻋﺗـﻪ اﻟﺧـﺎﻣس
. ١٠٠١٠١ ﻓﺈن ﻫذا اﻟرﻣز ﺳﯾﻣﺛل ﺑﺎﻟﻧﻣط:
وﺑﻣﺎ أن ﻣوﻗﻌﯾن ﺛﻧﺎﺋﯾﯾن ﻗد ﺧﺻﺻﺎ ﻟﻠﻣﺟﻣوﻋﺔ ﻓﻬذا ﯾﻌﻧﻲ أﻧﻪ ﯾﻣﻛن ﺗﻣﺛﯾل ٤ﻣﺟﻣوﻋﺎت ﻛﻣﺎ ﯾﻠﻲ:
٠٠ اﻟﻣﺟﻣوﻋﺔ اﻷوﻟﻰ
٠١ اﻟﻣﺟﻣوﻋﺔ اﻟﺛﺎﻧﯾﺔ
١٠ اﻟﻣﺟﻣوﻋﺔ اﻟﺛﺎﻟﺛﺔ
اﻟﻣﺟﻣوﻋﺔ اﻟراﺑﻌﺔ ١١
) ٢أي (١٦ ﻛذﻟك ﺑﻣﺎ أﻧﻪ ﺗم ﺣﺟز ٤ﻣواﻗـﻊ ﻟﻌﻧﺎﺻـر ﻛـل ﻣﺟﻣوﻋـﺔ ،ﻓﻬـذا ﯾﻌﻧـﻲ أﻧـﻪ ﯾﻣﻛـن ﺗﻣﺛﯾـل
ﻋﻧــﺻراً ﻓــﻲ اﻟﻣﺟﻣوﻋــﺔ اﻟواﺣــدة .ﻟــذﻟك ﯾﻛــون ﻋــدد اﻟرﻣــوز اﻟﻛﻠــﻲ اﻟﺗــﻲ ﯾﻣﻛــن ﺗﻣﺛﯾﻠﻬــﺎ ﺑﺎﺳــﺗﺧدام ﻫــذا
اﻟﻧظﺎم ﻣﺳﺎوﯾﺎً ) (٦٤=١٦*٤رﻣزاً .ﻟذﻟك ﯾﻌﺎﻧﻲ ﻫذا اﻟﻧظﺎم ﻣن ﻗﻠﺔ ﻋدد اﻟرﻣوز اﻟﺗﻲ ﯾﻣﻛن ﺗﻣﺛﯾﻠﻬﺎ.
ﻟذﻟك ﻗﺎﻣت ﺷرﻛﺔ IBMﺑﺗطوﯾر ﻧظﺎم EBCDICﻻﺳﺗﺧداﻣﻪ ﻣﻊ أﺟﻬزﺗﻬﺎ.
وﺗﻣﺗﺎز ﻫذﻩ اﻟﺷﯾﻔرة ﺑﺎﻟﻣﯾزات اﻟﺗﺎﻟﯾﺔ:
-ﺗ ــﺳﺗﺧدم ٨ﺧﺎﻧ ــﺎت ﺛﻧﺎﺋﯾ ــﺔ ﻟﺗﻣﺛﯾ ــل اﻟرﻣ ــوز ﺣﯾ ــث ﺗﺧ ــﺻص اﻟﺧﺎﻧ ــﺎت اﻷرﺑ ــﻊ ﻣ ــن أﻗ ــﺻﻰ اﻟﯾ ــﺳﺎر
ﻟﻠﻧطﺎق ،واﻟﺧﺎﻧﺎت اﻷرﺑﻊ ﻣن أﻗﺻﻰ اﻟﯾﻣﯾن ﻟﻠرﻗم.
) ٢أي (٢٥٦رﻣزاً. -ﯾﺑﻠﻎ ﻋدد اﻟرﻣوز اﻟﺗﻲ ﯾﻣﻛن ﺗﻣﺛﯾﻠﻬﺎ
-ﺗﻘﻊ اﻷرﻗﺎم ﺑﻌد اﻷﺣرف اﻷﺑﺟدﯾﺔ ﻓﻲ اﻟﺗرﺗﯾب.
-اﻟﺣروف اﻟﺻﻐﯾرة ﺗﺳﺑق اﻟﺣروف اﻟﻛﺑﯾرة.
-اﻷرﻗﺎم ﻣرﺗﺑﺔ ﺑﺎﻟﻧﺳﺑﺔ إﻟﻰ ﺑﻌﺿﻬﺎ اﻟﺑﻌض ،وﻛذﻟك اﻷﺣرف اﻷﺑﺟدﯾﺔ اﻟﻛﺑﯾرة واﻟﺻﻐﯾرة.
أﻧظر اﻟﺟدول )(5.6
٢-٢-٢ﻧظﺎم : ASCII
ﻣن ﻣﻣﯾزات ﻫذﻩ اﻟﺷﯾﻔرة:
) ٢أي (١٢٨رﻣزًا ﻓﻘط. -ﺗﺳﺗﺧدم ٧ﺧﺎﻧﺎت ﺛﻧﺎﺋﯾﺔ ﻟﺗﻣﺛﯾل اﻟرﻣوز ،أي ﯾﻣﻛن ﺗﻣﺛﯾل
-ﺗﻘﻊ اﻷرﻗﺎم ﻗﺑل اﻟﺣروف اﻷﺑﺟدﯾﺔ.
-اﻷرﻗﺎم ﻣرﺗﺑﺔ ﺑﺎﻟﻧﺳﺑﺔ إﻟﻰ ﺑﻌﺿﻬﺎ اﻟﺑﻌض ،وﻛذﻟك اﻷﺣرف اﻷﺑﺟدﯾﺔ اﻟﻛﺑﯾرة واﻟﺻﻐﯾرة.
أﻧظر اﻟﺟدول )(6.6
- ٥٧ -
-٣طرق اﻟﻌﻧوﻧﺔ :
ﯾﻣﻛن أن ﺗﻛون اﻟﺑﯾﺎﻧﺎت اﻟﻣراد ﻣﻌﺎﻟﺟﺗﻬـﺎ ﻓـﻲ ذاﻛـرة اﻟﺣﺎﺳـوب أو ﻓـﻲ ﻣـﺳﺟﻼﺗﻪ أو ﻓـﻲ ﻣﻧﺎﻓـذ اﻹدﺧـﺎل
واﻹﺧراج أو ﺿﻣن اﻟﺗﻌﻠﯾﻣﺔ ﻧﻔﺳﻬﺎ.
ﻓﺑﺎﺧﺗﻼف أﻣﻛﻧﺔ ﺗواﺟد اﻟﺑﯾﺎﻧﺎت اﻟﻼزﻣﺔ ﻹﺟراء ﻋﻣﻠﯾـﺔ ﻣﻌﯾﻧـﺔ ﺗﺧﺗﻠـف طـرق اﻟوﺻـول إﻟﯾﻬـﺎ )أي طـرق
اﻟﻌﻧوﻧﺔ(.
١-٣اﻟﻌﻧوﻧﺔ اﻟﻔورﯾﺔ : Immediate Addressing
ﺣــﺳب ﻫــذﻩ اﻟطرﯾﻘــﺔ ﺗﻛــون اﻟﺑﯾﺎﻧــﺎت اﻟﻣطﻠوﺑــﺔ ﻣﺧزﻧــﺔ ﻓــﻲ ﻧﻔــس اﻟﺗﻌﻠﯾﻣــﺔ .وﯾﻣﻛــن أن ﯾﻛــون طوﻟﻬــﺎ ٨
ﺛﻧﺎﺋﯾﺎت )ﺑﺎﯾت( أو ١٦ﺛﻧﺎﺋﯾﺔ )ﻛﻠﻣﺔ(.
ﻣﺛﺎل ): (15.6
MOV AX, 150H
وﻫذا ﯾؤدي إﻟﻰ ﺗﺣرﯾك اﻟﻌدد ١٥٠ﺑﺎﻟﻧظﺎم اﻟﺳﺎدس ﻋﺷري إﻟﻰ اﻟﻣﺳﺟل .AX
- ٥٨ -
ﻟــذﻟك ﯾــﺿﺎف اﻟــرﻗم ٠إﻟــﻰ أﻗــﺻﻰ ﯾﻣــﯾن اﻟﻘﯾﻣــﺔ 034FHاﻟﻣﺧزﻧــﺔ ﻓــﻲ اﻟﻣــﺳﺟل .DSوﻫــذا ﻣﻛــﺎﻓﺊ
ﻟﺿرب اﻟﻘﯾﻣﺔ ﺑﺎﻟﻌدد .١٦
-ﺑﻌد ذﻟك ﺗﺗم ﻋﻣﻠﯾﺔ اﻹﺿﺎﻓﺔ ﻋﻠﻰ اﻟﻧﺣو اﻵﺗﻲ:
034F0
٠٠٠٣٢ +
ــــــ
) = (٠٣٥٢٢ﻗﯾﻣﺔ اﻟﻌﻧوان اﻟﺣﻘﯾﻘﻲ ﻟﻠﺑﯾﺎﻧﺎت اﻟﻣطﻠوﺑﺔ
- ٥٩ -
ﻣﺛﺎل ): (19.6
ﯾؤدي ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺗﺎﻟﯾﺔ:
]MOV CL, [BX
إﻟﻰ ﺗﺣرﯾك ﻣﺣﺗوﯾﺎت اﻟﻣوﻗﻊ اﻟذي إزاﺣﺗـﻪ ﻣـن ﺑداﯾـﺔ اﻟﻘطـﺎع اﻟﻣﻌـرف ﻓﯾـﻪ ﻣـﺳﺎوﯾﺔ ﻟﻠﻘﯾﻣـﺔ اﻟﻣﺧزﻧـﺔ ﻓـﻲ
اﻟﻣﺳﺟل ،BXإﻟﻰ اﻟﻣﺳﺟل .CL
٣-٤-٣اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻷﺳﺎس : Based Addressing
ﯾ ــﺗم ﺣ ــﺳﺎب ﻗﯾﻣ ــﺔ اﻟﻌﻧـ ـوان اﻟﻔﻌ ــﺎل ﻋ ــن طرﯾ ــق ﺟﻣ ــﻊ ﻣﺣﺗ ــوى ﻣ ــﺳﺟل اﻷﺳ ــﺎس BXأو BPوﻣﻘ ــدار
اﻹزاﺣﺔ Displacemanاﻟﻣﺧزﻧﺔ ﺿﻣن اﻟﺗﻌﻠﯾﻣﺔ ﻧﻔﺳﻬﺎ.
وﺗ ــﺳﺗﺧدم ٨أو ١٦ﺧﺎﻧ ــﺔ ﺛﻧﺎﺋﯾ ــﺔ ﻟﺗﺧـ ـزﯾن ﻗﯾﻣ ــﺔ اﻹزاﺣ ــﺔ .وﺗﻣﺛ ــل ﻫ ــذﻩ اﻟﻘﯾﻣ ــﺔ ﻋﻠ ــﻰ أﻧﻬ ــﺎ ﻗﯾﻣ ــﺔ ﺛﻧﺎﺋﯾ ــﺔ
إﺷﺎرة ،أي أن ﻗﯾﻣﺔ اﻹزاﺣﺔ ﻗد ﺗﺻل إﻟﻰ ) 2 - 1أي إﻟﻰ .(٦٥٥٣٥
ﻣن ﻓواﺋد ﻫذﻩ اﻟطرﯾﻘﺔ اﺳﺗﺧداﻣﻬﺎ ﻓﻲ ﻣﻌﺎﻟﺟﺔ ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑﯾﺎﻧﺎت اﻟﻣﺧزوﻧـﺔ ﻓـﻲ اﻟـذاﻛرة ﻋﻠـﻰ ﺷـﻛل
ﺳﺟل.
٤-٤-٣اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻟﻔﻬرس : Indexed Addressing
٥-٤-٣اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻷﺳﺎس واﻟﻔﻬرس : Based Indexed Addressing
٥-٣ﻋﻧوﻧﺔ ﺳﻼﺳل اﻟرﻣوز : String Addressing
٦-٣ﻋﻧوﻧﺔ ﻣﻧﺎﻓذ اﻹدﺧﺎل واﻹﺧراج : Input / Output Port Addressing
ﺗﺳﺗﺧدم ﻫـذﻩ اﻟطرﯾﻘـﺔ ﻣـﻊ ﺗﻌﻠﯾﻣـﺔ اﻹدﺧـﺎل ) (INوﺗﻌﻠﯾﻣـﺔ اﻹﺧـراج ) (OUTﺣﯾـث ﯾﺣـدد ﻋﻧـوان ﻣﻧﻔـذ
وﺣدة اﻹدﺧﺎل أو اﻹﺧراج ﺿﻣن اﻟﺗﻌﻠﯾﻣﺔ ﻧﻔﺳﻬﺎ أو ﯾﺷﺎر إﻟﯾﻪ ﺑواﺳطﺔ اﻟﻣﺳﺟل .DX
ﻓﻲ اﻟﺣﺎﻟﺔ اﻷوﻟﻰ ﯾطﻠق ﻋﻠﯾﻬﺎ اﻟﻌﻧوﻧﺔ اﻟﻣﺑﺎﺷرة ،وﯾﻣﻛن ﻋﻧوﻧﺔ ﻟﻐﺎﯾﺔ ٢٥٦ﻣﻧﻔذاً.
) ٢أي (٦٥٥٣٦وذﻟـك ﺑﺗﺧـزﯾن ﻋﻧـوان اﻟﻣﻧﻔـذ ﻓـﻲ اﻟﻣـﺳﺟل DX أﻣﺎ اﻟﺣﺎﻟﺔ اﻟﺛﺎﻧﯾـﺔ ﻓـﯾﻣﻛن ﻋﻧوﻧـﺔ
ﻗﺑل ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ.
ﻣﺛﺎل ): (24.6
ﯾؤدي ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ:
IN AL, 30H
إﻟﻰ إدﺧﺎل اﻟﺑﯾﺎﻧﺎت ﻣن ﻣﻧﻔذ اﻹدﺧﺎل ذو اﻟﻌﻧوان (30)16إﻟﻰ اﻟﻣﺳﺟل .AL
ﻣﺛﺎل ): (25.6
ﯾؤدي ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ:
OUT DX, AX
إﻟــﻰ إﺧ ـراج ﻣﺣﺗوﯾــﺎت اﻟﻣــﺳﺟل AXإﻟــﻰ ﺟﻬــﺎز اﻹﺧ ـراج اﻟﻣرﺑــوط ﻣــﻊ ﻣﻧﻔــذ اﻹﺧ ـراج واﻟــذي ﻋﻧواﻧــﻪ
ﻣﺧزن ﻓﻲ اﻟﻣﺳﺟل ،DXوطول ﻫذا اﻟﻣﻧﻔذ ﻣن اﻟﻧوع .Word
- ٦٠ -
-٤طﺎﻗم اﻟﺗﻌﻠﯾﻣﺎت : Instruction Set
ﯾﻘﺳم طﺎﻗم اﻟﺗﻌﻠﯾﻣﺎت إﻟﻰ ﺳﺗﺔ أﻧواع:
- ٦١ -
٤-١-٤ﺣﻘل اﻟﻣﻼﺣظﺔ : Comment Field
ﯾﺳﺗﺧدم ﻫذا اﻟﺣﻘل ﻟﺗوﺿﯾﺢ ﻋﻣل اﻟﺑرﻧﺎﻣﺞ ﺣﯾـث ﯾﻣﻛـن ﻛﺗﺎﺑـﺔ ﻋـدة أﺳـطر ﻣـن اﻟﻣﻼﺣظـﺎت ﻓـﻲ ﺑداﯾـﺔ
اﻟﺑرﻧﺎﻣﺞ .ﻛذﻟك ﯾﻣﻛن ﻛﺗﺎﺑﺔ ﺗوﺿﯾﺢ إﻟﻰ ﺟوار ﻛل ﺗﻌﻠﯾﻣﺔ.
٢-٤ﺗﻌﻠﯾﻣﺎت ﻧﻘل اﻟﺑﯾﺎﻧﺎت : Data Transfer Instructions
ﺗﻬدف ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺎت إﻟﻰ ﻧﻘل اﻟﺑﯾﺎﻧﺎت إﻣﺎ ﺑﯾن اﻟﻣﺳﺟﻼت ﻧﻔﺳﻬﺎ أو ﺑـﯾن اﻟﻣـﺳﺟﻼت وﻣواﻗـﻊ اﻟـذاﻛرة.
وﺗﻧﻘﺳم إﻟﻰ:
١-٢-٤اﻟﺗﻌﻠﯾﻣﺎت ﻋﺎﻣﺔ اﻷﻏراض : General Purpose Instruction
-١ﺗﻌﻠﯾﻣﺔ ﺗﺣرﯾك اﻟﺑﯾﺎﻧﺎت : MOV
ﺗﻌﻣل ﻋﻠﻰ ﻧﻘل ﺑﯾﺎﻧﺎت اﻟﻣﺻدر إﻟﻰ اﻟﺣﻘل اﻟﻣﺳﺗﻘﺑل ﻟﻬﺎ.
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
MOV dest, source
ﺑﻌض اﻷﻣﺛﻠﺔ:
ﻧﻘل ﻣﺣﺗوى اﻟﻣﺳﺟل CLوطوﻟﻪ ﺑﺎﯾت إﻟﻰ اﻟﻣﺳﺟل ALوطوﻟﻪ ﺑﺎﯾت ; MOV AL, CL
ﻧﻘل ﻣﺣﺗوى اﻟﻣﺳﺟل BXإﻟﻰ ﻣوﻗﻊ اﻟذاﻛرة اﻟﻣﻌﻧون ﺑﺎﻟﻣﺳﺟل MOV [AX], BX ; AX
; MOV AX, TABLE ﻧﻘل ﻣﺣﺗوى ﻣوﻗﻊ اﻟذاﻛرة TABLEإﻟﻰ اﻟﻣﺳﺟل AX
; MOV SI, 20 ﻧﻘل اﻟﻘﯾﻣﺔ اﻟﺛﺎﺑﺗﺔ ٢٠ﺑﺎﻟﻧظﺎم اﻟﻌﺷري إﻟﻰ اﻟﻣﺳﺟل SI
ﯾﺟـب أن ﺗﻛــون ﺣﻘـول ﻣــﺻدر واﺳـﺗﻘﺑﺎل اﻟﺑﯾﺎﻧــﺎت ﻣـن ﻧﻔــس اﻟطـول .ﻟــذﻟك ﺗﻌﺗﺑـر اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺗﺎﻟﯾـﺔ ﻏﯾــر
ﺳﻠﯾﻣﺔ:
MOV AL, BX
ﻷن طول BXﯾﺳﺎوي ﻛﻠﻣﺔ وطول ALﯾﺳﺎوي ﺑﺎﯾت.
أﯾﺿﺎً ﯾﺳﺗﺛﻧﻰ ﻣن ﺗﻌﻠﯾﻣﺔ MOVاﻟﺣﺎﻻت اﻵﺗﯾﺔ:
أ -ﻧﻘل ﻗﯾﻣﺔ ﻓورﯾﺔ إﻟﻰ ﻣﺳﺟﻼت اﻟﻘطﺎﻋﺎت ﻣﺑﺎﺷرة إﻻ ﻋﺑر وﺳﯾط ﻣﺛل:
MOV DS, DSEG
وﯾﻣﻛن اﻧﺟﺎز ذﻟك ﺑﺎﺳﺗﺧدام اﻟﺗﻌﻠﯾﻣﺗﯾن اﻟﺗﺎﻟﯾﺗﯾن:
MOV AX, DSEG
MOV DS, AX
ب -ﻧﻘل ﻣﺣﺗوى ﻣﺳﺟل ﻣن ﻣﺳﺟﻼت اﻟﻘطﺎع إﻟﻰ ﻣﺳﺟل ﻗطﺎع آﺧر ﻣﺑﺎﺷرة ﻣﺛل:
MOV DX, ES
ﺣﯾث ﯾﻣﻛن اﻧﺟﺎز ذﻟك ﺑﺎﺳﺗﺧدام اﻟﻣﺳﺟل AXﻛﺎﻵﺗﻲ:
MOV AX, ES
MOV DX, AX
ج -ﻧﻘل ﻣﺣﺗوى ﻣوﻗﻊ ﻓﻲ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ إﻟﻰ ﻣوﻗﻊ آﺧر ﻣﺑﺎﺷرة ﻣﺛل:
MOV A, B
- ٦٢ -
-٢ﺗﻌﻠﯾﻣﺔ دﻓﻊ )ﻧﻘل( اﻟﺑﯾﺎﻧﺎت إﻟﻰ اﻟﻣﻛدس : PUSH
ﺗﺳﺗﺧدم ﻟﺗﺧزﯾن ﻣﺣﺗوى ﺑﻌض اﻟﻣﺳﺟﻼت وﻣواﻗﻊ ﻓﻲ اﻟذاﻛرة ﻓﻲ ﻗطﺎع اﻟﻣﻛدس ﺗﺧزﯾﻧﺎً ﻣؤﻗﺗﺎً.
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
PUSH source
ﺣﯾث sourceﻋﻧوان ﻣﺻدر اﻟﺑﯾﺎﻧﺎت.
أﻣﺛﻠﺔ:
; PUSH AX دﻓﻊ ﻣﺣﺗوى اﻟﻣﺳﺟل AXﻋﻠﻰ اﻟﻣﻛدس
; PUSH A دﻓﻊ ﻣﺣﺗوى اﻟﻣوﻗﻊ Aﻣن اﻟﻧوع wordﻋﻠﻰ اﻟﻣﻛدس
- ٦٣ -
MOV AL, 4
MOV BX, OFFSET ARRAY
XLAT ARRAY
- ٦٤ -
ﻣﺛﺎل ): (28.6
ﺗؤدي اﻟﺗﻌﻠﯾﻣﺔ
LEA BX, Array
إﻟﻰ ﻧﻘل اﻟﻌﻧوان اﻟﻔﻌﺎل ﻟﻣوﻗﻊ اﻟذاﻛرة اﻟﻣﺳﻣﻰ Arrayإﻟﻰ اﻟﻣﺳﺟل . BX
-٢ﺗﻌﻠﯾﻣﺔ ﺗﺣﻣﯾل ﻣﺳﺟل ﻗطﺎع اﻟﺑﯾﺎﻧﺎت : (Load Data Segment Register) LDS
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
LDS reg16, double_word_pointer
ﺣﯾث أن:
ﻣﺳﺟﻼ ﻣن اﻟﻣﺳﺟﻼت.
ً – Reg16ﯾﻣﺛل
– double_word_pointerﯾﻣﺛـل اﺳـﻣﺎً ﻟﻌﻧـوان ﻣوﻗـﻊ ﻓــﻲ اﻟـذاﻛرة ﺗـم ﺗﻌرﯾﻔـﻪ ﺑﺎﺳـﺗﺧدام DDﺣﯾــث
ﯾﻌﻣل ﻋﻠﻰ ﺣﺟز ﻛﻠﻣﺔ ﻣزدوﺟﺔ )أو ٤ﺑﺎﯾت(.
-٣ﺗﻌﻠﯾﻣﺔ ﺗﺣﻣﯾل ﻣﺳﺟل اﻟﻘطﺎع اﻹﺿﺎﻓﻲ : (Load Extra Segment Register) LES
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
LES reg16, double_word_pointer
ﻧﻔــس ﺗﻌﻠﯾﻣــﺔ LDSﻣــﻊ اﻻﺧــﺗﻼف اﻟوﺣﯾــد وﻫــو أن ﻣــﺳﺟل اﻟﻘطــﺎع اﻟــذي ﯾــﺗم ﺗﺣﻣﯾﻠــﻪ ﻫــو ESوﻟــﯾس
.DS
- ٦٥ -
-٣ﺗﻌﻠﯾﻣﺔ : (Push Flags onto Stack) PUSHF
ﻟﻧﻘل ﻣﺣﺗوﯾﺎت ﻣﺳﺟل اﻟراﯾﺎت وﻋددﻫﺎ ١٦ﺛﻧﺎﺋﯾﺔ إﻟﻰ اﻟﻣﻛدس.
- ٦٦ -
ﻣﺛﻼً :ﻋدد ﻣﺎ ﻣﺧزن ﻓﻲ اﻟﻣﺳﺟﻠﯾن CXو DXوﻋدد ﺛﺎﻧﻲ ﻓﻲ اﻟﻣﺳﺟﻠﯾن AXو BX
ﺣﯾــث ﯾﻣﻛــن إﺿــﺎﻓﺔ ﻣﺣﺗــوى اﻟﻣــﺳﺟﻠﯾن CXو DXإﻟــﻰ ﻣﺣﺗــوى اﻟﻣــﺳﺟﻠﯾن AXو BXوﺗﺧـ ـزﯾن
اﻟﻧﺎﺗﺞ ﻓﻲ اﻟﻣﺳﺟﻠﯾن AXو BXﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
ADD AX, CX
ADC BX, DX
ﻓﺎﻟﺗﻌﻠﯾﻣﺔ اﻷوﻟﻰ ﺗﻌﻣل ﻋﻠﻰ إﺿﺎﻓﺔ ﻣﺣﺗوى اﻟﻣﺳﺟل CXإﻟﻰ ﻣﺣﺗوى اﻟﻣﺳﺟل .AX
وﻓﻲ ﺣﺎل وﺟود ﺣﻣل ﻓﻲ ﻧﺎﺗﺞ ﻫذﻩ اﻟﻌﻣﻠﯾﺔ ﯾﺗم أﺧذﻩ ﺑﻌﯾن اﻻﻋﺗﺑﺎر ﻓﻲ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺛﺎﻧﯾﺔ.
- ٦٨ -
أﻣﺛﻠﺔ:
; SUB AX, AX طرح ﻗﯾﻣﺔ اﻟﻣﺳﺟل AXﻣن ﻧﻔﺳﻪ
وﻫذﻩ ﻣن اﻟطرق اﻟﻣﺗﺑﻌﺔ ﻟﺗﺻﻔﯾر اﻟﻣﺳﺟل.
; SUB AX, Mem_word طرح ﻣوﻗﻊ ذاﻛرة ﻣن ﻣﺳﺟل
; SUB AL, 20 طرح ﻗﯾﻣﺔ ﻓورﯾﺔ ﻣن ﻣﺳﺟل
- ٦٩ -
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
CMP dest, source
ﺣﯾــث ﯾﻣﺛــل ﻛــل ﻣــن sourceو destأﺳــﻣﺎء ﻣــﺳﺟﻼت أو ﻣواﻗــﻊ ﻓــﻲ اﻟــذاﻛرة طوﻟﻬــﺎ إﻣــﺎ ٨ﺛﻧﺎﺋﯾــﺎت
أو ١٦ﺛﻧﺎﺋﯾﺔ .وﻣن ﻏﯾر اﻟﺟﺎﺋز ﻣﻘﺎرﻧﺔ ﻣوﻗﻊ ذاﻛرة ﻣﻊ ﻣوﻗﻊ ذاﻛرة ﻓﻲ ﻧﻔس اﻟﺗﻌﻠﯾﻣﺔ.
ﺗؤدي ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ طرح ﻗﯾﻣﺔ sourceﻓﻲ ﻗﯾﻣﺔ destدون اﻟﺗﺄﺛﯾر ﻋﻠﻰ اﻟﻣﻌﺎﻣل .dest
- ٧٠ -
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
AAM
ﺗؤدي ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ ﺗﺣوﯾل ﺣﺎﺻل اﻟﺿرب ﻓﻲ اﻟﻣﺳﺟل AXإﻟـﻰ اﻟـﺻﯾﻐﺔ ﻏﯾـر اﻟﻣـﺿﻐوطﺔ ﻓـﻲ
اﻟﻣﺳﺟﻠﯾن ALو .AH
ﻣﺛﺎل ): (39.6
ﻧﻔرض أن اﻟﻣﺳﺟل ALﯾﺣﺗوي ﻋﻠﻰ اﻟﻘﯾﻣﺔ اﻟﻌﺷرﯾﺔ ) ٩أي (٠٠٠٠١٠٠١
ﻛذﻟك ﻧﻔرض أن ﻣﺣﺗوى اﻟﻣﺳﺟل BLﻫو اﻟﻘﯾﻣﺔ اﻟﻌﺷرﯾﺔ ) ٧أي (٠٠٠٠٠١١١
ﺑﯾن ﻧﺗﯾﺟﺔ ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺗﯾن:
MUL BL
AAM
اﻟﺣل:
ﻧﺗﯾﺟﺔ اﻟﺗﻌﻠﯾﻣﺔ اﻷوﻟﻰ )(3F)16 = (٠٠١١١١١١) = (٠٠٠٠٠١١١) * (٠٠٠٠٠١٠٠١
وﻫــذا ﯾــؤدي إﻟــﻰ ﺗﺧ ـزﯾن اﻟﻘﯾﻣــﺔ (3F)16ﻓــﻲ اﻟﻣــﺳﺟل ،ALوﺗﺧ ـزﯾن اﻟﻘﯾﻣــﺔ ٠ﻓــﻲ اﻟﻣــﺳﺟل .AH
ﻟذﻟك ﻓﺈن ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ AAMﯾؤدي إﻟـﻰ ﻗـﺳﻣﺔ اﻟﻌـدد 3Fﻋﻠـﻰ اﻟـرﻗم ١٠ﺣﯾـث ﯾﻛـون ﻧـﺎﺗﺞ اﻟﻘﯾﻣـﺔ
ﻣﺳﺎوﯾﺎً ﻟﻠرﻗم ) ٣أي (٠٠٠٠٠٠١١وﯾﺧزن ﻓﻲ اﻟﻣﺳﺟل .AH
وﺑﺎﻗﻲ اﻟﻘﺳﻣﺔ ) ٦أي (٠٠٠٠٠١١٠ﯾﺧزن ﻓﻲ اﻟﻣﺳﺟل .AL
ﻟذﻟك ﺗﺻﺑﺢ ﻣﺣﺗوﯾﺎت اﻟﻣﺳﺟل AXﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺗﯾن ﻫﻲ.(0306)16 :
- ٧١ -
DX ﺑﺎﻗﻲ ﻋﻤﻠﯿﺔ اﻟﻘﺴﻤﺔ DX ﻧﺎﺗﺞ اﻟﻘﺴﻤﺔ
إذا ﻟ ــم ﯾﻛـ ــن ﺑﺎﻹﻣﻛ ــﺎن اﺳـ ــﺗﯾﻌﺎب ﻧ ــﺎﺗﺞ اﻟﻘـ ــﺳﻣﺔ ﻣـ ــن ﻗﺑ ــل اﻟﻣـ ــﺳﺟل ALأو AXﻓ ــﺈن اﻟﻣﻌـ ــﺎﻟﺞ ﯾوﻟـ ــد
اﻋﺗراﺿﺎً ) (Interruptﻣن اﻟﻧوع ) .٠ﻣﻛﺎﻓﺊ ﻟﻼﻋﺗراض اﻟﻧﺎﺗﺞ ﻋن اﻟﻘﺳﻣﺔ ﻋﻠﻰ .(٠
ﻣﺛﺎل ): (40.6
ﻧﻔرض أن ﻣﺣﺗوى اﻟﻣﺳﺟل AXﻫو (55)16وأن ﻣﺣﺗوى اﻟﻣﺳﺟل BLﻫو .(27)16
ﺑﯾن ﻧﺗﯾﺟﺔ ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ:
DIV BL
اﻟﺣل:
ﯾﻘﺳم اﻟرﻗم 55Hﻋﻠﻰ اﻟرﻗم .27H
وﯾﺧزن ﻧﺎﺗﺞ اﻟﻘﺳﻣﺔ )أي (٠٢ﻓﻲ اﻟﻣﺳﺟل ALواﻟﺑﺎﻗﻲ )أي (٠٧ﻓﻲ اﻟﻣﺳﺟل .AH
- ٧٢ -
-٣ﺗﻌﻠﯾﻣﺔ ﺗﻌدﯾل اﻵﺳﻛﻲ ﻟﻠﻘﺳﻣﺔ : (ASCII Adjust for Division) ADD
ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﯾﺟب أن ﺗﺳﺑق ﻋﻣﻠﯾﺔ اﻟﻘﺳﻣﺔ ﺑدﻻً ﻣن أن ﺗﺄﺗﻲ ﺑﻌدﻫﺎ.
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
AAD
ﺑﺎﻟﻧﺳﺑﺔ ﻟﻌﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻓﯾﻣﻛن ﺗﻠﺧﯾﺻﻪ ﺑﺎﻟﺗﺎﻟﻲ:
-ﯾﺿرب ﻣﺣﺗوى اﻟﻣﺳﺟل AHﺑﺎﻟﻌدد ١٠
-ﺗﺿﺎف ﻧﺗﯾﺟﺔ اﻟﺿرب إﻟﻰ اﻟﻘﯾﻣﺔ اﻟﻣﺧزﻧﺔ ﻓﻲ اﻟﻣﺳﺟل AL
-ﯾﺻﻔر اﻟﻣﺳﺟل AH
طرﯾﻘﺔ اﺳﺗﺧدام ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ:
; ADD ﺣﯾث ﺗﻌﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻠﻰ ﺗﻌدﯾل ﻗﯾﻣﺔ اﻟﻣﻘﺳوم ﻏﯾر اﻟﻣﺿﻐوط
; DIV BL ﺑﻌد ذﻟك ﻧﻔذ ﻋﻣﻠﯾﺔ اﻟﻘﺳﻣﺔ
AL ١١٠١١٠١
ﺣﯾ ــث أن ﺧﺎﻧ ــﺔ اﻹﺷ ــﺎرة ﻓ ــﻲ اﻟﻣ ــﺳﺟل ) ALأي اﻟﺧﺎﻧ ــﺔ اﻷﺧﯾـ ـرة( وﻣﻘ ــدارﻫﺎ ١ﯾ ــﺗم ﻣ ــدﻫﺎ إﻟ ــﻰ ﺟﻣﯾ ــﻊ
ﺧﺎﻧﺎت اﻟﻣﺳﺟل .AH
-٢ﺗﻌﻠﯾﻣﺔ ﺗﺣوﯾل ﻛﻠﻣﺔ إﻟﻰ ﻛﻠﻣﺔ ﻣزدوﺟﺔ : (Convert Word to Double) CWD
ﺗﻌﻣل ﻋﻠﻰ ﻣد ﺧﺎﻧﺔ إﺷﺎرة اﻟﻌدد اﻟﻣﺧزن ﻓﻲ اﻟﻣﺳﺟل AXإﻟﻰ ﺟﻣﯾﻊ ﺧﺎﻧﺎت اﻟﻣﺳﺟل .DX
- ٧٣ -
وﺗﻛﻣــن ﻓﺎﺋــدة ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﻓــﻲ ﺗﻣﻛــﯾن اﻟﻣﺑــرﻣﺞ ﻣــن ﺗﻘــﺳﯾم ﻣﻌﺎﻣــل ﺣــﺳﺎﺑﻲ طوﻟــﻪ ﻛﻠﻣــﺔ ﻋﻠــﻰ ﻣﻌﺎﻣــل
ﺣــﺳﺎﺑﻲ آﺧــر طوﻟــﻪ ﻛﻠﻣــﺔ أﯾــﺿﺎً ﻣــﻊ اﻟﻌﻠــم أن ﺗﻌﻠﯾﻣــﺎت اﻟﻘــﺳﻣﺔ ﺗﺗطﻠــب أن ﯾﻛــون ﻋــدد ﺧﺎﻧــﺎت اﻟﻌــدد
اﻟﻣﻘﺳوم ﺿﻌف ﻋدد ﺧﺎﻧﺎت اﻟﻌدد اﻟﻣﻘﺳوم ﻋﻠﯾﻪ.
ﻣﺛﺎل ): (44.6
ﺑﯾن ﻛﯾف ﯾﻣﻛن ﺗﻘﺳﯾم ﻣﺣﺗوى اﻟﻣﺳﺟل AXﻋﻠﻰ ﻣﺣﺗوى اﻟﻣﺳﺟل BXز
اﻟﺣل:
ﺗﺗطﻠــب اﻟﻘ ــﺳﻣﺔ ﻋﻠــﻰ ﻋ ــدد ﻣﻛــون ﻣ ــن ١٦ﺛﻧﺎﺋﯾــﺔ أن ﯾﻛ ــون اﻟﻣﻘــﺳوم ﻣﺧ ــزن ﻓــﻲ اﻟﻣ ــﺳﺟﻠﯾن AXو
.DXوﺑﻣــﺎ أن اﻟﻣطﻠــوب ﻓــﻲ ﻫــذﻩ اﻟﻣــﺳﺄﻟﺔ ﻫــو ﺗﻘــﺳﯾم ﻣﺣﺗــوى اﻟﻣــﺳﺟل AXﻋﻠــﻰ ﻣﺣﺗــوى اﻟﻣــﺳﺟل
.BX
ﻟــذﻟك ﻧﻠﺟ ــﺄ إﻟ ــﻰ ﻣ ــد إﺷــﺎرة اﻟﻣ ــﺳﺟل AXإﻟ ــﻰ ﺟﻣﯾ ــﻊ ﺧﺎﻧ ــﺎت اﻟﻣــﺳﺟل .DXﺑﻌ ــد ذﻟ ــك ﯾﻣﻛ ــن ﺗﻧﻔﯾ ــذ
ﺗﻌﻠﯾﻣﺔ اﻟﻘﺳﻣﺔ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
CWD
IDIV BX
١-٤-٤ﺗﻌﻠﯾﻣﺎت اﻟﻘﻔز ﻏﯾر اﻟﻣﺷروط واﺳﺗدﻋﺎء اﻟﺑرﻧﺎﻣﺞ اﻟﻔرﻋﻲ واﻟﻌودة ﻣﻧﻪ :
-١ﺗﻌﻠﯾﻣﺔ اﻟﻘﻔز ﻏﯾر اﻟﻣﺷروط : (Unconditional JUMP) JMP
ﺗــﺷﺑﻪ ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﺟﻣﻠــﺔ GOTOﻓــﻲ ﻟﻐﺗــﻲ ﺑﯾــﺳك وﺑﺎﺳــﻛﺎل وﻏﯾرﻫــﺎ ،ﺣﯾــث أن ﺗﻧﻔﯾــذﻫﺎ ﯾــؤدي إﻟــﻰ
اﻻﻧﺗﻘﺎل إﻟﻰ اﻟﺗﻌﻠﯾﻣﺔ اﻟﻣوﺳوﻣﺔ ﺑﻣﻌﺎﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ.
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
JMP Target
وﻋﻧد اﻟﺗﻌﺎﻣل ﻣﻊ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﯾﺟب ﻣراﻋﺎة اﻵﺗﻲ:
-إذا ﻛــﺎن اﻟﻣوﻗــﻊ اﻟــذي ﺳــﯾﺗم اﻻﻧﺗﻘــﺎل إﻟﯾــﻪ ﺿــﻣن ﻧﻔــس اﻟﻘطــﺎع ،ﻓــﺈن ﻫــذا اﻟﻧــوع ﯾطﻠــق ﻋﻠﯾــﻪ اﻟﻘﻔــز
اﻟﻘرﯾب ).(Near Jump
- ٧٤ -
-إذا ﻛﺎن اﻟﻣوﻗﻊ اﻟذي ﺳﯾﺗم اﻻﻧﺗﻘﺎل إﻟﯾﻪ ﯾﻘﻊ ﺿﻣن ﻗطﺎع ﻏﯾـر ﻗطـﺎع اﻟﺗﻌﻠﯾﻣـﺔ ،JMPﯾطﻠـق ﻋﻠـﻰ
ﻫذا اﻟﻧوع ﻣن اﻟﻘﻔز ﺑﺎﻟﻘﻔز اﻟﺑﻌﯾد ).(Far Jump
-أﻣ ــﺎ إذا ﻛ ــﺎن اﻟﻣوﻗ ــﻊ ﯾﺑﻌ ــد ﻋ ــن اﻟﺗﻌﻠﯾﻣ ــﺔ JMPﺑﺄﻗ ــل ﻣ ــن ١٢٨ﺑﺎﯾ ــت أو ﯾ ــﺳﺑﻘﻪ ﺑﺄﻗ ــل ﻣ ــن ١٢٩
ﺑﺎﯾت ،ﯾطﻠق ﻋﻠﻰ ﻫذا اﻟﻧوع ﻣن اﻟﻘﻔز ﺑﺎﻟﻘﻔز اﻟﻘﺻﯾر ).(Short Jump
-ﻋﻧدﻣﺎ ﯾﻛون اﻟﻣﻌﺎﻣل وﺳﻣﺎً ) ،(Labelﻓﻲ ﻫذﻩ اﻟﺣﺎﻟﺔ ﯾطﻠق ﻋﻠﻰ ﻧوع اﻟﻘﻔز ﺑﺎﻟﻘﻔز اﻟﻣﺑﺎﺷر.
-ﻋﻧــدﻣﺎ ﯾﻛــون اﻟﻣﻌﺎﻣــل أﺣــد ﻣواﻗــﻊ اﻟــذاﻛرة أو اﻟﻣــﺳﺟﻼت ﯾطﻠــق ﻋﻠــﻰ ﻫــذا اﻟﻧــوع ﻣــن اﻟﻘﻔــز ﺑــﺎﻟﻘﻔز
.JMP BX ﻏﯾر اﻟﻣﺑﺎﺷر ) .(Indirect Jumpﻣﺛل
- ٧٥ -
ج -ﺗﻌﻠﯾﻣﺎت اﻟﺗﻛرار : Iteration or Loop Instructions
ﻟﺗﻛرار ﺗﻧﻔﯾذ ﺗﻌﻠﯾﻣﺔ أو أﻛﺛر ﻟﺣﯾن ﺗﺣﻘق ﺷرط ﻣﻌﯾن.
- ٧٦ -
-٣ﺗﻌﻠﯾﻣﺗﻲ (LOOP while Equal) LOOPE
وﻣﻛﺎﻓﺋﺗﻬﺎ : (LOOP if Zero Flag) LOOPZ
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
LOOPE Location
LOOPZ Location أو
ﺗؤدي إﻟﻰ:
-إﻧﻘﺎص ﻣﺣﺗوى اﻟﻣﺳﺟل CXﺑﺎﻟﻘﯾﻣﺔ ١
-إذا ﺑﻘﯾـت اﻟﻘﯾﻣــﺔ اﻟﻣﺧزﻧــﺔ ﻓــﻲ اﻟﻣـﺳﺟل CXﻻ ﺗــﺳﺎوي اﻟــﺻﻔر وﻛﺎﻧــت راﯾـﺔ اﻟــﺻﻔر ﻓــﻲ اﻟﺣﺎﻟــﺔ ""١
ﯾــﺗم اﻻﻧﺗﻘــﺎل إﻟــﻰ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﻣﻌﻧوﻧــﺔ ﺑﺎﻻﺳــم ٕ ،Locationواﻻ ﻓﺈﻧــﻪ ﺳــﯾﺗم اﻻﻧﺗﻘــﺎل إﻟــﻰ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺗﺎﻟﯾــﺔ
ﻟﺗﻌﻠﯾﻣﺔ اﻟدوران.
- ٧٧ -
ﺣﯾث أن dest, sourceﯾﻣﺛﻼن ﻣﻌﺎﻣﻠﻲ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ.
اﻟﻘواﻋد:
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
ﻣﺛﺎل:
AND AX, BX
AND Mem_loc, 10010110B
-٢ﺗﻌﻠﯾﻣﺔ : OR
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
OR dest, source
اﻟﻘواﻋد:
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
-٤ﺗﻌﻠﯾﻣﺔ : TEST
ﺗﺷﺑﻪ ﺗﻌﻠﯾﻣﺔ ANDواﻟﻔﺎرق ﺑﯾﻧﻬﻣﺎ أن ﺗﻌﻠﯾﻣـﺔ TESTﻻ ﺗـؤﺛر ﻋﻠـﻰ اﻟﻣﻌـﺎﻣﻼت وﺗﺄﺛﯾرﻫـﺎ اﻟوﺣﯾـد ﻫـو
ﻋﻠﻰ اﻟراﯾﺎت وﺑﻧﻔس اﻷﺳﻠوب اﻟذي ﺗؤﺛر ﻓﯾﻪ ﺗﻌﻠﯾﻣﺔ .AND
- ٧٨ -
ب -ﺗﻌﻠﯾﻣﺎت اﻹ زاﺣﺔ : Shift Instructions
ﺗﺳﺗﺧدم ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺎت ﻹزاﺣﺔ ﻣﺣﺗوﯾـﺎت ﻣـﺳﺟل أو ﻣوﻗـﻊ ﻣـن ﻣواﻗـﻊ اﻟـذاﻛرة طـول ﻛـل ﻣﻧﻬـﺎ ﺑﺎﯾـت أو
٢ﺑﺎﯾت.
وﺗﺳﺗﺧدم ﺗﻌﻠﯾﻣﺎت اﻹزاﺣﺔ اﻟﺣﺳﺎﺑﯾﺔ ﻣﻊ اﻷﻋداد ﺑﺈﺷﺎرة وﺗﻌﻠﯾﻣﺎت اﻹزاﺣﺔ اﻟﻣﻧطﻘﯾﺔ ﻣﻊ اﻷﻋـداد ﺑـدون
إﺷﺎرة.
-١ﺗﻌﻠﯾﻣﺔ اﻹ زاﺣﺔ اﻟﺣﺳﺎﺑﯾﺔ ﻟﻠﯾﻣﯾن : (Shift Arithmetic Right) SAR
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
SAR dest, count
ﺣﯾــث ﺗﻌﻣــل ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﻋﻠــﻰ إزاﺣــﺔ ﻣﺣﺗــوى اﻟﻣﻌﺎﻣــل destإﻟــﻰ اﻟﯾﻣــﯾن ﺑﻌــدد ﻣــن اﻟﺧﺎﻧــﺎت ﻣــﺳﺎوي
ﻟﻘﯾﻣﺔ .count
ﻣﺛﺎل ): (54.6
اﻓــرض أن ﻣﺣﺗــوى اﻟﻣــﺳﺟل ALﻫــو (11011011)2وأن ﻗﯾﻣــﺔ اﻟراﯾــﺔ CFﻫــﻲ ، ٠ﺑــﯾن ﻣﺣﺗــوى
اﻟﻣﺳﺟل ALوﻗﯾﻣﺔ اﻟراﯾﺔ CFﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ:
SAR AL, 1
اﻟﺣل:
AL CF
١١٠١١٠١١ ٠ ﻣﺣﺗوى ALو CFﻗﺑل ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ
١١١٠١١٠١ ١ ﻣﺣﺗوى ALو CFﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ
- ٧٩ -
اﻟﺣل:
AL CF
١١٠١١٠١١ ٠ ﻣﺣﺗوى ALو CFﻗﺑل اﻟﺗﻧﻔﯾذ
٠٠١١٠١١٠ ١ ﻣﺣﺗوى ALو CFﺑﻌد اﻟﺗﻧﻔﯾذ
-٣ﺗﻌﻠﯾﻣﺔ اﻟدوران ﻟﻠﯾﻣﯾن ﻣﻊ راﯾﺔ اﻟﺣﻣل : (Rotate Right through carry) RCR
ﻣﺛﺎل ): (59.6
RCR AL, 1
- ٨٠ -
-٤ﺗﻌﻠﯾﻣﺔ اﻟدوران ﻟﻠﯾﺳﺎر ﻣﻊ راﯾﺔ اﻟﺣﻣل (Rotate Left through carry) RCL
ﻣﺛﺎل ): (60.6
RCL AL, 1
أﻣــﺎ ﺑﺎﻟﻧــﺳﺑﺔ ﻟﻠﺗﻌﻠﯾﻣﺗــﯾن MOVBو MOVWﻟﯾــﺳت ﺑﺣﺎﺟــﺔ إﻟــﻰ ﻣﻌــﺎﻣﻼت ﺣﯾــث ﯾﻔﻬــم ﺿــﻣﻧﺎً أن
اﻟﻣﺳﺟل SIﯾﺷﯾر إﻟﻰ ﺑداﯾﺔ اﻟﺣﻘل .sourceواﻟﻣﺳﺟل DIﯾﺷﯾر إﻟﻰ ﺑداﯾﺔ اﻟﺣﻘل .dest
ﻟــذﻟك ﯾﺗوﺟــب ﻋﻠــﻰ اﻟﻣﺑــرﻣﺞ ﻗﺑــل اﺳــﺗﺧدام أي ﻣــن اﻟﺗﻌﻠﯾﻣــﺎت اﻟــﺛﻼث ﻣــﻊ ﺑﺎدﺋــﺔ اﻟﺗﻛ ـرار REPاﻟﻘﯾــﺎم
ﺑﻣﺎ ﯾﻠﻲ:
-١ﺗﺣدﯾــد ﻓﯾﻣــﺎ إذا ﻛﺎﻧــت ﻋﻣﻠﯾــﺔ اﻟﺗﺣرﯾــك ﺳــﺗﺑدأ ﻣــن اﻟﯾــﺳﺎر أم ﻣــن اﻟﯾﻣــﯾن .وذﻟــك إﻣــﺎ ﺑوﺿــﻊ راﯾــﺔ
ﺗﺣدﯾـد اﻻﺗﺟـﺎﻩ ﻓـﻲ اﻟﺣﺎﻟـﺔ " "٠ﻋـن طرﯾـق اﻟﺗﻌﻠﯾﻣـﺔ (Clear Direction Flag) CLDأو ﻓـﻲ ﺣﺎﻟـﺔ
" "١ﺑﺎﺳﺗﺧدام اﻟﺗﻌﻠﯾﻣﺔ اﻟﺧﺎﺻﺔ ﺑذﻟك وﻫﻲ .(Set Direction Flag) STD
-٢ﺗﺣﻣﯾــل إزاﺣــﺔ ﺳﻠــﺳﺔ رﻣــوز اﻟﺣﻘــل اﻟﻣرﺳــل إﻟــﻰ اﻟﻣــﺳﺟل SIوﺗﺣﻣﯾــل إزاﺣــﺔ ﺳﻠــﺳﺔ رﻣــوز اﻟﺣﻘــل
اﻟﻣﺳﺗﻘﺑل إﻟﻰ اﻟﻣﺳﺟل ،DIوذﻟك ﺑﺎﺳﺗﺧدام اﻟﺗﻌﻠﯾﻣﺗﯾن:
LEA SI, source
LEA DI, ES: dest
- ٨١ -
-٣ﺗﺣﻣﯾل ﻋدد اﻟﻌﻧﺎﺻر اﻟﻣطﻠوب ﻧﻘﻠﻬﺎ إﻟﻰ اﻟﻣﺳﺟل .CX
ﺑﻌد ذﻟك ﺑﺈﻣﻛﺎن اﻟﻣﺑرﻣﺞ اﺳﺗﺧدام اﻟﺗﻌﻠﯾﻣﺔ MOVBإذا ﻛﺎﻧت اﻟﻌﻧﺎﺻـر ﻣﻌرﻓـﺔ ﻋﻠـﻰ أﻧﻬـﺎ ﻣـن اﻟﻧـوع
Byteأو اﻟﺗﻌﻠﯾﻣـ ــﺔ MOVWإذا ﻛﺎﻧـ ــت اﻟﻌﻧﺎﺻـ ــر ﻣﻌرﻓـ ــﺔ ﻋﻠـ ــﻰ أﻧﻬـ ــﺎ ﻣـ ــن اﻟﻧـ ــوع .WORDأﻣـ ــﺎ
اﺳﺗﺧدام اﻟﺷﻛل اﻷول ﻓﯾﻣﻛن ﻣﻊ اﻟﺑﯾﺎﻧﺎت ﺑﻐض اﻟﻧظـر ﻋﻣـﺎ إذا ﻛﺎﻧـت اﻟﻌﻧﺎﺻـر ﻣـن اﻟﻧـوع Byteأو
اﻟﻧوع .Word
ﻣﺛﺎل ): (61.6
د -ﺗﻌﻠﯾﻣﺎت ﺗﺣﻣﯾل ﻋﻧﺻر ﻣن ﻋﻧﺎﺻر ﺳﻠﺳﻠﺔ رﻣزﯾﺔ إﻟﻰ اﻟﻣﺳﺟل ALأو AX
): (Load String Instructions
وﺗﺷﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻠﻰ ﺛﻼث أﺷﻛﺎل ﻫﻲ:
-١ﺗﻌﻠﯾﻣﺔ : (Load String Instruction) LOADS
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
LOADS source
ﺣﯾث أن sourceﯾﻣﺛل ﺳﻠﺳﻠﺔ رﻣزﯾﺔ ﻏﺎﻟﺑﺎً ﻣﺎ ﺗﻛون ﻣﻌرﻓﺔ ﻓﻲ ﻗطﺎع اﻟﺑﯾﺎﻧﺎت.
ﺗـﺳﺗﺧدم ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﻟﻧﻘـل ﻣﺣﺗوﯾــﺎت اﻟﻌﻧــﺻر اﻟﻣـﺷﺎر إﻟﯾــﻪ ﺑﺎﻟﻣــﺳﺟل SIﻣـن ﻋﻧﺎﺻــر sourceإﻟــﻰ
اﻟﻣﺳﺟل ) ALاﻟﺳﻠﺳﻠﺔ ﻣن اﻟﻧوع (Byteأو اﻟﻣﺳﺟل ) AXاﻟﺳﻠﺳﻠﺔ ﻣن اﻟﻧوع .(Word
- ٨٢ -
-٢ﺗﻌﻠﯾﻣﺔ : (Load Byte String) LOADB
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
LOADB
وﺗﺳﺗﻌﻣل ﻣﻊ ﺳﻠﺳﻠﺔ رﻣزﯾﺔ ﻣن اﻟﻧوع .Byte
-٣ﺗﻌﻠﯾﻣﺔ : (Load Word String) LOADW
اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ:
LOADW
وﺗﺳﺗﻌﻣل ﻣﻊ ﺳﻠﺳﻠﺔ رﻣزﯾﺔ ﻣن اﻟﻧوع .Word
ﻣﺛﺎل ): (64.6
- ٨٣ -
أ -ﺗﻌﻠﯾﻣﺎت ﺧﺎﺻﺔ ﺑﻣﻌﺎﻟﺟﺔ اﻟراﯾﺎت : Flags Manipulation Instructions
ﺑﺈﻣﻛـ ــﺎن اﻟﻣﺑـ ــرﻣﺞ اﻟـ ــﺗﺣﻛم ﺑﺎﻟﻣﻌـ ــﺎﻟﺞ ﺑواﺳـ ــطﺔ ﺗﻌـ ــدﯾل ﺣﺎﻟـ ــﺔ راﯾـ ــﺎت اﻟﺣﻣـ ــل ،CFﺗﺣدﯾـ ــد اﻻﺗﺟـ ــﺎﻩ DF
واﻻﻋﺗراض .IF
أﻣﺎ ﺑﺎﻟﻧـﺳﺑﺔ ﻟﻠﺗﻌﻠﯾﻣﺗـﯾن CLDو STDواﻟﻣﺗﻌﻠﻘـﺔ ﺑراﯾـﺔ ﺗﺣدﯾـد اﻻﺗﺟـﺎﻩ ﻓـﯾﻣﻛن اﺳـﺗﺧداﻣﻬﺎ ﻟوﺿـﻊ راﯾـﺔ
ﺗﺣدﯾد اﻻﺗﺟﺎﻩ ﻓﻲ اﻟﺣﺎﻟﺔ " "٠أو اﻟﺣﺎﻟﺔ " "١ﺣﯾث ﺗﺣدد ﻫذﻩ اﻟﺣﺎﻟﺔ اﺗﺟﺎﻩ ﻣﻌﺎﻟﺟﺔ ﺳﻼﺳل اﻟرﻣوز.
أﻣــﺎ ﺑﺎﻟﻧــﺳﺑﺔ ﻟﻠﺗﻌﻠﯾﻣﺗــﯾن CLIو STIﻓﯾــﺳﺗطﯾﻊ اﻟﻣﺑــرﻣﺞ اﺳــﺗﺧداﻣﻬﺎ ﻟﻠــﺗﺣﻛم ﺑﺎﻟﻣﻌــﺎﻟﺞ ﻟﺗﺣدﯾــد إﻣﻛﺎﻧﯾــﺔ
ﻣﻌﺎﻟﺟــﺔ اﻻﻋﺗراﺿــﺎت أو إﻫﻣﺎﻟﻬــﺎ .ﻓﻌﻧــد وﺿــﻊ راﯾــﺔ اﻻﻋﺗ ـراض ﻓــﻲ اﻟﺣﺎﻟــﺔ " "٠ﻓــﺈن اﻟﻣﻌــﺎﻟﺞ ﺳــوف
ﯾﻬﻣل أو ﯾؤﺟل ﻣﻌﺎﻟﺟﺔ اﻻﻋﺗراﺿﺎت اﻟﻣﻘﻧﻌﺔ.
- ٨٤ -
ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﻻ ﺗــؤدي إﻟــﻰ ﺣــدوث أي ﻓﻌــل ﻓــﻲ اﻟﺣﺎﺳــوب ﺳــوى اﺳــﺗﻬﻼك اﻟوﻗــت .واﻟﻣــﺳﺟل اﻟوﺣﯾــد
اﻟذي ﯾﺗﺄﺛر ﻣن ﺗﻧﻔﯾذﻫﺎ ﻫو ﻣؤﺷر اﻟﺗﻌﻠﯾﻣﺔ .IP
ﯾﻣﻛن اﺳﺗﺧدام ﺗﻌﻠﯾﻣﺔ NOPﻟﻸﻏراض اﻵﺗﯾﺔ:
-١ﺑرﻣﺟﺔ اﻟﻔﺗرات اﻟزﻣﻧﯾﺔ .Time Delays
-٢ﺗﻌــدﯾل اﻟﺑرﻧــﺎﻣﺞ اﻟﻬــدﻓﻲ ﺑﺎﺳــﺗﺑدال ﺗﻌﻠﯾﻣــﺔ أو أﻛﺛــر ﺑــﺷﯾﻔرة اﻟﺗﻌﻠﯾﻣــﺔ ) NOPأي (90Hﺛــم ﺗﻧﻔﯾــذﻩ
دون إﻋﺎدة اﻟﺗرﺟﻣﺔ.
- ٨٥ -