You are on page 1of 85

‫اﻟوﺣدة اﻷوﻟﻰ‬

‫ﻫﯾﻛﻠﯾﺔ اﻟﺣﺎﺳوب‬

‫‪ -٢‬اﻟﻣﻛوﻧﺎت اﻷﺳﺎﺳﯾﺔ ﻟﻠﺣﺎﺳوب ‪:‬‬


‫ﻣﻬﺎم اﻟﺣﺎﺳوب‪:‬‬
‫‪ -‬إدﺧﺎل اﻟﺑﯾﺎﻧﺎت واﻟﺑراﻣﺞ‬
‫‪ -‬ﻣﻌﺎﻟﺟﺔ اﻟﺑﯾﺎﻧﺎت‬
‫‪ -‬إﺧراج اﻟﺑﯾﺎﻧﺎت‬
‫ﻟﻛﻲ ﯾﺗﻣﻛن اﻟﺣﺎﺳوب ﻣن أداء ﻫذﻩ اﻟﻣﻬﺎم ﯾﺟب أن ﯾﺣﺗوي ﻋﻠﻰ اﻟوﺣدات اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬وﺣدة إدﺧﺎل‬
‫‪ -‬وﺣدة ذاﻛرة‬
‫‪ -‬وﺣدة ﻣﻌﺎﻟﺟﺔ‬
‫‪ -‬وﺣدة إﺧراج‬
‫ﻟﻛﻲ ﯾﺳﺗطﯾﻊ اﻟﺣﺎﺳوب أن ﯾﺗﻌﺎﻣل ﻣﻊ اﻟﺑﯾﺎﻧﺎت واﻟﺑراﻣﺞ اﻟﻣﻣﺛﻠﺔ ﺑﻠﻐﺎت اﻹﻧﺳﺎن ﯾﺟب أن ﺗﺣول ﻫذﻩ‬
‫اﻟﺑﯾﺎﻧﺎت واﻟﺑراﻣﺞ إﻟﻰ ﻟﻐﺔ اﻵﻟﺔ واﻟﺗﻲ ﺗﺗﻛون ﻣن أﺻﻔﺎر وواﺣدات )‪.(١,٠‬‬

‫‪ ١-٢‬وﺣدة اﻟﻣﻌﺎﻟﺟﺔ اﻟﻣرﻛزﯾﺔ ‪: CPU‬‬


‫ﺗﺗﻛون ﻣن‪:‬‬
‫‪ -‬وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق ‪ALU‬‬
‫‪ -‬اﻟﻣﺳﺟﻼت ‪REG‬‬
‫‪ -‬وﺣدة اﻟﺗﺣﻛم ‪CU‬‬

‫ﺗﻘوم وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق ﺑﺗﻧﻔﯾذ اﻟﻌﻣﻠﯾﺎت اﻟﺣﺳﺎﺑﯾﺔ‬

‫ﺗﻣﺗﺎز اﻟﻣﺳﺟﻼت ﺑﺄﻧﻬﺎ ﻋﺑﺎرة ﻋن ﻣواﻗﻊ ﺗﺧزﯾﻧﯾﺔ ذات ﺳرﻋﺔ ﻋﺎﻟﯾﺔ وﺗﺳﺗﺧدم ﻋﺎدة ﻟﺗﺧزﯾن‪:‬‬
‫‪ -‬اﻟﻘﯾم اﻟﻣﺷﺎرﻛﺔ ﻓﻲ اﻟﻌﻣﻠﯾﺎت اﻟﺗﻲ ﺗﻧﻔذ ﻓﻲ وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق‬
‫‪ -‬اﻟﻘﯾم اﻟﻧﺎﺗﺟﺔ ﻋن اﻟﻌﻣﻠﯾﺎت اﻟﺗﻲ ﺗﻧﻔذ ﻓﻲ وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﺑرﻧﺎﻣﺞ أو أﺟزاء ﻣﻧﻬﺎ‬
‫ﺗﺻﻧف اﻟﻣﺳﺟﻼت ﻓﻲ وﺣدة اﻟﻣﻌﺎﻟﺟﺔ اﻟﻣرﻛزﯾﺔ ﺣﺳب اﺳﺗﺧداﻣﺎﺗﻬﺎ إﻟﻰ ﻧوﻋﯾن‪:‬‬

‫‪-١-‬‬
‫‪ -١‬ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض‪:‬‬
‫ﺗﺳﺗﺧدم ﻣن ﻗﺑل اﻟﻣﺑرﻣﺟﯾن ﻟﺗﺧزﯾن ﺟﻣﯾﻊ أﻧواع اﻟﺑﯾﺎﻧﺎت وﻣن أﻣﺛﻠﺗﻬﺎ‪:‬‬
‫‪ -‬ﻣﺳﺟﻼت اﻟﻔﺎﺻﻠﺔ اﻟﺛﺎﺑﺗﺔ ‪Fixed point Reg.‬‬
‫‪ -‬ﻣﺳﺟﻼت اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎﺋﻣﺔ ‪Floating point Reg.‬‬
‫‪ -‬ﻣﺳﺟﻼت اﻟﺑﯾﺎﻧﺎت ‪Data Reg.‬‬
‫‪ -‬اﻟﻣرﻛم‬
‫‪ -٢‬ﻣﺳﺟﻼت ﺧﺎﺻﺔ اﻷﻏراض‪:‬‬
‫ﺗﺳﺗﺧدم ﻣن ﻗﺑل اﻟﺣﺎﺳوب ﻟﺗﺧزﯾن ﺑﯾﺎﻧﺎت أو ﻋﻧﺎوﯾن ﺧﺎﺻﺔ ﻻ ﯾﺳﻣﺢ ﻟﻠﻣﺑرﻣﺞ ﺑﺎﺳﺗﺧداﻣﻬﺎ وﻣن‬
‫أﻣﺛﻠﺗﻬﺎ‪:‬‬
‫‪ -‬ﻣﺳﺟل اﻟﺗﻌﻠﯾﻣﺔ )‪ :Instruction Reg. (IR‬ﯾﺳﺗﺧدم ﻟﺗﺧزﯾن اﻟﺗﻌﻠﯾﻣﺔ اﻟﺗﻲ ﯾﺟري ﺗﻧﻔﯾذﻫﺎ اﻵن‪.‬‬
‫‪ -‬ﻋداد اﻟﺑرﻧﺎﻣﺞ )‪ :Program Counter (PC‬ﯾﺳﺗﺧدم ﻟﺗﺧزﯾن ﻋﻧوان اﻟﺗﻌﻠﯾﻣﺔ اﻟﻼﺣﻘﺔ ﻓﻲ‬
‫اﻟﺗﻧﻔﯾذ‪.‬‬
‫‪ -‬ﻣﺳﺟل اﻟراﯾﺎت ‪ :Status Reg.‬ﯾﺳﺗﺧدم ﻟﺗﺧزﯾن ﺣﺎﻟﺔ اﻟﺑرﻧﺎﻣﺞ وﺣﺎﻟﺔ اﻟﺣﺎﺳوب ﺑﻌد ﺗﻧﻔﯾذ ﻛل‬
‫ﺗﻌﻠﯾﻣﺔ‪ .‬ﯾﺗﻛون ﻫذا اﻟﻣﺳﺟل ﻣن ﻣﺟﻣوﻋﺔ ﺛﻧﺎﺋﯾﺎت ﺗﺳﻣﻰ ﻛل ﺛﻧﺎﺋﯾﺔ ﻣﻧﻬﺎ راﯾﺔ ‪.Flag‬‬
‫‪ -‬ﻣﺳﺟل اﻟﺑﯾﺎﻧﺎت ‪ :Data Reg.‬ﯾﺳﺗﺧدم ﻟﺗﺧزﯾن اﻟﺑﯾﺎﻧﺎت اﻟﻘﺎدﻣﺔ ﻣن اﻟذاﻛرة اﻟرﺋﯾﺳﺔ أو اﻟﻣرﺳﻠﺔ‬
‫إﻟﯾﻬﺎ‪.‬‬
‫‪ -‬ﻣﺳﺟل اﻟﻌﻧوان ‪ :Address Reg.‬ﯾﺳﺗﺧدم ﻟﺗﺧزﯾن ﻋﻧوان اﻟﺑﯾﺎﻧﺎت اﻟﻘﺎدﻣﺔ ﻣن اﻟذاﻛرة اﻟرﺋﯾﺳﺔ أو‬
‫اﻟﻣرﺳﻠﺔ إﻟﯾﻬﺎ‪.‬‬

‫ﺗﻘوم وﺣدة اﻟﺗﺣﻛم ﺑﺎﻹﺷراف ﻋﻠﻰ ﻋﻣل وﺣدة اﻟﻣﻌﺎﻟﺟﺔ اﻟﻣرﻛزﯾﺔ ﺑﺷﻛل ﻋﺎم‬
‫ﻛﻣﺎ ﺗﻘوم ﺑﺗﻧظﯾم ﻋﻣﻠﯾﺎت اﻻﺗﺻﺎل وﺗﺑﺎدل اﻟﺑﯾﺎﻧﺎت ﺑﯾن وﺣدة اﻟﻣﻌﺎﻟﺟﺔ اﻟﻣرﻛزﯾﺔ ﻣن ﺟﻬﺔ وﺑﯾن‬
‫اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ووﺣدات اﻹدﺧﺎل واﻹﺧراج ﻣن ﺟﻬﺔ أﺧرى‪.‬‬

‫إن اﻟﻣﻌﺎﻟﺞ ﯾﺷﻛل ﻗﻠب ﻧظﺎم اﻟﺣﺎﺳوب ﺣﯾث أن ﻗدرة وﻛﻔﺎءة اﻟﺣﺎﺳوب ﺗﻌﺗﻣد ﻋﻠﻰ ﻗدرة وﻛﻔﺎءة‬
‫اﻟﻣﻌﺎﻟﺞ ﻧﻔﺳﻪ‪ ،‬واﻟﺗﻲ ﺗﻌﺗﻣد ﺑدورﻫﺎ ﻋﻠﻰ اﻟﻌواﻣل اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -١‬ﻋدد اﻟﺛﻧﺎﺋﯾﺎت اﻟﺗﻲ ﺗﻌﺎﻟﺞ ﻓﻲ ﻧﻔس اﻟﻠﺣظﺔ‪.‬‬
‫‪ -٢‬ﻋدد اﻟﺗﻌﻠﯾﻣﺎت اﻟﺗﻲ ﯾﺳﺗطﯾﻊ اﻟﻣﻌﺎﻟﺞ ﺗﻧﻔﯾذﻫﺎ‪.‬‬
‫‪ -٣‬اﻹﻣﻛﺎﻧﯾﺎت اﻟﻣﺗوﻓرة ﻓﻲ ﻛل ﺗﻌﻠﯾﻣﺔ‪.‬‬
‫‪ -٤‬زﻣن ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ اﻟواﺣدة‪.‬‬
‫‪ -٥‬ﻋدد اﻟﺗﻌﻠﯾﻣﺎت اﻟﺗﻲ ﺗﻧﻔذ ﻓﻲ ﻧﻔس اﻟﻠﺣظﺔ‪.‬‬

‫‪-٢-‬‬
‫‪ -٦‬ﺳﻌﺔ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ اﻟﺗﻲ ﯾﺳﺗطﯾﻊ اﻟﻣﻌﺎﻟﺞ إدارﺗﻬﺎ‪.‬‬

‫‪ ٢-٢‬اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ‪: Main Memory‬‬


‫إن وﺣدة اﻟﻣﻌﺎﻟﺟﺔ اﻟﻣرﻛزﯾﺔ ﻻ ﺗﺣﺗوي ﻋﻠﻰ ذاﻛرة ﺗﻛﻔﻲ ﻟﺗﺧزﯾن اﻟﻣﻌطﯾﺎت واﻟﺑراﻣﺞ واﻟﻧﺗﺎﺋﺞ‪ .‬وذﻟك‬
‫ﻷن ﻋدد اﻟﻣﺳﺟﻼت ﻓﯾﻬﺎ ﻣﺣدود ﺟداً‪ .‬ﻟذا ﻣن اﻟﺿروري أن ﯾﺣﺗوي اﻟﺣﺎﺳوب ﻋﻠﻰ ذاﻛرة ﺗﻛﻔﻲ‬
‫ﻟﺗﺧزﯾن اﻟﻣﻌطﯾﺎت واﻟﺑراﻣﺞ واﻟﻧﺗﺎﺋﺞ‪ .‬ﯾوﺟد ﻫﻧﺎك ﻧوﻋﺎن ﻣن اﻟذاﻛرة‪ :‬رﺋﯾﺳﺔ وﻣﺳﺎﻋدة‪.‬‬
‫ﺗﺗﻛون اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ﻣن ﻋدد ﻣن ﻣواﻗﻊ اﻟﺗﺧزﯾن ‪ Locations‬ﯾﺗم ﺗرﻗﯾﻣﻬﺎ ﺑﺄرﻗﺎم ﺻﺣﯾﺣﺔ‬
‫ﻣﺗﺳﻠﺳﻠﺔ ﺗﺳﻣﻰ ﺑﺎﻟﻌﻧﺎوﯾن ‪ .Addresses‬ﺗﺑدأ اﻟﻌﻧﺎوﯾن ﻣن اﻟﺻﻔر وﺗزداد ﺑﺎﻧﺗظﺎم ﺑﻣﻘدار )‪(١‬‬
‫وﺗﻧﺗﻬﻲ ﺑﺎﻟرﻗم )‪ (N-1‬ﺣﯾث )‪ (N‬ﻋدد ﻛﻠﻣﺎت اﻟذاﻛرة‪.‬‬
‫ﻣﺛﺎل‪ :‬ﺻﻧدوق اﻟﺑرﯾد‬
‫ﯾﺳﻣﻰ طول ﻣوﻗﻊ اﻟﺗﺧزﯾن طول ﻛﻠﻣﺔ اﻟذاﻛرة‪ .‬أطوال ﻛﻠﻣﺔ اﻟذاﻛرة اﻷﻛﺛر ﺷﯾوﻋﺎً ﻫﻲ‪:‬‬
‫‪ ١٦ ، ٨ ، ٤ ، ٢ ، ١‬ﺑﺎﯾت‬
‫ﺗﻣﺗﺎز اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ﺑﺎﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -١‬اﻟﺳﻌﺔ )ﻋدد ﻣواﻗﻊ اﻟﺗﺧزﯾن(‬
‫‪ -٢‬طول اﻟﻛﻠﻣﺔ‬
‫‪ -٣‬زﻣن اﻟوﺻول )اﻟزﻣن اﻟﻼزم ﻟﻘراءة أو ﺗﺧزﯾن ﻣﺣﺗوﯾﺎت ﻣوﻗﻊ واﺣد(‬
‫وﺣدات ﻗﯾﺎس ﺳﻌﺔ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ‪:‬‬
‫‪ ١٠٢٤ = 1 KB‬ﺑﺎﯾت‬
‫‪ ١٠٢٤ = 1 MB‬ﻛﯾﻠوﺑﺎﯾت‬
‫‪ ١٠٢٤ = 1 GB‬ﻣﯾﻐﺎﺑﺎﯾت‬
‫‪ ١٠٢٤ = 1 TB‬ﺟﯾﺟﺎﺑﺎﯾت‬

‫ﺗﺻﻧﯾف اﻟذاﻛرة اﻟرﺋﯾﺳﺔ إﻟﻰ اﻷﺻﻧﺎف اﻟﺗﺎﻟﯾﺔ‪:‬‬


‫أوﻻ‪ :‬ﺣﺳب ﺗﻛﻧوﻟوﺟﯾﺎ اﻟﺗﺻﻧﯾﻊ‪:‬‬
‫ً‬
‫أ‪ -‬ذاﻛرة اﻟﺣﻠﻘﺎت اﻟﻣﻣﻐﻧطﺔ‪:‬‬
‫ﺗﺗﻛــون ﻣــن ﻋــدد ﻛﺑﯾــر ﻣــن اﻟﺣﻠﻘــﺎت اﻟﻣــﺻﻧوﻋﺔ ﻣ ــن ﻣ ـواد ﺳــﻬﻠﺔ اﻟﻣﻐﻧطــﺔ‪ .‬واﻟﺗــﻲ ﯾﻣــر ﻣــن ﺧﻼﻟﻬ ــﺎ‬
‫أﺳﻼك ﻛﻬرﺑﺎﺋﯾﺔ ﻟﻠﺗﺣﻛم ﺑﻣﻐﻧطﺗﻬﺎ‪ .‬ﻓﻌﻧدﻣﺎ ﯾﻣر ﻣن ﺧﻼل ﻫـذﻩ اﻷﺳـﻼك ﺗﯾـﺎر ﺑﺎﺗﺟـﺎﻩ ﻣﻌـﯾن ﯾﺧـزن ﻓـﻲ‬
‫اﻟﺣﻠﻘﺔ )‪ .(١‬أﻣﺎ إذا ﻣر اﻟﺗﯾﺎر ﺑﺎﻻﺗﺟﺎﻩ اﻟﻣﻌﺎﻛس ﻓﯾﺧزن ﻓﯾﻬﺎ )‪.(٠‬‬
‫وﻣن أﻫم ﺧﺻﺎﺋص ﻫذﻩ اﻟذاﻛرة‪:‬‬
‫‪ -١‬ﻏﯾر ﻣﺗطﺎﯾرة ‪Non-volatile‬‬

‫‪-٣-‬‬
‫‪ -٢‬ﻛﺑﯾرة اﻟﺣﺟم‬
‫‪ -٣‬ﻛﺛﯾرة اﻷﻋطﺎل‬
‫ﻧﺳﺑﯾﺎ‬
‫ً‬ ‫‪ -٤‬ﻗﻠﯾﻠﺔ اﻟﺳرﻋﺔ‬
‫‪ -٥‬ﻛﻠﻔﺗﻬﺎ ﻋﺎﻟﯾﺔ )ﺗﺻﻧﻊ ﺑطرﯾﻘﺔ ﯾدوﯾﺔ(‬
‫ﺗم اﻻﺳﺗﻐﻧﺎء ﻋﻧﻬﺎ‪.‬‬

‫ب‪ -‬ذاﻛرة أﺷﺑﺎﻩ اﻟﻣوﺻﻼت ‪:Semi-conducters‬‬


‫ﺗﺗﻛ ــون ﻣ ــن دواﺋ ــر إﻟﻛﺗروﻧﯾ ــﺔ ﻣﯾﻛروﺳ ــﻛوﺑﯾﺔ ﻣﺑﻧﯾ ــﺔ ﻋﻠ ــﻰ رﻗﺎﻗ ــﺎت ‪ Chips‬ﻣ ــﺻﻧوﻋﺔ ﻣ ــن ﻣـ ـواد أﺷ ــﺑﺎﻩ‬
‫اﻟﻣوﺻﻼت ﻣﺛل اﻟﺳﯾﻠﯾﻛون واﻟﺟرﻣﺎﻧﯾوم‪.‬‬
‫ﺗﻣﺗﺎز ﺑـﺻﻐر ﺣﺟﻣﻬـﺎ‪ ،‬ﻗﻠـﺔ ﻛﻠﻔﺗﻬـﺎ‪ ،‬ﺳـرﻋﺗﻬﺎ اﻟﻔﺎﺋﻘـﺔ‪ ،‬درﺟـﺔ وﺛوﻗﯾﺗﻬـﺎ اﻟﻌﺎﻟﯾـﺔ )ﻋـدم ﺗﻌطﻠﻬـﺎ(‪ ،‬ﻏﯾـر أﻧﻬـﺎ‬
‫ذاﻛرة ﻣﺗطﺎﯾرة‪.‬‬

‫ﺗﺳﺗﺧدم اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ﻟﺗﺧزﯾن‪:‬‬


‫ﺣﺎﻟﯾﺎ‪.‬‬
‫ً‬ ‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﺑراﻣﺞ اﻟﺗﻲ ﯾﺟري ﺗﻧﻔﯾذﻫﺎ‬
‫‪ -‬ﻣدﺧﻼت اﻟﺑراﻣﺞ‬
‫‪ -‬اﻟﻧﺗﺎﺋﺞ اﻟوﺳﯾطﺔ‬
‫‪ -‬اﻟﻧﺗﺎﺋﺞ اﻟﻧﻬﺎﺋﯾﺔ‬

‫‪ ٣-٢‬اﻟذاﻛرة اﻟﺛﺎﻧوﯾﺔ )اﻟﻣﺳﺎﻋدة( ‪: Secondary Memory‬‬


‫ﻣن أﻫم ﺧﺻﺎﺋﺻﻬﺎ‪:‬‬
‫‪ -‬ﻏﯾر ﻣﺗطﺎﯾرة‬
‫‪ -‬ﺳﻌﺗﻬﺎ ﻏﯾر ﻣﺣدودة‬
‫‪ -‬رﺧﯾﺻﺔ اﻟﺛﻣن‬
‫‪ -‬ﻗﻠﯾﻠ ــﺔ اﻟ ــﺳرﻋﺔ ﺑﺎﻟﻣﻘﺎرﻧ ــﺔ ﻣ ــﻊ اﻟ ــذاﻛرة اﻟرﺋﯾ ــﺳﺔ أو اﻟﻣ ــﺳﺟﻼت‪ .‬وذﻟ ــك ﻷن وﺣ ــدات اﻟ ــذاﻛرة اﻟﺛﺎﻧوﯾ ــﺔ‬
‫ﺗﺣﺗوي ﻋﻠﻰ أﺟزاء ﻣﯾﻛﺎﻧﯾﻛﯾﺔ ﻣﺗﺣرﻛﺔ‪.‬‬
‫اﻟوﺣدات اﻟﻣﻐﻧﺎطﯾﺳﯾﺔ ﻫﻲ اﻷﻛﺛر اﺳﺗﺧداﻣﺎً ﻣن ﺑﯾن أﻧواع اﻟذاﻛرة اﻟﺛﺎﻧوﯾﺔ‪.‬‬
‫ﺗﺗﻛـ ـ ــون وﺣـ ـ ــدة اﻟـ ـ ــذاﻛرة اﻟﻣﻐﻧﺎطﯾـ ـ ــﺳﯾﺔ ﻣـ ـ ــن ﺟ ـ ـ ـزﺋﯾن رﺋﯾـ ـ ــﺳﯾﯾن أﺣـ ـ ــدﻫﻣﺎ اﻟﻛﺗروﻧـ ـ ــﻲ وﯾـ ـ ــﺳﻣﻰ اﻟﻣـ ـ ــﻧظم‬
‫‪ ،Controller‬واﻵﺧر ﻣﯾﻛﺎﻧﯾﻛﻲ وﯾﺳﻣﻰ ﻣﺷﻐﻼً ‪.Drive‬‬
‫ﯾﻘــوم اﻟﻣــﻧظم ﺑﺎﻹﺷ ـراف ﻋﻠــﻰ ﻋﻣﻠﯾــﺔ ﻧﻘــل اﻟﺑﯾﺎﻧــﺎت وٕاﺷــﺎرات اﻟــﺗﺣﻛم ﺑــﯾن اﻟــذاﻛرة اﻟﻣﻐﻧﺎطﯾــﺳﯾﺔ أوﺟ ـزاء‬
‫اﻟﺣﺎﺳوب اﻷﺧرى‪ .‬ﺑﯾﻧﻣﺎ ﯾﻘوم اﻟﻣﺷﻐل ﺑﺗﺣرﯾك وﺳط اﻟﺗﺧزﯾن اﻟﻣﻐﻧﺎطﯾﺳﻲ‪.‬‬

‫‪-٤-‬‬
‫اﻟـﺷرﯾط اﻟﻣﻐﻧﺎطﯾــﺳﻲ ﻫـو ﻋﺑـﺎرة ﻋــن ﺷـرﯾط ﺑﻼﺳـﺗﯾﻛﻲ ﻣﻐطــﻰ ﻣـن ﺟﻬـﺔ واﺣــدة ﺑﻣـﺎدة ﺳـﻬﻠﺔ اﻟﻣﻐﻧطــﺔ‬
‫ﻣﺛ ــل أﻛ ــﺳﯾد اﻟﺣدﯾ ــد‪ .‬ﺗﺗﻛ ــون ﻣ ــن ﺣﺑﯾﺑ ــﺎت ﺻ ــﻐﯾرة‪ .‬ﺗﺧ ــزن اﻟﺑﯾﺎﻧ ــﺎت ﺑواﺳ ــطﺔ ﻣﺟ ــﺎل ﻛﻬروﻣﻐﻧﺎطﯾ ــﺳﻲ‬
‫ﯾؤدي إﻟﻰ ﺗرﺗﯾب اﻟﺣﺑﯾﺑﺎت ﻋﻠﻰ اﻟﺷرﯾط ﻓﻲ وﺿﻌﯾﺔ ﻣﻌﯾﻧﺔ‪.‬‬
‫ﺗــﻧظم اﻟﺑﯾﺎﻧــﺎت ﻋﻠــﻰ اﻟــﺷرﯾط اﻟﻣﻐﻧﺎطﯾــﺳﻲ ﻓــﻲ ﻣﺟﻣوﻋــﺎت ﺗــﺳﻣﻰ ﻛــل واﺣــدة ﻣﻧﻬــﺎ ﺳــﺟﻼً ‪.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‬وﻏﯾرﻫﺎ‪.‬‬

‫‪ -٣‬اﻟﺗﻧظﯾم اﻟﻬﯾﻛﻠﻲ ﻟﻠﺣواﺳﯾب ‪:‬‬


‫‪ ١-٣‬اﻟﺗﻧظﯾم اﻟﻬﯾﻛﻠﻲ ﻟﻠﺣواﺳﯾب اﻟﻛﺑﯾرة ‪:‬‬
‫ﯾﻘﺻد ﺑﻬﯾﻛﻠﯾﺔ اﻟﺣﺎﺳوب اﻟﺷﻛل اﻟذي ﯾظﻬر ﻓﯾﻪ اﻟﺣﺎﺳوب ﻛم‬
‫ﺗﺗﺿﻣن اﻟﻬﯾﻛﻠﯾﺔ اﻟﻌﻧﺎﺻر اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬أﻧواع اﻟﺑﯾﺎﻧﺎت وطرق ﺗﻣﺛﯾﻠﻬﺎ‬
‫‪ -‬طرق اﻟﻌﻧوﻧﺔ‬
‫‪ -‬ﺻﯾﻎ اﻟﺗﻌﻠﯾﻣﺎت وأﻧواﻋﻬﺎ‬
‫‪ -‬اﻟﻧﻣوذج اﻟﺑراﻣﺟﻲ ﻟﻠﻣﻌﺎﻟﺞ‬
‫‪ -‬ﺗﻧظﯾم اﻟذاﻛرة اﻟرﺋﯾﺳﺔ‬
‫‪ -‬ﻧظﺎم اﻹدﺧﺎل واﻹﺧراج‬
‫‪ -‬اﻻﻋﺗراﺿﺎت‬
‫‪ -‬أﻧظﻣﺔ اﻟﺗﺷﻐﯾل‬

‫ﻣﺛﺎل ‪ :‬ﺣواﺳﯾب ‪IBM 360/370‬‬

‫‪ ١-١-٣‬أﻧواع اﻟﺑﯾﺎﻧﺎت ﻓﻲ ﺣواﺳﯾب ‪IBM 360/370‬‬


‫ﺗﺳﺗطﯾﻊ ﻫذﻩ اﻟﺣواﺳﯾب اﻟﺗﻌﺎﻣل ﻣﻊ أﻧواع ﻣﺧﺗﻠﻔﺔ ﻣن اﻟﺑﯾﺎﻧﺎت‪.‬‬

‫‪-٧-‬‬
‫وﺗﺻﻧف ﻫذﻩ اﻟﺑﯾﺎﻧﺎت إﻟﻰ ﻋددﯾﺔ ورﻣزﯾﺔ‪ .‬أﻣﺎ اﻟﻌددﯾﺔ ﻓﺗﻧﻘﺳم إﻟﻰ أرﺑﻌﺔ أﻧواع ﻫﻲ‪:‬‬
‫‪ -‬اﻷﻋداد اﻟﺛﻧﺎﺋﯾﺔ ﺑﺻﯾﻐﺔ اﻟﻔﺎﺻﻠﺔ اﻟﺛﺎﺑﺗﺔ ‪Fixed-point binary‬‬
‫‪ -‬اﻷﻋداد اﻟﺛﻧﺎﺋﯾﺔ ﺑﺻﯾﻐﺔ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎﺋﻣﺔ ‪Floating-point binary‬‬
‫‪ -‬اﻷﻋداد اﻟﻌﺷرﯾﺔ اﻟﻣﺣزوﻣﺔ ‪Packed decimal‬‬
‫‪ -‬اﻷﻋداد اﻟﻌﺷرﯾﺔ ﻏﯾر اﻟﻣﺣزوﻣﺔ )اﻟﻣﻣﺗدة( ‪Unpacked decimal‬‬
‫ﺳــﻣﯾت اﻷﻋــداد ﺑــﺻﯾﻐﺔ اﻟﻔﺎﺻــﻠﺔ اﻟﺛﺎﺑﺗــﺔ ﻧظ ـراً ﻟﻛــون اﻟﻔﺎﺻــﻠﺔ اﻟﻛــﺳرﯾﺔ ﺗﺣﺗــل ﻣوﻗﻌــﺎً ﺛﺎﺑﺗــﺎً ﻋﻠــﻰ ﯾــﺳﺎر‬
‫آﺧر رﻗم‪.‬‬
‫ﺗﺗﻛون ﻫذﻩ اﻷﻋداد ﻣن ﺟزﺋﯾن‪ :‬اﻹﺷﺎرة واﻟﻣﻘدار‪.‬‬
‫ﺗﺗﺿﻣن ﺣواﺳـﯾب ‪ IBM 360/370‬ﺗﻌﻠﯾﻣـﺎت ﻟﻣﻌﺎﻟﺟـﺔ اﻷﻋـداد اﻟﻣﻣﺛﻠـﺔ ﺑـﺻﯾﻐﺔ اﻟﻔﺎﺻـﻠﺔ اﻟﺛﺎﺑﺗـﺔ اﻟﺗـﻲ‬
‫ﯾﻛون طوﻟﻬﺎ ‪ ٣٢‬أو ‪ ١٦‬ﺛﻧﺎﺋﯾﺔ‪.‬‬

‫أﻣــﺎ اﻷﻋــداد اﻟﻣﻣﺛﻠــﺔ ﺑــﺻﯾﻐﺔ اﻟﻔﺎﺻــﻠﺔ اﻟﻌﺎﺋﻣــﺔ ﻓﻘــد ﺳــﻣﯾت ﺑﻬــذا اﻻﺳــم ﻧظ ـراً ﻟﻛــون اﻟﻔﺎﺻــﻠﺔ اﻟﻛــﺳرﯾﺔ‬
‫ﯾﻣﻛن أن ﺗﺣﺗل أي ﻣوﻗﻊ ﻓﻲ اﻟﻌدد‪.‬‬
‫ﺗﺗﺿﻣن ﺣواﺳﯾب ‪ IBM 360/370‬ﺗﻌﻠﯾﻣﺎت ﻟﻣﻌﺎﻟﺟﺔ اﻷﻋداد اﻟﻣﻣﺛﻠﺔ ﺑـﺻﯾﻐﺔ اﻟﻔﺎﺻـﻠﺔ اﻟﻌﺎﺋﻣـﺔ اﻟﺗـﻲ‬
‫ﯾﻛون طوﻟﻬﺎ ‪ ٣٢‬أو ‪ ٦٤‬أو ‪ ١٢٨‬ﺛﻧﺎﺋﯾﺔ‪.‬‬
‫ﺗﺗﻛون ﻫذﻩ اﻷﻋداد ﻣن ﺛﻼث ﺣﻘول ﻫﻲ‪:‬‬
‫‪ -١‬ﺣﻘل إﺷﺎرة اﻟﻌدد )ﺛﻧﺎﺋﯾﺔ واﺣدة(‬
‫‪ -٢‬ﺣﻘل اﻷس وﯾﺧﺻص ﻟﻪ ‪ ٨‬أو ‪ ١١‬ﺛﻧﺎﺋﯾﺔ‬
‫‪ -٣‬ﺣﻘل اﻟﻛﺳر وﯾﺧﺻص ﻟﻪ ‪ ٢٣‬أو ‪ ٥٢‬ﺛﻧﺎﺋﯾﺔ‬
‫ﺗﻣﺛل اﻷﻋداد اﻟﻌﺷرﯾﺔ ﻓﻲ ﺣواﺳـﯾب ‪ IBM 360/370‬ﺣـﺳب ﻧظـﺎم ‪ ،BCD‬ﺣﯾـث ﯾﻣﺛـل ﻛـل رﻗـم ﻓـﻲ‬
‫اﻟﻌدد ﺑواﺳطﺔ ‪ ٤‬ﺛﻧﺎﺋﯾﺎت )ﻣن ‪ ٠٠٠٠‬إﻟﻰ ‪ ٠)-(١٠٠١‬إﻟﻰ ‪(٩‬‬
‫ﻣﺛﺎل‪:‬‬
‫‪١‬‬ ‫‪٩‬‬ ‫‪٨‬‬ ‫‪٦‬‬

‫ﺗﺻﻧف اﻷﻋداد اﻟﻌﺷرﯾﺔ ﺣﺳب طرﯾﻘﺔ ﺗﺧزﯾﻧﻬﺎ ﻓﻲ اﻟذاﻛرة إﻟﻰ ﻧوﻋﯾن‪:‬‬


‫‪ -١‬اﻷﻋداد اﻟﻌﺷرﯾﺔ اﻟﻣﺣزوﻣﺔ )اﻟﻣﺿﻐوطﺔ( ‪:Packed BCD‬‬
‫ﺣﯾــث ﯾﺧــزن ﻓــﻲ اﻟﺑﺎﯾــت اﻟواﺣــد رﻗﻣــﯾن ﻋــﺷرﯾﯾن‪ .‬أﻣــﺎ إﺷــﺎرة اﻟــرﻗم ﻓﯾﺧــﺻص ﻟﻬــﺎ اﻟﻧــﺻف اﻷﯾﻣــن ﻓــﻲ‬
‫اﻟﺑﺎﯾت اﻟواﻗﻊ ﻓﻲ أﻗﺻﻰ ﯾﻣﯾن ﺗﻣﺛﯾل اﻟﻌدد‪.‬‬

‫‪-٨-‬‬
‫‪ -٢‬اﻷﻋداد اﻟﻌﺷرﯾﺔ ﻏﯾر اﻟﻣﺣزوﻣﺔ )اﻟﻣﻣﺗدة( ‪:Unpacked BCD‬‬
‫ﯾﺧــﺻص ﺑﺎﯾــت واﺣــد ﻟﻛــل رﻗــم ﻋــﺷري‪ .‬ﻓــﺈن اﻟــرﻗم اﻟﻌــﺷري ﯾﺣﺗــل اﻟﻧــﺻف اﻷﯾﻣــن ﻓــﻲ اﻟﺑﺎﯾــت‪ .‬أﻣــﺎ‬
‫اﻟﻧـﺻف اﻷﯾـﺳر )ﯾـﺳﻣﻰ ﻧطـﺎق( ﻓــﯾﻣﻛن أن ﯾﺣﺗـوي ﻋﻠـﻰ أﯾـﺔ ﻗﯾﻣــﺔ ﻣﺣـﺻورة ﺑـﯾن اﻟـرﻗم ‪ ٠٠٠٠‬واﻟــرﻗم‬
‫‪ .١١١١‬وﻓﻲ أﻗﺻﻰ اﻟﯾﻣﯾن ﯾﺣﺗوي اﻟﺑﺎﯾت ﻋﻠﻰ إﺷﺎرة اﻟرﻗم ﺑدﻻً ﻣن اﻟﻧطﺎق‪.‬‬
‫أﻣﺎ اﻟﺑﯾﺎﻧﺎت اﻟرﻣزﯾﺔ ﻓﺗﻣﺛل ﺑﺎﺳﺗﺧدام ﻧظﺎم ﺷﯾﻔرة ‪ EBCDIC‬ﺣﯾث ﯾﺗﺳﻊ اﻟﺑﺎﯾت اﻟواﺣد ﻟرﻣز واﺣد‪.‬‬

‫‪ ٢-١-٣‬ﺑﻧﯾﺔ ﻣﻌﺎﻟﺞ ﺣواﺳﯾب ‪: IBM 360/370‬‬


‫ﯾﺗﻛون ﻣن ﺛﻼث وﺣدات رﺋﯾﺳﯾﺔ ﻫﻲ‪:‬‬
‫‪ -‬وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق‬
‫‪ -‬وﺣدة اﻟﺗﺣﻛم‬
‫‪ -‬وﺣدة اﻟﻣﺳﺟﻼت‪.‬‬
‫ﺗﺗﻛون وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق ﻣن‪:‬‬
‫‪ -‬وﺣدة اﻟﻔﺎﺻﻠﺔ اﻟﺛﺎﺑﺗﺔ‪:‬‬
‫ﺗﺳﺗﺧدم ﻟﺗﻧﻔﯾذ اﻟﻌﻣﻠﯾﺎت اﻟﻣﺧﺗﻠﻔﺔ ﻋﻠﻰ اﻟﻘﯾم اﻟﻣﻣﺛﻠﺔ ﺑﺻﯾﻐﺔ اﻟﻔﺎﺻﻠﺔ اﻟﺛﺎﺑﺗﺔ‪.‬‬
‫‪ -‬وﺣدة اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎﺋﻣﺔ‪:‬‬
‫‪ -‬وﺣدة اﻷﻋداد اﻟﻌﺷرﯾﺔ ‪:BCD‬‬
‫ﺗﺳﺗﺧدم ﻟﺗﻧﻔﯾذ اﻟﻌﻣﻠﯾﺎت ﻋﻠﻰ اﻟﻘﯾم اﻟﻌﺷرﯾﺔ ‪BCD‬‬

‫ﯾﺣﺗوي ﻣﻌﺎﻟﺞ ‪ IBM 360/370‬ﻋﻠﻰ ﺛﻼث أﻧواع ﻣن اﻟﻣﺳﺟﻼت‪:‬‬


‫‪ -١‬ﻣﺳﺟﻼت اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎﺋﻣﺔ‪ :‬وﻋددﻫﺎ )‪ (٤‬ﺗﺳﺗﺧدم ﻟﺗﺧزﯾن اﻟﻘﯾم اﻟﻣﻣﺛﻠـﺔ ﺑـﺻﯾﻐﺔ اﻟﻔﺎﺻـﻠﺔ اﻟﻌﺎﺋﻣـﺔ‪،‬‬
‫وطول اﻟﻣﺳﺟل اﻟواﺣد ﯾﺳﺎوي ‪ ٦٤‬ﺛﻧﺎﺋﯾﺔ‪.‬‬
‫‪ -٢‬ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض‪ :‬ﻋددﻫﺎ ‪ ١٦‬وطول ﻛل ﻣﻧﻬﺎ ‪ ٣٢‬ﺛﻧﺎﺋﯾﺔ‬
‫‪ -٣‬ﻣﺳﺟﻼت ﺧﺎﺻﺔ اﻷﻏراض‪ :‬ﻋددﻫﺎ ‪ ١٦‬وﻣن أﻣﺛﻠﺗﻬﺎ‪:‬‬
‫‪ -‬ﻣﺳﺟل اﻟﺑﯾﺎﻧﺎت ‪DR‬‬
‫‪ -‬ﻣﺳﺟل اﻟﻌﻧوان ‪AR‬‬
‫‪ -‬ﻣﺳﺟل اﻟﺗﻌﻠﯾﻣﺔ ‪IR‬‬
‫‪ -‬ﻣﺳﺟل ﺣﺎﻟﺔ اﻟﺑرﻧﺎﻣﺞ ‪(Program Status Word) PSW‬‬
‫وﯾﺳﺗﺧدم ﻫذا اﻟﻣﺳﺟل ﻟﺗﺧزﯾن ﺣﺎﻟـﺔ اﻟﺣﺎﺳـوب واﻟﺑرﻧـﺎﻣﺞ اﻟﻣﻧﻔـذ ﺣﺎﻟﯾ ًـﺎ‪ ،‬وﯾﺣﺗـوي ﻋﻠـﻰ ﻣﻌﻠوﻣـﺎت ﺗﺣـدد‬
‫ﺣﺎﻟــﺔ ﺟﻣﯾــﻊ وﺣــدات اﻹدﺧــﺎل واﻹﺧ ـراج ﺑﺎﻹﺿ ــﺎﻓﺔ إﻟــﻰ ﺣﺎﻟــﺔ اﻟﻣﻌــﺎﻟﺞ اﻟرﺋﯾــﺳﻲ وﻣﻌﺎﻟﺟــﺎت اﻹدﺧ ــﺎل‬
‫واﻹﺧراج ‪.IOP‬‬

‫‪-٩-‬‬
‫‪ ٣-١-٣‬ﺻﯾﻎ اﻟﺗﻌﻠﯾﻣﺎت وطرق اﻟﻌﻧوﻧﺔ ‪:‬‬
‫ﺗﺗﻛون ﺗﻌﻠﯾﻣﺎت ﺣواﺳﯾب ‪ IBM 360/370‬ﻣن ‪ ٢‬ﺑﺎﯾت أو ‪ ٤‬أو ‪ .٦‬وﯾﺗراوح ﻋدد اﻟﻌﻧـﺎوﯾن ﻓﯾﻬـﺎ ﻣـن‬
‫ﻋﻧوان واﺣد إﻟﻰ ﺛﻼﺛﺔ ﻋﻧﺎوﯾن‪.‬‬
‫ﻧﻌﻧـﻲ ﺑطــرق اﻟﻌﻧوﻧـﺔ اﻷﺳــﺎﻟﯾب اﻟﻣﺗﺑﻌـﺔ ﻓــﻲ ﺗﺣدﯾــد ﻣواﻗـﻊ اﻟﺑﯾﺎﻧــﺎت‪ .‬أﻣـﺎ طــرق اﻟﻌﻧوﻧـﺔ اﻟﻣــﺳﺗﺧدﻣﺔ ﻓــﻲ‬
‫ﻫذﻩ اﻟﺣواﺳﯾب ﻓﻬﻲ‪:‬‬
‫‪ -‬اﻟﻌﻧوﻧﺔ اﻟﻔورﯾﺔ‬
‫‪ -‬اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻟﻣﺳﺟﻼت‬
‫‪ -‬اﻟﻌﻧوﻧﺔ اﻟﻣﺑﺎﺷرة‬
‫‪ -‬اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻷﺳﺎس‬
‫‪ -‬اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻷﺳﺎس واﻟﻔﻬرس‬
‫ﺳﯾﺗم اﻟﺷرح ﻓﻲ وﺣدة ﻻﺣﻘﺔ‬

‫‪ ٤-١-٣‬اﻟذاﻛرة اﻟرﺋﯾﺳﺔ وﻧظﺎم اﻹدﺧﺎل واﻹﺧراج ‪:‬‬


‫ﺗﺻل ﺳﻌﺔ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ﻓﻲ ﺣواﺳﯾب ‪ IBM 360/370‬ﻟﻐﺎﯾﺔ ‪ ١٦‬ﻣﯾﻐﺎﺑﺎﯾت‪.‬‬
‫ﺗﻌﺗﻣد ﺳرﻋﺔ اﻟﺣﺎﺳوب ﻋﻠﻰ ﻋدة ﻋواﻣل ﻣن أﻫﻣﻬﺎ‪:‬‬
‫‪ -‬ﺳرﻋﺔ اﻟﻣﻌﺎﻟﺞ اﻟﻣﺳﺗﺧدم‬
‫‪ -‬ﺳرﻋﺔ اﻟوﺻول إﻟﻰ اﻟﺑﯾﺎﻧﺎت ﻓﻲ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ‬
‫وﺑﻣــﺎ أن ﺳــرﻋﺔ اﻟــذاﻛرة اﻟرﺋﯾــﺳﺔ أﻗــل ﺑﻛﺛﯾــر ﻣــن ﺳــرﻋﺔ اﻟﻣﻌــﺎﻟﺞ‪ ،‬ﻓﻘــد ﺗرﻛــزت اﻷﺑﺣــﺎث ﻟزﯾــﺎدة ﻓﻌﺎﻟﯾــﺔ‬
‫‪ Cache‬واﻟ ـ ــذاﻛرة اﻹرﺗﺑﺎطﯾـ ـ ــﺔ‬ ‫اﻟ ـ ــذاﻛرة اﻟرﺋﯾ ـ ــﺳﺔ‪ ،‬ﻟ ـ ــذﻟك اﺳ ـ ــﺗﺧدﻣت ذاﻛــــــرة ﻛﺎﺷــــــﻲ ‪Memory‬‬
‫‪.Associative Memory‬‬
‫ﺗﻌرف ذاﻛـرة ﻛﺎﺷـﻲ ﺑﺄﻧﻬـﺎ ذاﻛـرة ﺻـﻐﯾرة اﻟﺣﺟـم )ﻻ ﺗﺗﺟـﺎوز ﺳـﻌﺗﻬﺎ ﺑـﺿﻊ ﻣﺋـﺎت ﻛﯾﻠوﺑﺎﯾـت( وﻟﻛﻧﻬـﺎ ﻣـن‬
‫أﺳرع أﻧواع اﻟذاﻛرة ﺑﻌد اﻟﻣﺳﺟﻼت‪.‬‬
‫ﺗﺳﺗﺧدم ذاﻛرة ﻛﺎﺷﻲ ﻟﺗﺧزﯾن اﻟﺑﯾﺎﻧﺎت واﻟﺗﻌﻠﯾﻣﺎت اﻷﻛﺛر اﺳﺗﻌﻣﺎﻻً ﻓﻲ وﻗت ﻣﺎ‪.‬‬
‫ﺗوﺿﻊ ﻋﺎدةً ﺑﯾن اﻟﻣﻌﺎﻟﺞ واﻟذاﻛرة اﻟرﺋﯾﺳﺔ‪.‬‬
‫أﯾﺿﺎ‪ ،‬ﯾﺗم اﻟﺑﺣث واﻟﺗﺧزﯾن ﻓﯾﻬﺎ ﺑﺳرﻋﺔ ﻋﺎﻟﯾﺔ‪.‬‬
‫ً‬ ‫ﺗﻌرف اﻟذاﻛرة اﻹرﺗﺑﺎطﯾﺔ ﺑﺄﻧﻬﺎ ذاﻛرة ﺻﻐﯾرة اﻟﺣﺟم‬
‫ﻋﻣﻠﯾﺔ اﻟﺑﺣث ﺗﺗم ﻓﻲ ﺟﻣﯾﻊ ﻣواﻗﻊ اﻟذاﻛرة اﻹرﺗﺑﺎطﯾﺔ ﻓﻲ ﻧﻔس اﻟوﻗت‪.‬‬
‫ﺳﯾﺗم اﻟﺷرح ﻓﻲ اﻟوﺣدة اﻟﺛﺎﻟﺛﺔ‪.‬‬
‫ﯾﺗﻛون ﻧظﺎم اﻹدﺧﺎل واﻹﺧراج ﻓﻲ ﺣواﺳﯾب ‪ IBM 360/370‬ﻣن اﻷﺟزاء اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬وﺣدات اﻹدﺧﺎل واﻹﺧراج‬

‫‪- ١٠ -‬‬
‫‪ -‬وﺣدات اﻟﺗﺣﻛم ﺑوﺣدات اﻹدﺧﺎل واﻹﺧراج‬
‫‪ -‬ﻣﻌﺎﻟﺟﺎت اﻹدﺧﺎل واﻹﺧراج‬
‫ﻣن ﻫﻧﺎ ﯾﺗﺿﺢ أن ﻫذﻩ اﻟﺣواﺳﯾب ﺗﺣﺗوي ﻋﻠﻰ ﻋدة ﻣﻌﺎﻟﺟﺎت‪:‬‬
‫‪ -‬ﻣﻌﺎﻟﺟــﺎت اﻹدﺧــﺎل واﻹﺧ ـراج ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ اﻟﻣﻌــﺎﻟﺞ اﻟرﺋﯾــﺳﻲ اﻟــذي ﯾﻧﻔــذ ﺟﻣﯾــﻊ أﻧ ـواع اﻟﺗﻌﻠﯾﻣــﺎت‬
‫ﺑﺎﺳﺗﺛﻧﺎء ﺗﻌﻠﯾﻣﺎت اﻹدﺧﺎل واﻹﺧراج‪.‬‬
‫وﺣﺗﻰ ﻻ ﺗﺣـﺻل ﺧﻼﻓـﺎت ‪ Conflicts‬ﺑـﯾن اﻟﻣﻌﺎﻟﺟـﺎت‪ ،‬ﯾـﺗم ﺗوﺟﯾـﻪ اﻟﺗﻌﻠﯾﻣـﺎت إﻟـﻰ اﻟﻣﻌـﺎﻟﺞ اﻟرﺋﯾـﺳﻲ‪.‬‬
‫واﻟــذي ﯾﻘ ــوم ﺑ ــدورﻩ ﺑﺗﺣدﯾــد ﻧ ــوع اﻟﺗﻌﻠﯾﻣ ــﺔ‪ .‬وﯾﻧﻔــذﻫﺎ إذا ﻛﺎﻧ ــت ﻣ ــن اﺧﺗــﺻﺎﺻﻪ أو ﯾرﺳ ــﻠﻬﺎ إﻟ ــﻰ ﻣﻌ ــﺎﻟﺞ‬
‫اﻹدﺧﺎل واﻹﺧراج اﻟﻣﺧﺗص‪.‬‬
‫وﻫـ ــذا ﯾﺗطﻠـ ــب أن ﯾﺣﺗـ ــوي طـ ــﺎﻗم ﺗﻌﻠﯾﻣـ ــﺎت اﻟﻣﻌـ ــﺎﻟﺞ اﻟرﺋﯾـ ــﺳﻲ ﻋﻠـ ــﻰ ﺗﻌﻠﯾﻣـ ــﺎت ﺧﺎﺻـ ــﺔ ﻟﺗﻧظـ ــﯾم ﻋﻣﻠﯾـ ــﺔ‬
‫اﻻﺗﺻﺎل ﺑﯾﻧﻪ وﺑﯾن ﻣﻌﺎﻟﺟﺎت اﻹدﺧﺎل واﻹﺧراج‪ .‬وﻣﻧﻬﺎ‪:‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺔ أﺑدأ اﻹدﺧﺎل‪/‬اﻹﺧراج )‪Start input/output (SIO‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺔ أوﻗف اﻹدﺧﺎل‪/‬اﻹﺧراج )‪Halt input/output (HIO‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺔ اﻓﺣص اﻹدﺧﺎل‪/‬اﻹﺧراج )‪Test input/output (TIO‬‬
‫وﻣن اﻷﻣﺛﻠﺔ ﻋﻠﻰ ﺗﻌﻠﯾﻣﺎت ﻣﻌﺎﻟﺟﺎت اﻹدﺧﺎل واﻹﺧراج ﻣﺎ ﯾﻠﻲ‪:‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺔ اﻗرأ ‪read‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺔ ﺧزن ‪write‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺔ اﻗﻠب اﻟﺻﻔﺣﺔ ‪eject‬‬

‫‪ ٢-٣‬اﻟﺗﻧظﯾم اﻟﻬﯾﻛﻠﻲ ﻟﻠﺣواﺳﯾب اﻟﻣﯾﻛروﯾﺔ ‪:‬‬


‫ﯾ ـ ــﺻﻧف اﻟﻣﻌ ـ ــﺎﻟﺞ ‪ ٢٨٦‬ﺿ ـ ــﻣن اﻟﻣﻌﺎﻟﺟ ـ ــﺎت اﻟﻣﯾﻛروﯾ ـ ــﺔ ذات ‪ ١٦‬ﺛﻧﺎﺋﯾ ـ ــﺔ وذﻟ ـ ــك ﻷن ﺑﻧﯾﺗ ـ ــﻪ اﻟداﺧﻠﯾ ـ ــﺔ‬
‫واﻟﺧﺎرﺟﯾﺔ ﺗﻣﻛﻧﻪ ﻣن ﺗﻧﻔﯾذ اﻟﻌﻣﻠﯾﺎت ﻋﻠﻰ اﻟﻣﻌطﯾﺎت اﻟﺗﻲ طوﻟﻬﺎ ‪ ١٦‬ﺛﻧﺎﺋﯾﺔ ﻓﻲ ﻧﻔس اﻟﻠﺣظﺔ‪.‬‬

‫‪ ١-٢-٣‬أﻧواع اﻟﺑﯾﺎﻧﺎت ﻓﻲ ﺣواﺳﯾب ‪: ٢٨٦‬‬


‫ﺣواﺳـﯾب ‪ ٢٨٦‬ﺗﺗـﺿﻣن ﺗﻌﻠﯾﻣــﺎت ﯾﻣﻛﻧﻬـﺎ اﻟﺗﻌﺎﻣـل ﻓــﻲ ﻧﻔـس اﻟﻠﺣظــﺔ ﻣـﻊ اﻟﺑﯾﺎﻧـﺎت اﻟﺗــﻲ ﻻ ﯾزﯾـد طوﻟﻬــﺎ‬
‫ﻋن ‪ ١٦‬ﺛﻧﺎﺋﯾﺔ‪ .‬ﻟذا ﻟﻣﻌﺎﻟﺟﺔ اﻟﺑﯾﺎﻧﺎت اﻟﺗﻲ ﯾزﯾد طوﻟﻬـﺎ ﻋـن ‪ ١٦‬ﺛﻧﺎﺋﯾـﺔ ﯾﻠزﻣﻧـﺎ ﺗﺟزﺋﺗﻬـﺎ إﻟـﻰ ﻣﺟﻣوﻋـﺎت‬
‫طــول ﻛــل ﻣﻧﻬــﺎ ﯾــﺳﺎوي ‪ ١٦‬أو ‪ ٨‬ﺛﻧﺎﺋﯾــﺎت‪ ،‬وﻣــن ﺛــم ﺗﻧﻔﯾــذ اﻟﺗﻌﻠﯾﻣــﺎت اﻟﻼزﻣــﺔ ﻋــدة ﻣـرات ﺣــﺳب ﻋــدد‬
‫اﻟﻣﺟﻣوﻋﺎت‪ .‬ﻓﻲ ﺣﯾن أن اﻟﺣواﺳﯾب اﻟﻛﺑﯾرة ﺗﺳﺗطﯾﻊ ﻣﻌﺎﻟﺟﺔ اﻟﺑﯾﺎﻧﺎت اﻟطوﯾﻠﺔ ﺑﺗﻌﻠﯾﻣـﺔ واﺣـدة أو ﺑﻌـدة‬
‫ﺗﻌﻠﯾﻣﺎت‪.‬‬
‫وﻣن أﺟل ﺗﻣﻛﯾن ﺣواﺳـﯾب ‪ ٢٨٦‬ﻣـن ﻣﻌﺎﻟﺟـﺔ اﻟﺑﯾﺎﻧـﺎت اﻟطوﯾﻠـﺔ ﺑﻔﻌﺎﻟﯾـﺔ ﻋﺎﻟﯾـﺔ ﯾﻠزﻣﻧـﺎ اﺳـﺗﺧدام ﻣﻌﺎﻟﺟـﺎً‬
‫رﯾﺎﺿﯾﺎً ﻣن ﻧوع ‪ ٨٠٢٨‬ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ اﻟﻣﻌﺎﻟﺞ ‪.٢٨٦‬‬

‫‪- ١١ -‬‬
‫ﯾﻣﻛﻧﻧــﺎ اﻻﺳــﺗﻧﺗﺎج أﻧــﻪ ﻟﻣﻌﺎﻟﺟــﺔ اﻟﺑﯾﺎﻧــﺎت اﻟطوﯾﻠــﺔ ﺑﻔﻌﺎﻟﯾــﺔ ﻓــﻲ اﻟﺣواﯾــب اﻟﻣــﺻﻐرة ﯾﺟــب أن ﺗﺣﺗــوي ﻫــذﻩ‬
‫اﻟﺣواﺳﯾب ﻋﻠﻰ ﻣﻌﺎﻟﺟﺎً رﯾﺎﺿﯾﺎً‪.‬‬

‫ﺗﺻﻧف اﻟﺑﯾﺎﻧﺎت ﻓﻲ ﺣواﺳﯾب ‪ ٢٨٦‬إﻟﻰ اﻷﻧواع اﻟﺗﺎﻟﯾﺔ‪:‬‬


‫‪ -١‬اﻟﺑﯾﺎﻧﺎت اﻟرﻣزﯾﺔ‪ :‬وﺗﻣﺛل ﻓﻲ ﺣواﺳﯾب ‪ ٢٨٦‬ﺣﺳب ﻧظﺎم ‪.ASCII‬‬
‫‪ -٢‬اﻟﺑﯾﺎﻧﺎت اﻟﻌددﯾﺔ‪ :‬وﺗﺻﻧف ﺣﺳب طرﯾﻘﺔ ﺗﻣﺛﯾﻠﻬﺎ إﻟﻰ‪:‬‬
‫‪ -‬اﻷﻋداد اﻟﺻﺣﯾﺣﺔ‬
‫‪ -‬اﻷﻋداد اﻟﻌﺷرﯾﺔ‪ :‬وﺗﻣﺛل ﺣﺳب ﻧظﺎم ‪BCD‬‬
‫‪ -‬اﻷﻋداد اﻟﻣﻣﺛﻠﺔ ﺑﺻﯾﻐﺔ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎﺋﻣﺔ‪ :‬ﺗﺳﺗطﯾﻊ ﺣواﺳﯾب ‪ ٢٨٦‬اﻟﺗﻌﺎﻣل ﻣﻌﻬﺎ ﻓﻲ ﺣﺎﻟـﺔ اﺣﺗواﺋﻬـﺎ‬
‫ﻋﻠﻰ اﻟﻣﻌﺎﻟﺞ اﻟرﯾﺎﺿﻲ ‪ ٢٨٧‬ﻓﻘط‪.‬‬

‫‪ ٢-٢-٣‬ﺑﻧﯾﺔ اﻟﻣﻌﺎﻟﺞ اﻟﻣﯾﻛروي ‪: ٢٨٦‬‬


‫إن أﻫ ــم ﻣـ ــﺎ ﯾﻣﯾـ ــز اﻟﻣﻌـ ــﺎﻟﺞ ‪ ٢٨٦‬ﻫـ ــو اﺳـ ــﺗﺧداﻣﻪ اﻟﺑﻧﯾـ ــﺔ اﻷﻧﺑوﺑﯾـ ــﺔ ‪ Pipelined-architecture‬ﻓـ ــﻲ‬
‫ﺗرﻛﯾﺑﻪ اﻟداﺧﻠﻲ ﻣﻣﺎ زاد ﻓﻲ ﻗدرﺗﻪ ﻓﻲ ﻣﻌﺎﻟﺟﺔ اﻟﺑﯾﺎﻧﺎت‪.‬‬
‫واﻟﺑﻧﯾﺔ اﻷﻧﺑوﺑﯾﺔ ﺗﻌﻧـﻲ ﺗﻘـﺳﯾم اﻟﻣﻌـﺎﻟﺞ إﻟـﻰ وﺣـدات وظﯾﻔﯾـﺔ ﻣـﺳﺗﻘﻠﺔ ﺑﺣﯾـث ﺗـﺳﺗطﯾﻊ ﻫـذﻩ اﻟوﺣـدات أداء‬
‫ﻣﻬﺎﻣﻬﺎ ﻋﻠﻰ اﻟﺗوازي دون أن ﺗﻌﯾق ﺑﻌﺿﻬﺎ ﺑﻌﺿﺎ‪.‬‬
‫ﻣﺛﺎل‪ :‬ﺧطوط اﻧﺗﺎج اﻟﺳﯾﺎرات ﻓﻲ اﻟﻣﺻﺎﻧﻊ‪.‬‬

‫ﯾﺗﻛون اﻟﻣﻌﺎﻟﺞ اﻟﻣﯾﻛروي ‪ ٢٨٦‬ﻣن اﻟﻧﺎﺣﯾﺔ اﻟوظﯾﻔﯾﺔ ﻣن ‪ ٤‬وﺣدات أﺳﺎﺳﯾﺔ ﻫﻲ‪:‬‬


‫‪ -١‬وﺣدة اﻟﺗﻧﻔﯾذ ‪:Execution Unit‬‬
‫ﺗﺗوﻟﻰ ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺎت ﻋﻠﻰ اﻟﻣﻌطﯾﺎت ﻣن أﺟل اﻟﺣﺻول ﻋﻠﻰ اﻟﻧﺗﺎﺋﺞ‪ .‬وﺗﺗﻛون ﻫذﻩ اﻟوﺣدة ﻣن‪:‬‬
‫‪ -‬وﺣدة اﻟﺣﺳﺎب واﻟﻣﻧطق‬
‫‪ -‬وﺣدة اﻟﺗﺣﻛم )ﺗﺣﺗوي ﻋﻠﻰ ذاﻛرة ‪(ROM‬‬
‫‪ ٨ -‬ﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض‬

‫‪ -٢‬وﺣدة اﻟﺗﻌﻠﯾﻣﺔ ‪:Instruction Unit‬‬


‫ﻣﻬﻣﺗﻬــﺎ ﺗــﺷﻔﯾر اﻟﺗﻌﻠﯾﻣــﺎت اﻟﻘﺎدﻣــﺔ ﻣــن وﺣــدة اﻟﻧﺎﻗﻠ ــﺔ وﺗﺧ ـزﯾن اﻟﺗﻌﻠﯾﻣــﺎت اﻟﻣــﺷﻔرة ﻓــﻲ طــﺎﺑور ﺧ ــﺎص‬
‫ﯾﺗﺳﻊ ﻟﺛﻼث ﺗﻌﻠﯾﻣﺎت ﻓﻘط‪.‬‬
‫‪ -٣‬وﺣدة اﻟﻧﺎﻗﻠﺔ ‪:Bus Unit‬‬

‫‪- ١٢ -‬‬
‫ﺗﻌﺗﺑــر اﻟوﺳــﯾط ﺑــﯾن اﻟﻣﻌــﺎﻟﺞ ‪ ٢٨٦‬ﻣــن ﺟﻬــﺔ‪ ،‬واﻟــذاﻛرة اﻟرﺋﯾــﺳﺔ ووﺣــدات اﻹدﺧــﺎل واﻹﺧ ـراج ﻣــن ﺟﻬــﺔ‬
‫أﺧرى‪ .‬ووﺣدات اﻟﺣﺎﺳوب اﻷﺧرى‪.‬‬
‫‪ -٤‬وﺣدة اﻟﻌﻧوان ‪:Address Unit‬‬
‫ﺗﺗــوﻟﻰ ﻣﻬﻣــﺔ ﺣــﺳﺎب اﻟﻌﻧــﺎوﯾن اﻟﻔﻌﻠﯾــﺔ ‪ Physical Address‬ﻟﻣواﻗــﻊ اﻟــذاﻛرة اﻟرﺋﯾــﺳﺔ اﻟﻣــﺷﺎرﻛﺔ ﻓــﻲ‬
‫اﻟﺗﻌﻠﯾﻣﺎت‪.‬‬

‫‪ ٣-٢-٣‬ﺻﯾﻎ اﻟﺗﻌﻠﯾﻣﺎت وطرق اﻟﻌﻧوﻧﺔ ‪:‬‬


‫ﯾﻣﻛــن ﺗ ــﺻﻧﯾف ﺗﻌﻠﯾﻣ ــﺎت اﻟﻣﻌ ــﺎﻟﺞ ‪ ٢٨٦‬ﺣ ــﺳب ﻧ ــوع اﻟﻌﻣﻠﯾــﺔ اﻟﻣﻣﺛﻠ ــﺔ ﻓ ــﻲ اﻟﺗﻌﻠﯾﻣ ــﺔ إﻟ ــﻰ اﻟﻣﺟﻣوﻋ ــﺎت‬
‫اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬اﻟﺗﻌﻠﯾﻣﺎت اﻟﺣﺳﺎﺑﯾﺔ‬ ‫‪ -‬ﺗﻌﻠﯾﻣﺎت ﻧﻘل اﻟﺑﯾﺎﻧﺎت‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻹزاﺣﺔ واﻟﺗدوﯾر‬ ‫‪ -‬اﻟﺗﻌﻠﯾﻣﺎت اﻟﻣﻧطﻘﯾﺔ‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﺗﺣﻛم ﺑﺎﻟﺑرﻧﺎﻣﺞ‬ ‫‪ -‬ﺗﻌﻠﯾﻣﺎت ﻣﻌﺎﻟﺟﺔ ﺳﻼﺳل اﻟرﻣوز‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﺗﺣﻛم ﺑﺎﻟﻣﻌﺎﻟﺞ‬
‫أﻣﺎ ﺑﺎﻟﻧﺳﺑﺔ ﻟطرق اﻟﻌﻧوﻧﺔ ﻓﻣﻧﻬﺎ‪ :‬اﻟﻌﻧوﻧـﺔ اﻟﻔورﯾـﺔ‪ ،‬اﻟﻣﺑﺎﺷـرة‪ ،‬ﻏﯾـر اﻟﻣﺑﺎﺷـرة‪ ،‬اﻟﻌﻧوﻧـﺔ اﻟﻧـﺳﺑﯾﺔ ﺑﺎﺳـﺗﺧدام‬
‫اﻷﺳﺎس‪ ،‬واﻟﻌﻧوﻧﺔ اﻟﻧﺳﺑﯾﺔ ﺑﺎﺳﺗﺧدام اﻟﻔﻬرس‪ ،‬وﻏﯾرﻫﺎ‪.‬‬

‫‪ ٤-٢-٣‬اﻟذاﻛرة اﻟرﺋﯾﺳﯾﺔ وﻧظﺎم اﻹدﺧﺎل واﻹﺧراج ‪:‬‬


‫ﯾﻌﻣل اﻟﻣﻌﺎﻟﺞ ‪ ٢٨٦‬ﺑﺄﺣد أﺳﻠوﺑﻲ اﻟﺗﺷﻐﯾل اﻟﺗﺎﻟﯾﯾن‪:‬‬
‫‪ -١‬أﺳــﻠوب اﻟﻌﻧـوان اﻟﺣﻘﯾﻘــﻲ ‪ :Real Address Mod‬ﯾﻌﻣــل ﺑــﺷﻛل ﻣــﺷﺎﺑﻪ ﻟﻠﻣﻌﺎﻟﺟــﺎت ‪ ٨٠٨٦‬و‬
‫‪.٨٠٨٨‬‬
‫‪ -٢‬أﺳــﻠوب اﻟﻌﻧ ـوان اﻟﺗﺧﯾﻠــﻲ ‪ :Protected Virtual Address Mod‬ﯾــﺳﺗطﯾﻊ اﻟﻌﻣــل ﺑــﺷﻛل‬
‫ﻣﺗطور ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﻣﻌﺎﻟﺟﺎت ‪ ٨٠٨٦‬و ‪ ٨٠٨٨‬وﻏﯾر ﻣﺗواﻓق ﻣﻌﻬﺎ‪.‬‬

‫‪ -٤‬أﻧواع وﺧﺻﺎﺋص ﻫﯾﻛﻠﯾﺎت اﻟﺣﺎﺳوب ‪:‬‬


‫ﻧوع اﻟﻬﯾﻛﻠﯾﺔ ﺗﺣدد ﻣﻌظم ﺧﺻﺎﺋص اﻟﺣﺎﺳوب ﻣﺛل‪:‬‬
‫‪ -‬ﺳرﻋﺔ ﺗﻧﻔﯾذ اﻟﻌﻣﻠﯾﺎت‬
‫‪ -‬ﺻﯾﻎ اﻟﺗﻌﻠﯾﻣﺎت وأﻧواﻋﻬﺎ‬

‫‪- ١٣ -‬‬
‫ﺗﺻﻧف اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﺣواﺳﯾب إﻟﻰ ﺛﻼث أﻧواع‪:‬‬
‫‪ -‬اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣرﻛﻣﯾﺔ ‪Accumulator-based computers‬‬
‫‪ -‬اﻟﻬﯾﻛﻠﯾﺎت ذات اﻟﻣﺳﺟﻼت اﻟﻌﺎﻣﺔ ‪General-register computers‬‬
‫‪ -‬اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣﻛدﺳﯾﺔ ‪Stack computers‬‬

‫‪ ١-٤‬اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣرﻛﻣﯾﺔ ‪:‬‬


‫ﺗﺣﺗـوي أﺑـﺳط أﻧـواع اﻟﻣﻌﺎﻟﺟـﺎت ﻋﻠـﻰ ﻣـﺳﺟل ﺧـﺎص )أو ﻣـﺳﺟﻠﯾن اﺛﻧـﯾن( ﯾـﺳﻣﻰ ﻣرﻛﻣـﺎً ‪ ،ACC‬وﻓـﻲ‬
‫ﯾﺑﺎ‪.‬‬
‫ﻛﺛﯾر ﻣن اﻟﺣواﺳﯾب ﯾﺳﻣﻰ اﻟﻣﺳﺟل اﻟرﺋﯾﺳﻲ ﻧظراً ﻷﻧﻪ ﯾﺳﺗﺧدم ﻓﻲ ﺗﻧﻔﯾذ ﺟﻣﯾﻊ اﻟﺗﻌﻠﯾﻣﺎت ﺗﻘر ً‬
‫اﻧظر ﺷﻛل ‪ ١٨.١‬ص ‪٤٣‬‬
‫ﺗﻣﺗــﺎز اﻟﻣﻌﺎﻟﺟــﺎت ذات اﻟﻬﯾﻛﻠﯾــﺎت اﻟﻣرﻛﻣﯾــﺔ ﺑــﺄن ﻣﻌظــم ﺗﻌﻠﯾﻣﺎﺗﻬــﺎ أﺣﺎدﯾــﺔ اﻟﻌﻧ ـوان‪ ،‬أي ﺗﺣﺗــوي ﻋﻧواﻧــﺎً‬
‫اﺣدا ﻟﺗﺣدﯾد اﻟﻣﻌﺎﻣﻼت‪.‬‬
‫و ً‬
‫ﻓــﻲ اﻟﺣواﺳــﯾب ذات اﻟﻬﯾﻛﻠﯾــﺎت اﻟﻣرﻛﻣﯾــﺔ ﯾﻔﺗــرض وﺟــود إﺣــدى اﻟﻣﻌــﺎﻣﻼت ﻓــﻲ اﻟﻣــرﻛم ﻓــﻲ ﺣــﯾن أن‬
‫اﻟﻣﻌﺎﻣﻠﺔ اﻷﺧرى ﺗوﺟد ﻓﻲ اﻟﺗﻌﻠﯾﻣﺔ ﻧﻔﺳﻬﺎ‪ .‬أﻣﺎ اﻟﻧﺗﯾﺟﺔ ﻓﺗﺧزن ﻓﻲ اﻟﻣرﻛم ﺛﺎﻧﯾﺔ‪.‬‬
‫ﻓﻣـﺛﻼً إذا ﻛﺎﻧــت ‪ X‬ﺗرﻣـز ﻟﻌﻧـوان اﻟﻣﻌﺎﻣﻠــﺔ ﻓـﻲ اﻟــذاﻛرة اﻟرﺋﯾــﺳﯾﺔ‪ ،‬ﻓـﺈن اﻟﺗﻌﻠﯾﻣــﺔ ‪ ADD X‬ﺗــؤدي إﻟــﻰ‬
‫ﺟﻣــﻊ ﻣﺣﺗوﯾــﺎت اﻟﻣــرﻛم ﻣــﻊ اﻟﻣﻌﺎﻣﻠــﺔ اﻟﻣﺧزﻧــﺔ ﻓــﻲ اﻟﻣوﻗــﻊ ‪ X‬وﺗﺧ ـزﯾن اﻟﻣﺟﻣــوع ﻓــﻲ اﻟﻣــرﻛم‪ .‬وﯾﻣﻛــن‬
‫اﻟﺗﻌﺑﯾر ﻋن ﻫذﻩ اﻟﻌﻣﻠﯾﺔ ﻛﻣﺎ ﯾﻠﻲ‪:‬‬
‫)‪ACC = ACC + (X‬‬
‫ﺣﯾث )‪ (X‬ﺗﻌﻧﻲ اﻟﺑﯾﺎﻧﺎت اﻟﻣﺧزﻧﺔ ﻓﻲ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ﻓﻲ اﻟﻌﻧوان ‪.X‬‬

‫اﻟــﺷﻛل اﻟﺗــﺎﻟﻲ ﯾﺑــﯾن ﻣﺧطــط ﺳــﯾر اﻟﻌﻣﻠﯾــﺎت وﻣراﺣــل ﺗﻧﻔﯾــذ اﻟﺗﻌﻠﯾﻣــﺎت ﻓــﻲ اﻟﺣواﺳــﯾب ذات اﻟﻬﯾﻛﻠﯾــﺎت‬
‫اﻟﻣرﻛﻣﯾﺔ‪.‬‬

‫‪ ٢-٤‬اﻟﻬﯾﻛﻠﯾﺎت ذات اﻟﻣﺳﺟﻼت اﻟﻌﺎﻣﺔ ‪:‬‬


‫ﻣن أﻫم ﻣﺳﺎوئ اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣرﻛﻣﯾﺔ ﻗﻠﺔ ﻋدد اﻟﻣـﺳﺟﻼت اﻟﻣـﺳﻣوح اﺳـﺗﺧداﻣﻬﺎ ﻣـن ﻗﺑـل اﻟﻣﺑـرﻣﺞ أﺛﻧـﺎء‬
‫ﻛﺗﺎﺑﺔ اﻟﺑراﻣﺞ ﺑﻠﻐﺔ اﺳﻣﺑﻠﻲ‪ .‬وﻫـذا ﺑـدورﻩ ﯾـؤدي إﻟـﻰ زﯾـﺎدة ﻋـدد اﻟﺗﻌﻠﯾﻣـﺎت ﻓـﻲ اﻟﺑـراﻣﺞ وﯾـﺻﻌب ﻋﻣﻠﯾـﺔ‬
‫اﻟﺑرﻣﺟﺔ ﻧﻔﺳﻬﺎ‪.‬‬
‫وﻣن أﺟل ﺗﺧﻔﯾف ﺣدة اﻟﻣﺷﺎﻛل ﺗم زﯾﺎدة ﻋدد اﻟﻣﺳﺟﻼت اﻟﻌﺎﻣﺔ ﻓﻲ اﻟﻣﻌـﺎﻟﺞ‪ .‬وﻫﻛـذا ﺗـم اﻻﻧﺗﻘـﺎل إﻟـﻰ‬
‫اﻟﻬﯾﻛﻠﯾﺎت ذات اﻟﻣﺳﺟﻼت اﻟﻌﺎﻣﺔ‪.‬‬
‫اﻧظر ﺷﻛل ‪ ٢٠.١‬ص ‪٤٥‬‬

‫‪- ١٤ -‬‬
‫ﺗﻣﺗﺎز اﻟﺣواﺳﯾب اﻟﺗـﻲ ﺗـﺳﺗﺧدم اﻟﻬﯾﻛﻠﯾـﺎت ذات اﻟﻣـﺳﺟﻼت اﻟﻌﺎﻣـﺔ ﺑـﺄن ﻣﻌظـم ﺗﻌﻠﯾﻣﺎﺗﻬـﺎ ذات ﻋﻧـواﻧﯾن‬
‫أو ذات ﺛﻼﺛﺔ ﻋﻧﺎوﯾن‪.‬‬
‫ـﺛﻼ‪ :‬ﻟﺟﻣــﻊ اﻟﻘﯾﻣﺗــﯾن ‪ X,Y‬اﻟﻣﺧ ـزﻧﺗﯾن ﻓــﻲ اﻟــذاﻛرة اﻟرﺋﯾــﺳﺔ وﺗﺧ ـزﯾن اﻟﻣﺟﻣــوع ﻓــﻲ اﻟﻣوﻗــﻊ ‪ ،Z‬ﻓﺈﻧﻧــﺎ‬
‫ﻓﻣـ ً‬
‫ﻧﺳﺗﺧدم ﺗﻌﻠﯾﻣﺔ اﻟﺟﻣﻊ اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ADD‬‬ ‫‪Z, Y, X‬‬
‫ﯾﻼﺣــظ أن ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﺗﺣﺗــوي ﻋﻠــﻰ ‪ ٣‬ﻋﻧــﺎوﯾن‪ :‬ﯾﺧــﺻص اﻷول واﻟﺛــﺎﻧﻲ ﻣﻧﻬــﺎ ﻟﺗﺧ ـزﯾن اﻟﻘــﯾم اﻟﻣ ـراد‬
‫ﺟﻣﻌﻬﺎ وﯾﺧﺻص اﻟﻌﻧوان اﻟﺛﺎﻟث ﻟﺗﺧزﯾن اﻟﻧﺗﯾﺟﺔ‪ .‬وﯾﻣﻛن ﺗوﺿﯾﺢ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻛﻣﺎ ﯾﻠﻲ‪:‬‬
‫)‪(Z) = (Y) + (X‬‬
‫أﻣــﺎ ﻓــﻲ ﺣﺎﻟــﺔ ﺟﻣــﻊ اﻟﻘﯾﻣﺗــﯾن ‪ X‬و ‪ Y‬وﺗﺧ ـزﯾن اﻟﻣﺟﻣــوع ﻓــﻲ ‪ X‬أو ‪ Y‬ﻓﺈﻧﻧــﺎ ﺳــوف ﻧــﺳﺗﺧدم ﺗﻌﻠﯾﻣــﺔ‬
‫اﻟﺟﻣﻊ ذات اﻟﻌﻧواﻧﯾن اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ADD‬‬ ‫‪X, Y‬‬
‫واﻟﺗﻲ ﺗﻌﻧﻲ‪:‬‬
‫)‪(X) = (X) + (Y‬‬

‫‪ ٣-٤‬اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣﻛدﺳﯾﺔ ‪:‬‬


‫إن اﻟﺣواﺳـﯾب ذات اﻟﻬﯾﻛﻠﯾــﺎت اﻟﻣﻛدﺳـﯾﺔ ‪ Stack‬ﻻ ﺗﺣﺗــوي ﻋﻠـﻰ ﻣــﺳﺟﻼت ﻋﺎﻣـﺔ وﻻ ﻋﻠــﻰ ﻣرﻛﻣــﺎت‪.‬‬
‫إن اﻟﻌﻧﺻر اﻷﺳﺎﺳﻲ ﻓﻲ ﺗرﻛﯾب ﻣﻌﺎﻟﺟﺎت ﻫذا اﻟﻧوع ﻣن اﻟﺣواﺳﯾب ﯾﺳﻣﻰ ﻣﻛدﺳﺎً‪.‬‬
‫اﻟﻣﻛدس ﻫو ﻋﺑﺎرة ﻋن ذاﻛرة ﻣن ﻧوع ﺧﺎص ﺗﻌﻣل ﺣﺳب طرﯾﻘﺔ )‪.LIFO (Last-in First-out‬‬
‫وﯾﻣﻛن ﺗﺷﺑﯾﻪ اﻟﻣﻛدس ﺑﻣﺧزن اﻟطﻠﻘﺎت‪.‬‬
‫ﯾﻣﻛن إﺟراء ﻋﻣﻠﯾﺗﯾن ﻋﻠﻰ اﻟﻣﻛدس‪:‬‬
‫‪ -‬إدﺧﺎل اﻟﻘﯾم إﻟﻰ اﻟﻣﻛدس وﺗﺳﻣﻰ "دﻓﻊ" ‪Push‬‬
‫‪ -‬إﺧراج اﻟﻘﯾم ﻣن اﻟﻣﻛدس وﺗﺳﻣﻰ "ﺳﺣب" ‪Pop‬‬
‫وﯾﺻﻧف اﻟﻣﻛدس إﻟﻰ ﻧوﻋﯾن‪:‬‬
‫‪ -‬اﻟﻣﻛدس اﻟﻣﺎدي ‪:Hardware stack‬‬
‫وﯾﻣﺗﺎز ﺑﺳرﻋﺗﻪ اﻟﻌﺎﻟﯾﺔ ﻓﻲ ﺗﻧﻔﯾذ ﻋﻣﻠﯾﺎت اﻟدﻓﻊ واﻟﺳﺣب )ﻣﺛل ﺣواﺳﯾب ‪.(IBM 370‬‬
‫‪ -‬اﻟﻣﻛدس اﻟﺑرﻣﺟﻲ ‪:Software stack‬‬
‫ﯾﺑﻧﻰ اﻟﻣﻛدس اﻟﺑراﻣﺟﻲ ﻋﺎدة ﺑﺗﺧﺻﯾص ﻣﻧطﻘﺔ ﻓﻲ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ﺑﺳﻌﺔ ‪ n‬ﻗﯾﻣﺔ‪.‬‬

‫ﺗﻣﺗﺎز ﺣواﺳﯾب اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣﻛدﺳﯾﺔ ﺑـﺄن ﻣﻌظـم ﺗﻌﻠﯾﻣﺎﺗﻬـﺎ ﻻ ﺗﺣﺗـوي أﯾـﺔ ﻋﻧـﺎوﯾن‪ .‬ﺗﺗﻛـون اﻟﺗﻌﻠﯾﻣـﺔ ﻣـن‬
‫ﻛود اﻟﻌﻣﻠﯾﺔ ﻓﻘط‪.‬‬
‫ﻣﺛﻼً‪ :‬ﺧطوات ﺟﻣﻊ ﻗﯾﻣﺗﯾن ﻣﺧزﻧﺗﯾن ﻓﻲ ﻣواﻗﻊ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ ‪ X‬و ‪Y‬‬
‫‪PUSH‬‬ ‫;‪X‬‬ ‫‪ -١‬ﻧﻘل ﻣﺣﺗوﯾﺎت اﻟﻣوﻗﻊ ‪ X‬إﻟﻰ اﻟﻣﻛدس‬

‫‪- ١٥ -‬‬
‫‪PUSH‬‬ ‫;‪Y‬‬ ‫‪ -٢‬ﻧﻘل ﻣﺣﺗوﯾﺎت اﻟﻣوﻗﻊ ‪ Y‬إﻟﻰ اﻟﻣﻛدس‬
‫‪ADD‬‬ ‫;‬ ‫‪ -٣‬ﺟﻣﻊ اﻟﻘﯾﻣﺗﯾن وﺗﺧزﯾن اﻟﻣﺟﻣوع ﻓﻲ ﻗﻣﺔ اﻟﻣﻛدس‬

‫ﺗﺟـدر اﻹﺷــﺎرة ﻫﻧــﺎ إﻟــﻰ أن ﻛﺛﯾــر ﻣــن اﻟﺣواﺳــﯾب ﻻ ﯾﻣﻛـن ﺗــﺻﻧﯾﻔﻬﺎ إﻟــﻰ أﺣــد أﻧـواع اﻟﻬﯾﻛﻠﯾــﺎت اﻟــﺳﺎﻟﻔﺔ‬
‫اﻟذﻛر وذﻟك ﻟﻛوﻧﻬﺎ ﺗﺟﻣﻊ ﺑﯾن ﺧﺻﺎﺋص ﻋدة أﻧواع ﻣن اﻟﻬﯾﻛﻠﯾﺎت‪.‬‬

‫‪ -٥‬ﺗرﻛﯾب اﻟﺗﻌﻠﯾﻣﺎت ‪:‬‬


‫ﺗﺗﻛون اﻟﺗﻌﻠﯾﻣﺔ ﻣن ﺣﻘﻠﯾن أﺳﺎﺳﯾﯾن ﻫﻣﺎ‪:‬‬
‫‪ -‬ﺣﻘل ﻛود اﻟﻌﻣﻠﯾﺔ )‪Operation code field (op-code‬‬
‫‪ -‬ﺣﻘل اﻟﻣﻌﺎﻣﻼت ‪Operand field‬‬
‫ﯾﺧــﺻص ﺣﻘــل ﻛـــود اﻟﻌﻣﻠﯾــﺔ ﻟﺗﺣدﯾــد ﻧــوع اﻟﻌﻣﻠﯾــﺔ اﻟﻣ ـراد إﻧﺟﺎزﻫــﺎ‪ .‬ﻫﻧــﺎك ﻋــدة أﺳــﺎﻟﯾب ﻟﺗــﺷﻔﯾر ﻛــود‬
‫اﻟﻌﻣﻠﯾﺔ ﻓﻲ اﻟﺗﻌﻠﯾﻣﺎت وأﻫﻣﻬﺎ‪:‬‬
‫‪ -‬أﺳﻠوب اﻟﻛود اﻟﺛﺎﺑت اﻟطول ‪Block code‬‬
‫‪ -‬أﺳﻠوب اﻟﻛود اﻟﻣﻣﺗد ‪Expanding op-code‬‬
‫‪ -‬أﺳﻠوب ﻛود ﻫوﻓﻣﺎن ‪Huffman code‬‬
‫ﯾﻌﺗﻣد أﺳﻠوب اﻟﻛود اﻟﺛﺎﺑت اﻟطول ﻋﻠﻰ إﻋطﺎء ﺷﯾﻔرة ذات طول ﺛﺎﺑت ﻟﻛل ﻋﻣﻠﯾﺔ‪.‬‬
‫ﻓــﺈذا ﻛــﺎن ﻋــدد اﻟﻌﻣﻠﯾــﺎت اﻟﺗــﻲ ﯾــﺳﺗطﯾﻊ اﻟﻣﻌــﺎﻟﺞ ﺗﻧﻔﯾــذﻫﺎ ﻫــو ‪ ،N‬ﻓﺈﻧــﻪ ﻟﺗﻣﺛﯾــل ﻛــل ﻋﻣﻠﯾــﺔ ﯾﻠــزم ﺣﻘــل‬
‫طوﻟﻪ ‪ m‬ﺑت وﯾﺣدد ﺣﺳب اﻟﻌﻼﻗﺔ اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪M = Log N‬‬
‫ﻣﺛﺎل‪:‬‬
‫ﺗﻧوي ﺷرﻛﺔ إﻧﺗﺎج ﺣﺎﺳوب ﺑﺳﯾط ﻟﺗﻧﻔﯾذ اﻟﻌﻣﻠﯾﺎت اﻟﺗﺎﻟﯾﺔ‪:‬‬

‫رﻣز اﻟﻌﻣﻠﯾﺔ‬ ‫اﻟﺗوﺿﯾﺣﺎت‬


‫‪LOAD‬‬ ‫‪addr‬‬ ‫)‪Acc = M(addr‬‬
‫‪STORE‬‬ ‫‪addr‬‬ ‫‪M(addr) = Acc‬‬
‫‪ADD‬‬ ‫‪addr‬‬ ‫)‪Acc = Acc + M(addr‬‬
‫‪SUB‬‬ ‫‪addr‬‬ ‫)‪Acc = Acc – M(addr‬‬
‫‪INCA‬‬ ‫‪Acc = Acc + 1‬‬
‫‪DECA‬‬ ‫‪Acc = Acc – 1‬‬
‫‪ZERO‬‬ ‫‪Acc = 0‬‬
‫‪HALT‬‬ ‫‪Halt the CPU‬‬

‫‪- ١٦ -‬‬
‫أ‪ -‬ﻣﺎ ﻫو أﻗل ﻋدد ﻣن اﻟﺛﻧﺎﺋﯾﺎت ﯾﻠزم ﻟﺗﺷﻔﯾر ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺎت ؟‬
‫ب‪ -‬أرﺳم ﺟدوﻻً ﯾﺑﯾن اﻟﻛود ﻟﻛل ﺗﻌﻠﯾﻣﺔ ؟‬
‫ج‪ -‬ﺣدد ﻧوع داﺋرة ﺗﺣﻠﯾل اﻟﻌﻣﻠﯾﺔ اﻟﻼزﻣﺔ ؟‬
‫اﻟﺣل‪:‬‬
‫‪m = Log‬‬ ‫‪N‬‬ ‫أ‪-‬‬
‫ﺑﺗﻌوﯾض ‪ N = 8‬إذن ‪m = 3‬‬
‫وﻫذا ﯾﻌﻧﻲ أﻧﻪ ﯾﻠزم ‪ ٣‬ﺛﻧﺎﺋﯾﺎت ﻟﺗﺷﻔﯾر ﻛل ﻋﻣﻠﯾﺔ‪.‬‬
‫ب‪ -‬ﺑﺎﺳﺗﺧدام ‪ ٣‬ﺛﻧﺎﺋﯾﺎت ﯾﻣﻛن ﺗﺷﻔﯾر اﻟﻌﻣﻠﯾﺎت ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬

‫‪ LOAD STORE ADD‬اﻟﺗﻌﻠﯾﻣﺔ‬ ‫‪SUB‬‬ ‫‪INCA DECA ZERO HALT‬‬


‫اﻟﻛود‬ ‫‪٠٠٠‬‬ ‫‪٠٠١‬‬ ‫‪٠١٠‬‬ ‫‪٠١١‬‬ ‫‪١٠٠‬‬ ‫‪١٠١‬‬ ‫‪١١٠‬‬ ‫‪١١١‬‬

‫ج‪ -‬ﻟﺗﺣدﯾـد ﻧـوع اﻟﻌﻣﻠﯾـﺔ اﻟﻼزﻣـﺔ ﯾﻣﻛﻧﻧـﺎ اﺳـﺗﺧدام ﻣﺣﻠـل ﺷـﯾﻔرة ذو ‪ ٣‬ﻣـداﺧل و‪ ٨‬ﻣﺧـﺎرج ‪(3 to 8‬‬
‫)‪ decoder‬ﻣﺛل ‪74LS138‬‬

‫أﻣــﺎ ﺣﻘـــل اﻟﻣﻌـــﺎﻣﻼت‪ ،‬ﻓﯾــﺳﺗﺧدم ﻓــﻲ ﺑﻌــض اﻟﺗﻌﻠﯾﻣــﺎت ﻟﺗﺣدﯾــد اﻟﻣﻌــﺎﻣﻼت اﻟﻣــﺷﺎرﻛﺔ ﻓــﻲ اﻟﻌﻣﻠﯾــﺎت‪.‬‬
‫ﺣﯾ ــث ﯾﻣﻛ ــن ﻟﻠﺗﻌﻠﯾﻣ ــﺔ أن ﺗﺣﺗ ــوي ﻋﻠ ــﻰ اﻟﻣﻌ ــﺎﻣﻼت ﻧﻔ ــﺳﻬﺎ ﻣﺑﺎﺷـ ـرة أو ﻋﻧـ ـوان اﻟﻣﻌ ــﺎﻣﻼت إذا ﻛﺎﻧ ــت‬
‫ﻣﺧزﻧ ـ ـﺔ ﻓـ ــﻲ اﻟـ ــذاﻛرة اﻟرﺋﯾـ ــﺳﺔ أو رﻗـ ــم )اﺳـ ــم( أﺣـ ــد اﻟﻣـ ــﺳﺟﻼت ﻓـ ــﻲ اﻟﻣﻌـ ــﺎﻟﺞ‪ .‬أي أﻧـ ــﻪ ﯾﻣﻛـ ــن ﺗﺧ ـ ـزﯾن‬
‫اﻟﻣﻌﺎﻣﻼت ﻓﻲ أﺣد اﻷﻣﺎﻛن اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬اﻟﺗﻌﻠﯾﻣﺔ ﻧﻔﺳﻬﺎ‬
‫‪ -‬اﻟﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض ﻓﻲ اﻟﻣﻌﺎﻟﺞ‬
‫‪ -‬ﻣواﻗﻊ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ‬
‫‪ -‬ﻣﻧﺎﻓذ اﻟﻣداﺧل‬
‫ﯾﻌﺗﻣــد طــول اﻟﺗﻌﻠﯾﻣــﺔ ﻋﻠــﻰ‪ :‬ﻋــدد اﻟﻌﻧــﺎوﯾن ﻓ ــﻲ اﻟﺗﻌﻠﯾﻣــﺔ‪ ،‬وطرﯾﻘــﺔ اﻟﻌﻧوﻧــﺔ اﻟﻣــﺳﺗﺧدﻣﺔ ﻟﻠﺗﻌﺑﯾــر ﻋ ــن‬
‫اﻟﻣﻌﺎﻣﻼت‪.‬‬
‫أﻣﺎ ﻋدد اﻟﻌﻧﺎوﯾن ﻓﻲ اﻟﺗﻌﻠﯾﻣﺔ ﻓﯾﻌﺗﻣد ﺑدورﻩ ﻋﻠﻰ ﻧوع اﻟﻬﯾﻛﻠﯾﺔ اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﻣﻌﺎﻟﺞ‪.‬‬
‫وﯾﻣﻛن ﺗﺻﻧﯾف اﻟﺗﻌﻠﯾﻣﺎت ﺣﺳب ﻋدد اﻟﻌﻧﺎوﯾن ﻓﯾﻬﺎ إﻟﻰ اﻷﻧواع اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -١‬ﺗﻌﻠﯾﻣﺎت ﺻﻔرﯾﺔ اﻟﻌﻧوان‬
‫‪ -٢‬ﺗﻌﻠﯾﻣﺎت أﺣﺎدﯾﺔ اﻟﻌﻧوان‬
‫‪ -٣‬ﺗﻌﻠﯾﻣﺎت ﺛﻧﺎﺋﯾﺔ اﻟﻌﻧوان‬

‫‪- ١٧ -‬‬
‫‪ -٤‬ﺗﻌﻠﯾﻣﺎت ﺛﻼﺛﯾﺔ اﻟﻌﻧوان‬

‫أﻧواع اﻟﺗﻌﻠﯾﻣﺎت‪:‬‬
‫ﺗﺗﻛ ــون اﻟﺗﻌﻠﯾﻣ ــﺔ ﺻ ــﻔرﯾﺔ اﻟﻌﻧـ ـوان ﻣ ــن ﺣﻘ ــل ﻛ ــود اﻟﻌﻣﻠﯾ ــﺔ ﻓﻘ ــط‪ ،‬ﻟ ــذا ﻓ ــﺈن اﻟﺗﻌﻠﯾﻣ ــﺎت ﺻ ــﻔرﯾﺔ اﻟﻌﻧـ ـوان‬
‫ﺗﺳﺗﺧدم ﺑﺷﻛل رﺋﯾﺳﻲ ﻓﻲ اﻟﺣواﺳﯾب ذات اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣﻛدﺳﯾﺔ‪.‬‬
‫ﺗﺗﻛــون اﻟﺗﻌﻠﯾﻣــﺔ أﺣﺎدﯾــﺔ اﻟﻌﻧ ـوان ﻣــن ﺣﻘﻠــﯾن اﺛﻧــﯾن‪ :‬اﻷول ﻟﻛــود اﻟﻌﻣﻠﯾــﺔ‪ ،‬واﻟﺛــﺎﻧﻲ ﻟﻠﻣﻌﺎﻣﻠــﺔ ﻧﻔــﺳﻬﺎ أو‬
‫ﻋﻧواﻧﻬﺎ‪ .‬وﺗﺳﺗﺧدم ﻏﺎﻟﺑﺎً ﻓﻲ اﻟﺣواﺳﯾب ذات اﻟﻬﯾﻛﻠﯾﺎت اﻟﻣرﻛﻣﯾﺔ‪.‬‬
‫ﺗﺗﻛون اﻟﺗﻌﻠﯾﻣﺔ ﺛﻧﺎﺋﯾﺔ اﻟﻌﻧوان ﻣن ‪ ٣‬ﺣﻘول ﻫﻲ‪:‬‬
‫‪ -‬ﺣﻘل ﻛود اﻟﻌﻣﻠﯾﺔ‬
‫‪ -‬ﺣﻘل اﻟﻣﻌﺎﻣﻠﺔ اﻷوﻟﻰ‬
‫‪ -‬ﺣﻘل اﻟﻣﻌﺎﻣﻠﺔ اﻟﺛﺎﻧﯾﺔ‬
‫ﺗﺳﺗﺧدم اﻟﺗﻌﻠﯾﻣﺎت ﺛﻧﺎﺋﯾﺔ اﻟﻌﻧوان ﻓﻲ اﻟﺣواﺳﯾب اﻟﺗﻲ ﺗﺣﺗوي ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض‪.‬‬
‫ﺗﺗﻛون اﻟﺗﻌﻠﯾﻣﺎت ﺛﻼﺛﯾﺔ اﻟﻌﻧوان ﻣن ‪ ٤‬ﺣﻘول ﻫﻲ‪:‬‬
‫‪ -‬ﺣﻘل ﻛود اﻟﻌﻣﻠﯾﺔ‬
‫‪ -‬ﺣﻘل اﻟﻣﻌﺎﻣﻠﺔ اﻷوﻟﻰ‬
‫‪ -‬ﺣﻘل اﻟﻣﻌﺎﻣﻠﺔ اﻟﺛﺎﻧﯾﺔ‬
‫‪ -‬ﺣﻘل اﻟﻧﺗﯾﺟﺔ‬
‫ﺗﺳﺗﺧدم اﻟﺗﻌﻠﯾﻣﺎت ﺛﻼﺛﯾﺔ اﻟﻌﻧوان ﻓﻲ اﻟﺣواﺳﯾب اﻟﺗﻲ ﺗﺣﺗوي ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض‪.‬‬
‫ﻟﺗوﺿــﯾﺢ ﺗــﺄﺛﯾر ﻋــدد اﻟﻌﻧــﺎوﯾن ﻋﻠــﻰ طــول اﻟﺑرﻧــﺎﻣﺞ ﺳــوف ﻧﻛﺗــب ﺑراﻣﺟــﺎً ﺑﺎﺳــﺗﺧدام أﻧ ـواع اﻟﺗﻌﻠﯾﻣــﺎت‬
‫اﻵﻧﻔﺔ اﻟذﻛر ﻟﺣﺳﺎب اﻟﻌﻼﻗﺔ اﻟرﯾﺎﺿﯾﺔ اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫)‪X = (A+B)*(C+D‬‬

‫اﻟﺗﻌﻠﯾﻣﺎت واﻟرﻣوز اﻟﺗﻲ ﺳﻧﺳﺗﺧدﻣﻬﺎ ﻓﻲ اﻟﺑراﻣﺞ‪:‬‬

‫‪ADD‬‬ ‫‪ -‬ﺗﻌﻠﯾﻣﺔ اﻟﺟﻣﻊ‬


‫‪MUL‬‬ ‫‪ -‬ﺗﻌﻠﯾﻣﺔ اﻟﺿرب‬
‫‪LOAD‬‬ ‫‪ -‬اﻟﺗﺣﻣﯾل )ﻧﻘل اﻟﻘﯾم ﻣن اﻟذاﻛرة إﻟﻰ اﻟﻣرﻛم(‬
‫‪STORE‬‬ ‫‪ -‬اﻟﺗﺧزﯾن )ﻧﻘل اﻟﻘﯾم ﻣن اﻟﻣرﻛم إﻟﻰ اﻟذاﻛرة(‬
‫‪PUSH‬‬ ‫‪ -‬اﻟدﻓﻊ‬
‫‪POP‬‬ ‫‪ -‬اﻟﺳﺣب‬
‫‪MOVE‬‬ ‫‪ -‬اﻟﺗﺣرﯾك‬

‫‪- ١٨ -‬‬
Acc ‫ اﻟﻣرﻛم‬-
R1, R2 ‫ ﻣﺳﺟﻼت ﻋﺎﻣﺔ اﻷﻏراض‬-
TOS ‫ ﻗﻣﺔ اﻟﻣﻛدس‬-
M(A),M(B) A,B...‫ ﻣواﻗﻊ اﻟذاﻛرة اﻟرﺋﯾﺳﺔ اﻟﺗﻲ ﺗﺣﺗوي اﻟﻘﯾم‬-

:‫ اﻟﺗﻌﻠﯾﻣﺎت ﺛﻼﺛﯾﺔ اﻟﻌﻧوان‬-١


ADD R1, A, B ; R1 = M(A)+M(B)
ADD R2, C, D ; R2 = M(C)+M(D)
MUL X, R1, R2 ; X = R1*R2

:‫ اﻟﺗﻌﻠﯾﻣﺎت ﺛﻧﺎﺋﯾﺔ اﻟﻌﻧوان‬-٢

MOVE R1, A ;R1 = M(A)


ADD R1, B ;R1 = R1+M(B)
MOVE R2, C ;R2 = M(C)
ADD R2, D ;R2 = R2+M(D)
MUL R1, R2 ;R1 = R1*R2
MOVE X, R1 ;M(X) = R
:‫ اﻟﺗﻌﻠﯾﻣﺎت أﺣﺎدﯾﺔ اﻟﻌﻧوان‬-٣
LOAD A ;Acc = M(A)
ADD B ;Acc = Acc+M(B)
STORE X ;M(X) = Acc
LOAD C ;Acc = M(C)
ADD D ;Acc = Acc+M(D)
MUL X ;Acc = Acc*M(X)
STORE X ;M(X) = Acc

:‫ اﻟﺗﻌﻠﯾﻣﺎت ﺻﻔرﯾﺔ اﻟﻌﻧوان‬-٤


PUSH A ;TOS = A
PUSH B ;TOS = B
ADD ;TOS = (A+B)
PUSH C ;TOS = C
PUSH D ;TOS = D
ADD ;TOS = (C+D)
MUL ;TOS = (C+D)*(A+B)
POP X ;M(X) = TOS

:‫ﯾﻣﻛن اﻻﺳﺗﻧﺗﺎج ﻣﻣﺎ ﺳﺑق‬

- ١٩ -
‫‪ -‬ﻓﻲ اﻟﺗﻌﻠﯾﻣﺎت ﺻﻔرﯾﺔ اﻟﻌﻧوان ﺗﻧﺟز ﺟﻣﯾﻊ اﻟﺗﻌﻠﯾﻣﺎت ﺑﺎﺳﺗﺧدام اﻟﻣﻛدس‪.‬‬
‫‪ -‬ﻓﻲ اﻟﺗﻌﻠﯾﻣﺎت أﺣﺎدﯾﺔ اﻟﻌﻧوان ﺗﻧﺟز ﺟﻣﯾﻊ اﻟﺗﻌﻠﯾﻣﺎت ﺑﺎﺳﺗﺧدام اﻟﻣرﻛم‪.‬‬
‫‪ -‬ﻓ ــﻲ اﻟﺗﻌﻠﯾﻣ ــﺎت ﺛﻧﺎﺋﯾ ــﺔ اﻟﻌﻧـ ـوان ﻻ ﯾﺟ ــوز إﺟـ ـراء اﻟﻌﻣﻠﯾ ــﺎت ﻋﻠ ــﻰ اﻟﻘ ــﯾم اﻟﻣﺧزﻧ ــﺔ ﻓ ــﻲ ﻣوﻗ ــﻊ اﻟ ــذاﻛرة‬
‫اﻟرﺋﯾ ــﺳﺔ ﻣﺑﺎﺷـ ـرة‪ .‬ﺑ ــل ﯾﺟ ــب أن ﺗﻛ ــون إﺣ ــدى اﻟﺗﻌﻠﯾﻣ ــﺎت ﻓ ــﻲ أﺣ ــد اﻟﻣ ــﺳﺟﻼت‪ ،‬واﻟﺛﺎﻧﯾ ــﺔ ﻓ ــﻲ اﻟ ــذاﻛرة‬
‫اﻟرﺋﯾﺳﺔ‪.‬‬
‫‪ -‬ﯾزداد ﻋدد اﻟﺗﻌﻠﯾﻣﺎت ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ﺑﺗﻘﻠﯾل ﻋدد اﻟﻌﻧﺎوﯾن ﻓﻲ اﻟﺗﻌﻠﯾﻣﺎت‪.‬‬

‫‪ -٦‬ﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ ﻓﻲ اﻟﺣﺎﺳوب ‪:‬‬


‫‪ -‬ﻣرﺣﻠﺔ إﺣﺿﺎر اﻟﺗﻌﻠﯾﻣﺔ ‪:Fetch Cycle‬‬
‫‪ -١‬إرﺳﺎل ﻣﺣﺗوﯾﺎت ﻋداد اﻟﺑرﻧﺎﻣﺞ إﻟﻰ اﻟذاﻛرة اﻟرﺋﯾﺳﯾﺔ ﺑواﺳطﺔ ﺧطوط اﻟﻌﻧوان‪.‬‬
‫‪ -٢‬إرﺳﺎل اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ ﻣﺳﺟل اﻟﺗﻌﻠﯾﻣﺔ ﻓﻲ اﻟﻣﻌﺎﻟﺞ‬
‫‪ -٣‬ﺗﺣدﯾد ﻧوع اﻟﻌﻣﻠﯾﺔ ﺑواﺳطﺔ ﻣﺣﻠل اﻟﺗﻌﻠﯾﻣﺔ‬
‫‪ -٤‬ﺗﺣدﯾد ﻣواﻗﻊ ﺗﺧزﯾن ﻣﻌﺎﻣﻼت اﻟﺗﻌﻠﯾﻣﺔ‬
‫‪ -٥‬زﯾــﺎدة ﻣﺣﺗوﯾ ــﺎت ﻋــداد اﻟﺑرﻧ ــﺎﻣﺞ ﺑﻣﻘ ــدار ط ــول اﻟﺗﻌﻠﯾﻣــﺔ ﻟﻛ ــﻲ ﯾؤﺷ ــر إﻟ ــﻰ اﻟﺗﻌﻠﯾﻣ ــﺔ اﻟﻼﺣﻘ ــﺔ وﻫﻧ ــﺎ‬
‫ﺗﻧﺗﻬﻲ ﻣرﺣﻠﺔ إﺣﺿﺎر اﻟﺗﻌﻠﯾﻣﺔ‪.‬‬
‫‪ -‬ﻣرﺣﻠﺔ ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ ‪:Execution Cycle‬‬
‫‪ -١‬إرﺳﺎل ﻋﻧوان اﻟﻣﻌﺎﻣﻠﺔ إﻟﻰ اﻟذاﻛرة اﻟرﺋﯾﺳﯾﺔ ﺑواﺳطﺔ ﺧطوط اﻟﻌﻧوان‬
‫‪ -٢‬إرﺳﺎل اﻟﻣﻌﻠﻣﺔ ﻣن اﻟذاﻛرة اﻟرﺋﯾﺳﺔ إﻟﻰ ﻣﺳﺟل اﻟﺑﯾﺎﻧﺎت ﺑواﺳطﺔ ﺧطوط اﻟﺑﯾﺎﻧﺎت‪.‬‬
‫‪ -٣‬ﺗﻧﻔﯾذ اﻟﻌﻣﻠﯾﺔ اﻟﻣطﻠوﺑﺔ‬
‫‪ -٤‬ﺗﺧزﯾن اﻟﻧﺗﺎﺋﺞ ﻓﻲ اﻟﻣﻛﺎن اﻟﻣﻧﺎﺳب‬
‫أﻧظر ﻣﺧطط ﺳﯾر اﻟﻌﻣﻠﯾﺎت ﻟﺧطوات ﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ ﻓﻲ اﻟﺣﺎﺳوب‪:‬‬

‫‪- ٢٠ -‬‬
‫اﻟوﺣدة اﻟﺛﺎﻧﯾﺔ‬
‫ﺑﻧﯾﺔ اﻟﻣﻌﺎﻟﺞ اﻟدﻗﯾق‬

‫‪ -٢‬اﻟﺗرﻛﯾب اﻟوظﯾﻔﻲ ﻟﻠﻣﻌﺎﻟﺞ اﻟدﻗﯾق ‪:‬‬


‫اﻟﻣﻌـﺎﻟﺞ ﻫـو ﻋﺑــﺎرة ﻋـن ﻣﺟﻣوﻋـﺔ ﻣــن اﻟـدواﺋر اﻹﻟﻛﺗروﻧﯾـﺔ اﻟﻣﺑﻧﯾــﺔ ﻋﻠـﻰ رﻗﺎﻗـﺔ )ﺷـرﯾﺣﺔ( ﻣـﺻﻧوﻋﺔ ﻣــن‬
‫ﻣواد أﺷﺑﺎﻩ اﻟﻣوﺻﻼت ﻣﺛل اﻟﺳﻠﯾﻛون‪ .‬ﺗﺣﺎط ﻫذﻩ اﻟرﻗﺎﻗﺔ ﺑﻐﻼف ﺑﻼﺳـﺗﯾﻛﻲ أو ﺳـﯾراﻣﯾﻛﻲ‪ ،‬ﯾﺧـرج ﻣﻧـﻪ‬
‫أط ـراف ﻣﻌدﻧﯾــﺔ ﯾﻌﺗﻣــد ﻋــددﻫﺎ ﻋﻠــﻰ ﻧــوع اﻟﻣﻌــﺎﻟﺞ‪ .‬ﺗــﺳﺗﺧدم ﻫــذﻩ اﻷط ـراف ﻋــﺎدة ﻟﺗﺛﺑﯾــت اﻟرﻗﺎﻗــﺔ ﻋﻠــﻰ‬
‫اﻟﻠوﺣ ــﺎت اﻟﻣطﺑوﻋ ــﺔ‪ ،‬وﻛ ــذﻟك ﻟﺗ ــوﻓﯾر إﻣﻛﺎﻧﯾ ــﺔ ﻧﻘ ــل اﻟﻣﻌﻠوﻣ ــﺎت وٕاﺷ ــﺎرات اﻟ ــﺗﺣﻛم ﺑ ــﯾن رﻗﺎﻗ ــﺔ اﻟﻣﻌ ــﺎﻟﺞ‬
‫واﻟرﻗﺎﻗﺎت اﻷﺧرى اﻟﻣﻛوﻧﺔ ﻟﻧظﺎم اﻟﺣﺎﺳوب‪.‬‬
‫ﻓﻣـﺛﻼً ﺗﺣﺗـوي رﻗﺎﻗـﺎت اﻟﻣﻌــﺎﻟﺞ ‪ ٨٠٨٨‬ﻋﻠـﻰ ‪ ٤٠‬طـرف‪ .‬ﺗﻘـﺳم أطـراف اﻟﻣﻌـﺎﻟﺞ ﺣـﺳب اﻹﺷـﺎرات اﻟﺗــﻲ‬
‫ﺗﻣر ﻣن ﺧﻼﻟﻬﺎ إﻟﻰ‪:‬‬
‫‪ -‬أط ـراف اﻟﻌﻧ ـوان )ﻋــددﻫﺎ ‪ :(٢٠‬ﻟﻧﻘــل اﻟﻌﻧــﺎوﯾن ﻣــن اﻟﻣﻌــﺎﻟﺞ إﻟــﻰ اﻟــذاﻛرة اﻟرﺋﯾــﺳﯾﺔ ورﻗﺎﻗــﺎت اﻟﺗوﺳــط‬
‫اﻟﻣﺗﺻﻠﺔ ﻣﻊ وﺣدات اﻹدﺧﺎل واﻹﺧراج‪.‬‬
‫‪ -‬أطراف اﻟﺑﯾﺎﻧﺎت )ﻋددﻫﺎ ‪ :(٨‬ﻟﻧﻘل اﻟﺑﯾﺎﻧﺎت واﻟﺗﻌﻠﯾﻣﺎت ﺑﯾن اﻟﻣﻌﺎﻟﺞ واﻟذاﻛرة اﻟرﺋﯾﺳﯾﺔ‪.‬‬
‫‪ -‬أطراف اﻟﺗﺣﻛم )ﻋددﻫﺎ ‪ :(١٥‬ﻟﻧﻘل إﺷﺎرات اﻟﺗﺣﻛم ﺑﯾن اﻟﻣﻌﺎﻟﺞ وﺑﺎﻗﻲ اﻟﻣﻛوﻧﺎت‪.‬‬

‫‪ ١-٢‬ﻣﻛوﻧﺎت اﻟﻣﻌﺎﻟﺞ اﻟﻣﯾﻛروي ‪: ٨٠٨٨/٨٠٨٦‬‬


‫ﺗ ــﺳﺗﺧدم اﻟﻣﻌﺎﻟﺟ ــﺎت ﻋ ــﺎدة ﻟﺗﻧﻔﯾ ــذ ﺗﻌﻠﯾﻣ ــﺎت اﻟﺑرﻧ ــﺎﻣﺞ اﻟواﺣ ــدة ﺗﻠ ــو اﻷﺧ ــرى ﻣ ــروراً ﺑﻣرﺣﻠ ــﺔ اﻹﺣ ــﺿﺎر‬
‫وﻣرﺣﻠﺔ اﻟﺗﻧﻔﯾذ ﻛﻣﺎ ﯾﻠﻲ‪:‬‬
‫‪ -١‬إﺣﺿﺎر اﻟﺗﻌﻠﯾﻣﺔ اﻟﺗﺎﻟﯾﺔ ﻣن اﻟذاﻛرة اﻟرﺋﯾﺳﯾﺔ‪.‬‬
‫‪ -٢‬إﺣﺿﺎر اﻟﻣﻌﺎﻣﻼت اﻟﻼزﻣﺔ ﻟﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ إن ﻟزم ذﻟك‪.‬‬
‫‪ -٣‬ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻠﻰ اﻟﻣﻌﺎﻣﻼت‪.‬‬
‫‪ -٤‬ﺗﺧزﯾن اﻟﻧﺗﺎﺋﺞ ﻓﻲ اﻟﻣﻛﺎن اﻟﻣﻧﺎﺳب إن ﻟزم ذﻟك‪.‬‬

‫اﻟﻣﻌﺎﻟﺟﺎت ﻓﻲ اﻟﺳﺎﺑق ﺻﻣﻣت ﺑﺣﯾث ﺗﻧﻔذ ﻫذﻩ اﻟﺧطوات ﻋﻠﻰ اﻟﺗواﻟﻲ‪.‬‬


‫أﺻﺑﺣت ﻫﻧﺎك ﺑﻧﯾﺔ ﺟدﯾدة ﻣﻌروﻓﺔ ﺑﺎﺳم اﻟﺑﻧﯾﺔ اﻷﻧﺑوﺑﯾﺔ ‪.Pip line‬‬
‫ﺗم ﺗﻘﺳﯾم اﻟﻣﻌﺎﻟﺞ ‪ ٨٠٨٨/٨٠٨٦‬إﻟﻰ وﺣدﺗﯾن ﻣﻧﻔﺻﻠﺗﯾن وﻣﺳﺗﻘﻠﺗﯾن ﺑﻌﺿﻬﻣﺎ ﻋن ﺑﻌض ﻫﻣﺎ‪:‬‬
‫‪ -‬وﺣدة اﻟﻣواﺟﻬﺔ اﻟﺑﯾﺗﯾﺔ )‪Bus Interface Unit (BIU‬‬
‫‪ -‬وﺣدة اﻟﺗﻧﻔﯾذ )‪Execution Unit (EU‬‬

‫‪- ٢١ -‬‬
‫وﺣدة اﻟﺗوﺳط ﺗﺗوﻟﻰ ﻣﻬﻣﺔ ﺗﻧﻔﯾذ اﻟﺧطوات )‪ (٤،٢،١‬أﻣﺎ وﺣدة اﻟﺗﻧﻔﯾذ ﻓﺗﻧﻔذ اﻟﺧطوة اﻟﺛﺎﻟﺛﺔ ﻓﻘط‪.‬‬
‫ﻣن ﻫذﯾن اﻟﺷﻛﻠﯾن ﯾﻣﻛن اﻟوﺻول إﻟﻰ اﻻﺳﺗﻧﺗﺎﺟﺎت اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -١‬ﻓﻌﺎﻟﯾﺔ اﺳﺗﺧدام اﻟﻣﻌﺎﻟﺞ ‪ ٨٠٨٠‬ﺣواﻟﻲ ‪%٥٠‬‬
‫‪ -٢‬ﻓﻌﺎﻟﯾﺔ اﺳﺗﺧدام اﻟﻧﺎﻗﻠﺔ ﻓﻲ ﻧظﺎم ‪ ٨٠٨٠‬ﺗﺻل إﻟﻰ ﺣواﻟﻲ ‪%٥٠‬‬
‫‪ -٣‬ﻓﻌﺎﻟﯾﺔ اﺳﺗﺧدام اﻟﻣﻌﺎﻟﺞ واﻟﻧﺎﻗﻠﺔ ﻓﻲ ﻧظﺎم ‪ ٨٠٨٨‬ﺗﺻل إﻟﻰ ﺣواﻟﻲ ‪%١٠٠‬‬
‫وﻫــذا ﯾﻌﻧــﻲ أﻧــﻪ ﻓــﻲ ﻧظــﺎم ‪ ٨٠٨٨‬ﻓــﻲ ﻟﺣظــﺔ زﻣﻧﯾــﺔ ﯾﻌﻣــل اﻟﻣﻌــﺎﻟﺞ واﻟﻧﺎﻗﻠــﺔ ﻣﻌــﺎً ﻋﻠــﻰ اﻟﺗ ـوازي وﻟــﯾس‬
‫ﻋﻠﻰ اﻟﺗﻧﺎوب ﻛﻣﺎ ﻫو اﻟﺣﺎل ﻓﻲ ﻧظﺎم ‪.٨٠٨٠‬‬
‫‪ ٢-٢‬وﺣدة اﻟﺗﻧﻔﯾذ ‪: 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‬‬

‫‪ -‬راﯾﺔ اﻟﺣﻣل )‪:Carry (C‬‬


‫ﺗﻌﻛــس وﺟــود )أو ﻋــدم وﺟــود( ﺣﻣــل ﻣــن اﻟﺛﻧﺎﺋﯾــﺔ ﻓــﻲ أﻗــﺻﻰ اﻟﯾــﺳﺎر أو ﺣــﺻول اﺳــﺗﻘراض ﻣﻧــﻪ ﺑﻌــد‬
‫ﺗﻧﻔﯾذ ﺑﻌض اﻟﺗﻌﻠﯾﻣﺎت‪ .‬ﻓﺣﺻول ﺣﻣل ﯾﺣول راﯾﺔ اﻟﺣﻣل إﻟﻰ ﺣﺎﻟﺔ "‪ٕ "١‬واﻻ‪ -‬إﻟﻰ ﺣﺎﻟﺔ "‪."٠‬‬
‫‪ -‬راﯾﺔ اﻟﺗطﺎﺑق )‪:Parity (P‬‬
‫ﺗﻌﻛــس ﻫــذﻩ اﻟراﯾــﺔ اﻟﺗطــﺎﺑق اﻟزوﺟــﻲ‪ ،‬واﻟــذي ﯾﻌﻧــﻲ أن ﻋــدد اﻟﺛﻧﺎﺋﯾــﺎت ﻓــﻲ اﻟﻧﺗﯾﺟــﺔ اﻟﺗــﻲ ﺗﺣﺗ ــوي "‪"١‬‬
‫زوﺟﯾﺎ‪ .‬واﻟﺗﻲ ﺗﺣﺗوي "‪ "٠‬ﻏﯾر زوﺟﻲ‪.‬‬
‫ً‬
‫‪ -‬راﯾﺔ اﻟﺣﻣل اﻟﻣﺳﺎﻋد )‪:(A‬‬
‫ﺗﻌﻛـس ﻫـذﻩ اﻟراﯾـﺔ وﺟــود )أو ﻋـدم وﺟـود( ﺣﻣــل ﻣـن اﻟﺛﻧﺎﺋﯾـﺔ رﻗـم "‪ "٣‬إﻟــﻰ اﻟﺛﻧﺎﺋﯾـﺔ رﻗـم "‪ "٤‬أو ﺣــﺻول‬
‫اﺳﺗﻘراض ﻣن اﻟﺛﻧﺎﺋﯾﺔ رﻗم "‪ "٤‬إﻟﻰ اﻟﺛﻧﺎﺋﯾﺔ رﻗم "‪ "٣‬أﺛﻧﺎء ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺎت ﻋﻠﻰ اﻟﺑﯾﺎﻧﺎت اﻟﻌﺷرﯾﺔ‪.‬‬
‫‪ -‬راﯾﺔ اﻟﺻﻔر )‪:Zero (Z‬‬
‫ﺗﻌﻛس ﻫذﻩ اﻟراﯾﺔ ﻣﺳﺎواة ﻧﺗﯾﺟﺔ اﻟﻌﻣﻠﯾﺔ اﻟﻣﻧﻔذة إﻟﻰ اﻟﺻﻔر‪.‬‬
‫‪ -‬راﯾﺔ اﻹﺷﺎرة )‪:(S‬‬
‫ﺗﺗﺣول راﯾﺔ اﻹﺷﺎرة إﻟﻰ ﺣﺎﻟﺔ "‪ "١‬إذا ﻛﺎﻧت اﻟﻧﺗﯾﺟﺔ ﺳﺎﻟﺑﺔ‪.‬‬
‫‪ -‬راﯾﺔ اﻟﻔﯾض )‪:Overflow (O‬‬
‫ﺗﻌﻛس ﻫذﻩ اﻟراﯾﺔ إﻣﻛﺎﻧﯾﺔ ﺗﺧزﯾن ﻧﺗﯾﺟﺔ اﻟﻌﻣﻠﯾﺔ اﻟﻣﻧﻔذة ﻓﻲ اﻟﻣﻛﺎن اﻟﻣﺧﺻص ﻟﻬﺎ‪.‬‬

‫‪- ٢٤ -‬‬
‫‪ -‬راﯾﺔ اﻟﻣﺻﯾدة )‪:Trap (T‬‬
‫وﺿـﻊ راﯾــﺔ اﻟﻣـﺻﯾدة ﻓــﻲ ﺣﺎﻟـﺔ "‪ "١‬ﯾﺣــول اﻟﻣﻌـﺎﻟﺞ إﻟــﻰ أﺳـﻠوب اﻟﺧطــوة ﺧطـوة‪ ،‬أي اﻟﺗوﻗــف ﺑﻌـد ﺗﻧﻔﯾــذ‬
‫ﻛــل ﺗﻌﻠﯾﻣــﺔ‪ .‬أﻣــﺎ إذا وﺿــﻌت راﯾــﺔ اﻟﻣــﺻﯾدة ﻓــﻲ ﺣﺎﻟــﺔ "‪ "٠‬ﻓــﺈن اﻟﻣﻌــﺎﻟﺞ ﯾﻧﻔــذ ﺟﻣﯾــﻊ ﺗﻌﻠﯾﻣــﺎت اﻟﺑرﻧــﺎﻣﺞ‬
‫ﻣرة واﺣدة ﺑدون ﺗوﻗف‪.‬‬
‫‪ -‬راﯾﺔ اﻻﻋﺗراض )‪:Interrupt (I‬‬
‫ﺗﺣ ــدد ﻫ ــذﻩ اﻟراﯾ ــﺔ إﻣﻛﺎﻧﯾ ــﺔ ﻗﺑ ــول )أو ﻋ ــدم ﻗﺑ ــول( اﻻﻋﺗراﺿ ــﺎت اﻟﻘﺎدﻣ ــﺔ ﻣ ــن وﺣ ــدات اﻟﺣﺎﺳ ــوب إﻟ ــﻰ‬
‫اﻟﻣﻌﺎﻟﺞ‪.‬‬
‫‪ -‬راﯾﺔ اﻻﺗﺟﺎﻩ )‪:Direction (D‬‬
‫إذا وﺿﻌت راﯾﺔ اﻻﺗﺟﺎﻩ ﻓﻲ ﺣﺎﻟﺔ "‪ "٠‬ﻓﺈن ﺳﻼﺳل اﻟرﻣوز ﺗﻌﺎﻟﺞ ﻣن اﻟﯾﺳﺎر إﻟﻰ اﻟﯾﻣﯾن‪ ،‬واﻟﻌﻛس‪.‬‬
‫‪ -٤‬اﻻﻋﺗراﺿﺎت ‪: Interrupts‬‬
‫ﺗ ــﺳﻣﻰ ظ ــﺎﻫرة إﯾﻘ ــﺎف ﺗﻧﻔﯾ ــذ اﻟﺑرﻧـ ــﺎﻣﺞ اﻟﺣ ــﺎﻟﻲ ﺑ ــﺳﺑب ﺣ ــﺎدث ﻣ ــﺎ واﻻﻧﺗﻘـ ــﺎل إﻟ ــﻰ ﺗﻧﻔﯾ ــذ ﺑرﻧ ــﺎﻣﺞ آﺧـ ــر‬
‫اﻋﺗراﺿــﺎَ‪ .‬ﺗﻧﺑــﻊ أﻫﻣﯾــﺔ اﻻﻋﺗراﺿــﺎت ﻣــن ﻛوﻧﻬــﺎ ﺗــوﻓر اﻟظــروف اﻟﻼزﻣــﺔ ﻟﺗﺣﻘﯾــق ﻓﻛ ـرة ﺗﻌددﯾــﺔ اﻟﺑ ـراﻣﺞ‬
‫‪.Multiprogramming‬‬
‫ﯾـ ـ ــﺳﺗطﯾﻊ اﻟﻣﻌـ ـ ــﺎﻟﺞ ‪ ٨٠٨٨/٨٠٨٦‬اﻟﺗﻌﺎﻣـ ـ ــل ﻣـ ـ ــﻊ ‪ ٢٥٦‬ﻧوﻋـ ـ ــﺎً ﻣﺧﺗﻠﻔـ ـ ــﺎً ﻣـ ـ ــن اﻻﻋﺗراﺿـ ـ ــﺎت‪ .‬ﺗﺣـ ـ ــدث‬
‫اﻻﻋﺗراﺿﺎت ﻋﺎدة ﻣن اﻟﻣﺻﺎدر اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬وﺣدات اﻹدﺧﺎل واﻹﺧراج واﻟﺗﺧزﯾن )وﺣدات ﺧﺎرﺟﯾﺔ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﻣﻌﺎﻟﺞ(‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻻﻋﺗراض اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ‬
‫‪ -‬اﻟﻣﻌﺎﻟﺞ ﻧﻔﺳﻪ أو اﻟﻣﻌﺎﻟﺟﺎت اﻷﺧرى‬
‫ﻓﻣﻼ‪ :‬ﺗﺻور أﻧك ﻓﻲ ﻟﯾﻠﺔ اﻻﻣﺗﺣﺎن وﻣﻧﻬﻣﻛﺎً ﻓﻲ دراﺳﺗك‪ .‬وﻓﺟﺄة ﯾرن ﺟرس اﻟﻬﺎﺗف‪.‬‬
‫ً‬
‫وﻫﻛــذا ﺑﺎﻟﻧــﺳﺑﺔ ﻟﻠﺣﺎﺳــوب‪ .‬ﻓﺄﺛﻧــﺎء ﺗﻧﻔﯾــذ اﻟﻣﻌــﺎﻟﺞ ﻟﺗﻌﻠﯾﻣــﺎت ﺑرﻧــﺎﻣﺞ ﻣــﺎ ﻓﻌﻧــد وﺻــول إﺷــﺎرة ﻣــن إﺣــدى‬
‫وﺣــدات اﻟﺣﺎﺳــوب‪ .‬ﻓــﺈن اﻟﻣﻌــﺎﻟﺞ ﻗــد ﯾوﻗــف ﺗﻧﻔﯾــذ اﻟﺑرﻧــﺎﻣﺞ وﯾﻧــﺻرف إﻟــﻰ ﻣﻌﺎﻟﺟــﺔ اﻹﺷــﺎرة اﻟواﺻــﻠﺔ‬
‫ﻟﻠﺗو‪ .‬وﺑﻌد اﻻﻧﺗﻬﺎء ﻗد ﯾﻌود اﻟﻣﻌﺎﻟﺞ ﻹﻛﻣﺎل ﺗﻧﻔﯾذ اﻟﺑرﻧـﺎﻣﺞ اﻟـﺳﺎﺑق أو ﯾﻧﻬﯾـﻪ وﯾﻧﺗﻘـل إﻟـﻰ ﺗﻧﻔﯾـذ ﺑرﻧـﺎﻣﺞ‬
‫ﺟدﯾد‪.‬‬
‫ﻣــن ﻫــذا ﻧــﺳﺗﻧﺗﺞ أن ﻫﻧــﺎك أﺣــداث ﯾﻣﻛــن ﻣﻧــﻊ ﺣــدوﺛﻬﺎ أو إﻫﻣﺎﻟﻬــﺎ إذا وﻗﻌــت‪ ،‬ﻣﺛــل ﺟــرس اﻟﻬــﺎﺗف‪،‬‬
‫وﻫﻧــﺎك أﺣــداﺛﺎً ﻻ ﯾﻣﻛــن ﻣﻧــﻊ ﺣــدوﺛﻬﺎ أو ﺗﺟﺎﻫﻠﻬــﺎ إذا وﻗﻌــت‪ .‬ﻣﺛــل ﻫــذﻩ اﻷﺣــداث ﺗــﺳﻣﻰ اﻋﺗراﺿــﺎت‬
‫ﻣﻘﻧﻌــﺔ )‪ .Maskable Interrupts (INT‬وﻫﻧــﺎك أﺣــداﺛﺎً ﻻ ﯾﻣﻛــن ﻣﻧــﻊ ﺣــدوﺛﻬﺎ أو إﻫﻣﺎﻟﻬــﺎ ﻋﻧــد‬
‫ً‬
‫وﻗوﻋﻬﺎ‪ .‬ﻣﺛل ﻫذﻩ اﻷﺣداث ﺗﺳﻣﻰ اﻋﺗراﺿﺎت ﻏﯾر ﻣﻘﻧﻌﺔ ‪.Nonmaskable Interrupts‬‬
‫‪ ١-٤‬ﻛﯾف ﯾﺗﻌرف اﻟﻣﻌﺎﻟﺞ ﻋﻠﻰ اﻻﻋﺗراﺿﺎت ‪:‬‬
‫ﯾﺣﺗـوي اﻟﻣﻌـﺎﻟﺞ ‪ ٨٠٨٨/٨٠٨٦‬ﻋﻠــﻰ ﻣـدﺧﻠﯾن )ﺧطــﯾن( ﻻﺳـﺗﻘﺑﺎل إﺷـﺎرات اﻻﻋﺗراﺿــﺎت اﻟـﺻﺎدرة ﻣــن‬
‫اﻟوﺣدات اﻟﺧﺎرﺟﯾﺔ‪:‬‬

‫‪- ٢٥ -‬‬
‫اﻟﻣﻘﻧﻌـ ـ ــﺔ وﯾـ ـ ــدار ﺑواﺳـ ـ ــطﺔ وﺣـ ـ ــدة ﺧﺎﺻـ ـ ــﺔ ﺗـ ـ ــﺳﻣﻰ ﻣـ ـ ــﻧظم‬
‫‪ -‬ﺧـ ـ ــط ‪ :INTR‬ﯾـ ـ ــﺳﺗﻘﺑل اﻻﻋﺗراﺿـ ـ ــﺎت ُ‬
‫اﻻﻋﺗراﺿﺎت‪.‬‬
‫ﻣﻘﻧﻌـﺔ‪ ،‬وﺗﻣﺗـﺎز ﻫـذﻩ اﻻﻋﺗراﺿـﺎت ﺑﺧطورﺗﻬـﺎ‬
‫‪ -‬ﺧط ‪ :NMI‬ﯾﺧـﺻص ﻻﺳـﺗﻘﺑﺎل اﻻﻋﺗراﺿـﺎت ﻏﯾـر اﻟ ُ‬
‫)ﻣﺛل اﻧﻘطﺎع اﻟﺗﯾﺎر اﻟﻛﻬرﺑﺎﺋﻲ واﻛﺗﺷﺎف أﺧطﺎء ﻓﻲ اﻟذاﻛرة(‬
‫أﻧظر اﻟﺷﻛل )‪(٦.٢‬‬
‫ﻣﻣﺎ ﺳﺑق ﯾﻣﻛن أن ﻧﺳﺗﻧﺗﺞ ﻣﺎ ﯾﻠﻲ‪:‬‬
‫‪ -‬ﯾﺳﺗﺧدم اﻟﻣﻌﺎﻟﺞ ‪ ٨٠٨٨/٨٠٨٦‬ﻧظﺎم اﻻﻋﺗراﺿﺎت ذي اﻷوﻟوﯾﺔ‬
‫‪ -‬ﺗﺣدد أوﻟوﯾﺔ ﻛل ﻧوع ﻣن اﻻﻋﺗراﺿﺎت ﺣﺳب اﻷﻫﻣﯾﺔ‬
‫‪ ٢-٤‬ﺟدول ﻣؤﺷر اﻻﻋﺗراض ‪: Interrupt Pointer Table‬‬
‫‪ ٣-٤‬ﻣﻌﺎﻟﺟﺔ اﻻﻋﺗراﺿﺎت ‪:‬‬
‫ﺗﻌﺗﻣــد ﺑــﺷﻛل رﺋﯾــﺳﻲ ﻋﻠــﻰ ﻧــوع اﻻﻋﺗ ـراض وﺣﺎﻟــﺔ راﯾــﺔ اﻻﻋﺗ ـراض ﻓــﻲ ﻟﺣظــﺔ اﺳــﺗﻘﺑﺎل اﻻﻋﺗـ ـراض‪.‬‬
‫اﻟﻣﻘﻧﻌﺔ ﻓﻲ اﻟﻣﻌﺎﻟﺞ ‪ ٨٠٨٨/٨٠٨٦‬ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬
‫وﯾﻣﻛن ﺗﻠﺧﯾص ﻋﻣﻠﯾﺔ ﻣﻌﺎﻟﺟﺔ اﻻﻋﺗراﺿﺎت ُ‬
‫‪ -‬إﻛﻣﺎل ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺣﺎﻟﯾﺔ‪.‬‬
‫‪ -‬إﻫﻣــﺎل إﺷــﺎرة اﻻﻋﺗ ـراض واﻻﻧﺗﻘــﺎل إﻟــﻰ ﺗﻧﻔﯾــذ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺗﺎﻟﯾــﺔ إذا ﻛﺎﻧــت راﯾــﺔ اﻻﻋﺗ ـراض ﻓــﻲ ﺣﺎﻟــﺔ‬
‫"‪."٠‬‬
‫‪ -‬أﻣﺎ إذا ﻛﺎﻧت راﯾﺔ اﻻﻋﺗراض ﻓﻲ ﺣﺎل "‪ "١‬ﯾﺑدأ اﻟﻣﻌﺎﻟﺞ ﻓوراً ﺗﺣﻠﯾل اﻻﻋﺗراض واﻟﺗﻌﺎﻣل ﻣﻌﻪ‪.‬‬
‫‪ -‬اﻻﻧﺗﻘﺎل إﻟﻰ ﺑرﻧﺎﻣﺞ ﺧدﻣﺔ اﻻﻋﺗراض اﻟﻣﻧﺎﺳب وﺗﻧﻔﯾذﻩ‪.‬‬
‫‪ -‬اﻟﻌودة إﻟﻰ ﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ اﻟﻣﻌﺗرض‪.‬‬
‫وﯾﻣﻛن ﺗوﺿﯾﺢ اﻟﻌﻣﻠﯾﺎت اﻟﺗﻲ ﺗﻧﻔذ ﻓﻲ ﺑرﻧﺎﻣﺞ ﺧدﻣﺔ اﻻﻋﺗراض ﻛﻣﺎ ﯾﻠﻲ‪:‬‬
‫‪ -‬ﺗﺧزﯾن ﻣﺳﺟل اﻟراﯾﺎت ﻓﻲ اﻟﻣﻛدس‪.‬‬
‫‪ -‬ﺗﺣوﯾل راﯾﺔ اﻻﻋﺗراض وراﯾﺔ اﻟﻣﺻﯾدة إﻟﻰ ﺣﺎﻟﺔ "‪ "٠‬ﻟﻣﻧﻊ ﺣدوث اﻋﺗراﺿﺎت أﺧرى‪.‬‬
‫‪ -‬ﺗﺧزﯾن ﻋﻧوان اﻟﻌودة ‪ Return Address‬ﻓﻲ اﻟﻣﻛدس‪.‬‬
‫‪ -‬ﺗﻧﻔﯾذ ﻣﻬﺎم ﻣﻌﯾﻧﺔ ﺗﻌﺗﻣد ﻋﻠﻰ ﻧوع اﻻﻋﺗراض‪.‬‬
‫أﻧظر اﻟﺷﻛل )‪ (٨.٢‬ﻣﺧطط ﺳﯾر اﻟﻌﻣﻠﯾﺎت ﻟﻣﻌﺎﻟﺟﺔ اﻻﻋﺗراﺿﺎت‬

‫‪- ٢٦ -‬‬
‫اﻟوﺣدة اﻟراﺑﻌﺔ‬
‫ﻣﻘدﻣﺔ إﻟﻰ ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ‬

‫‪ -٢‬ﺗﺻﻧﯾف ﻟﻐﺎت اﻟﺑرﻣﺟﺔ ‪:‬‬


‫ﺗﺻﻧف ﻟﻐﺎت اﻟﺑرﻣﺟﺔ إﻟﻰ أرﺑﻌﺔ أﻧواع ﻫﻲ‪:‬‬
‫‪Machine Language‬‬ ‫‪ -‬ﻟﻐﺔ اﻵﻟﺔ‬
‫‪Assembly Language‬‬ ‫‪ -‬ﻟﻐﺔ اﻟﺗﺟﻣﯾﻊ اﻷﺳﻣﺑﻠﻲ‬
‫)‪High Level Languages (HLL‬‬ ‫‪ -‬اﻟﻠﻐﺎت ﻋﺎﻟﯾﺔ اﻟﻣﺳﺗوى‬
‫)‪Very High Level Languages (VHLL‬‬ ‫ﺟدا‬
‫‪ -‬اﻟﻠﻐﺎت ﻋﺎﻟﯾﺔ اﻟﻣﺳﺗوى ً‬
‫ﺗﻣﺗﺎز ﻟﻐﺎت اﻵﻟﺔ ﺑﺎﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬ﺻﻌوﺑﺔ ﻋﻣﻠﯾﺔ اﻟﺑرﻣﺟﺔ‬
‫‪ -‬ﺻﻌوﺑﺔ ﻋﻣﻠﯾﺎت اﻛﺗﺷﺎف وﺗﺻﺣﯾﺢ اﻷﺧطﺎء‬
‫‪ -‬ﺗﺗطﻠب ﻣﻌرﻓﺔ دﻗﯾﻘﺔ ﺑﺟﻣﯾﻊ ﻣﻛوﻧﺎت اﻟﺣﺎﺳوب‬
‫‪ -‬ﻫذﻩ اﻟﻠﻐﺎت ﻣرﺗﺑطﺔ ﺑﺎﻟﺣواﺳﯾب اﻟﻣﻌدة ﻟﻬﺎ‪.‬‬
‫‪ -‬ﺑراﻣﺞ ﻫذﻩ اﻟﻠﻐﺎت ﻋﺎﻟﯾﺔ اﻟﻔﻌﺎﻟﯾﺔ ﻣن ﺣﯾث ﺳرﻋﺔ اﻟﺗﻧﻔﯾذ وﺣﺟم اﻟذاﻛرة‬
‫‪ -‬اﻟﺟﺎﻫزﯾﺔ ﻟﻠﺗﻧﻔﯾذ‪.‬‬
‫ﺑﺳﺑب ﻫذﻩ اﻟﻌﯾوب ﺗم ﺗطوﯾر اﻟﻠﻐﺎت اﻟرﻣزﯾﺔ ‪ Symbolic Languages‬ﻣﺛل ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ‪.‬‬
‫ﺣﯾ ــث ﺗﺗﻛ ــون اﻟﺑـ ـراﻣﺞ اﻟﻣﻛﺗوﺑ ــﺔ ﺑﻠﻐ ــﺔ اﻷﺳ ــﻣﺑﻠﻲ ﻣ ــن أرﻗ ــﺎم‪ ،‬وﺣ ــروف‪ ،‬ورﻣ ــوز ﺑﺎﻹﺿ ــﺎﻓﺔ إﻟ ــﻰ ﺑﻌ ــض‬
‫اﻻﺧﺗﺻﺎرات‪.‬‬
‫ﺗﻣﺗﺎز ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ ﺑﺎﻟﺧﺻﺎﺋص اﻵﺗﯾﺔ‪:‬‬
‫‪ -‬ﻋﻣﻠﯾﺔ اﻟﺑرﻣﺟﺔ واﻛﺗﺷﺎف وﺗﺻﺣﯾﺢ اﻷﺧطﺎء أﺻﺑﺣت أﺳﻬل‪.‬‬
‫‪ -‬ﻣﺎ زاﻟت ﻫذﻩ اﻟﻠﻐﺔ ﻣرﺗﺑطﺔ ﺑﺎﻟﺣواﺳﯾب اﻟﻣﻌدة ﻟﻬﺎ‪.‬‬
‫‪ -‬ﺗﻣﺗﺎز ﺑراﻣﺞ ﻫذﻩ اﻟﻠﻐﺔ ﺑﻔﻌﺎﻟﯾﺔ ﻋﺎﻟﯾﺔ‪.‬‬
‫‪ -‬ﺗﻣﺗﺎز ﺑراﻣﺟﻬﺎ ﺑﻌد ﺟﺎﻫزﯾﺗﻬﺎ ﻟﻠﺗﻧﻔﯾذ اﻟﻔوري ﺑﺳﺑب ﻣرورﻫﺎ ﻋﻠﻰ ﻣﺗرﺟم اﻷﺳﻣﺑﻠر‪.‬‬
‫‪ -‬ﺗــﺳﺗﺧدم ﻓــﻲ ﺑرﻣﺟــﺔ اﻟﺗطﺑﯾﻘــﺎت اﻟﺗــﻲ ﺗﺗطﻠــب ﺳــرﻋﺔ ﻓﺎﺋﻘــﺔ ﻣﺛــل ﺗطﺑﯾﻘــﺎت اﻟــزﻣن اﻟﺣﻘﯾﻘــﻲ‪ ،‬وﺑ ـراﻣﺞ‬
‫اﻟــﺗﺣﻛم ﻓ ــﻲ ﺣرﻛ ــﺎت اﻷﻧظﻣ ــﺔ اﻟرﺑوﺗﯾ ــﺔ )اﻹﻧ ــﺳﺎن اﻵﻟــﻲ(‪ ،‬ﻛ ــذﻟك ﻓ ــﻲ أﻧظﻣ ــﺔ اﻟﺣواﺳ ــﯾب ذات اﻟ ــذاﻛرة‬
‫اﻟﻣﺣدودة ﺟداً‪.‬‬

‫أﻣﺎ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﻐﺎت اﻟﺑرﻣﺟﺔ ﻋﺎﻟﯾﺔ اﻟﻣﺳﺗوى ﻓﺗﺗﻛون ﺑراﻣﺟﻬﺎ ﻣـن ﻛﻠﻣـﺎت وﺗﻌـﺎﺑﯾر ﻣـن اﻟﻠﻐـﺎت اﻹﻧـﺳﺎﻧﯾﺔ‬
‫ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ اﻟﺗﻌﺎﺑﯾر اﻟرﯾﺎﺿﯾﺔ‪.‬‬

‫‪- ٢٧ -‬‬
‫ﺗﻣﺗﺎز ﻟﻐﺎت اﻟﺑرﻣﺟﺔ ﻋﺎﻟﯾﺔ اﻟﻣﺳﺗوى ﺑﺎﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬ﺳﻬوﻟﺔ ﻛﺗﺎﺑﺔ اﻟﺑراﻣﺞ واﻛﺗﺷﺎف وﺗﺻﺣﯾﺢ اﻷﺧطﺎء‪.‬‬
‫‪ -‬ﺗﻣﺗﺎز ﺑراﻣﺟﻬﺎ ﺑﺈﻣﻛﺎﻧﯾﺔ ﻧﻘﻠﻬﺎ ﺑﯾن اﻟﺣواﺳﯾب اﻟﻣﺧﺗﻠﻔﺔ‪.‬‬
‫‪ -‬ﺗدﻧﻲ ﻓﻌﺎﻟﯾﺗﻬﺎ ﻗﯾﺎﺳﺎً ﺑﻠﻐﺎت اﻷﺳﻣﺑﻠﻲ أو ﻟﻐﺎت اﻵﻟﺔ‪.‬‬
‫‪ -‬ﺗﺣﺗﺎج ﺑراﻣﺟﻬﺎ إﻟﻰ ﻣراﺣل ﻣﻌﺎﻟﺟﺔ إﺿﺎﻓﯾﺔ ﺗﺳﺑق ﻋﻣﻠﯾﺔ اﻟﺗﻧﻔﯾذ ﻋﺑر اﻟﻣﺗرﺟﻣﺎت ‪Compilers‬‬
‫ﯾﺳﻣﻰ اﻟﺑرﻧﺎﻣﺞ اﻟﻣﻛﺗوب ﺑﺈﺣـدى ﻟﻐـﺎت اﻟﺑرﻣﺟـﺔ ﻋﺎﻟﯾـﺔ اﻟﻣـﺳﺗوى أو ﻟﻐـﺎت اﻷﺳـﻣﺑﻠﻲ ﺑرﻧﺎﻣﺟـﺎً ﻣـﺻدرﯾﺎً‬
‫‪ .Source Program‬ﻓــﻲ ﺣ ــﯾن أن اﻟﺑرﻧ ــﺎﻣﺞ اﻟﻧــﺎﺗﺞ ﻋ ــن ﻋﻣﻠﯾ ــﺔ اﻟﺗرﺟﻣــﺔ ﺑواﺳ ــطﺔ اﻟﻣﺗرﺟﻣ ــﺎت أو‬
‫اﻷﺳﻣﺑﻠر ﯾﺳﻣﻰ ﺑرﻧﺎﻣﺟﺎً ﻫدﻓﯾﺎً ‪.Object Program‬‬
‫إن اﺳ ــﺗﺧدام ﻟﻐ ــﺎت اﻟﺑرﻣﺟ ــﺔ ﻋﺎﻟﯾ ــﺔ اﻟﻣ ــﺳﺗوى ﻓ ــﻲ ﺣ ــل أﯾ ــﺔ ﻣ ــﺳﺄﻟﺔ‪ ،‬ﺗﺗطﻠ ــب ﻣ ــن اﻟﻣﺑ ــرﻣﺞ أن ﯾ ــﺻف‬
‫ﺧطـوات اﻟﺣــل ﺑــﺷﻛل ﻣﻔــﺻل ﺑﺣﯾــث ﯾــﺳﺗطﯾﻊ اﻟﺣﺎﺳــوب ﻓﻬــم ﻛــل ﺧطــوة‪ ،.‬أﻣــﺎ ﻟﻐــﺎت اﻟﺑرﻣﺟــﺔ اﻟﻌﺎﻟﯾــﺔ‬
‫ﺟــداً ﻓﯾﻛﻔــﻲ ﺗﺣدﯾــد اﻷواﻣــر اﻟﻼزﻣــﺔ ﻟﻠﺣــل اﻟﺗــﻲ ﺗوﺿــﺢ ﻟﻠﺣﺎﺳــوب ﻣــﺎذا ﯾﺟــب أن ﯾﻔﻌــل‪ ،‬وﻟــﯾس ﻛﯾــف‬
‫ﯾﻔﻌل‪.‬‬
‫‪ -٣‬ﻣﻛوﻧﺎت ﻧظﺎم اﻟﺑرﻣﺟﺔ ﺑﻠﻐﺔ اﻷﺳﻣﺑﻠﻲ ‪:‬‬
‫اﻟﻣراﺣل اﻟﺗﻲ ﯾﻣر ﺑﻬﺎ ﺑرﻧﺎﻣﺞ ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ وﻫﻲ ﺷﺎﻣﻠﺔ ﻷي ﺑرﻧﺎﻣﺞ ﺑﻠﻐﺔ اﻷﺳﻣﺑﻠﻲ وﻫﻲ‪:‬‬
‫اﻟﻣرﺣﻠﺔ اﻷوﻟﻰ‪ :‬إدﺧﺎل اﻟﺑرﻧﺎﻣﺞ ‪:Program input‬‬
‫ﻧﻘل اﻟﺑرﻧﺎﻣﺞ إﻟﻰ اﻟﺣﺎﺳوب وﺗﺧزﯾﻧﻪ ﻋﻠﻰ اﻟذاﻛرة اﻟﻣﺳﺎﻋدة‪.‬‬
‫اﻟﻣرﺣﻠﺔ اﻟﺛﺎﻧﯾﺔ‪ :‬ﺗرﺟﻣﺔ اﻟﺑرﻧﺎﻣﺞ ‪: Program Compilation‬‬
‫ﺗﻬدف ﻫذﻩ اﻟﻣرﺣﻠـﺔ إﻟـﻰ اﻛﺗـﺷﺎف وﺗـﺻﺣﯾﺢ اﻷﺧطـﺎء اﻟﻣطﺑﻌﯾـﺔ واﻟﻘواﻋدﯾـﺔ‪ ،‬وﻣـن ﺛـم ﺗﺣوﯾـل اﻟﺑرﻧـﺎﻣﺞ‬
‫اﻟﻣــﺻدري إﻟــﻰ ﺑرﻧــﺎﻣﺞ ﻫــدﻓﻲ‪ ،‬ﺣﯾــث ﺗــﺳﺗﻣر ﻋﻣﻠﯾــﺔ اﻻﻧﺗﻘــﺎل ﺑــﯾن ﻣرﺣﻠﺗــﻲ اﻹدﺧــﺎل واﻟﺗرﺟﻣــﺔ ﻟﺣــﯾن‬
‫اﻟﺣﺻول ﻋﻠﻰ اﻟﺑرﻧﺎﻣﺞ اﻟﻬدﻓﻲ‪.‬‬
‫اﻟﻣرﺣﻠﺔ اﻟﺛﺎﻟﺛﺔ‪ :‬اﻟرﺑط واﻟﺗﺣرﯾر ‪: Program Linking‬‬
‫ﺗﺗم ﻓﻲ ﻫـذﻩ اﻟﻣرﺣﻠـﺔ ﺗرﺟﻣـﺔ اﻻﺳـﺗدﻋﺎءات ﻟﻠﺑـراﻣﺞ اﻟﻣﻛﺗﺑﯾـﺔ أو ﺑـراﻣﺞ أﺧـرى ﻟﻠﻣـﺳﺗﺧدم ﺗﻣـت ﺗرﺟﻣﺗﻬـﺎ‬
‫ﺳــﺎﺑﻘﺎً ﺑ ــﺷﻛل ﻣﻧﻔــﺻل ﻋ ــن اﻟﺑرﻧ ــﺎﻣﺞ اﻟﺣــﺎﻟﻲ‪ ،‬وﻣ ــن ﺛ ــم دﻣﺟﻬــﺎ ﻣ ــﻊ اﻟﺑرﻧ ــﺎﻣﺞ اﻟﺣــﺎﻟﻲ ﻟﺗﻛ ــوﯾن ﺑرﻧ ــﺎﻣﺞ‬
‫ﺗﻧﻔﯾذي واﺣد‪.‬‬
‫اﻟﻣرﺣﻠﺔ اﻟراﺑﻌﺔ‪ :‬ﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ ‪: Program Execution‬‬
‫ﺗﻬدف ﻣرﺣﻠﺔ اﻟﺗﻧﻔﯾذ إﻟﻰ اﻟﺣﺻول ﻋﻠﻰ اﻟﻧﺗﺎﺋﺞ اﻟﻣطﻠوﺑﺔ‪.‬‬
‫وﻫﻧﺎك طرﯾﻘﺗﺎن ﻟﺗﻧﻔﯾذ اﻟﺑراﻣﺞ ﻫﻣﺎ‪:‬‬
‫‪ -‬اﻟطرﯾﻘﺔ اﻟﻣﺑﺎﺷرة ﻣن ﺧﻼل ﻧظﺎم ‪Dos‬‬
‫‪ -‬اﺳﺗﺧدام ﺑرﻧﺎﻣﺞ ﻣﻛﺗﺷف اﻷﺧطﺎء ‪Debug‬‬

‫‪- ٢٨ -‬‬
‫‪ -٤‬ﺗﻌﻠﯾﻣﺎت اﺳﺗﺧدام ﻧظﺎم اﻷﺳﻣﺑﻠﻲ ‪:‬‬

‫‪ -٥‬أﻧواع اﻷﺧطﺎء ﻓﻲ ﺑراﻣﺞ ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ ‪:‬‬


‫ﺗﺻﻧف إﻟﻰ اﻷﻧواع اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪Assembly-time errors‬‬ ‫‪ -‬أﺧطﺎء ﻣرﺣﻠﺔ اﻟﺗرﺟﻣﺔ‬
‫‪Link-time error‬‬ ‫‪ -‬أﺧطﺎء ﻣرﺣﻠﺔ اﻟرﺑط واﻟﺗﺣرﯾر‬
‫‪Run-time error‬‬ ‫‪ -‬أﺧطﺎء ﻣرﺣﻠﺔ اﻟﺗﻧﻔﯾذ‬

‫ﺗﻛﺗــﺷف أﺧطــﺎء ﻣرﺣﻠــﺔ اﻟﺗرﺟﻣــﺔ ﺑواﺳــطﺔ ﺑرﻧــﺎﻣﺞ اﻷﺳــﻣﺑﻠر ‪ ،MASM‬وﺗﻧــﺷﺄ ﻫــذﻩ اﻷﺧطــﺎء ﺑــﺳﺑب‬
‫ﻣﺧﺎﻟﻔﺔ ﻗواﻋد اﻟﻠﻐﺔ‪.‬‬
‫وﺣﺳب ﺗﺄﺛﯾر اﻷﺧطﺎء ﻋﻠﻰ ﻋﻣﻠﯾﺔ اﻟﺗرﺟﻣﺔ ﺗﺻﻧف اﻷﺧطﺎء اﻟﻘواﻋدﯾﺔ إﻟﻰ ﻣﺳﺗوﯾﯾن ﻫﻣﺎ‪:‬‬
‫‪ -‬أﺧطﺎء ﺗﺣذﯾرﯾﺔ ‪:Warnings‬‬
‫ﺗﺗــﺳﺑب ﻋــﺎدة ﻋــن ﺑﻌــض اﻷﺧطــﺎء اﻟﻣطﺑﻌﯾــﺔ‪ ،‬ووﺟــود ﻣﺛــل ﻫــذﻩ اﻷﺧطــﺎء ﻻ ﯾﻣﻧــﻊ ﺗﻛــوﯾن اﻟﺑرﻧ ــﺎﻣﺞ‬
‫اﻟﻬدﻓﻲ‪ ،‬ﻏﯾر أﻧﻪ ﻗد ﯾؤدي إﻟﻰ اﻟﺣﺻول ﻋﻠﻰ ﻧﺗﺎﺋﺞ ﺧﺎطﺋﺔ‪.‬‬
‫‪ -‬أﺧطﺎء ﺟدﯾﺔ ‪:Sever errors‬‬
‫ﺗﺗﺳﺑب ﻋن ﻣﺧﺎﻟﻔﺔ ﻗواﻋد اﻟﻠﻐﺔ ﻣﺛل زﯾـﺎدة ﻋـدد اﻟﻣﻌـﺎﻣﻼت ﻋـن اﻟﺣـد اﻟﻣطﻠـوب ﻓـﻲ إﺣـدى ﺗﻌﻠﯾﻣـﺎت‬
‫ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ‪ ،‬وﻫذا ﺑدورﻩ ﯾؤدي إﻟﻰ ﻋدم ﺗﻛوﯾن اﻟﺑرﻧﺎﻣﺞ اﻟﻬدﻓﻲ‪.‬‬

‫أﻣﺎ أﺧطﺎء ﻣرﺣﻠﺔ اﻟرﺑط واﻟﺗﺣرﯾر ﺗﻛﺗﺷف ﺑواﺳـطﺔ ﺑرﻧـﺎﻣﺞ ﺗﺣرﯾـر اﻟوﺻـل ‪ ،Linker‬ﻣﺛـل ﻛﺗﺎﺑـﺔ اﺳـم‬
‫اﻟﺑرﻧــﺎﻣﺞ اﻟﻣﻛﺗﺑــﻲ ﺑــﺷﻛل ﺧــﺎطﺊ‪ ،‬وﻣﺛــل ﻫــذﻩ اﻷﺧطــﺎء ﻻ ﯾﻣﻧــﻊ ﺗﻛــوﯾن اﻟﺑرﻧــﺎﻣﺞ اﻟﺗﻧﻔﯾــذي‪ ،‬وﻟﻛــن رﺑﻣــﺎ‬
‫ﯾؤدي ذﻟك إﻟﻰ ﺣﺻول أﺧطﺎء ﻓﻲ اﻟﻧﺗﺎﺋﺞ أو ﻋدم اﻟﺣﺻول ﻋﻠﻰ أﯾﺔ ﻧﺗﺎﺋﺞ‪.‬‬

‫أﻣــﺎ ﺑﺎﻟﻧــﺳﺑﺔ إﻟــﻰ أﺧطــﺎء ﻣرﺣﻠــﺔ اﻟﺗﻧﻔﯾــذ ﻓﯾــﺗم اﻛﺗــﺷﺎﻓﻬﺎ ﺑطرﯾﻘــﺔ أوﺗوﻣﺎﺗﯾﻛﯾــﺔ أﺛﻧــﺎء ﻣرﺣﻠــﺔ اﻟﺗﻧﻔﯾــذ‪ ،‬ﻣﺛــل‬
‫اﻟﻘﺳﻣﺔ ﻋﻠﻰ ﺻﻔر‪ ،‬وﯾﺗم اﻹﺑﻼغ ﻋﻧﻬﺎ‪.‬‬
‫وﻫﻧــﺎك أﺧطــﺎء ﻣــن ﻧــوع آﺧــر ﺗــﺳﺑب ﺗﻌﻠﯾﻘــﺔ ﻓــﻲ اﻟﺑرﻧــﺎﻣﺞ ﻣﺛــل اﻟــدوران اﻟﻼﻧﻬــﺎﺋﻲ ﻫــذا ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ‬
‫اﻷﺧطﺎء اﻟﺑرﻣﺟﯾﺔ اﻟﺗﻲ ﺗؤدي إﻟﻰ ﻧﺗﺎﺋﺞ ﺧﺎطﺋﺔ‪.‬‬
‫إن أﺧطﺎء ﻣرﺣﻠﺔ اﻟﺗﻧﻔﯾذ ﺗﻌﺗﺑر ﻣن أﺧطر أﻧواع اﻷﺧطـﺎء وأﻛﺛرﻫـﺎ ﺗﻌﻘﯾـداً ﻣـن ﺣﯾـث ﺻـﻌوﺑﺔ اﻛﺗـﺷﺎﻓﻬﺎ‬
‫وﺗﺄﺛﯾرﻫ ــﺎ اﻟﻣﺑﺎﺷ ــر ﻋﻠ ــﻰ اﻟﻧﺗ ــﺎﺋﺞ اﻟﺗ ــﻲ ﺗ ــﺳﺗﺧدم ﻓ ــﻲ اﺗﺧ ــﺎذ اﻟﻘـ ـرارات‪ .‬وﻓ ــﻲ ﻛﺛﯾ ــر ﻣ ــن اﻷﺣﯾ ــﺎن ﺗ ــﺳﻣﻰ‬
‫أﺧطﺎء ﻫذﻩ اﻟﻣرﺣﻠﺔ ﺑﺎﻷﺧطﺎء اﻟﻣﻧطﻘﯾﺔ ﻻرﺗﺑﺎطﻬﺎ اﻟﻣﺑﺎﺷر ﺑﻣﻧطق اﻟﺑرﻧﺎﻣﺞ‪.‬‬

‫‪- ٢٩ -‬‬
‫‪ -٦‬ﻋﻧﺎﺻر وﻣﻛوﻧﺎت ﺗﻘرﯾر اﻷﺳﻣﺑﻠر ‪: Assembly Listing‬‬
‫ﯾﺗﻛ ــون ﺗﻘرﯾ ــر اﻷﺳ ــﻣﺑﻠر ﻣ ــن اﻟﺑرﻧ ــﺎﻣﺞ اﻟﻣ ــﺻدري‪ ،‬واﻟﺑرﻧ ــﺎﻣﺞ اﻟﻬ ــدﻓﻲ‪ ،‬وﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﺟ ــداول اﻟﺗ ــﻲ‬
‫ﺗﺣﺗــوي ﻣﻌﻠوﻣــﺎت ﺣــول ﻋﻧﺎﺻــر اﻟﺑرﻧــﺎﻣﺞ اﻟﻣﺧﺗﻠﻔــﺔ ﻣﺛــل أﺳــﻣﺎء اﻟﻘطﺎﻋــﺎت وﺣﺟﻣﻬــﺎ‪ ،‬أﺳــﻣﺎء اﻟﻣــﺎﻛرو‬
‫وﺣﺟﻣﻬﺎ ‪ ...‬وﻏﯾرﻫﺎ‪.‬‬
‫ﯾﺗﻛون اﻟﺳطر ﻓﻲ ﺗﻘرﯾر ﺑرﻧﺎﻣﺞ اﻷﺳﻣﺑﻠر ﻣن ﺛﻼﺛﺔ ﻋﻧﺎﺻر ﻫﻲ‪:‬‬
‫اﻟﺟﻣﻠﺔ اﻟﻣﺻدرﯾﺔ ‪ ...‬اﻟﻛود ‪ ...‬اﻹ زاﺣﺔ‬
‫اﻹ زاﺣﺔ ﻫﻲ ﻣﻘدار اﻟﻣﺳﺎﻓﺔ ﺑﺎﻟﺑﺎﯾت ﺑﯾن ﻛل ﺟﻣﻠﺔ وﺑداﯾﺔ اﻟﻘطﺎع اﻟذي ﯾﺣﺗوي ﺗﻠك اﻟﺟﻣﻠﺔ‪.‬‬
‫أﻣــﺎ اﻟﻛــود ﻓﻬــو ﻋﺑــﺎرة ﻋــن أرﻗــﺎم ﻓــﻲ اﻟﻧظــﺎم اﻟــﺳﺎدس ﻋــﺷري ﺗﻣﺛــل اﻟﻌﻣﻠﯾــﺔ اﻟﻣﺗــﺿﻣﻧﺔ ﻓــﻲ اﻟﺗﻌﻠﯾﻣــﺔ‬
‫وﻋﻧﺎوﯾن اﻟﻣﻌﺎﻣﻼت اﻟﻣﺷﺎرﻛﺔ ﻓﻲ اﻟﻌﻣﻠﯾﺔ ﻧﻔﺳﻬﺎ‪.‬‬
‫ٕواﻟﻰ ﯾﻣﯾن اﻟﻛود ﺗﻘﻊ اﻟﺟﻣﻠﺔ اﻟﻣﺻدرﯾﺔ اﻟﻣﻛﺗوﺑﺔ ﺑﻠﻐﺔ اﻷﺳﻣﺑﻠﻲ‪.‬‬
‫وﻓــﻲ ﺣﺎﻟــﺔ ﺣــدوث أﺧطــﺎء ﻓــﻲ ﺗرﺟﻣــﺔ أﯾــﺔ ﺟﻣﻠــﺔ ﺗظﻬــر ﻓــوراً ﺑﻌــد اﻟﺟﻣﻠــﺔ اﻟﺧﺎطﺋــﺔ رﺳــﺎﻟﺔ اﻟﺧطــﺄ اﻟﺗــﻲ‬
‫ﺗﺣﺗوي رﻗم اﻟﺳطر‪ ،‬ورﻗم اﻟﺧطﺄ‪ ،‬ووﺻف ﻟﻠﺧطﺄ ﺑﻣﺎ ﻻ ﯾزﯾد ﻋن ﺳطر أو ﺳطرﯾن‪.‬‬

‫وﯾﻠــﻲ اﻟﺑرﻧ ــﺎﻣﺞ اﻟﻣ ــﺻدري واﻟﻬ ــدﻓﻲ داﺋﻣــﺎً ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﺟ ــداول ﺗظﻬــر ﻓ ــﻲ ﻣﻠ ــف ﺗﻘرﯾ ــر اﻷﺳ ــﻣﺑﻠﻲ‬
‫ﺣﺳب ﺣﺎﺟﺔ اﻟﻣﺑرﻣﺞ ﻣﺛل‪:‬‬
‫‪ -‬ﺟدول اﻟﻣﺎﻛرو‬
‫‪ -‬ﺟدول اﻟﻘطﺎﻋﺎت واﻟﻣﺟوﻋﺎت‬
‫‪ -‬ﺟدول اﻟرﻣوز‬

‫وﯾﻠـﻲ ﻫـذﻩ اﻟﺟـداول ﻣﻌﻠوﻣــﺎت إﺣـﺻﺎﺋﯾﺔ ﺣـول اﻟﺑرﻧــﺎﻣﺞ ﻣﺛـل‪ :‬ﻋـدد ﺳــطور اﻟﺑرﻧـﺎﻣﺞ اﻟﻣـﺻدري‪ ،‬وﻋــدد‬
‫اﻟرﻣوز اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ‪ ،‬وﻋدد اﻷﺧطﺎء ﻣن اﻷﻧواع اﻟﺗﺣذﯾرﯾﺔ أو اﻟﺟدﯾﺔ إن وﺟدت‪.‬‬

‫‪ -٧‬ﻋﻧﺎﺻر ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ ‪:‬‬


‫ﺗﺣﺗوي ﻟﻐﺔ أﺳﻣﺑﻠﻲ ﻋﻠﻰ اﻟرﻣوز اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬اﻟﺣروف اﻷﺑﺟدﯾﺔ اﻹﻧﺟﻠﯾزﯾﺔ‪:‬‬
‫وﺗﺿم اﻟﺣروف اﻟﻛﺑﯾرة )‪ (A-Z‬واﻟﺣروف اﻟﺻﻐﯾرة )‪ ،(a-z‬وﻋددﻫﺎ )‪.(٥٢‬‬
‫‪ -‬اﻷرﻗﺎم اﻟﻌرﺑﯾﺔ‪:‬‬
‫وﺗﺷﻣل اﻷرﻗﺎم )‪ (0-9‬وﻋددﻫﺎ )‪.(١٠‬‬
‫‪ -‬اﻟرﻣوز اﻟﺧﺎﺻﺔ وﻋددﻫﺎ )‪.(٢٢‬‬

‫‪- ٣٠ -‬‬
‫‪ ١-٧‬اﻟﺛواﺑت ‪: 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‬‬

‫ﺗــﺳﺗﺧدم ﻋﻣﻠﯾــﺎت إرﺟـــﺎع اﻟﻘــﯾم ﻟﺗﺣدﯾــد ﺑﻌـــض اﻟﻣﻌﻠوﻣــﺎت اﻟﺗــﻲ ﺗﺧـــص اﻟﻣﺗﻐﯾــرات أو اﻟوﺳـــﺎﻣﺎت‬
‫اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﺑراﻣﺞ وﺗﺿم ﻫذﻩ اﻟﻣﺟﻣوﻋﺔ اﻟﻌﻣﻠﯾﺎت اﻵﺗﯾﺔ‪:‬‬

‫‪ -‬ﻋﻣﻠﯾﺎت ‪:OFFSET , SEG‬‬


‫‪ :‬ﺗﺣﺳب ﻗﯾﻣﺔ اﻷﺳﺎس ﻟﻠﻣﺗﻐﯾر ‪T1‬‬ ‫‪SEG T1‬‬
‫‪T1‬‬ ‫‪ :‬ﺗﺣﺳب ﻗﯾﻣﺔ اﻹزاﺣﺔ ﻟﻠﻣﺗﻐﯾر‬ ‫‪OFFSET T1‬‬

‫‪- ٣٢ -‬‬
‫‪ -‬ﻋﻣﻠﯾﺔ ‪: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‬‬

‫‪ -٢‬أﻫﻣﯾﺔ اﻟﺗوﺟﯾﻬﺎت ﻓﻲ ﺑرﻧﺎﻣﺞ ﻟﻐﺔ اﻷﺳﻣﺑﻠﻲ ‪:‬‬


‫اﻟﺗوﺟﯾﻬـﺎت ﻫــﻲ ﺗوﺟﯾﻬــﺎت وأواﻣــر ﻟﻠﻣـﺎﻛرو أﺳــﻣﺑﻠر ﺗوﺟﻬــﻪ ﻓــﻲ ﻋﻣﻠﯾـﺔ ﺗرﺟﻣــﺔ اﻟﺑرﻧــﺎﻣﺞ اﻟﻣــﺻدري إﻟــﻰ‬
‫ﻟﻐﺔ اﻵﻟﺔ‪.‬‬
‫ﻣن ﺧﻼل اﻟﺗوﺟﯾﻬﺎت ﯾﻣﻛن ﻟﻠﻣﺎﻛرو أﺳﻣﺑﻠر أن‪:‬‬
‫‪ -‬ﯾﺣدد ﻋدد اﻟﻣواﻗﻊ اﻟﻣطﻠوب ﺣﺟزﻫﺎ ﻟﻠﺑﯾﺎﻧﺎت ﻓﻲ ذاﻛرة اﻟﺣﺎﺳوب واﻟﻼزﻣﺔ ﻟﺗﻧﻔﯾذ اﻟﺑراﻣﺞ ﻋﻠﯾﻬﺎ‪.‬‬
‫‪ -‬ﺣﺟز اﻟﻣواﻗﻊ اﻟﻼزﻣﺔ ﻟﺗﺧزﯾن اﻟﻧﺗﺎﺋﺞ اﻟﻧﺎﺗﺟﺔ ﻋن ﻋﻣﻠﯾﺔ اﻟﻣﻌﺎﻟﺟﺔ ﻋﻠﻰ ﻫذﻩ اﻟﺑﯾﺎﻧﺎت‪.‬‬
‫‪ -‬ﺗﺣدﯾد ﺑداﯾﺔ وﻧﻬﺎﯾﺔ اﻟﺑراﻣﺞ اﻟﻔرﻋﯾﺔ ﻓﻲ ﺑرﻧﺎﻣﺞ ﻟﻐﺔ أﺳﻣﺑﻠﻲ‪.‬‬
‫‪ -‬ﺗﺣدﯾد اﻟﻘطﺎﻋﺎت اﻟﻣﺧﺗﻠﻔﺔ اﻟﻣﻛوﻧـﺔ ﻟﻠﺑرﻧـﺎﻣﺞ ﻣﺛـل ﻗطـﺎع اﻟﺑرﻧـﺎﻣﺞ وﻗطـﺎع اﻟﺑﯾﺎﻧـﺎت وﻗطـﺎع اﻟﻣﻛـدس‬
‫واﻟﻘطﺎع اﻹﺿﺎﻓﻲ‪.‬‬
‫‪ -٣‬اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻠﺗوﺟﯾﻬﺎت ‪:‬‬
‫ﯾﻣﻛن ﻟﺟﻣﻠﺔ اﻟﺗوﺟﯾﻬﺎت أن ﺗﺣﺗوي ﻋﻠﻰ أرﺑﻌﺔ ﺣﻘول‪ ،‬ﺑﻌﺿﻬﺎ إﺟﺑﺎري وﺑﻌﺿﻬﺎ اﺧﺗﯾﺎري‪.‬‬
‫]‪[Name] Pseudo-op [operand] [;Comment‬‬
‫ﺣﯾث أن اﻷﻗواس اﻟﻣرﺑﻌﺔ ﻫﻧﺎ ﺗﻌﻧﻲ أن ﻫذﻩ اﻟﺣﻘول ﯾﻣﻛن ﺗواﺟـدﻫﺎ ﻓـﻲ اﻟﺟﻣﻠـﺔ إذا دﻋـت اﻟﺣﺎﺟـﺔ ﻟﻬـﺎ‬
‫وﯾﻣﻛن ﻛذﻟك اﻻﺳﺗﻐﻧﺎء ﻋﻧﻬﺎ ﻓﻲ ﺑﻌض اﻷﺣوال‪ .‬أﻣﺎ اﻟﺣﻘل اﻟﺛﺎﻧﻲ ‪ Pseudo-op‬ﻓﻬو إﺟﺑﺎري‪.‬‬
‫‪ -‬اﻟﺣﻘل اﻷول ‪ Name‬ﯾﺣددﻩ اﻟﻣﺑرﻣﺞ وﯾﻧطﺑق ﻋﻠﯾﻪ ﻗواﻋد ﺗﻛوﯾن اﻷﺳﻣﺎء ﻓﻲ ﻟﻐﺔ أﺳﻣﺑﻠﻲ‪.‬‬
‫وﯾﻌﺗﺑر ﻫذا اﻟﺣﻘل ﺿروري ﻣﻊ اﻟﺗوﺟﯾﻬﺎت ‪EQU, =, EXTRN, SEGMENT, PROC‬‬
‫وﻻ ﯾﺳﺗﺧدم ﻣﻊ اﻟﺗوﺟﯾﻬﺎت ‪.PUBLIC, NCLUDE, END‬‬
‫‪ -‬اﻟﺣﻘـ ــل اﻟﺛـ ــﺎﻧﻲ ‪ Pseudo-op‬واﻟـ ــذي ﯾﻣﺛـ ــل رﻣـ ــز اﻟوظﯾﻔـ ــﺔ اﻟﻣطﻠوﺑـ ــﺔ ﻣـ ــن اﻟﻣـ ــﺎﻛرو أﺳـ ــﻣﺑﻠر ﻓﻬـ ــو‬
‫ﺿروري‪.‬‬
‫‪ -‬اﻟﺣﻘل اﻟﺛﺎﻟث ﺣﻘل اﻟﻣﻌﺎﻣﻼت ‪ Operands‬ﻓﻬو ﯾﺷﺑﻪ اﻟﺣﻘل اﻷول‪.‬‬
‫اﻟﺗوﺟﯾﻬﺎت اﻟﺗﻲ ﺗﺣﺗﺎج إﻟﻰ ﻣﻌﺎﻣﻼت ﻣﺛل‪DD, DW, DB :‬‬
‫اﻟﺗوﺟﯾﻬﺎت اﻟﺗﻲ ﻟﯾﺳت ﺑﺣﺎﺟﺔ إﻟﻰ ﻣﻌﺎﻣﻼت ﻣﺛل‪XALL, EXIT, ENDS, ENDP :‬‬
‫‪ -‬اﻟﺣﻘل اﻟراﺑﻊ ﺣﻘل اﻟﻣﻼﺣظﺎت واﻟﺗﻌﻠﯾق ‪ Comments‬وﻫو اﺧﺗﯾﺎرﯾﺎً ﻋﻠﻰ اﻟدوام‪.‬‬

‫اﻟرﻣز اﻟﻣﺳﺗﺧدم ﻓﻲ اﻟﺗوﺟﯾﻬﺔ ﻟﻔﺻل اﻟﻣﻌﺎﻣﻼت ﻋن ﺣﻘل اﻟﻣﻼﺣظﺎت ﻫو اﻟﻔﺎرزة اﻟﻣﻧﻘوطﺔ‪.‬‬


‫ﻛﻣﺎ ﯾﺟب ﻓﺻل اﻟﺣﻘول اﻟﻣﺧﺗﻠﻔﺔ ﻋن ﺑﻌﺿﻬﺎ اﻟﺑﻌض ﺑﻔراغ واﺣد ﻋﻠﻰ اﻷﻗل‪.‬‬
‫ﻣﺛﺎل )‪:(3.5‬‬
‫‪B_Table DB 0, 0, 0, 0, -20, 30; Define a byte table with 6 bytes‬‬
‫‪- ٣٦ -‬‬
‫‪ -‬اﻟﺣﻘل اﻷول )اﻹﺳم( ﻫو ‪.B_Table‬‬
‫‪ -‬اﻟﺣﻘــل اﻟﺛــﺎﻧﻲ ‪ Pseudo-op‬ﻫــو )‪ Define Byte (DB‬أي ﺗﻌرﯾــف ﻣﺗﻐﯾــر ﻣــن اﻟﻧــوع ‪Byte‬‬
‫اﺳﻣﻪ ‪.B_Table‬‬
‫‪ -‬اﻟﺣﻘـل اﻟﺛﺎﻟـث ﯾﺗﻛـون ﻣـن ﺳـﺗﺔ ﻗـﯾم ﻛـل ﻗﯾﻣـﺔ ﯾــﺗم ﺗﺧزﯾﻧﻬـﺎ ﻓـﻲ ﻣوﻗـﻊ ﻣـن اﻟﻣواﻗـﻊ اﻟﺗـﻲ ﺳـﯾﺗم ﺣﺟزﻫــﺎ‬
‫ﺑواﺳطﺔ اﻟﻣﺎﻛرو وطول ﻛل ﻣوﻗﻊ ﯾﺳﺎوي ‪ Byte‬واﺣد‪.‬‬
‫‪ -‬اﻟﺣﻘل اﻟراﺑﻊ ﻫو ﺣﻘل اﻟﻣﻼﺣظﺎت واﻟﺗﻌﻠﯾق‪.‬‬
‫‪ -٤‬اﻟﺗوﺟﯾﻬﺎت اﻟﺧﺎﺻﺔ ﺑﺎﻟﺑﯾﺎﻧﺎت ‪:‬‬
‫‪ ١-٤‬ﺗوﺟﯾﻬﺎت ﺗﻌرﯾف ‪: Symbol Definition Directives‬‬
‫ﺗـﺳﺗﺧدم ﻫــذﻩ اﻟﺗوﺟﯾﻬـﺎت ﻹﺳــﻧﺎد ﻗﯾﻣـﺔ ﺛﺎﺑــت أو ﻗﯾﻣـﺔ ﺗﻌﺑﯾــر ﺣـﺳﺎﺑﻲ أو ﻧــص ﻣـن اﻟﻧــﺻوص إﻟـﻰ اﺳــم‬
‫ﺗﻌرﯾﻔــﻲ‪ .‬وﺑﻌ ــد ذﻟ ــك ﯾﻣﻛ ــن اﻻﺳ ــﺗﻐﻧﺎء ﻋ ــن اﺳ ــﺗﺧدام ﻣﺛ ــل ﻫ ــذﻩ اﻟﺛواﺑ ــت واﻟﺗﻌ ــﺎﺑﯾر واﻟﻧ ــﺻوص داﺧ ــل‬
‫اﻟﺑرﻧﺎﻣﺞ واﺳﺗﺧدام اﻷﺳﻣﺎء اﻟﺗﻌرﯾﻔﯾﺔ ﻣﻛﺎﻧﻬﺎ‪.‬‬
‫وﻓ ــﻲ ﺣﺎﻟ ــﺔ اﻟﺣﺎﺟ ــﺔ إﻟ ــﻰ إﺟـ ـراء أي ﺗﻌ ــدﯾل ﻋﻠ ــﻰ أي ﻣ ــن اﻟﻘ ــﯾم ﯾﻣﻛ ــن ﺗﻌ ــدﯾﻠﻬﺎ ﻣـ ـرة واﺣ ــدة ﻓ ــﻲ ﻗ ــﺳم‬
‫اﻟﺗﻌرﯾﻔﺎت ﻋوﺿﺎً ﻋن إﺟراء اﻟﺗﻌدﯾل ﻋﻠﻰ اﻟﻘﯾم اﻟﻛﺛﯾرة اﻟﻣﺑﻌﺛرة ﻫﻧﺎ وﻫﻧﺎك ﻓﻲ اﻟﺑرﻧﺎﻣﺞ‪.‬‬
‫‪ ١-١-٤‬ﺗوﺟﯾﻬﺔ ‪: EQU‬‬
‫ﯾﻣﻛن ﻋن طرﯾق ﻫذﻩ اﻟﺗوﺟﯾﻬﺔ اﻗﺗـران اﺳـم ﺗﻌرﯾﻔـﻲ ﺑﻘﯾﻣـﺔ ﺛﺎﺑﺗـﺔ ﺣﯾـث ﯾـﺻﺑﺢ ﻣـن ﻏﯾـر اﻟﻣﻣﻛـن إﻋـﺎدة‬
‫ﺗﻌرﯾف ﻫذا اﻻﺳم اﻟﺗﻌرﯾﻔﻲ ﻋن طرﯾق ﺗﺣدﯾد ﻗﯾﻣﺔ أﺧرى ﻟﻪ‪.‬‬
‫)وذﻟك ﯾﺷﺑﻪ ﺗﻌرﯾف أﺳﻣﺎء ﺗﻌرﯾﻔﯾﺔ ﻟﻠﺛواﺑت ﻓﻲ ﻗﺳم ﺗﻌرﯾف اﻟﺛواﺑت ‪.(Constant Section‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻬذﻩ اﻟﺗوﺟﯾﻬﺔ‪:‬‬
‫‪Const_Name EQU expression‬‬
‫‪ -‬إذا ﻛــﺎن اﻟﺛﺎﺑــت ‪ expression‬ﻣــن اﻟﻧــوع اﻟﻌــددي ﯾطﻠــق ﻋﻠــﻰ اﻟﺗوﺟﯾﻬــﺔ ﺗوﺟﯾﻬــﺔ اﻟﻣــﺳﺎواة اﻟﻌددﯾــﺔ‬
‫‪.Numeric Equate‬‬
‫‪ -‬أﻣ ــﺎ إذا ﻛ ــﺎن اﻟﺛﺎﺑ ــت ﻣ ــن اﻟﻧ ــوع اﻟرﻣ ــزي ﯾطﻠ ــق ﻋﻠ ــﻰ اﻟﺗوﺟﯾﻬ ــﺔ ﺗوﺟﯾﻬ ــﺔ ﻣ ــﺳﺎواة اﻟ ــﺳﻼﺳل اﻟرﻣزﯾ ــﺔ‬
‫‪.String Equate‬‬
‫ﻣﺛﺎل )‪:(4.5‬‬
‫‪Column‬‬ ‫‪EQU‬‬ ‫‪80‬‬ ‫‪; Numeric Constant 80‬‬
‫‪K‬‬ ‫‪EQU‬‬ ‫‪1024‬‬ ‫‪; Give a name to Kilo in Computers‬‬
‫‪Row‬‬ ‫‪EQU‬‬ ‫‪25‬‬ ‫‪; Constant 25 is given the name row‬‬
‫‪Screen_full‬‬ ‫‪EQU‬‬ ‫‪Column * Row ; Numeric Constant 2000‬‬

‫ﻣﺛﺎل )‪:(5.5‬‬
‫‪Message‬‬ ‫'‪EQU 'Enter Your Name Please:‬‬

‫‪- ٣٧ -‬‬
‫‪ ٢-١-٤‬ﺗوﺟﯾﻬﺔ اﻟﻣﺳﺎواة اﻟﻌددﯾﺔ )=( ‪:‬‬
‫ﺗـﺳﺗﺧدم ﻹﺳـﻧﺎد ﻗﯾﻣــﺔ ﺛﺎﺑـت ﻋــددي إﻟـﻰ اﺳــم ﺗﻌرﯾﻔـﻲ ﺣﯾـث أﻧــﻪ ﻣـن اﻟﻣﻣﻛــن ﺗﻐﯾـر اﻟﻘﯾﻣــﺔ اﻟﻣـﺳﻧدة إﻟــﻰ‬
‫اﻻﺳم اﻟﺗﻌرﯾﻔﻲ ﻓﻲ أي ﻣﻛﺎن ﻓﻲ اﻟﺑرﻧﺎﻣﺞ‪.‬‬
‫ﻣﺛﺎل )‪:(7.5‬‬
‫‪Count = 0‬‬
‫‪BArray LABEL BYTE‬‬
‫‪REPT 100‬‬
‫‪DB Count‬‬
‫‪Count = Count + 1‬‬
‫‪ENDM‬‬

‫‪ ٢-٤‬ﺗوﺟﯾﻬﺎت ﺗﻌرﯾف اﻟﺑﯾﺎﻧﺎت ‪: Data Definition Directives‬‬


‫ﺗﻌﻣـل ﻫــذﻩ اﻟﻣﺟﻣوﻋــﺔ ﻣــن اﻟﺗوﺟﯾﻬــﺎت ﻋﻠــﻰ ﺗﻌرﯾــف اﻟﻣﺗﻐﯾـرات وﺣﺟــز ﻣواﻗــﻊ ﻟﻬــﺎ ﻓــﻲ اﻟــذاﻛرة اﻟرﺋﯾــﺳﺔ‬
‫ﻟﻠﺣﺎﺳوب ﻣـﻊ إﻣﻛﺎﻧﯾـﺔ ﺗﺣدﯾـد ﻗـﯾم اﺑﺗداﺋﯾـﺔ ﻟﺗﺧزﯾﻧﻬـﺎ ﻓـﻲ ﺗﻠـك اﻟﻣواﻗـﻊ اﻟﺗﺧزﯾﻧﯾـﺔ اﻟﺗـﻲ ﺗـم ﺣﺟزﻫـﺎ‪ .‬وﯾﻘـوم‬
‫اﻟﻣــﺎﻛرو أﺳــﻣﺑﻠر ﺑﺗﺣوﯾــل ﺟﻣﯾــﻊ ﻗــﯾم اﻟﺛواﺑــت إﻟــﻰ ﻗــﯾم ﺛﻧﺎﺋﯾــﺔ ﻋﻠــﻰ ﺷــﻛل وﺣــدات ﺗﺧزﯾﻧﯾــﺔ )ﺑﺎﯾــت أو‬
‫ﻛﻠﻣﺔ( ﯾﺗم ﺗﺣدﯾدﻫﺎ ﺑﺎﺳﺗﺧدام ﺗوﺟﯾﻬﺎت ﺗﻌرﯾف اﻟﺑﯾﺎﻧﺎت‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺗوﺟﯾﻬﺔ ﺗﻌرﯾف اﻟﺑﯾﺎﻧﺎت ﻫﻲ‪:‬‬
‫]… ‪[Name] Dn expression [,‬‬

‫ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﺗوﺟﯾﻬﺔ اﻟﺗﻲ ﺗﻠﻲ اﺳم اﻟﻣﺗﻐﯾر واﻟﺗﻲ ﺗﻌﻣل ﻋﻠﻰ ﺣﺟز اﻟﻣواﻗﻊ ﻓﺗﺄﺧذ أﺣد اﻷﺷﻛﺎل اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫)‪ (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‬ﺳوف ﯾﺳﺗﺧدم ﻋﻠﻰ أﻧﻪ ﻗطﺎع اﻟﺑﯾﺎﻧﺎت‪.‬‬

‫‪ ٤-٥‬ﺗوﺟﯾﻬﺔ ﺑداﯾﺔ اﻟﺑرﻧﺎﻣﺞ اﻟﻔرﻋﻲ )اﻹﺟراء( ‪: PROC‬‬


‫ﺗﺣدد ﻫذﻩ اﻟﺗوﺟﯾﻬﺔ ﺑداﯾﺔ اﻹﺟراء‪.‬‬

‫‪- ٤١ -‬‬
‫‪ ٥-٥‬ﺗوﺟﯾﻬﺔ ﻧﻬﺎﯾﺔ اﻟﺑرﻧﺎﻣﺞ اﻟﻔرﻋﻲ )اﻹﺟراء( ‪: ENDP‬‬
‫ﺗوﺟﯾﻬﺔ إﺷﻌﺎر اﻟﻣﺗرﺟم ﺑﻧﻬﺎﯾﺔ اﻹﺟراء ﺣﯾث ﯾوﺟد ﺟﻣﻠﺔ ‪ ENDP‬ﻟﻛل ﺟﻣﻠﺔ ‪.PROC‬‬

‫‪ ٦-٥‬ﺗوﺟﯾﻬﺔ ﺗﺟﻣﯾﻊ اﻟﻘطﺎﻋﺎت ‪: GROUP‬‬


‫ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﺗوﺟﯾــﻪ ﻟﺗﺟﻣﯾــﻊ ﻋــدد ﻣــن ﻗطﺎﻋــﺎت اﻟﺑرﻧــﺎﻣﺞ ﺣﯾــث ﺗﺑــدأ ﺟﻣﯾﻌﻬــﺎ ﻓــﻲ ﻧﻔــس اﻟﻣوﻗــﻊ ﻓــﻲ‬
‫ذاﻛرة اﻟﺣﺎﺳوب اﻟرﺋﯾﺳﺔ‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻬذﻩ اﻟﺗوﺟﯾﻬﺔ‪:‬‬
‫… ]‪Name GROUP Segment [, Segment‬‬
‫ﺣﯾث أن‪:‬‬
‫‪ : Name‬ﯾﻣﺛل اﻻﺳم اﻟﻣﺷﺗرك اﻟﺟدﯾد ﻟﻬذﻩ اﻟﻘطﺎﻋﺎت وﯾﻌﻧﻲ ﻋﻧوان اﻟﺑداﯾﺔ ﻟﻠﻘطﺎﻋﺎت‪.‬‬
‫ﻣﺛﺎل )‪:(13.5‬‬
‫ﺗﺟﻣﯾﻊ اﻟﻘطﺎﻋﯾن ‪ SEG1, SEG2‬ﻓﻲ ﻗطﺎع ﺟدﯾد ﯾﺳﻣﻰ ‪.NewSeg‬‬
‫‪NewSeg‬‬ ‫‪GROUP‬‬ ‫‪Seg1, Seg2‬‬
‫‪Seg1‬‬ ‫‪SEGMENT‬‬ ‫'‪PARA 'CODE‬‬
‫‪ASSUME‬‬ ‫‪CS: NewSeg‬‬
‫‪Seg1‬‬ ‫‪ENDS‬‬
‫‪Seg2‬‬ ‫‪SEGMENT‬‬ ‫'‪PARA 'CODE‬‬
‫‪ASSUME‬‬ ‫‪CS: NewSeg‬‬
‫‪Seg2‬‬ ‫‪ENDS‬‬
‫ﯾﻼﺣـظ ﻣـن اﻟﻣﺛـﺎل اﻟــﺳﺎﺑق أن اﻻﺳـﺗﺧدام اﻷﻣﺛـل ﻟﻬــذﻩ اﻟﺗوﺟﯾﻬـﺔ ﻫـو ﺗﺟﻣﯾـﻊ ﻗطﺎﻋــﺎت ﻣـن ﻧﻔـس اﻟﻧــوع‬
‫ﻓﻲ ﻗطﺎع واﺣد ﺑﺣﯾث ﯾﺣﺗل اﻟﻘطﺎع اﻟﺟدﯾد ﻣﺳﺎﺣﺔ ﯾﺻل طوﻟﻬﺎ إﻟﻰ ‪ ٦٤‬ﻛﯾﻠوﺑﺎﯾت‪.‬‬

‫‪ ٧-٥‬ﺗوﺟﯾﻬﺔ ‪: 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‬ﻓــﻲ ﺑرﻧــﺎﻣﺞ واﺣــد ﺣﯾــث‬
‫ﯾﺣﺗوي اﻟﺑرﻧﺎﻣﺞ ﻋﻠﻰ ﺑﻌض اﻟﻣﻔﺎﻫﯾم اﻟﺗﻲ ﺳﯾﺗم ﺷرﺣﻬﺎ ﻻﺣﻘﺎً‪.‬‬

‫‪ -٦‬ﺟﻣل اﻟﺗﺣﻛم ‪: Control Statement‬‬


‫ﺗﺳﺗﺧدم ﻫذﻩ اﻟﺟﻣـل ﺑﻘـﺻد اﻟـﺗﺣﻛم ﺑﺎﻷﺳـﻣﺑﻠر وﺗوﺟﯾﻬـﻪ أﺛﻧـﺎء ﻋﻣﻠﯾـﺔ ﺗرﺟﻣـﺔ اﻟﺑرﻧـﺎﻣﺞ اﻟﻣـﺻدري وﻓﯾﻣـﺎ‬
‫ﯾﻠﻲ أﺑرز ﻫذﻩ اﻟﺟﻣل‪:‬‬

‫‪ ١-٦‬ﺟﻣﻠﺔ ﻧﻬﺎﯾﺔ اﻟﺑرﻧﺎﻣﺞ اﻟﻣﺻدري ‪: END‬‬


‫ﺗﺷﻛل ﻫذﻩ اﻟﺟﻣﻠﺔ إﺷﻌﺎراً ﻟﻸﺳﻣﺑﻠر ﻹﯾﻘﺎف ﻋﻣﻠﯾﺔ اﻟﺗرﺟﻣﺔ ﺑـﺳﺑب اﻟوﺻـول إﻟـﻰ ﻧﻬﺎﯾـﺔ اﻟﺑرﻧـﺎﻣﺞ‪ .‬وﻓـﻲ‬
‫ﺣﺎل ﻋدم وﺟودﻫﺎ ﻓﺈن ذﻟك ﯾؤدي إﻟﻰ وﺟود ﺧطﺄ ﺑرﻣﺟﻲ‪.‬‬
‫ﻫﻧﺎك ﺛﻼث أﻧواع ﻣن ﺗوﺟﯾﻬﺎت اﻟﻧﻬﺎﯾﺔ‪:‬‬

‫‪- ٤٣ -‬‬
‫‪ : 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‬‬

‫‪ -٧‬ﺟﻣل اﻟطﺑﺎﻋﺔ ‪Listing Psudo-Operations‬‬


‫ﺗــﺳﺗﻧﺧدم ﻫــذﻩ اﻟﺗوﺟﯾﻬــﺎت ﻟﻠــﺗﺣﻛم ﺑــﺷﻛل طﺑﺎﻋــﺔ اﻟﺑرﻧــﺎﻣﺞ ﺣﯾــث ﺗﻌطــﻲ اﻟﻣﺑــرﻣﺞ اﻟﻘــدرة ﻋﻠــﻰ طﺑﺎﻋــﺔ‬
‫اﻟﺑرﻧﺎﻣﺞ ﺑﺎﻟﺷﻛل اﻟذي ﯾرﯾﺣﻪ‪.‬‬

‫‪ ١-٧‬ﻧوﺟﯾﻬﺔ ﺗﻧظﯾم اﻟﺻﻔﺣﺔ ‪: PAGE‬‬


‫ﺗﺳﺗﺧدم ﻟﺗﺣدﯾد ﻋدد اﻷﺳطر وﻋدد اﻷﻋﻣدة ﻓﻲ اﻟﺻﻔﺣﺔ اﻟواﺣدة‪.‬‬
‫ﻣﺛﺎل‪:‬‬
‫ﻟطﺑﺎﻋـﺔ ‪ ٦٠‬ﺳــطراً ﻓــﻲ اﻟــﺻﻔﺣﺔ اﻟواﺣـدة ﺑﺣﯾــث ﯾﺗﻛــون اﻟــﺳطر اﻟواﺣـد ﻣــن ‪ ٨٠‬رﻣـزًا‪ ،‬ﯾﻣﻛــن اﺳــﺗﺧدام‬
‫اﻟﺗوﺟﯾﻬﺔ اﻵﺗﯾﺔ‪:‬‬
‫‪PAGE 60,80‬‬
‫ﻋﻠﻣﺎً ﺑﺄن وﺟود ﻫذﻩ اﻟﺗوﺟﯾﻬﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ﻟﯾس ﺿرور ًﯾﺎ‪.‬‬

‫‪ ٢-٧‬ﺗوﺟﯾﻬﺔ ‪: PAGE +‬‬


‫ﺗﺳﺗﺧدم ﻟﻠدﻻﻟﺔ ﻋﻠﻰ ﺑداﯾﺔ ﻓﺻل ‪ Chapter‬ﺟدﯾد‪.‬‬

‫‪ ٣-٧‬ﺗوﺟﯾﻬﺔ ﻣوﺿوع اﻟﺑرﻧﺎﻣﺞ ‪: TITLE‬‬


‫ﺗــﺳﺗﺧدم ﻟﺗﺣدﯾــد ﻣوﺿــوع اﻟﺑرﻧــﺎﻣﺞ وطﺑﺎﻋﺗــﻪ ﻓــﻲ اﻟــﺳطر اﻟﺛــﺎﻧﻲ ﻣــن ﺑداﯾــﺔ ﻛــل ﺻــﻔﺣﺔ ﻣــن ﺻــﻔﺣﺎت‬
‫اﻟﺑرﻧﺎﻣﺞ ﻋﻧد اﻟطﺑﺎﻋﺔ‪ ،‬وﻻ ﯾزﯾد طول اﻟﻧص اﻟوارد ﻣﻊ اﻟﺗوﺟﯾﻬﺔ ﻋن ‪ ٦٠‬رﻣزاً‪.‬‬
‫ﻣﺛﺎل‪:‬‬
‫‪TITLE PASCAL COMPILER VERSION 5:3‬‬

‫‪ ٤-٧‬ﺗوﺟﯾﻬﺔ اﻟﻣوﺿوع اﻟﻔرﻋﻲ ‪: SUBTTL‬‬


‫ﺗــﺳﺗﺧدم ﻟﻠدﻻﻟ ــﺔ ﻋﻠــﻰ اﻟﺑـ ـراﻣﺞ اﻟﺛﺎﻧوﯾــﺔ ﻓ ــﻲ اﻟﺑرﻧ ــﺎﻣﺞ اﻟ ـرﺋﯾس‪ ،‬وﯾﻌﺗﺑ ــر اﺳــﺗﺧداﻣﻬﺎ اﺧﺗﯾﺎرﯾ ـ ًـﺎ‪ ،‬وﻻ ﯾزﯾ ــد‬
‫طول اﻟﻧص اﻟوارد إﻟﻰ ﺟوار اﻟﺗوﺟﯾﻬﺔ ﻋن ‪ ٦٠‬رﻣزاً‪.‬‬

‫‪- ٤٥ -‬‬
‫‪ ٥-٧‬ﺗوﺟﯾﻬﺎت ‪ LIST‬و ‪ XLIST‬و ‪: % OUT‬‬
‫ﺗـﺳﺗﺧدم ﻟﻠـﺗﺣﻛم ﺑﻣﺣﺗوﯾـﺎت ﻣﻠـف اﻟطﺑﺎﻋـﺔ اﻟﻧـﺎﺗﺞ ﻋـن اﻷﺳـﻣﺑﻠر أﺛﻧـﺎء ﻋﻣﻠﯾـﺔ اﻟﺗرﺟﻣـﺔ‪ ،‬ﺣﯾـث أﻧـﻪ ﻋﻧــد‬
‫ﻣ ــﺻﺎدﻓﺔ ﺗوﺟﯾﻬ ــﺔ ‪ XLIST‬ﯾﺗوﻗ ــف اﻷﺳ ــﻣﺑﻠر ﻋ ــن اﻟﻛﺗﺎﺑ ــﺔ إﻟ ــﻰ ﻣﻠ ــف اﻟطﺑﺎﻋ ــﺔ وﯾ ــﺗم ﻣﺗﺎﺑﻌ ــﺔ ﻋﻣﻠﯾ ــﺔ‬
‫اﻟﻛﺗﺎﺑﺔ إﻟﻰ اﻟﻣﻠف ﻋﻧد وﺟود ﺗوﺟﯾﻬﺔ ‪.LIST‬‬
‫وﻛــذﻟك ﻓــﺈن ﺗوﺟﯾﻬــﺔ ‪ %OUT‬ﺗــﺳﺗﺧدم ﻹظﻬــﺎر اﺷــﻌﺎرات ﻣﻌﯾﻧــﺔ ﻋﻠــﻰ ﺷﺎﺷــﺔ اﻟﻌــرض‪ ،‬وﻋﻠــﻰ ﺳــﺑﯾل‬
‫اﻟﻣﺛﺎل ﻋﻧد ﻣﺻﺎدﻓﺔ اﻟﺟﻣﻠﺔ‪:‬‬
‫‪%OUT Starting Assembling Main Procedure‬‬
‫ﯾﺗم ﻋرض اﻟﻧص ‪ Starting Assembling Main Procedure‬ﻋﻠﻰ ﺷﺎﺷﺔ اﻟﺣﺎﺳوب‪.‬‬

‫‪ -٨‬ﺟﻣل اﻟﺗرﺟﻣﺔ اﻟﻣﺷروطﺔ ‪: Conditional Assembly Directives‬‬


‫ﺑﺎﺳــﺗﺧدام ﺗوﺟﯾﻬــﺎت اﻟﺗرﺟﻣــﺔ اﻟﻣــﺷروطﺔ ﯾﻣﻛــن ﺗوﺟﯾــﻪ اﻷﺳــﻣﺑﻠر إﻟــﻰ اﺳــﺗﺛﻧﺎء ﺟﻣﻠــﺔ أو ﻣﺟﻣوﻋــﺔ ﻣــن‬
‫اﻟﺟﻣل ﻓﻲ ﻋﻣﻠﯾﺔ اﻟﺗرﺟﻣﺔ‪ ،‬وﻟﺗﺣدﯾد ﻧﻬﺎﯾﺔ ﻫذﻩ اﻟﺟﻣل ﺗﺳﺗﺧدم ﻋﺑﺎرة ‪.ENDIF‬‬
‫ﯾوﺟد ﺛﻣﺎﻧﯾﺔ أﻧواع ﻣن ﺟﻣل اﻟﺗرﺟﻣﺔ اﻟﻣﺷروطﺔ ﻫﻲ‪:‬‬

‫‪ ١-٨‬ﺗوﺟﯾﻬﺔ ‪: IF‬‬
‫اﻟﺷﻛل اﻟﻌﺎم‪:‬‬
‫‪IF expression ; condition‬‬
‫‪.‬‬
‫‪.‬‬
‫‪[ELSE] ; optional‬‬
‫‪.‬‬
‫‪.‬‬
‫‪ENDIF ; end of IF‬‬
‫أو ‪-----------------------------------------------‬‬
‫‪IF expression‬‬
‫‪.‬‬
‫‪.‬‬
‫‪ENDIF‬‬
‫وﻓـﻲ ﻣﺛـل ﻫـذﻩ اﻟﺣﺎﻟـﺔ‪ ،‬ﻓـﺈن ﺗﺣﻘـق ﺷـرط اﻟﺗرﺟﻣــﺔ ﯾـؤدي إﻟـﻰ ﻣﻌﺎﻟﺟـﺔ ﺟﻣﯾـﻊ اﻟﺟﻣـل اﻟواﻗﻌـﺔ ﺑــﯾن ‪ IF‬و‬
‫‪ ENDIF‬ﻣ ــن ﻗﺑ ــل اﻷﺳ ــﻣﺑﻠر‪ ،‬وأن ﻋ ــدم ﺗﺣﻘ ــق اﻟ ــﺷرط ﻓﯾ ــﺗم اﺳ ــﺗﺛﻧﺎء ﺟﻣﯾ ــﻊ اﻟﺟﻣ ــل ﻓ ــﻲ اﻟﻣﻌﺎﻟﺟـ ــﺔ‬
‫ﺑواﺳطﺔ اﻷﺳﻣﺑﻠر وذﻟك ﻓﻲ ﺣﺎﻟﺔ ﻋدم اﺳﺗﺧدام ﻋﺑﺎرة ‪.ELSE‬‬

‫‪- ٤٦ -‬‬
‫ﻣﺛﺎل )‪:(21.5‬‬
‫‪IF X GT 20‬‬
‫‪.‬‬
‫‪.‬‬
‫‪ELSE‬‬
‫‪.‬‬
‫‪.‬‬
‫‪ENDIF‬‬

‫‪ ٢-٨‬ﺗوﺟﯾﻬﺔ ‪:(IF Equal to Zero) IFE‬‬


‫ﯾﺗم ﺗﺣﻘق اﻟﺷرط ﻓﻲ ﻫذﻩ اﻟﺣﺎﻟﺔ ﻋﻧدﻣﺎ ﺗؤول ﻗﯾﻣﺔ ‪ expression‬إﻟﻰ اﻟﺻﻔر‪.‬‬
‫واﻟﺷﻛل اﻟﻌﺎم‪:‬‬
‫‪IFE expression‬‬
‫‪.‬‬
‫‪.‬‬
‫]‪[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‬ﻣن ﻗﺑل اﻷﺳﻣﺑﻠر‪.‬‬

‫‪ ٨-٨‬ﺗوﺟﯾﻬﺔ ‪: (IF Different) IFDIF‬‬


‫ﺗﺳﺗﺧدم ﻫذﻩ اﻟﺗوﺟﯾﻬﺔ ﻋﺎدة ﻣﻊ اﻟﻣﺎﻛرو وذﻟك ﻟﻣﻘﺎرﻧﺔ ﻣﻌﺎﻣﻼت اﻟﻣﺎﻛرو ﻣﻊ أﺳﻣﺎء أو ﻗﯾم ﻣﻌﯾﻧﺔ‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫>‪IFDIF <Arg1>, <Arg2‬‬
‫‪.‬‬
‫‪.‬‬
‫]‪[ELSE‬‬
‫‪.‬‬
‫‪.‬‬
‫‪ENDIF‬‬
‫ﻣﻌﻧــﻰ ﻫــذﻩ اﻟﺗوﺟﯾﻬــﺔ أﻧــﻪ ﻋﻧــد اﺧــﺗﻼف اﻟﻣﻌــﺎﻣﻠﯾن ‪ Arg1‬و ‪ Arg2‬ﯾﻘــوم اﻷﺳــﻣﺑﻠر ﺑﻣﻌﺎﻟﺟــﺔ اﻟﺟﻣــل‬
‫اﻟواﻗﻌﺔ ﺑﯾن ‪ FDIF‬و ‪.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‬ﻋﻧــد ﻣــﺻﺎدﻓﺔ ﻫـذﻩ اﻟﺗوﺟﯾﻬــﺔ ﻓــﻲ اﻟﺑرﻧـﺎﻣﺞ‪ ،‬وﯾﻧﺗﻘــل اﻟــﺗﺣﻛم إﻟــﻰ‬
‫اﻟﺟﻣﻠﺔ اﻟﺗﺎﻟﯾﺔ ﻟﻧﻬﺎﯾﺔ اﻟﻣﺎﻛرو‪.‬‬

‫‪- ٥٠ -‬‬
‫اﻟوﺣدة اﻟﺳﺎدﺳﺔ‬
‫طرق اﻟﻌﻧوﻧﺔ وطﺎﻗم اﻟﺗﻌﻠﯾﻣﺎت اﻷﺳﺎﺳﯾﺔ‬

‫‪ -٢‬ﺗﻣﺛﯾل اﻟﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ وﻏﯾر اﻟرﻗﻣﯾﺔ ﻓﻲ اﻟذاﻛرة واﻟﻣﺳﺟﻼت ‪:‬‬


‫ﯾﻣﻛن ﺗﻘﺳﯾم أﻧواع اﻟﺑﯾﺎﻧﺎت ﻓﻲ ذاﻛرة اﻟﺣﺎﺳوب إﻟﻰ‪:‬‬
‫‪ -١‬اﻟﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ اﻟﻣﺳﺗﺧدﻣﺔ ﻓﻲ اﻟﻌﻣﻠﯾﺎت اﻟﺣﺳﺎﺑﯾﺔ‪.‬‬
‫‪ -٢‬اﻟرﻣوز اﻷﺑﺟدﯾﺔ اﻟﻌددﯾﺔ‪.‬‬
‫‪ -٣‬اﻟرﻣوز اﻷﺧرى )اﻟﻣﺳﺗﺧدﻣﺔ ﻷﻏراض ﺧﺎﺻﺔ ﻣﺛل رﻣوز اﻟﻌﻣﻠﯾﺎت اﻟﺣﺳﺎﺑﯾﺔ واﻷﻗواس(‪.‬‬

‫ﯾــﺗم ﺗﻣﺛﯾــل ﻫــذﻩ اﻷﻧ ـواع‪ ،‬ﺑﺎﺳــﺗﺛﻧﺎء اﻟﺑﯾﺎﻧــﺎت اﻟرﻗﻣﯾــﺔ ﻓــﻲ ذاﻛ ـرة اﻟﺣﺎﺳــوب وﻣــﺳﺟﻼﺗﻪ ﺑﺎﺳــﺗﺧدام إﺣــدى‬
‫طرق اﻟﺗرﻣﯾز اﻟﻣﺧﺗﻠﻔـﺔ‪ ،‬ﺣﯾـث ﯾﻣﺛـل ﻛـل رﻣـز ﻣـن ﻫـذﻩ اﻟرﻣـوز أو ﺣـرف ﻣـن ﻫـذﻩ اﻟﺣـروف ﺑﻣﺟﻣوﻋـﺔ‬
‫ﻣــن اﻟﺛﻧﺎﺋﯾــﺎت ﺗﻌﺗﻣــد ﻋﻠــﻰ ﻧظــﺎم اﻟﺗﻣﺛﯾــل اﻟﻣــﺳﺗﺧدم وﻋﻠــﻰ اﻟرﻣــز أو اﻟﺣــرف ﻧﻔــﺳﻪ‪ ،‬ﻋﻠﻣــﺎً ﺑــﺄن ﻣﻌظــم‬
‫اﻟﺣواﺳﯾب ﯾﻣﻛﻧﻬﺎ اﻟﺗﻌﺎﻣل ﻣﻊ ﻣﺟﻣوﻋﺔ ﻣﺧﺗﻠﻔـﺔ ﻣـن اﻷﻧظﻣـﺔ اﻟﻌددﯾـﺔ إﺿـﺎﻓﺔ إﻟـﻰ اﻟﻧظـﺎم اﻟﺛﻧـﺎﺋﻲ ﻣﺛـل‬
‫اﻟﺛﻣﺎﻧﻲ واﻟﺳﺎدس ﻋﺷري‪.‬‬
‫إن اﻟﻧظــﺎﻣﯾن اﻟﺛﻣــﺎﻧﻲ واﻟــﺳﺎدس ﻋــﺷري ﯾﻌﺗﺑ ـران ﻣــن اﻷﻧظﻣــﺔ اﻟﻌددﯾــﺔ اﻷﻛﺛــر اﻧﺗــﺷﺎراً ﻓــﻲ ﻛﺛﯾــر ﻣــن‬
‫ﻟﻐـﺎت اﻟﺗﺟﻣﯾـﻊ ﻷن اﻟﻌـدد اﻟﺛﻧـﺎﺋﻲ ذو اﻟﺛﻧﺎﺋﯾـﺎت اﻟﻛﺛﯾـرة ﯾﻣﻛـن أن ﯾﻣﺛـل ﺑﻬـذﯾن اﻟﻧظـﺎﻣﯾن ﺑﻌـدد أﻗـل ﻣـن‬
‫اﻟﺧﺎﻧﺎت‪.‬‬

‫‪ ١-٢‬ﺗﻣﺛﯾل اﻟﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ ‪:‬‬


‫ﯾﻣﻛن ﺗﻘﺳﯾم اﻟﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ ﺣﺳب طرﯾﻘﺔ ﺗﻣﺛﯾﻠﻬﺎ ﻓﻲ ذاﻛرة اﻟﺣﺎﺳوب إﻟﻰ‪:‬‬
‫‪ -‬اﻷﻋداد اﻟﺻﺣﯾﺣﺔ أو اﻷﻋداد اﻟﻣﻣﺛﻠﺔ ﺑﺎﻟﻧﻘطﺔ اﻟﺛﺎﺑﺗﺔ‪.‬‬
‫‪ -‬اﻷﻋداد اﻟﺣﻘﯾﻘﯾﺔ أو اﻷﻋداد اﻟﻣﻣﺛﻠﺔ ﺑﺎﺳﺗﺧدام اﻟﻧﻘطﺔ اﻟﻌﺎﺋﻣﺔ‪.‬‬
‫‪ -‬اﻷﻋداد اﻟﻣﻣﺛﻠﺔ ﺑﺎﻟﻧظﺎم اﻟﻣرﻣز اﻟﺛﻧﺎﺋﻲ اﻟﻌﺷري وﯾرﻣز ﻟﻪ ﺑﻧظﺎم ‪.BCD‬‬
‫‪ ١-١-٢‬اﻷﻋداد اﻟﺻﺣﯾﺣﺔ وطرق ﺗﻣﺛﯾﻠﻬﺎ داﺧل ذاﻛرة اﻟﺣﺎﺳوب وﻣﺳﺟﻼﺗﻪ ‪:‬‬
‫إن ﺗﻣﺛﯾـل اﻟﺑﯾﺎﻧـﺎت اﻟرﻗﻣﯾـﺔ داﺧـل ذاﻛـرة اﻟﺣﺎﺳـوب وﻣـﺳﺟﻼﺗﻪ ﺗﻌﺗﻣـد إﻟـﻰ ﺣــد ﻛﺑﯾـر ﻋﻠـﻰ طـول اﻟﻛﻠﻣــﺔ‬
‫اﻟﺗﺧزﯾﻧﯾــﺔ اﻟﻣﻌﻧوﻧــﺔ وطــول اﻟﻣــﺳﺟﻼت‪ ،‬إﻻ أﻧــﻪ ﺗوﺟــد ﺛﻼﺛــﺔ طــرق رﺋﯾــﺳﺔ ﺗــﺳﺗﺧدم ﻓــﻲ ﻣﻌظــم أﺟﻬ ـزة‬
‫اﻟﺣواﺳﯾب ﻟﺗﻣﺛﯾل اﻟﺑﯾﺎﻧﺎت اﻟﺻﺣﯾﺣﺔ ﻣﻧﻬﺎ‪:‬‬
‫‪ -١‬اﻟﺗﻣﺛﯾل ﺑﺎﺳﺗﺧدام اﻹﺷﺎرة واﻟﻣﻘدار‪.‬‬
‫‪ -٢‬اﻟﺗﻣﺛﯾل ﺑﺎﺳﺗﺧدام ﻧظﺎم اﻟﻣﻛﻣل ﻟﻸﺳﺎس اﻟﻣﺻﻐر )أو اﻟﻣﻛﻣل ﻟواﺣد ﻓﻲ اﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ(‪.‬‬
‫‪ -٣‬اﻟﺗﻣﺛﯾل ﺑﺎﺳﺗﺧدام ﻧظﺎم اﻟﻣﻛﻣل ﻟﻸﺳﺎس )أو اﻟﻣﻛﻣل ﻻﺛﻧﯾن ﻓﻲ اﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ(‪.‬‬

‫‪- ٥١ -‬‬
‫إن ﻫــذﻩ اﻟطــرق ﻟﺗﻣﺛﯾــل اﻟﺑﯾﺎﻧــﺎت اﻟرﻗﻣﯾــﺔ اﻟــﺻﺣﯾﺣﺔ ﺗــﺳﺗﺧدم ﻓــﻲ ﺣﺎﻟــﺔ ﻛــون اﻟﺑﯾﺎﻧــﺎت اﻟرﻗﻣﯾــﺔ ﺑﺈﺷــﺎرة‬
‫)ﺳــﺎﻟﺑﺔ أو ﻣوﺟﺑــﺔ(‪ .‬أﻣــﺎ ﻓــﻲ ﺣﺎﻟــﺔ ﻛــون اﻟﺑﯾﺎﻧــﺎت اﻟرﻗﻣﯾــﺔ اﻟــﺻﺣﯾﺣﺔ ﺑــدون إﺷــﺎرة )ﻣﺛــل ﻋﻧــﺎوﯾن ﻣواﻗــﻊ‬
‫اﻟذاﻛرة( ﻓﯾﺗم ﺗﻣﺛﯾﻠﻬﺎ ﺑﺎﺳﺗﺧدام اﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ ﺑدون إﺷﺎرة‪.‬‬

‫‪ -١‬اﻟﺗﻣﺛﯾل ﺑﺎﺳﺗﺧدام اﻹﺷﺎرة واﻟﻣﻘدار ‪:‬‬


‫ﯾﺗﻛ ــون اﻟﻌ ــدد اﻟﻣﻣﺛ ــل ﺑﻬ ــذا اﻟﻧظ ــﺎم ﻣ ــن ﺟـ ـزﺋﯾن‪ :‬اﻹﺷ ــﺎرة )‪ (Sign‬وﺗﻣﺛ ــل ﺑ ــﺎﻟﻣوﻗﻊ اﻟﺛﻧ ــﺎﺋﻲ اﻷﺧﯾ ــر‬
‫)أﻗﺻﻰ اﻟﯾﺳﺎر( واﻟﻣﻘدار واﻟﻣﻛون ﻣن اﻟﺧﺎﻧﺎت اﻟﻣﺗﺑﻘﯾﺔ ﻣن اﻟﻌدد‪.‬‬
‫ﻣﺛﺎل )‪: (1.6‬‬
‫ﺟدول )‪(2.6‬‬
‫ﺑﻌض اﻟﻣﻼﺣظﺎت ﻋﻠﻰ اﻟﺟدول اﻟﺳﺎﺑق‪:‬‬
‫‪ -‬ﯾﻣﺛـل اﻟـﺻﻔر ﺑﻧﻣطـﯾن ﻫﻣـﺎ ‪ ٠٠٠٠‬و ‪ ١٠٠٠‬ﻣﻣـﺎ ﯾـﺳﺑب ﺑﻌـض اﻹرﺑـﺎك إﺿـﺎﻓﺔ إﻟـﻰ ﺧـﺳﺎرة أﺣـد‬
‫ﻫذﯾن اﻟﻧﻣطﯾن دون ﻓﺎﺋدة‪ .‬وﻫذا اﻟوﺿﻊ ﺗم ﻣﻌﺎﻟﺟﺗﻪ ﺑﺎﺳﺗﺧدام ﻧظﺎم اﻟﻣﻛﻣل ﻻﺛﻧﯾن‪.‬‬
‫‪ -‬ﻟﺗﻣﺛﯾــل اﻷﻋــداد ﻣــن ‪ -٧‬إﻟــﻰ ‪ +٧‬ﯾﺣﺗــﺎج ﻫــذا اﻟﻧظــﺎم إﻟــﻰ أرﺑــﻊ ﺧﺎﻧــﺎت ﺛﻧﺎﺋﯾــﺔ‪ .‬ﻷن ﻋــدد اﻟﺧﺎﻧــﺎت‬
‫اﻟﺛﻧﺎﺋﯾــﺔ اﻟﻣــﺳﺗﺧدﻣﺔ ﻟﺗﻣﺛﯾــل اﻷﻋــداد ﺑﻬــذﻩ اﻟطرﯾﻘــﺔ ﻫــو ‪ n‬ﻓــﺈن ﻣــدى اﻟﻘــﯾم اﻟﻌددﯾــﺔ اﻟﺗــﻲ ﯾﻣﻛــن ﺗﻣﺛﯾﻠﻬــﺎ‬
‫‪+(2‬‬ ‫‪ –(2‬و )‪-1‬‬ ‫ﯾﺗراوح ﺑﯾن )‪-1‬‬

‫‪ -٢‬ﺗﻣﺛﯾل اﻟﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ ﺑﺎﺳﺗﺧدام طرﯾﻘﺔ اﻟﻣﻛﻣل ﻟواﺣد ‪:‬‬


‫ﻟﻣﻌرﻓﺔ ﻛﯾف ﺗﻣﺛل اﻷﻋداد اﻟﺻﺣﯾﺣﺔ ﺑﺎﺳﺗﺧدام طرﯾﻘﺔ اﻟﻣﻛﻣل ﻟواﺣد ﻧﺄﺧذ اﻟﻣﺛﺎل اﻟﺗﺎﻟﻲ‪:‬‬
‫ﻣﺛﺎل )‪: (3.6‬‬
‫ﻣﺛل اﻟﻌدد ‪ +٧‬ﺑﺎﺳﺗﺧدام ﻧظﺎم اﻟﻣﻛﻣل ﻟواﺣد‪.‬‬
‫اﻟﺣل‪:‬‬
‫‪ -١‬ﯾﻣﺛل اﻟﻣﻘدار ﺑﺎﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ )‪.(١١١‬‬
‫‪ -٢‬ﺗﺿﺎف ﻟﻪ ﻗﯾﻣﺔ اﻹﺷﺎرة )‪(٠١١١‬‬
‫ﻣﺛﺎل )‪: (4.6‬‬
‫ﻣﺛل اﻟﻌدد ‪ -١٢‬ﺑﺎﺳﺗﺧدام طرﯾﻘﺔ اﻟﻣﻛﻣل ﻟواﺣد‪.‬‬
‫اﻟﺣل‪:‬‬
‫‪١١٠٠ = ١٢ -١‬‬
‫‪ -٢‬ﺑﻣﺎ أن اﻹﺷﺎرة ﺳﺎﻟﺑﺔ ﻓﯾﺣول ﻛل ‪ ٠‬إﻟﻰ ‪ ١‬واﻟﻌﻛس ﻧﺣﺻل ﻋﻠﻰ ‪٠٠١١‬‬
‫‪ -٣‬ﯾوﺿﻊ رﻗم اﻹﺷﺎرة ‪١٠٠١١‬‬

‫‪- ٥٢ -‬‬
‫إن ﻫــذﻩ اﻟطرﯾﻘــﺔ ﺗﻌــﺎﻧﻲ ﻣــن ﻧﻔــس اﻟﻌﯾــوب اﻟﺗــﻲ ﺗﻌــﺎﻧﻲ ﻣﻧﻬــﺎ طرﯾــق اﻹﺷــﺎرة واﻟﻣﻘــدار ﻣــن ﺣﯾــث وﺟــود‬
‫ﺗﻣﺛﯾﻠﯾن ﻣﺧﺗﻠﻔﯾن ﻟﻠﺻﻔر‪.‬‬
‫‪ -٣‬ﺗﻣﺛﯾل اﻟﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ ﺑﺎﺳﺗﺧدام طرﯾﻘﺔ اﻟﻣﻛﻣل ﻷﺛﻧﯾن ‪:‬‬
‫ﻓﻲ ﻫذﻩ اﻟطرﯾﻘﺔ ﯾوﺟد ﺗﻣﺛﯾل واﺣد ﻟﻠﻌدد ‪.٠‬‬
‫أﻣﺎ ﺑﺎﻟﻧﺳﺑﺔ ﻟﺗﻣﺛﯾـل اﻷﻋـداد اﻟـﺻﺣﯾﺣﺔ اﻟﻣوﺟﺑـﺔ ﻓﻬـو ﻣـﺷﺎﺑﻪ ﻟﻠطـرﯾﻘﺗﯾن اﻟـﺳﺎﺑﻘﺗﯾن‪ ،‬واﻻﺧـﺗﻼف ﻫـو ﻓـﻲ‬
‫ﺗﻣﺛﯾل اﻷﻋداد اﻟﺳﺎﻟﺑﺔ‪.‬‬
‫ﺟدول )‪(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‬‬ ‫أو ﺑﺎﻟﺻﯾﻐﺔ‬

‫‪ ٢-١-٢‬ﺗﻣﺛﯾل اﻷﻋداد اﻟﺣﻘﯾﻘﯾﺔ ‪:‬‬


‫ﯾطﻠ ــق ﻋﻠ ــﻰ ﻣﺛ ــل ﻫ ــذا اﻟﻧ ــوع ﻣ ــن ﺗﻣﺛﯾ ــل اﻟﺑﯾﺎﻧ ــﺎت اﻷﻋ ــداد ذات اﻟﻧﻘط ــﺔ اﻟﻌﺎﺋﻣ ــﺔ أو اﻟﻣﻣﺛﻠ ــﺔ ﺑﺎﻟﺗﻣﺛﯾ ــل‬
‫ـدا‪.‬‬
‫اﻷﺳــﻲ‪ .‬وﯾــﺳﺗﺧدم ﻫــذا اﻟﻧــوع ﻣــن طــرق ﺗﻣﺛﯾــل اﻟﺑﯾﺎﻧــﺎت ﻟﺗﻣﺛﯾــل اﻷﻋــداد اﻟﻛﺑﯾ ـرة ﺟــداً واﻟــﺻﻐﯾرة ﺟـ ً‬
‫ﻟذﻟك ﯾﻣﻛن ﻛﺗﺎﺑﺔ أي ﻋدد ﻋﻠﻰ اﻟﺷﻛل اﻟﺗﺎﻟﻲ‪:‬‬
‫‪N=F*B +E‬‬
‫ﺣﯾث أن‪:‬‬
‫‪ F‬ﺗﻣﺛل اﻟﻛﺳر وﻗﯾﻣﺗﻬﺎ )‪.(0 < F < 1‬‬
‫‪ B‬ﺗﻣﺛل أﺳﺎس اﻟﻧظﺎم اﻟﻌددي اﻟﻣﺳﺗﺧدم )‪ ٢‬ﻓﻲ ﺣﺎﻟﺔ اﻟﻧظﺎم اﻟﺛﻧﺎﺋﻲ(‪.‬‬
‫‪ E‬ﺗﻣﺛل اﻷس‬
‫ﻋﻠﻰ ﺳﺑﯾل اﻟﻣﺛﺎل‪:‬‬
‫‪.101 * 2‬‬ ‫اﻟﻌدد اﻟﺛﻧﺎﺋﻲ ‪ ١٠١٠٠٠٠٠٠٠٠‬ﯾﻣﻛن ﺗﻣﺛﯾﻠﻪ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬
‫‪.0.101 * 2‬‬ ‫ﻛذﻟك اﻟﻌدد اﻟﺛﻧﺎﺋﻲ ‪ 0.00000000101‬ﯾﻣﺛل ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬

‫ﺗوﺟد طرﯾﻘﺗﯾن ﻟﺗﻣﺛﯾل اﻟﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ ﺑطرﯾﻘﺔ اﻟﻧﻘطﺔ اﻟﻌﺎﺋﻣﺔ ﻫﻣﺎ‪:‬‬


‫‪ -١‬اﻟطرﯾﻘﺔ اﻷوﻟﻰ وﺗﻣﺛل ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬

‫إﺷﺎرة اﻷس‬ ‫اﻷس ‪Exponent‬‬ ‫إﺷﺎرة اﻟﻛﺳر‬ ‫اﻟﻛﺳر ‪Significant‬‬

‫‪- ٥٥ -‬‬
‫ﻣﺛﺎل )‪: (11.6‬‬
‫ﻣﺛل اﻟﻌدد اﻟﺛﻧﺎﺋﻲ ‪ 11011.1001101‬ﻣﺳﺗﺧدﻣﺎً ‪ ١٥‬ﻣوﻗﻌﺎً ﻟﻠﻛﺳر و ‪ ٧‬ﻣواﻗﻊ ﻟﻸس‪.‬‬
‫اﻟﺣل‪:‬‬

‫‪٠‬‬ ‫‪٠٠٠٠١٠١‬‬ ‫‪٠‬‬ ‫‪١٠١١١٠٠١١٠١٠٠‬‬

‫‪ -٢‬اﻟطرﯾﻘﺔ اﻟﺛﺎﻧﯾﺔ ﺣﯾث ﯾﺗم اﻻﺳﺗﻐﻧﺎء ﻋن إﺷﺎرة اﻷس‪ ،‬وذﻟك ﺑﺟﻌل ﻗﯾﻣﺔ اﻷس داﺋﻣﺎً ﻣوﺟﺑﺔ‪:‬‬
‫ﯾﻣﻛن ﺗﻣﺛﯾل ﻫذﻩ اﻟطرﯾﻘﺔ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬

‫إﺷﺎرة اﻟﻜﺴﺮ‬ ‫اﻟﻣﻣﯾز‬ ‫اﻟﻛﺳر‬

‫ﻣﺛﺎل )‪: (12.6‬‬

‫‪ ٣-١-٢‬ﺗﻣﺛﯾل اﻟﺑﯾﺎﻧﺎت اﻟرﻗﻣﯾﺔ ﺑﺎﺳﺗﺧدام اﻟﺗرﻣﯾز اﻟﻌﺷري اﻟﺛﻧﺎﺋﻲ ‪: BCD‬‬


‫وذﻟــك ﺑﺗﺣوﯾــل ﻛــل رﻗــم ﻋــﺷري إﻟــﻰ ﻣــﺎ ﯾﻛﺎﻓﺋــﻪ ﻣــن أرﺑــﻊ ﺧﺎﻧــﺎت ﺛﻧﺎﺋﯾــﺔ ﻣــن ﺣﯾــث اﻟﻘﯾﻣــﺔ ووﺿــﻊ ﺗﻠــك‬
‫اﻟﺧﺎﻧﺎت اﻟﺛﻧﺎﺋﯾﺔ إﻟﻰ ﺟوار ﺑﻌﺿﻬﺎ اﻟﺑﻌض‪.‬‬
‫ﯾﻣﻛــن ﺗﻛــوﯾن ‪) ٢‬أي ‪ (١٦‬ﻧﻣــط ﺛﻧــﺎﺋﻲ ﻋﻧــد اﺳــﺗﺧدام ‪ ٤‬ﻣواﻗــﻊ‪ .‬وﺑﻣــﺎ أن ﻫﻧــﺎك ‪ ١٠‬أرﻗــﺎم ﻋــﺷرﯾﺔ‬
‫ﻟذﻟك ﺗﺳﺗﺧدم ‪ ١٠‬أﻧﻣﺎط ﺛﻧﺎﺋﯾﺔ وﯾﺑﻘﻰ ‪ ٦‬أﻧﻣﺎط دون اﺳﺗﺧدام‪ .‬ﻟذﻟك ﯾﻣﻛن اﺳﺗﺧدام أﺣـد ﻫـذﻩ اﻷﻧﻣـﺎط‬
‫ﻟﺗﻣﺛﯾل اﻹﺷﺎرة اﻟﻣوﺟﺑﺔ وآﺧر ﻟﺗﻣﺛﯾل اﻟﺳﺎﻟﺑﺔ‪ .‬وﯾﻣﻛن وﺿﻌﻪ إﻣـﺎ أﻗـﺻﻰ ﯾﻣـﯾن أو أﻗـﺻﻰ ﯾـﺳﺎر ﺗﻣﺛﯾـل‬
‫اﻟﻌدد )ﻣﺛل ‪ ١٠١٠‬أو ‪.(١٠١١‬‬
‫ﻣﺛﺎل )‪: (13.6‬‬
‫ﻣﺛل اﻟﻌدد ‪ -٤٣٥٨‬ﻋﻠﻰ ﻓرض أن إﺷﺎرة اﻟرﻗم إﻟﻰ أﻗﺻﻰ اﻟﯾﺳﺎر‪.‬‬
‫اﻟﺣل‪:‬‬
‫‪١٠١١‬‬ ‫‪٠١٠٠‬‬ ‫‪٠٠١١‬‬ ‫‪٠١٠١‬‬ ‫‪١٠٠٠‬‬

‫‪ ٢-٢‬ﺗﻣﺛﯾل اﻟﺑﯾﺎﻧﺎت ﻏﯾر اﻟرﻗﻣﯾﺔ داﺧل ذاﻛرة اﻟﺣﺎﺳوب وﻣﺳﺟﻼﺗﻪ ‪:‬‬


‫ﯾوﺟــد ﻋــدة ﺷــﯾﻔرات ﯾﻣﻛــن اﺳــﺗﺧداﻣﻬﺎ ﻟﻬــذا اﻟﻐــرض‪ ،‬إﻻ أﻧــﻪ ﺳــﯾﺗم اﻟﺗرﻛﯾــز ﻋﻠــﻰ ﻧظــﺎﻣﯾن ﻣﻬﻣــﯾن ﻣــن‬
‫أﻧظﻣﺔ اﻟﺗﺷﻔﯾر واﻷﻛﺛر ﺷﯾوﻋﺎً وﻫﻣﺎ‪:‬‬
‫‪ -‬ﻧظﺎم اﻟﺗﺑﺎدل اﻟرﻣزي اﻟﻌﺷري اﻟﺛﻧﺎﺋﻲ اﻟﻣﻣﺗد )‪.(EBCDIC‬‬
‫‪ -‬ﻧظﺎم اﻟﺷﯾﻔرة اﻷﻣرﯾﻛﻲ اﻟﻣﻌﯾﺎري ﻟﺗﺑﺎدل اﻟﻣﻌﻠوﻣﺎت )‪.(ASCII‬‬

‫‪- ٥٦ -‬‬
‫‪ ١-٢-٢‬ﻧظﺎم )‪: (EBCDIC‬‬
‫وﻫو اﻣﺗداد ﻟﻧظﺎم ‪ BCD‬وﻣن ﻣﻣﯾزات ﺷﯾﻔرة ‪ BCD‬ﻣﺎ ﯾﻠﻲ‪:‬‬
‫‪ -‬ﺗﺳﺗﺧدم ‪ ٦‬ﺧﺎﻧﺎت ﺛﻧﺎﺋﯾﺔ ﻟﺗﻣﺛﯾل اﻟرﻣوز‪.‬‬
‫‪ -‬ﺗﺟـزأ ﺷـﯾﻔرة اﻟرﻣـز إﻟـﻰ ﻗـﺳﻣﯾن‪ :‬اﻷول ﻣﻛـون ﻣــن ﺧـﺎﻧﺗﯾن وﯾـﺳﻣﻰ ﻧطـﺎق‪ ،‬واﻟﺛـﺎﻧﻲ ﯾﻛـون ﻣﻛـون ﻣــن‬
‫‪ ٤‬ﺧﺎﻧﺎت وﯾﺳﻣﻰ ﺑﺎﻟرﻗم‪.‬‬
‫ﻓﻣﺛﻼً ﻟو ﻓرﺿﻧﺎ رﻣزاً ﻣﻌﯾﻧﺎً ﯾﻘﻊ ﻓﻲ اﻟﻣﺟﻣوﻋﺔ اﻟﺛﺎﻧﯾﺔ وﻛﺎن ﺗرﺗﯾﺑﻪ ﺿـﻣن ﻋﻧﺎﺻـر ﻣﺟﻣوﻋﺗـﻪ اﻟﺧـﺎﻣس‬
‫‪. ١٠٠١٠١‬‬ ‫ﻓﺈن ﻫذا اﻟرﻣز ﺳﯾﻣﺛل ﺑﺎﻟﻧﻣط‪:‬‬
‫وﺑﻣﺎ أن ﻣوﻗﻌﯾن ﺛﻧﺎﺋﯾﯾن ﻗد ﺧﺻﺻﺎ ﻟﻠﻣﺟﻣوﻋﺔ ﻓﻬذا ﯾﻌﻧﻲ أﻧﻪ ﯾﻣﻛن ﺗﻣﺛﯾل ‪ ٤‬ﻣﺟﻣوﻋﺎت ﻛﻣﺎ ﯾﻠﻲ‪:‬‬
‫‪٠٠‬‬ ‫اﻟﻣﺟﻣوﻋﺔ اﻷوﻟﻰ‬
‫‪٠١‬‬ ‫اﻟﻣﺟﻣوﻋﺔ اﻟﺛﺎﻧﯾﺔ‬
‫‪١٠‬‬ ‫اﻟﻣﺟﻣوﻋﺔ اﻟﺛﺎﻟﺛﺔ‬
‫اﻟﻣﺟﻣوﻋﺔ اﻟراﺑﻌﺔ ‪١١‬‬
‫‪) ٢‬أي ‪(١٦‬‬ ‫ﻛذﻟك ﺑﻣﺎ أﻧﻪ ﺗم ﺣﺟز ‪ ٤‬ﻣواﻗـﻊ ﻟﻌﻧﺎﺻـر ﻛـل ﻣﺟﻣوﻋـﺔ‪ ،‬ﻓﻬـذا ﯾﻌﻧـﻲ أﻧـﻪ ﯾﻣﻛـن ﺗﻣﺛﯾـل‬
‫ﻋﻧــﺻراً ﻓــﻲ اﻟﻣﺟﻣوﻋــﺔ اﻟواﺣــدة‪ .‬ﻟــذﻟك ﯾﻛــون ﻋــدد اﻟرﻣــوز اﻟﻛﻠــﻲ اﻟﺗــﻲ ﯾﻣﻛــن ﺗﻣﺛﯾﻠﻬــﺎ ﺑﺎﺳــﺗﺧدام ﻫــذا‬
‫اﻟﻧظﺎم ﻣﺳﺎوﯾﺎً )‪ (٦٤=١٦*٤‬رﻣزاً‪ .‬ﻟذﻟك ﯾﻌﺎﻧﻲ ﻫذا اﻟﻧظﺎم ﻣن ﻗﻠﺔ ﻋدد اﻟرﻣوز اﻟﺗﻲ ﯾﻣﻛن ﺗﻣﺛﯾﻠﻬﺎ‪.‬‬
‫ﻟذﻟك ﻗﺎﻣت ﺷرﻛﺔ ‪ IBM‬ﺑﺗطوﯾر ﻧظﺎم ‪ EBCDIC‬ﻻﺳﺗﺧداﻣﻪ ﻣﻊ أﺟﻬزﺗﻬﺎ‪.‬‬
‫وﺗﻣﺗﺎز ﻫذﻩ اﻟﺷﯾﻔرة ﺑﺎﻟﻣﯾزات اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬ﺗ ــﺳﺗﺧدم ‪ ٨‬ﺧﺎﻧ ــﺎت ﺛﻧﺎﺋﯾ ــﺔ ﻟﺗﻣﺛﯾ ــل اﻟرﻣ ــوز ﺣﯾ ــث ﺗﺧ ــﺻص اﻟﺧﺎﻧ ــﺎت اﻷرﺑ ــﻊ ﻣ ــن أﻗ ــﺻﻰ اﻟﯾ ــﺳﺎر‬
‫ﻟﻠﻧطﺎق‪ ،‬واﻟﺧﺎﻧﺎت اﻷرﺑﻊ ﻣن أﻗﺻﻰ اﻟﯾﻣﯾن ﻟﻠرﻗم‪.‬‬
‫‪) ٢‬أي ‪ (٢٥٦‬رﻣزاً‪.‬‬ ‫‪ -‬ﯾﺑﻠﻎ ﻋدد اﻟرﻣوز اﻟﺗﻲ ﯾﻣﻛن ﺗﻣﺛﯾﻠﻬﺎ‬
‫‪ -‬ﺗﻘﻊ اﻷرﻗﺎم ﺑﻌد اﻷﺣرف اﻷﺑﺟدﯾﺔ ﻓﻲ اﻟﺗرﺗﯾب‪.‬‬
‫‪ -‬اﻟﺣروف اﻟﺻﻐﯾرة ﺗﺳﺑق اﻟﺣروف اﻟﻛﺑﯾرة‪.‬‬
‫‪ -‬اﻷرﻗﺎم ﻣرﺗﺑﺔ ﺑﺎﻟﻧﺳﺑﺔ إﻟﻰ ﺑﻌﺿﻬﺎ اﻟﺑﻌض‪ ،‬وﻛذﻟك اﻷﺣرف اﻷﺑﺟدﯾﺔ اﻟﻛﺑﯾرة واﻟﺻﻐﯾرة‪.‬‬
‫أﻧظر اﻟﺟدول )‪(5.6‬‬
‫‪ ٢-٢-٢‬ﻧظﺎم ‪: ASCII‬‬
‫ﻣن ﻣﻣﯾزات ﻫذﻩ اﻟﺷﯾﻔرة‪:‬‬
‫‪) ٢‬أي ‪ (١٢٨‬رﻣزًا ﻓﻘط‪.‬‬ ‫‪ -‬ﺗﺳﺗﺧدم ‪ ٧‬ﺧﺎﻧﺎت ﺛﻧﺎﺋﯾﺔ ﻟﺗﻣﺛﯾل اﻟرﻣوز‪ ،‬أي ﯾﻣﻛن ﺗﻣﺛﯾل‬
‫‪ -‬ﺗﻘﻊ اﻷرﻗﺎم ﻗﺑل اﻟﺣروف اﻷﺑﺟدﯾﺔ‪.‬‬
‫‪ -‬اﻷرﻗﺎم ﻣرﺗﺑﺔ ﺑﺎﻟﻧﺳﺑﺔ إﻟﻰ ﺑﻌﺿﻬﺎ اﻟﺑﻌض‪ ،‬وﻛذﻟك اﻷﺣرف اﻷﺑﺟدﯾﺔ اﻟﻛﺑﯾرة واﻟﺻﻐﯾرة‪.‬‬
‫أﻧظر اﻟﺟدول )‪(6.6‬‬

‫‪- ٥٧ -‬‬
‫‪ -٣‬طرق اﻟﻌﻧوﻧﺔ ‪:‬‬
‫ﯾﻣﻛن أن ﺗﻛون اﻟﺑﯾﺎﻧﺎت اﻟﻣراد ﻣﻌﺎﻟﺟﺗﻬـﺎ ﻓـﻲ ذاﻛـرة اﻟﺣﺎﺳـوب أو ﻓـﻲ ﻣـﺳﺟﻼﺗﻪ أو ﻓـﻲ ﻣﻧﺎﻓـذ اﻹدﺧـﺎل‬
‫واﻹﺧراج أو ﺿﻣن اﻟﺗﻌﻠﯾﻣﺔ ﻧﻔﺳﻬﺎ‪.‬‬
‫ﻓﺑﺎﺧﺗﻼف أﻣﻛﻧﺔ ﺗواﺟد اﻟﺑﯾﺎﻧﺎت اﻟﻼزﻣﺔ ﻹﺟراء ﻋﻣﻠﯾـﺔ ﻣﻌﯾﻧـﺔ ﺗﺧﺗﻠـف طـرق اﻟوﺻـول إﻟﯾﻬـﺎ )أي طـرق‬
‫اﻟﻌﻧوﻧﺔ(‪.‬‬
‫‪ ١-٣‬اﻟﻌﻧوﻧﺔ اﻟﻔورﯾﺔ ‪: Immediate Addressing‬‬
‫ﺣــﺳب ﻫــذﻩ اﻟطرﯾﻘــﺔ ﺗﻛــون اﻟﺑﯾﺎﻧــﺎت اﻟﻣطﻠوﺑــﺔ ﻣﺧزﻧــﺔ ﻓــﻲ ﻧﻔــس اﻟﺗﻌﻠﯾﻣــﺔ‪ .‬وﯾﻣﻛــن أن ﯾﻛــون طوﻟﻬــﺎ ‪٨‬‬
‫ﺛﻧﺎﺋﯾﺎت )ﺑﺎﯾت( أو ‪ ١٦‬ﺛﻧﺎﺋﯾﺔ )ﻛﻠﻣﺔ(‪.‬‬
‫ﻣﺛﺎل )‪: (15.6‬‬
‫‪MOV AX, 150H‬‬
‫وﻫذا ﯾؤدي إﻟﻰ ﺗﺣرﯾك اﻟﻌدد ‪ ١٥٠‬ﺑﺎﻟﻧظﺎم اﻟﺳﺎدس ﻋﺷري إﻟﻰ اﻟﻣﺳﺟل ‪.AX‬‬

‫ﻣﺛﺎل )‪: (16.6‬‬


‫‪K EQU 1024‬‬
‫‪MOV AX, K‬‬
‫ﺣﯾث ﯾﺗم ﺗﺧزﯾن ﻗﯾﻣﺔ ‪ K‬وﻫﻲ ‪ ١٠٢٤‬ﻓﻲ اﻟﻣﺳﺟل ‪.AX‬‬
‫‪ ٢-٣‬اﻟﻌﻧوﻧﺔ ﺑﺎﺳﺗﺧدام اﻟﻣﺳﺟﻼت ‪: Register Addressing‬‬
‫ﻣﺛﺎل )‪: (17.6‬‬
‫‪MOV BX, AX‬‬
‫ﺣﯾــث ﯾــﺗم ﻧﻘــل ﻣﺣﺗوﯾــﺎت اﻟﻣــﺳﺟل ‪ AX‬إﻟــﻰ اﻟﻣــﺳﺟل ‪ BX‬وذﻟــك دون ﺗﻐﯾﯾــر ﻓــﻲ ﻣﺣﺗوﯾــﺎت اﻟﻣــﺳﺟل‬
‫‪.AX‬‬
‫‪ ٣-٣‬اﻟﻌﻧوان اﻟﻔﻌﺎل ﻟﻠﺑﯾﺎﻧﺎت ‪: Data Effective Address‬‬
‫اﻟﻣﻘـﺻود ﺑـﺎﻟﻌﻧوان اﻟﻔﻌــﺎل ﻟﻠﺑﯾﺎﻧـﺎت ﻓﻬــو ﺑُﻌـد ﻣوﻗــﻊ اﻟـذاﻛرة اﻟــذي ﯾﺣﺗـوي ﻋﻠــﻰ ﻫـذﻩ اﻟﺑﯾﺎﻧــﺎت ﻣـن ﺑداﯾــﺔ‬
‫اﻟﻘطﺎع اﻟذي ﯾﺣﺗوي ﻋﻠﻰ ﻫذا اﻟﻣوﻗﻊ‪.‬‬
‫وﯾـ ــﺳﺗﺧدم اﻟﻌﻧ ـ ـوان اﻟﻔﻌـ ــﺎل ﻓـ ــﻲ ﺣـ ــﺳﺎب اﻟﻌﻧ ـ ـوان اﻟﺣﻘﯾﻘـ ــﻲ ﻟﻠﺑﯾﺎﻧـ ــﺎت‪ .‬وﻟﺑﯾـ ــﺎن طرﯾﻘـ ــﺔ ﺣـ ــﺳﺎب اﻟﻌﻧ ـ ـوان‬
‫اﻟﺣﻘﯾﻘﻲ‪:‬‬
‫‪ -‬ﻧﻔرض أن اﻟﺑﯾﺎﻧﺎت ﻣﺧزﻧﺔ ﻓﻲ ﻗطﺎع اﻟﺑﯾﺎﻧﺎت وأن ﻋﻧوان ﺑداﯾﺔ ﻫذا اﻟﻘطﺎع ﻫو ‪.034FH‬‬
‫‪ -‬ﻛذﻟك ﻧﻔرض أن اﻟﻌﻧوان اﻟﻔﻌﺎل ﻟﻠﺑﯾﺎﻧﺎت ﻫو ‪ ٣٢‬ﺑﺎﯾت ﻣن ﺑداﯾﺔ اﻟﻘطﺎع‪.‬‬
‫‪ -‬ﯾــﺗم ﺣــﺳﺎب ﻗﯾﻣــﺔ اﻟﻌﻧـ ـوان اﻟﺣﻘﯾﻘــﻲ ﺑﺈﺿــﺎﻓﺔ ﻗﯾﻣ ــﺔ اﻟﻌﻧ ـوان اﻟﻔﻌــﺎل )‪ (٣٢‬إﻟ ــﻰ اﻟﻘﯾﻣــﺔ اﻟﻣﺧزﻧــﺔ ﻓ ــﻲ‬
‫ﻣــﺳﺟل ﻗطــﺎع اﻟﺑﯾﺎﻧــﺎت )‪ (DS‬ﺑﻌــد ﺿ ـرﺑﻪ ﺑﺎﻟﻌــدد ‪ ١٦‬وذﻟــك ﻟﻠﺣــﺻول ﻋﻠــﻰ ﻋﻧ ـوان ﻣﻛــون ﻣــن ‪٢٠‬‬
‫ﺛﻧﺎﺋﯾﺔ ﺗطﺎﺑق ﻋدد ﺧطوط ﻧﺎﻗﻠﺔ اﻟﻌﻧوان اﻟـ ‪.٢٠‬‬

‫‪- ٥٨ -‬‬
‫ﻟــذﻟك ﯾــﺿﺎف اﻟــرﻗم ‪ ٠‬إﻟــﻰ أﻗــﺻﻰ ﯾﻣــﯾن اﻟﻘﯾﻣــﺔ ‪ 034FH‬اﻟﻣﺧزﻧــﺔ ﻓــﻲ اﻟﻣــﺳﺟل ‪ .DS‬وﻫــذا ﻣﻛــﺎﻓﺊ‬
‫ﻟﺿرب اﻟﻘﯾﻣﺔ ﺑﺎﻟﻌدد ‪.١٦‬‬
‫‪ -‬ﺑﻌد ذﻟك ﺗﺗم ﻋﻣﻠﯾﺔ اﻹﺿﺎﻓﺔ ﻋﻠﻰ اﻟﻧﺣو اﻵﺗﻲ‪:‬‬
‫‪034F0‬‬
‫‪٠٠٠٣٢‬‬ ‫‪+‬‬
‫ــــــ‬
‫)‪ = (٠٣٥٢٢‬ﻗﯾﻣﺔ اﻟﻌﻧوان اﻟﺣﻘﯾﻘﻲ ﻟﻠﺑﯾﺎﻧﺎت اﻟﻣطﻠوﺑﺔ‬

‫‪ ٤-٣‬ﻋﻧوﻧﺔ اﻟﺑﯾﺎﻧﺎت اﻟﻣﺧزوﻧﺔ ﻓﻲ اﻟذاﻛرة ‪:‬‬


‫‪ ١-٤-٣‬اﻟﻌﻧوﻧﺔ اﻟﻣﺑﺎﺷرة ‪: Direct Addressing‬‬
‫ﻓـﻲ ﻫـذا اﻟﻧــوع ﻣـن اﻟﻌﻧوﻧــﺔ ﯾﻘـﻊ اﻟﻌﻧـوان اﻟﻔﻌــﺎل ﻟﻣوﻗـﻊ اﻟــذاﻛرة اﻟﻣطﻠـوب اﻟوﺻـول إﻟﯾــﻪ ﺿـﻣن اﻟﺗﻌﻠﯾﻣــﺔ‬
‫ﻧﻔﺳﻬﺎ‪ .‬وﯾﻛﺗب اﻟﻌﻧوان ﻓﻲ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻠﻰ ﺷﻛل اﺳم ﻟﻣوﻗﻊ اﻟذاﻛرة اﻟذي ﻧرﻏب ﻓﻲ اﻟوﺻول إﻟﯾﻪ‪.‬‬
‫وﻋﻧد ﺗرﺟﻣﺔ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺗﻲ ﺗﺳﺗﺧدم ﻫذا اﻟﻧوع ﻣن اﻟﻌﻧوﻧﺔ‪ ،‬ﯾﻘـوم اﻟﻣﺗـرﺟم ﺑﺣـﺳﺎب اﻟﻌﻧـوان اﻟﻔﻌـﺎل ﻋﻠـﻰ‬
‫ﺷﻛل ﻗﯾﻣﺔ ﺻﺣﯾﺣﺔ ﺗﻣﺛل ُﺑﻌد ﻫذا اﻟﻣوﻗﻊ ﻣن ﺑداﯾﺔ اﻟﻘطﺎع اﻟذي ﯾﺣﺗوي ﻋﻠﻰ اﻟﻣوﻗﻊ‪.‬‬
‫وﻏﺎﻟﺑﺎً ﻣﺎ ﯾطﻠـق ﻋﻠـﻰ ﻫـذﻩ اﻟﻘﯾﻣـﺔ ﻣﻘـدار اﻹزاﺣـﺔ ‪ .Offset‬ﻟـذﻟك ﻓـﻲ اﻟﻌﻧوﻧـﺔ اﻟﻣﺑﺎﺷـرة‪ ،‬ﯾﻛـون اﻟﻌﻧـوان‬
‫اﻟﻔﻌﺎل ﻣﺳﺎوﯾﺎً ﻟﻘﯾﻣﺔ اﻹزاﺣﺔ‪.‬‬
‫ﻣﺛﺎل )‪: (18.6‬‬
‫ﯾؤدي ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪MOV AX, Table‬‬
‫إﻟﻰ ﻧﻘل ﻣﺣﺗوى ﻣوﻗﻊ اﻟذاﻛرة اﻟﻣﻌﻧون ﺑﺎﻻﺳم ‪ Table‬إﻟﻰ اﻟﻣﺳﺟل ‪.AX‬‬
‫ﻓﻠـو ﻓرﺿـﻧﺎ أن ﺑﻌــد اﻟﻣوﻗـﻊ ‪ Table‬ﻣـن ﺑداﯾــﺔ اﻟﻘطـﺎع ﻫــو ‪ ،٣‬وأن ﻋﻧـوان ﺑداﯾـﺔ اﻟﻘطــﺎع اﻟـذي ﯾﺣﺗــوي‬
‫ﻋﻠﻰ ﻫذا اﻟﻣوﻗﻊ ﻫو ‪ 0205H‬ﻓﺈن ﺣﺳﺎب اﻟﻌﻧوان اﻟﺣﻘﯾﻘﻲ ﯾﺗم ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬
‫اﻟﻌﻧوان اﻟﺣﻘﯾﻘﻲ = )‪(٠٢٠٥٣ = ٠٢٠٥٠ + ٣ = ١٦ * ٠٢٠٥ + ٣‬‬
‫أﻧظر اﻟﺷﻛل )‪.(1.6‬‬

‫‪ ٢-٤-٣‬اﻟﻌﻧوﻧﺔ ﻏﯾر اﻟﻣﺑﺎﺷرة ﺑﺎﺳﺗﺧدام اﻟﻣﺳﺟﻼت ‪: Register Indirect Addressing‬‬


‫ﻓــﻲ ﻫــذﻩ اﻟطرﯾﻘــﺔ‪ ،‬ﯾﻛــون اﻟﻌﻧ ـوان اﻟﻔﻌــﺎل ﻣﺧزﻧــﺎً ﻓــﻲ أﺣــد اﻟﻣــﺳﺟﻼت اﻟﺗﺎﻟﯾــﺔ‪ :‬ﻣــﺳﺟل اﻷﺳــﺎس ‪،BX‬‬
‫ﻣــﺳﺟل ﻣؤﺷــر اﻷﺳــﺎس ‪ ،BP‬وﻣــﺳﺟل ﻓﻬرﺳــﺔ اﻟﻣــﺻدر ‪ ،SI‬وﻣــﺳﺟل ﻓﻬرﺳــﺔ ﺣﻘــل ﻣــﺳﺗﻘﺑل اﻟﺑﯾﺎﻧــﺎت‬
‫‪ .DI‬ﻟﺗﻣﯾﯾ ــز اﻟﻌﻧوﻧ ــﺔ ﻏﯾ ــر اﻟﻣﺑﺎﺷـ ـرة ﻋ ــن ﻏﯾرﻫ ــﺎ‪ ،‬ﯾوﺿ ــﻊ اﺳ ــم اﻟﻣ ــﺳﺟل اﻟ ــذي ﯾﺣﺗ ــوي ﻋﻠ ــﻰ اﻟﻌﻧـ ـوان‬
‫اﻟﻔﻌﺎل داﺧل أﻗواس ﻣرﺑﻌﺔ '] ['‪.‬‬

‫‪- ٥٩ -‬‬
‫ﻣﺛﺎل )‪: (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‬‬
‫ﯾﻘﺳم طﺎﻗم اﻟﺗﻌﻠﯾﻣﺎت إﻟﻰ ﺳﺗﺔ أﻧواع‪:‬‬

‫‪ ١-٤‬اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺗﻌﻠﯾﻣﺎت ﻟﻐﺔ أﺳﻣﺑﻠﻲ ‪: Instruction Format‬‬


‫ﺗﺗﻛون ﺻﯾﻐﺔ اﻟﺗﻌﻠﯾﻣﺔ ﻓﻲ ﻟﻐﺔ أﺳﻣﺑﻠﻲ ﻣن أرﺑﻌﺔ ﺣﻘول ﻋﻠﻰ اﻷﻛﺛر‪:‬‬
‫]‪[Label:‬‬ ‫‪Mnemonic‬‬ ‫])‪[Operand (s‬‬ ‫]‪[; Comment‬‬
‫ﺣﯾث أن‪:‬‬
‫‪ : Label:‬ﺗﻣﺛل ﺣﻘل وﺳم اﻟﺗﻌﻠﯾﻣﺔ )اﺧﺗﯾﺎري وﺣﺳب اﻟﺣﺎﺟﺔ(‬
‫‪ : Mnemonic‬ﯾﻣﺛل رﻣز اﻟﻌﻣﻠﯾﺔ اﻟﻣطﻠوﺑﺔ )اﺟﺑﺎري(‬
‫)‪ : Operand (s‬ﯾﻣﺛل ﺣﻘل أو ﺣﻘول اﻟﺑﯾﺎﻧﺎت )وﺟودﻩ ﺿﻣن اﻟﺗﻌﻠﯾﻣﺔ أو ﻋدﻣﻪ ﺳواء(‬
‫‪ : Comment‬ﯾﻣﺛل ﺣﻘل اﻟﻣﻼﺣظﺎت )اﺧﺗﯾﺎري(‬
‫وﺗﻔﺻل اﻟﺣﻘول ﻋن ﺑﻌﺿﻬﺎ اﻟﺑﻌض ﺑﻔراغ أو أﻛﺛر‪.‬‬

‫‪ ١-١-٤‬ﺣﻘل اﻟوﺳم ‪: Label Field‬‬


‫ﯾﻬــدف ﻫــذا اﻟﺣﻘــل إﻟــﻰ ﺗﻣﯾﯾــز اﻟﺗﻌﻠﯾﻣــﺔ اﻟﻣوﺳــوﻣﺔ ﻋــن اﻟﺗﻌﻠﯾﻣــﺎت اﻷﺧــرى‪ ،‬ﻛﻣــﺎ ﻫــو اﻟﺣــﺎل ﻣــﻊ رﻗــم‬
‫اﻟﺳطر ﻓﻲ ﻟﻐﺔ ﺑﯾﺳك‪.‬‬
‫ﻟﺗﻛوﯾن اﻟوﺳم ﯾﻣﻛن اﺳﺗﺧدام‪:‬‬
‫‪ -‬اﻟﺣروف اﻷﺑﺟدﯾﺔ‪.‬‬
‫‪ -‬اﻷرﻗﺎم‬
‫‪ -‬ﺑﻌض اﻟرﻣوز اﻟﺧﺎﺻﺔ‬
‫ﻣن ﻏﯾر اﻟﺟﺎﺋز أن ﯾﺑدأ اﻟوﺳم ﺑرﻗم‪ .‬وﻻ ﯾﺟوز وﺟود ﻓراغ ﺿﻣن أﺣرف اﻟوﺳم‪.‬‬
‫ﻛﻣﺎ ﻻ ﯾﺟوز اﺳﺗﺧدام أي ﻣن اﻟﺗﻌﻠﯾﻣﺎت أو اﻟﺗوﺟﯾﻬﺎت أو اﻟﻛﻠﻣﺎت اﻟﻣﺣﺟوزة‪.‬‬
‫‪ ٢-١-٤‬ﺣﻘل اﻟﻌﻣﻠﯾﺔ ‪: Mnemonic Field‬‬
‫ﯾﻣﺛــل ﻫـ ـذا اﻟﺣﻘ ــل ﻧ ــوع اﻟﻌﻣﻠﯾــﺔ‪ .‬وﯾﺗﻛ ــون ﻣ ــن اﻟﺣ ــروف اﻷﺑﺟدﯾ ــﺔ اﻹﻧﺟﻠﯾزﯾــﺔ ﻓﻘ ــط ﺣﯾ ــث ﯾﺗـ ـراوح ﻋ ــدد‬
‫اﻷﺣرف اﻟﻣﻣﺛﻠﺔ ﻟﻬذا اﻟﺣﻘل ﺑﯾن ﺣرﻓﯾن وﺳﺗﺔ أﺣرف‪.‬‬
‫‪ ٣-١-٤‬ﺣﻘل اﻟﺑﯾﺎﻧﺎت )اﻟﻣﻌﺎﻣﻼت( ‪: Operand Field‬‬
‫ﯾﺑﯾن ﻫذا اﻟﺣﻘل ﻟﻠﻣﻌﺎﻟﺞ ﻣﻛﺎن وﺟود اﻟﺑﯾﺎﻧﺎت اﻟﻼزﻣﺔ ﻹﺟراء اﻟﻌﻣﻠﯾﺎت‪.‬‬
‫ﻣﺛﺎل‪ :‬إن اﻟﺗﻌﻠﯾﻣﺔ‬
‫‪MOV AL, 15‬‬
‫ﺗﻌﻧﻲ أن اﻟﻌﻣﻠﯾﺔ ﻫﻲ ﻋﻣﻠﯾﺔ ﺗﺣرﯾك ﻟﻠﺑﯾﺎﻧﺎت وأن ﻣﺛل ﻫذﻩ اﻟﻌﻣﻠﯾﺔ ﺑﺣﺎﺟﺔ إﻟﻰ ﻣﻌﺎﻣﻠﯾن‪.‬‬
‫ﻓﺎﻟﻣﻌﺎﻣل اﻷول ﯾﻣﺛل اﻟﻣﻌﺎﻣل اﻟﻣﺳﺗﻘﺑل ﻟﻠﺑﯾﺎﻧﺎت وﻫو ‪ AL‬واﻟﺛﺎﻧﻲ ﯾﻣﺛل ﻣﻌﺎﻣل اﻟﻣﺻدر‪.‬‬

‫‪- ٦١ -‬‬
‫‪ ٤-١-٤‬ﺣﻘل اﻟﻣﻼﺣظﺔ ‪: 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‬ﻋﻠﻰ اﻟﻣﻛدس‬

‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ اﺳﺗرﺟﺎع اﻟﺑﯾﺎﻧﺎت ﻣن ﻋﻠﻰ اﻟﻣﻛدس ‪: POP‬‬


‫ﺗﻌﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻛس ﻋﻣل اﻟﺗﻌﻠﯾﻣﺔ ‪.PUSH‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪POP destination‬‬
‫ﺣﯾث أن ‪ destination‬ﯾﻣﺛل ﺣﻘل ﻣﺳﺗﻘﺑل اﻟﺑﯾﺎﻧﺎت‪.‬‬

‫‪ -٤‬ﺗﻌﻠﯾﻣﺔ اﻟﻣﺑﺎدﻟﺔ ‪: XCHG‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪XCHG operand1, operand2‬‬
‫وﺗﻌﻣل ﻋﻠﻰ ﻣﺑﺎدﻟﺔ ﻗﯾم اﻟﻣﻌﺎﻣﻠﯾن ﻣﻊ ﺑﻌﺿﻬﻣﺎ اﻟﺑﻌض‪.‬‬
‫أﻣﺛﻠﺔ‪:‬‬
‫; ‪XCHG AL, BL‬‬ ‫ﻣﺑﺎدﻟﺔ ﻣﺣﺗوى ﻣﺳﺟل ﻣﻊ آﺧر‬
‫; ‪XCHG TABLE, DX‬‬ ‫ﻣﺑﺎدﻟﺔ ﻣﺣﺗوى ﻣﺳﺟل ‪ DX‬ﻣﻊ ﻣوﻗﻊ اﻟذاﻛرة ‪TABLE‬‬

‫‪ -٥‬ﺗﻌﻠﯾﻣﺔ ﻣﻌرﻓﺔ ﻗﯾﻣﺔ ﻋﻧﺻر ﺑﻣﺻﻔوﻓﺔ ‪: XLAT‬‬


‫ﺗﺳﺗﺧدم ﻫذﻩ اﻟﺗﻌﻠﯾﻣـﺔ ﺑﻬـدف ﻣﻌرﻓـﺔ ﻗﯾﻣـﺔ ﻋﻧـﺻر ﻓـﻲ ﻣـﺻﻔوﻓﺔ‪ .‬وذﻟـك ﺑﺎﺳـﺗﺧدام ﻣوﻗـﻊ ذﻟـك اﻟﻌﻧـﺻر‬
‫ﺿﻣن ﻋﻧﺎﺻر اﻟﻣﺻﻔوﻓﺔ وﻣن ﺛم ﻧﻘل ﻣﺣﺗوى ذﻟك اﻟﻌﻧﺻر إﻟﻰ اﻟﻣﺳﺟل ‪.AL‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪XLAT Source_Table‬‬
‫ﺣﯾ ـ ــث أن ‪ Source_Table‬ﯾﻣﺛ ـ ــل ﻋﻧـ ـ ـوان اﻟﻣ ـ ــﺻﻔوﻓﺔ اﻟﻣطﻠ ـ ــوب اﺳ ـ ــﺗرﺟﺎع ﻣﺣﺗ ـ ــوى ﻋﻧ ـ ــﺻر ﻣ ـ ــن‬
‫ﻋﻧﺎﺻرﻫﺎ وﺗﺧزﯾن ﻫذا اﻟﻣﺣﺗوى ﻓﻲ اﻟﻣﺳﺟل ‪.AL‬‬
‫ﻣــﺛﻼً‪ :‬ﯾﻣﻛﻧﻧ ــﺎ اﻟﺑﺣــث ﻋ ــن ﻗﯾﻣ ــﺔ اﻟﻌﻧــﺻر اﻟﺧ ــﺎﻣس ﻓ ــﻲ اﻟﻣــﺻﻔوﻓﺔ ‪ ARRAY‬ﺑﺎﺳ ــﺗﺧدام اﻟﺗﻌﻠﯾﻣ ــﺎت‬
‫اﻟﺗﺎﻟﯾﺔ‪:‬‬

‫‪- ٦٣ -‬‬
‫‪MOV AL, 4‬‬
‫‪MOV BX, OFFSET ARRAY‬‬
‫‪XLAT ARRAY‬‬

‫‪ ٢-٢-٤‬ﺗﻌﻠﯾﻣﺎت اﻹدﺧﺎل واﻹﺧراج ‪:‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ اﻹدﺧﺎل ‪: IN‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪IN accumulator, port‬‬
‫ﺣﯾث أن ‪ accumulator‬ﯾﻣﺛل ‪ AX‬ﻋﻧد ﻧﻘل ﻛﻠﻣﺔ أو ‪ AL‬ﻋﻧد ﻧﻘل ﺑﺎﯾت‪.‬‬
‫ﻣﺛﺎل )‪(26.6‬‬
‫ﺗﻌﻧﻲ اﻟﺗﻌﻠﯾﻣﺔ‬
‫‪IN AX, 100‬‬
‫إدﺧﺎل ﻛﻠﻣﺔ واﺣدة ﻣن اﻟﺑﯾﺎﻧﺎت إﻟﻰ اﻟﻣﺳﺟل ‪ AX‬ﻣن ﻣﻧﻔذ اﻹدﺧﺎل اﻟﻣﻌﻧون ﺑﺎﻟرﻗم ‪.١٠٠‬‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ اﻹﺧراج ‪: OUT‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪OUT port, accumulator‬‬
‫ﻣﺛﺎل )‪: (27.6‬‬
‫ﺗﻌﻧﻲ اﻟﺗﻌﻠﯾﻣﺔ‬
‫‪OUT DX, AX‬‬
‫إﺧ ـراج اﻟﻘﯾﻣــﺔ اﻟﻣﺧزﻧــﺔ ﻓــﻲ اﻟﻣ ــﺳﺟل ‪ AX‬إﻟــﻰ ﺟﻬــﺎز اﻹﺧ ـراج اﻟﻣرﺑ ــوط ﻣــﻊ ﺟﻬــﺎز اﻟﺣﺎﺳــوب ﻋﻠ ــﻰ‬
‫اﻟﻣﻧﻔذ اﻟﻣﻌﻧون ﺑﻣﺣﺗوى اﻟﻣﺳﺟل ‪.DX‬‬

‫‪ ٣-٢-٤‬ﺗﻌﻠﯾﻣﺎت ﻧﻘل اﻟﻌﻧوان ‪: Address Transfer Instructions‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ ﺗﺣﻣﯾل اﻟﻌﻧوان اﻟﻔﻌﺎل ‪: (Load Effective Address) LEA‬‬
‫ﻟﻧﻘل اﻟﻌﻧوان اﻟﻔﻌﺎل ﻟﻣوﻗﻊ ﻣن ﻣواﻗﻊ اﻟذاﻛرة إﻟﻰ أﺣد اﻟﻣﺳﺟﻼت اﻟﻣﺑﯾﻧﺔ ﺿﻣن اﻟﺗﻌﻠﯾﻣﺔ‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪LEA reg16, mem‬‬
‫ﺣﯾث أن‪:‬‬
‫‪ - reg16‬ﯾﻣﺛـ ــل أﺣـ ــد اﻟﻣـ ــﺳﺟﻼت اﻟﺗـ ــﻲ ﺳـ ــﯾﻧﻘل إﻟﯾﻬـ ــﺎ اﻟﻌﻧ ـ ـوان اﻟﻔﻌـ ــﺎل ﻟﻠﻣوﻗـ ــﻊ اﻟﻣطﻠـ ــوب )‪(mem‬‬
‫واﺳﺗﺧدام اﻟرﻗم ‪ ١٦‬ﻟﻠدﻻﻟﺔ ﻋﻠﻰ أن اﻟﻣﺳﺟل اﻟﻣﺳﺗﺧدم ﯾﺟب أن ﯾﻛون طوﻟﻪ ‪ ١٦‬ﺛﻧﺎﺋﯾﺔ‪.‬‬
‫‪ – Mem‬ﯾﻣﺛل اﺳم ﻣوﻗﻊ اﻟذاﻛرة‪.‬‬

‫‪- ٦٤ -‬‬
‫ﻣﺛﺎل )‪: (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‬‬

‫‪ ٤-٢-٤‬اﻟﺗﻌﻠﯾﻣﺎت اﻟﺧﺎﺻﺔ ﺑﻣﺳﺟل اﻟراﯾﺎت ‪: Flag Transfer Instructions‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ ‪: (Load AH from Flags register) LAHF‬‬
‫ﺗﻌﻣـل ﻫـذﻩ اﻟﺗﻌﻠﯾﻣـﺔ ﻋﻠـﻰ ﺗﺣﻣﯾـل اﻟﻣـﺳﺟل ‪ AH‬وﺑﺎﻟﺗﺣدﯾـد اﻟﺧﺎﻧـﺎت ‪ 7 , 6 , 4 , 2 , 0‬ﻣـن اﻟراﯾـﺎت‬
‫‪ CF, SF, ZF, AF, PF‬ﺣﺳب اﻟﺗرﺗﯾب اﻟﻣﺑﯾن‪.‬‬
‫وﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﻻ ﺗﺣﺗــﺎج إﻟــﻰ ﻣﻌــﺎﻣﻼت ﺣﯾــث أن ﻫــذﻩ اﻟﻣﻌــﺎﻣﻼت ﺗﺄﺧــذ ﺿــﻣﻧﺎً ﻋﻠــﻰ أﻧﻬــﺎ اﻟﻣــﺳﺟل‬
‫‪) AH‬وﯾﻣﺛل اﻟﻣﻌﺎﻣل اﻟﻣﺳﺗﻘﺑل( واﻟراﯾﺎت )ﺗﻣﺛل ﻣﻌﺎﻣل اﻟﻣﺻدر(‪.‬‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ ‪: (Store AH into Flags register) SAHF‬‬


‫ﻟﻧﻘـل ﻣﺣﺗـوى اﻟﺧﺎﻧـﺎت ‪ 7, 6, 4, 2, 0‬ﻣـن اﻟﻣـﺳﺟل ‪ AH‬إﻟـﻰ اﻟراﯾـﺎت ‪ CF, SF, ZF, AF, PF‬ﻓـﻲ‬
‫ﻣﺳﺟل اﻟراﯾﺎت‪ .‬ﺣﯾث ﯾﺧزن اﻟﻣوﻗﻊ اﻷول ﻣن اﻟﻣﺳﺟل ‪ AH‬ﻓﻲ اﻟراﯾﺔ ‪ CF‬وﻫﻛذا‪.‬‬

‫‪- ٦٥ -‬‬
‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ ‪: (Push Flags onto Stack) PUSHF‬‬
‫ﻟﻧﻘل ﻣﺣﺗوﯾﺎت ﻣﺳﺟل اﻟراﯾﺎت وﻋددﻫﺎ ‪ ١٦‬ﺛﻧﺎﺋﯾﺔ إﻟﻰ اﻟﻣﻛدس‪.‬‬

‫‪ -٤‬ﺗﻌﻠﯾﻣﺔ ‪: (Push Flags onto Stack) POPF‬‬


‫ﻟﺗﺣﻣﯾـل ﻣﺣﺗـوى ﻣوﻗـﻊ ﻗﻣـﺔ اﻟﻣﻛـدس واﻟﻣـﺷﺎر إﻟﯾــﻪ ﺑﺎﻟﻣـﺳﺟل ‪ SP‬إﻟـﻰ ﻣـﺳﺟل اﻟراﯾـﺎت‪ .‬وﻏﺎﻟﺑـﺎً ﻣـﺎ ﻧﺟــد‬
‫أن ﻛل ﺗﻌﻠﯾﻣﺔ ‪ PUSHF‬ﯾﻧﺎظرﻫﺎ ﺗﻌﻠﯾﻣﺔ ‪ POPF‬ﻓﻲ اﻟﺑرﻧﺎﻣﺞ‪.‬‬

‫‪ ٣-٤‬اﻟﺗﻌﻠﯾﻣﺎت اﻟﺣﺳﺎﺑﯾﺔ ‪: Arithmetic Instructions‬‬


‫ﯾﻣﻛن ﺗﻘﺳﯾم اﻟﺗﻌﻠﯾﻣﺎت اﻟﺣﺳﺎﺑﯾﺔ إﻟﻰ أرﺑﻊ ﻣﺟﻣوﻋﺎت ﻫﻲ‪:‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻹﺿﺎﻓﺔ )اﻟﺟﻣﻊ( ‪.Addition Instructions‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟطرح ‪. Subtraction Instructions‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﻘﺳﻣﺔ ‪.Division Instructions‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت ﻣد ﺧﺎﻧﺔ اﻹﺷﺎرة ‪.Sign_Extension Instructions‬‬

‫‪ ١-٣-٤‬ﺗﻌﻠﯾﻣﺎت اﻹﺿﺎﻓﺔ )اﻟﺟﻣﻊ( ‪: Addition Instructions‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ اﻹﺿﺎﻓﺔ ‪: ADD‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪ADD dest, source‬‬
‫ﺣﯾث أن‪:‬‬
‫‪ – Source‬ﯾﻣﺛل ﺣﻘل ﺑﯾﺎﻧﺎت اﻟﻣﻌﺎﻣل اﻷول‬
‫‪ – Dest‬ﯾﻣﺛل ﺣﻘل اﻟﻣﻌﺎﻣل اﻟﺛﺎﻧﻲ ﻟﻠﻌﻣﻠﯾﺔ واﻟﻣﺳﺗﻘﺑل ﻟﻠﻧﺗﯾﺟﺔ‬
‫‪dest = dest + source‬‬ ‫وﻧﺗﯾﺟﺔ ﺗﻧﻔﯾذ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻫو‬
‫أﻣﺛﻠﺔ‪:‬‬
‫‪ADD BL, 20‬‬
‫‪ADD AX, BX‬‬
‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ اﻹﺿﺎﻓﺔ ﻣﻊ اﻟﺣﻣل ‪: (ADD with carry) ADC‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪ADC dest, source‬‬
‫ﻧﻔـس ﻋﻣــل اﻟﺗﻌﻠﯾﻣــﺔ ‪ ADD‬ﻣــﻊ اﻟﻔــﺎرق اﻟوﺣﯾـد أﻧــﻪ أﺛﻧــﺎء ﻋﻣﻠﯾــﺔ اﻟﺟﻣــﻊ ﯾـﺿﺎف إﻟــﻰ ذﻟــك أﯾــﺿﺎً ﻗﯾﻣــﺔ‬
‫راﯾﺔ اﻟﺣﻣل )‪.(Carry Flag‬‬
‫‪dest = dest + source + CF‬‬ ‫ﺣﯾث أن‪:‬‬

‫‪- ٦٦ -‬‬
‫ﻣﺛﻼً‪ :‬ﻋدد ﻣﺎ ﻣﺧزن ﻓﻲ اﻟﻣﺳﺟﻠﯾن ‪ CX‬و ‪ DX‬وﻋدد ﺛﺎﻧﻲ ﻓﻲ اﻟﻣﺳﺟﻠﯾن ‪ AX‬و ‪BX‬‬
‫ﺣﯾــث ﯾﻣﻛــن إﺿــﺎﻓﺔ ﻣﺣﺗــوى اﻟﻣــﺳﺟﻠﯾن ‪ CX‬و ‪ DX‬إﻟــﻰ ﻣﺣﺗــوى اﻟﻣــﺳﺟﻠﯾن ‪ AX‬و ‪ BX‬وﺗﺧـ ـزﯾن‬
‫اﻟﻧﺎﺗﺞ ﻓﻲ اﻟﻣﺳﺟﻠﯾن ‪ AX‬و ‪ BX‬ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬
‫‪ADD AX, CX‬‬
‫‪ADC BX, DX‬‬
‫ﻓﺎﻟﺗﻌﻠﯾﻣﺔ اﻷوﻟﻰ ﺗﻌﻣل ﻋﻠﻰ إﺿﺎﻓﺔ ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ CX‬إﻟﻰ ﻣﺣﺗوى اﻟﻣﺳﺟل ‪.AX‬‬
‫وﻓﻲ ﺣﺎل وﺟود ﺣﻣل ﻓﻲ ﻧﺎﺗﺞ ﻫذﻩ اﻟﻌﻣﻠﯾﺔ ﯾﺗم أﺧذﻩ ﺑﻌﯾن اﻻﻋﺗﺑﺎر ﻓﻲ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺛﺎﻧﯾﺔ‪.‬‬

‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ ﺗﻌدﯾل اﻵﺳﻛﻲ ﻟﻠﺟﻣﻊ ‪: (ASCII Adjust for Addition) AAA‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪AAA‬‬
‫ﺣﯾث ﺗﺳﺗﺧدم ﺑدون ﻣﻌﺎﻣﻼت وﺗﺄﺗﻲ ﺑﻌد ﺗﻌﻠﯾﻣﺎت اﻟﺟﻣﻊ ﻣﺑﺎﺷرة‪.‬‬
‫ﻣﺛﺎل )‪: (31.6‬‬
‫ﻗﯾﻣﺔ ﻣﺣﺗوى اﻟﻣﺳﺟل ‪) AX‬ﻓﻲ اﻟﻧظﺎم اﻟﺳﺎدس ﻋﺷري( ﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺎت اﻵﺗﯾﺔ‪:‬‬
‫‪MOV AX, 456H‬‬
‫‪MOV AH, 0‬‬
‫‪ADD AX, 48H‬‬
‫‪AAA‬‬
‫اﻟﺣل‪:‬‬
‫ﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ اﻷوﻟﻰ‪ ،‬ﺗﺻﺑﺢ ﻣﺣﺗوﯾﺎت اﻟﻣﺳﺟل ‪ AX‬ﻣﺳﺎوﯾﺔ ‪ 456H‬أي‬
‫‪AH‬‬ ‫‪AL‬‬
‫‪45‬‬ ‫‪67‬‬
‫أﻣــﺎ ﺗﻧﻔﯾــذ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺛﺎﻧﯾــﺔ ﯾــؤدي إﻟــﻰ ﺗــﺻﻔﯾر اﻟﻣــﺳﺟل ‪ AH‬ﺣﯾــث ﺗــﺻﺑﺢ ﻣﺣﺗوﯾــﺎت اﻟﻣــﺳﺟل ‪AX‬‬
‫ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬
‫‪00‬‬ ‫‪67‬‬
‫أﻣــﺎ ﺗﻧﻔﯾــذ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺛﺎﻟﺛــﺔ ﻓﯾــؤدي إﻟــﻰ ﺟﻣــﻊ اﻟﻘﯾﻣــﺔ ‪ (48)16‬إﻟــﻰ اﻟﻘﯾﻣــﺔ ‪ (67)16‬وﺗﺧـزﯾن اﻟﻧــﺎﺗﺞ ﻓــﻲ‬
‫اﻟﻣﺳﺟل ‪.AX‬‬
‫ﺑﺣﯾث ﺗﺻﺑﺢ ﻣﺣﺗوﯾﺎت اﻟﻣﺳﺟل ‪ AX‬ﺗﺳﺎوي اﻟﻘﯾﻣﺔ ‪.(AF)16‬‬
‫أﻣﺎ اﻟﺗﻌﻠﯾﻣﺔ اﻟراﺑﻌﺔ ﺗﻧﻔذ اﻟﺧطوات اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬ﯾﺿﺎف اﻟرﻗم ‪ ٦‬إﻟﻰ ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ AL‬ﺣﯾث ﯾﺻﺑﺢ ﻣﺣﺗواﻩ ﻣﺳﺎوﯾﺎً ﻟﻠﻘﯾﻣﺔ ‪.(B5)16‬‬
‫‪ -‬ﯾﺿﺎف اﻟرﻗم ‪ ١‬إﻟﻰ اﻟﻣﺳﺟل ‪.AH‬‬
‫ﺣﯾث ﯾﺻﺑﺢ اﻟﻣﺳﺟل ‪ AX‬ﺣﺗﻰ ﻫذﻩ اﻟﻠﺣظﺔ ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬
‫‪AH‬‬ ‫‪AL‬‬
‫‪01‬‬ ‫‪B5‬‬
‫‪- ٦٧ -‬‬
‫‪ -‬ﯾﺻﻔر اﻟﻧﺻف اﻷﯾﺳر ﻣن اﻟﻣﺳﺟل ‪ AL‬ﺑﺣﯾث ﯾﺻﺑﺢ ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬
‫‪AH‬‬ ‫‪AL‬‬
‫‪01‬‬ ‫‪05‬‬
‫‪ -‬ﺗوﺿﻊ اﻟراﯾﺎت ‪ CF‬و ‪ AF‬ﻓﻲ ﺣﺎﻟﺔ "‪."١‬‬
‫ﻣـﻊ ﻣﻼﺣظــﺔ أن اﻟﻘﯾﻣــﺔ ‪ ٠٥‬ﻓــﻲ اﻟﻣــﺳﺟل ‪ AL‬ﻫــﻲ ﻧﺗﯾﺟــﺔ ﻟﺟﻣــﻊ اﻟﺧﺎﻧــﺔ اﻷوﻟــﻰ ﻣــن اﻟﻌــددﯾن‪ ٦٧ :‬و‬
‫‪.٤٨‬‬
‫‪ -٤‬ﺗﻌﻠﯾﻣﺔ اﻟﺗﻌدﯾل اﻟﻌﺷري ﻟﻠﺟﻣﻊ ‪: (Decimal Adjust for Additional) DAA‬‬
‫طرﯾ ــق ﻋﻣﻠﻬ ــﺎ ﺗ ــﺷﺑﻪ إﻟ ــﻰ ﺣ ــد ﻛﺑﯾ ــر ﻋﻣ ــل ﺗﻌﻠﯾﻣ ــﺔ ‪ AAA‬إﻻ أن ﻫ ــذﻩ اﻟﺗﻌﻠﯾﻣ ــﺔ ﺗﻌ ــﺎﻟﺞ ﺟﻣﯾ ــﻊ اﻟﻘﯾﻣ ــﺔ‬
‫اﻟﻣﺧزﻧﺔ ﻓﻲ اﻟﻣﺳﺟل ‪ AL‬وﻟﯾس اﻟرﻗم اﻟﺳﺎدس ﻋﺷري اﻷول ﻓﻘط‪.‬‬
‫وﯾؤدي ﺗﻧﻔﯾذ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ اﻟﺧطوات اﻟﺗﺎﻟﯾﺔ‪:‬‬
‫‪ -‬إذا ﻛﺎﻧت ﻗﯾﻣﺔ اﻟﻧﺻف اﻷﯾﻣن ﻓﻲ اﻟﻣـﺳﺟل ‪ AL‬أﻛﺑـر ﻣـن ‪ ٩‬أو ﻛﺎﻧـت اﻟراﯾـﺔ ‪ AF‬ﻓـﻲ اﻟﺣﺎﻟـﺔ "‪"١‬‬
‫ﯾ ــﺿﺎف اﻟ ــرﻗم ‪ ٦‬إﻟ ــﻰ اﻟﻧ ــﺻف اﻷﯾﻣ ــن ﻣ ــن اﻟﻣ ــﺳﺟل ‪ AL‬وﺗوﺿ ــﻊ اﻟراﯾ ــﺔ ‪ AF‬ﻓ ــﻲ اﻟﺣﺎﻟ ــﺔ "‪ٕ "١‬واﻻ‬
‫ﻓﯾﺗرك اﻟﻧﺻف اﻷﯾﻣن ﻟﻠﻌدد ﻛﻣﺎ ﻫو‪.‬‬
‫‪ -‬إذا ﻛﺎﻧت اﻟﻘﯾﻣـﺔ اﻟﻣﺧزﻧـﺔ ﻓـﻲ اﻟﻧـﺻف اﻷﯾـﺳر ﻣـن اﻟﻣـﺳﺟل ‪ AL‬أﻛﺑـر ﻣـن ‪ ٩‬أو ﻛﺎﻧـت اﻟراﯾـﺔ ‪CF‬‬
‫ﻓﻲ اﻟﺣﺎﻟﺔ "‪ "١‬ﺗﺗم إﺿﺎﻓﺔ اﻟرﻗم ‪ 60H‬إﻟﻰ اﻟﻣﺳﺟل ‪ AL‬وﺗوﺿﻊ اﻟراﯾﺔ ‪ CF‬ﻓﻲ اﻟﺣﺎﻟﺔ "‪."١‬‬
‫ﻣﺛﺎل )‪: (32.6‬‬
‫‪MOV AL, 36H‬‬
‫‪ADD AL, 54H‬‬

‫‪ -٥‬ﺗﻌﻠﯾﻣﺔ اﻟزﯾﺎدة ﺑواﺣد ‪: (Increment) INC‬‬


‫ﺗﺳﺗﺧدم ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻧد اﻟﺣﺎﺟﺔ ﻹﺿﺎﻓﺔ اﻟﻘﯾﻣﺔ "‪ "١‬إﻟﻰ ﻣﺣﺗوى أﺣد اﻟﺳﺟﻼت أو ﻣوﻗﻊ اﻟذاﻛرة‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪INC destination‬‬
‫ﺣﯾث أن ‪ -destination‬ﺗﻣﺛل ﻣﺳﺟﻼً أو ﻣوﻗﻌﺎً ﻓﻲ اﻟذاﻛرة ﺑطول ‪ ٨‬أو ‪ ١٦‬ﺛﻧﺎﺋﯾﺔ‪.‬‬

‫‪ ٢-٣-٤‬ﺗﻌﻠﯾﻣﺎت اﻟطرح ‪: Subtraction Instruction‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ اﻟطرح ‪: (Subtract) SUB‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪SUB dest, source‬‬
‫‪ – source‬ﺣﻘل اﻟﻌدد اﻟﻣطروح‬
‫‪ – dest‬ﺣﻘل اﻟﻌدد اﻟﻣطروح ﻣﻧﻪ وﯾﺳﺗﺧدم ﻟﺗﺧزﯾن ﻧﺎﺗﺞ اﻟﻌﻣﻠﯾﺔ‪.‬‬

‫‪- ٦٨ -‬‬
‫أﻣﺛﻠﺔ‪:‬‬
‫; ‪SUB AX, AX‬‬ ‫طرح ﻗﯾﻣﺔ اﻟﻣﺳﺟل ‪ AX‬ﻣن ﻧﻔﺳﻪ‬
‫وﻫذﻩ ﻣن اﻟطرق اﻟﻣﺗﺑﻌﺔ ﻟﺗﺻﻔﯾر اﻟﻣﺳﺟل‪.‬‬
‫; ‪SUB AX, Mem_word‬‬ ‫طرح ﻣوﻗﻊ ذاﻛرة ﻣن ﻣﺳﺟل‬
‫; ‪SUB AL, 20‬‬ ‫طرح ﻗﯾﻣﺔ ﻓورﯾﺔ ﻣن ﻣﺳﺟل‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ اﻟطرح ﻣﻊ اﻻﺳﺗﻌﺎرة ‪: (Subtract with borrow) SBB‬‬


‫ﻧﻔس ﻋﻣل اﻟﺗﻌﻠﯾﻣﺔ ‪ SUB‬ﻣﻊ اﻟﻔﺎرق اﻟﺑـﺳﯾط وﻫـو أن ﻫـذﻩ اﻟﺗﻌﻠﯾﻣـﺔ ﺗﺄﺧـذ ﺑﻌـﯾن اﻻﻋﺗﺑـﺎر راﯾـﺔ اﻟﺣﻣـل‬
‫أﺛﻧﺎء ﻋﻣﻠﯾﺔ اﻟطرح‪.‬‬

‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ اﻟﺗﻌدﯾل اﻵﺳﻛﻲ ﻟﻠطرح ‪: (Ascii Adjust for Subtraction) AAS‬‬


‫ﯾ ــﺄﺗﻲ ﻣوﻗ ــﻊ ﻫ ــذﻩ اﻟﺗﻌﻠﯾﻣ ــﺔ ﻓ ــﻲ اﻟﻐﺎﻟ ــب ﺑﻌ ــد اﻟﺗﻌﻠﯾﻣﺗ ــﯾن ‪ SUB‬و ‪ SBB‬ﻓ ــﻲ ﺑرﻧ ــﺎﻣﺞ أﺳ ــﻣﺑﻠﻲ وذﻟ ــك‬
‫ﻟﺗﺣوﯾل اﻟﻘﯾﻣﺔ اﻟﻣﺧزﻧﺔ ﻓﻲ اﻟﻣﺳﺟل ‪ AL‬ﻣن اﻟﺻﯾﻐﺔ اﻟﺛﻧﺎﺋﯾﺔ إﻟﻰ اﻟﻧظﺎم اﻟﻌﺷري اﻟﺛﻧﺎﺋﻲ‪.‬‬

‫‪ -٤‬ﺗﻌﻠﯾﻣﺔ اﻟﺗﻌدﯾل اﻟﻌﺷري ﻟﻠطرح ‪: (Decimal Adjust for Substraction) DAS‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪DAS‬‬
‫أي أن اﻟﺗﻌﻠﯾﻣﺔ ﺗﻛﺗب ﺑدون ﻣﻌﺎﻣﻼت ﺣﯾث أﻧﻬﺎ ﺿﻣﻧﺎً ﺗﻌﻣل ﻋﻠﻰ ﻣﺣﺗوى اﻟﻣﺳﺟل ‪.AL‬‬

‫‪ -٥‬ﺗﻌﻠﯾﻣﺔ اﻟﻧﻘص ﺑواﺣد ‪: (Decrement) DEC‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪DEC dest‬‬
‫ﺣﯾث ﯾﻣﺛل ‪ dest‬اﺳم ﻣﺳﺟل أو ﻋﻧوان ﻣوﻗﻊ ﻓﻲ اﻟذاﻛرة ﻣﻛون ﻣن ‪ ٨‬أو ‪ ١٦‬ﺧﺎﻧﺔ ﺛﻧﺎﺋﯾﺔ‪.‬‬
‫وﺗﻌﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻠﻰ إﻧﻘﺎص ﻣﺣﺗوى اﻟﻣـﺳﺟل أو ﻣوﻗـﻊ اﻟـذاﻛرة اﻟﻣﻘـﺻود ﺑﺎﻟﻘﯾﻣـﺔ "‪ "١‬وﻟـﯾس ﻟﻬـذﻩ‬
‫اﻟﺗﻌﻠﯾﻣﺔ أي ﺗﺄﺛﯾر ﻋﻠﻰ اﻟراﯾﺎت‪.‬‬

‫‪ -٦‬ﺗﻌﻠﯾﻣﺔ اﻟﻌﻛس ‪: (Negate) NEG‬‬


‫ﻹﯾﺟـﺎد اﻟﻣﻛﻣـل ﻷﺛﻧــﯾن ﻟﻣﻌﺎﻣـل ﻣﻌـﯾن واﻟــذي ﯾﻣﻛـن أن ﯾﻛـون اﺳــم ﻣـﺳﺟل أو ﻣوﻗـﻊ ﻣــن ﻣواﻗـﻊ اﻟــذاﻛرة‬
‫ﺑطول ‪ ٨‬أو ‪ ١٦‬ﺧﺎﻧﺔ ﺛﻧﺎﺋﯾﺔ‪.‬‬

‫‪ -٧‬ﺗﻌﻠﯾﻣﺔ اﻟﻣﻘﺎرﻧﺔ ‪: (Compare destination to source) CMP‬‬

‫‪- ٦٩ -‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪CMP dest, source‬‬
‫ﺣﯾــث ﯾﻣﺛــل ﻛــل ﻣــن ‪ source‬و ‪ dest‬أﺳــﻣﺎء ﻣــﺳﺟﻼت أو ﻣواﻗــﻊ ﻓــﻲ اﻟــذاﻛرة طوﻟﻬــﺎ إﻣــﺎ ‪ ٨‬ﺛﻧﺎﺋﯾــﺎت‬
‫أو ‪ ١٦‬ﺛﻧﺎﺋﯾﺔ‪ .‬وﻣن ﻏﯾر اﻟﺟﺎﺋز ﻣﻘﺎرﻧﺔ ﻣوﻗﻊ ذاﻛرة ﻣﻊ ﻣوﻗﻊ ذاﻛرة ﻓﻲ ﻧﻔس اﻟﺗﻌﻠﯾﻣﺔ‪.‬‬
‫ﺗؤدي ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ طرح ﻗﯾﻣﺔ ‪ source‬ﻓﻲ ﻗﯾﻣﺔ ‪ dest‬دون اﻟﺗﺄﺛﯾر ﻋﻠﻰ اﻟﻣﻌﺎﻣل ‪.dest‬‬

‫‪ ٣-٣-٤‬ﺗﻌﻠﯾﻣﺎت اﻟﺿرب ‪: Multiplication Instructions‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ ‪: (Unsigned Numbers Multiply) MUL‬‬
‫ﺗـﺳﺗﻌﻣل ﻫــذﻩ اﻟﺗﻌﻠﯾﻣـﺔ ﻋﻧــد اﻟﺣﺎﺟـﺔ ﻟــﺿرب ﻋــددﯾن ﻣﻣﺛﻠـﯾن ﺑــدون إﺷـﺎرة وﺗﻛــون اﻟﻧﺗﯾﺟـﺔ ﻛــذﻟك ﺑــدون‬
‫إﺷﺎرة‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪MUL source‬‬
‫ﺣﯾــث ﯾﻣﺛــل ‪ source‬إﻣــﺎ ﻣــﺳﺟﻼً أو اﺳــﻣﺎً ﻟﻣوﻗــﻊ ﻣــن ﻣواﻗــﻊ اﻟــذاﻛرة ﺑطــول ‪ ٨‬أو ‪ ١٦‬ﺧﺎﻧــﺔ ﺛﻧﺎﺋﯾــﺔ‪.‬‬
‫وﯾﺷﻛل أﺣد اﻟﻌددﯾن اﻟﻣطﻠوب إﯾﺟﺎد ﺣﺎﺻل ﺿرﺑﻬﻣﺎ‪.‬‬
‫أﻣـﺎ ﺑﺎﻟﻧــﺳﺑﺔ ﻟﻠﻌــدد اﻟﺛـﺎﻧﻲ ﻓﺈﻧــﻪ ﯾﺄﺧــذ ﺿـﻣﻧﺎً ﻣﺣﺗــوى اﻟﻣــﺳﺟل ‪ AL‬إذا ﻛـﺎن ‪ source‬ﻣــن اﻟﻧــوع ‪Byte‬‬
‫أو ‪ AX‬إذا ﻛﺎن ‪ source‬ﻣن اﻟﻧوع ‪.word‬‬
‫ﻣن اﻟﻐﯾر اﻟﺟﺎﺋز أن ﯾﻛون ‪ source‬ﻗﯾﻣﺔ ﻓورﯾﺔ‪.‬‬
‫أﻣﺛﻠﺔ‪:‬‬
‫‪MOV BL, 4‬‬ ‫ﺧزن اﻟﻘﯾﻣﺔ ‪ ٤‬ﻓﻲ اﻟﻣﺳﺟل ‪BL‬‬
‫‪MUL BL‬‬ ‫أﺿرب اﻟﻘﯾﻣﺔ اﻟﻣﺧزﻧﺔ ﻓﻲ ‪ AL‬ﺑﺎﻟﻘﯾﻣﺔ اﻟﻣﺧزﻧﺔ ﻓﻲ ‪(٤) BL‬‬
‫ﺛم ﺧزن اﻟﻧﺗﯾﺟﺔ ﻓﻲ اﻟﻣﺳﺟل ‪AX‬‬
‫‪MUL BX‬‬ ‫ﯾؤدي ﺗﻧﻔﯾذ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ ﺿرب ﻣﺣﺗوى اﻟﻣﺳﺟل ‪BX‬‬
‫ﻓﻲ ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ AX‬وﺗﺧزﯾن اﻟﻧﺗﯾﺟﺔ ﻓﻲ اﻟﻣﺳﺟﻠﯾن ‪ AX‬و ‪DX‬‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ ﺿرب اﻷﻋداد ﺑﺈﺷﺎرة ‪: IMUL‬‬


‫ﺗﺳﺗﺧدم ﻋﻧدﻣﺎ ﺗﻛون اﻷﻋداد ﺑﺈﺷﺎرة‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪IMUL source‬‬
‫ﻣﺛﺎل )‪: (38.6‬‬

‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ ﺗﻌدﯾل اﻵﺳﻛﻲ ﻟﻠﺿرب ‪: (ASCII Adjust for Multiplication) AAM‬‬

‫‪- ٧٠ -‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪AAM‬‬
‫ﺗؤدي ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ ﺗﺣوﯾل ﺣﺎﺻل اﻟﺿرب ﻓﻲ اﻟﻣﺳﺟل ‪ AX‬إﻟـﻰ اﻟـﺻﯾﻐﺔ ﻏﯾـر اﻟﻣـﺿﻐوطﺔ ﻓـﻲ‬
‫اﻟﻣﺳﺟﻠﯾن ‪ AL‬و ‪.AH‬‬
‫ﻣﺛﺎل )‪: (39.6‬‬
‫ﻧﻔرض أن اﻟﻣﺳﺟل ‪ AL‬ﯾﺣﺗوي ﻋﻠﻰ اﻟﻘﯾﻣﺔ اﻟﻌﺷرﯾﺔ ‪) ٩‬أي ‪(٠٠٠٠١٠٠١‬‬
‫ﻛذﻟك ﻧﻔرض أن ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ BL‬ﻫو اﻟﻘﯾﻣﺔ اﻟﻌﺷرﯾﺔ ‪) ٧‬أي ‪(٠٠٠٠٠١١١‬‬
‫ﺑﯾن ﻧﺗﯾﺟﺔ ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺗﯾن‪:‬‬
‫‪MUL BL‬‬
‫‪AAM‬‬
‫اﻟﺣل‪:‬‬
‫ﻧﺗﯾﺟﺔ اﻟﺗﻌﻠﯾﻣﺔ اﻷوﻟﻰ )‪(3F)16 = (٠٠١١١١١١) = (٠٠٠٠٠١١١) * (٠٠٠٠٠١٠٠١‬‬
‫وﻫــذا ﯾــؤدي إﻟــﻰ ﺗﺧ ـزﯾن اﻟﻘﯾﻣــﺔ ‪ (3F)16‬ﻓــﻲ اﻟﻣــﺳﺟل ‪ ،AL‬وﺗﺧ ـزﯾن اﻟﻘﯾﻣــﺔ ‪ ٠‬ﻓــﻲ اﻟﻣــﺳﺟل ‪.AH‬‬
‫ﻟذﻟك ﻓﺈن ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ ‪ AAM‬ﯾؤدي إﻟـﻰ ﻗـﺳﻣﺔ اﻟﻌـدد ‪ 3F‬ﻋﻠـﻰ اﻟـرﻗم ‪ ١٠‬ﺣﯾـث ﯾﻛـون ﻧـﺎﺗﺞ اﻟﻘﯾﻣـﺔ‬
‫ﻣﺳﺎوﯾﺎً ﻟﻠرﻗم ‪) ٣‬أي ‪ (٠٠٠٠٠٠١١‬وﯾﺧزن ﻓﻲ اﻟﻣﺳﺟل ‪.AH‬‬
‫وﺑﺎﻗﻲ اﻟﻘﺳﻣﺔ ‪) ٦‬أي ‪ (٠٠٠٠٠١١٠‬ﯾﺧزن ﻓﻲ اﻟﻣﺳﺟل ‪.AL‬‬
‫ﻟذﻟك ﺗﺻﺑﺢ ﻣﺣﺗوﯾﺎت اﻟﻣﺳﺟل ‪ AX‬ﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺗﯾن ﻫﻲ‪.(0306)16 :‬‬

‫‪ ٤-٣-٤‬ﺗﻌﻠﯾﻣﺎت اﻟﻘﺳﻣﺔ ‪: Division Instructions‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ ‪: (Unsigned Divide) DIV‬‬
‫ﺗﺳﺗﺧدم ﻟﻘﺳﻣﺔ اﻷﻋداد اﻟﻣﻣﺛﻠﺔ ﺑدون إﺷﺎرة‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪DIV source‬‬
‫ﺣﯾــث ﯾﻣﺛــل ‪ source‬اﻟﻣﻘــﺳوم ﻋﻠﯾــﻪ وﻫــو إﻣــﺎ اﺳــم ﻣــﺳﺟل ﻣــن اﻟﻣــﺳﺟﻼت ﻋﺎﻣــﺔ اﻷﻏ ـراض أو اﺳــﻣﺎً‬
‫ﻟﻣوﻗﻊ ﻓﻲ اﻟذاﻛرة‪.‬‬
‫وﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﻣﻘﺳوم ﻋﻠﯾﻪ ﻓﯾﺄﺧذ ﺿﻣﻧﺎً ﻋﻠﻰ أﻧﻪ إﻣﺎ اﻟﻣﺳﺟل ‪ AX‬أو اﻟﻣﺳﺟﻠﯾن ‪ AX‬أو ‪.DX‬‬
‫ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﻧﺗﯾﺟﺔ ﻓﯾﺗم ﺗﺧزﯾﻧﻬﺎ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬
‫‪ -‬إذا ﻛﺎن طول اﻟﻣﻘﺳوم ﻋﻠﯾﻪ ﺑﺎﯾت ﯾﺗم اﻟﺗﺧزﯾن ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬
‫‪AH‬‬ ‫‪AL‬‬
‫‪AX‬‬ ‫ﺑﺎﻗﻲ ﻋﻤﻠﯿﺔ اﻟﻘﺴﻤﺔ‬ ‫ﻧﺎﺗﺞ ﻋﻤﻠﯿﺔ اﻟﻘﺴﻤﺔ‬

‫‪ -‬أﻣﺎ إذا ﻛﺎن طول اﻟﻣﻘﺳوم ﻋﻠﯾﻪ ﻛﻠﻣﺔ‪:‬‬

‫‪- ٧١ -‬‬
‫‪DX‬‬ ‫ﺑﺎﻗﻲ ﻋﻤﻠﯿﺔ اﻟﻘﺴﻤﺔ‬ ‫‪DX‬‬ ‫ﻧﺎﺗﺞ اﻟﻘﺴﻤﺔ‬

‫إذا ﻟ ــم ﯾﻛـ ــن ﺑﺎﻹﻣﻛ ــﺎن اﺳـ ــﺗﯾﻌﺎب ﻧ ــﺎﺗﺞ اﻟﻘـ ــﺳﻣﺔ ﻣـ ــن ﻗﺑ ــل اﻟﻣـ ــﺳﺟل ‪ AL‬أو ‪ AX‬ﻓ ــﺈن اﻟﻣﻌـ ــﺎﻟﺞ ﯾوﻟـ ــد‬
‫اﻋﺗراﺿﺎً )‪ (Interrupt‬ﻣن اﻟﻧوع ‪) .٠‬ﻣﻛﺎﻓﺊ ﻟﻼﻋﺗراض اﻟﻧﺎﺗﺞ ﻋن اﻟﻘﺳﻣﺔ ﻋﻠﻰ ‪.(٠‬‬
‫ﻣﺛﺎل )‪: (40.6‬‬
‫ﻧﻔرض أن ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ AX‬ﻫو ‪ (55)16‬وأن ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ BL‬ﻫو ‪.(27)16‬‬
‫ﺑﯾن ﻧﺗﯾﺟﺔ ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ‪:‬‬
‫‪DIV BL‬‬
‫اﻟﺣل‪:‬‬
‫ﯾﻘﺳم اﻟرﻗم ‪ 55H‬ﻋﻠﻰ اﻟرﻗم ‪.27H‬‬
‫وﯾﺧزن ﻧﺎﺗﺞ اﻟﻘﺳﻣﺔ )أي ‪ (٠٢‬ﻓﻲ اﻟﻣﺳﺟل ‪ AL‬واﻟﺑﺎﻗﻲ )أي ‪ (٠٧‬ﻓﻲ اﻟﻣﺳﺟل ‪.AH‬‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ اﻟﻘﺳﻣﺔ ﻟﻸﻋداد ﺑﺈﺷﺎرة ‪: (Signed Divide) IDIV‬‬


‫ﻣﺷﺎﺑﻬﺔ ﻟﻠﺗﻌﻠﯾﻣﺔ اﻟﺳﺎﺑﻘﺔ ﻣﻊ ﻓﺎرق وﺣﯾد‪ ،‬ﻫو أن اﻷﻋداد ﻣﻣﺛﻠﺔ ﻣﻊ إﺷﺎرة‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪IDIV source‬‬
‫ﺣﯾث أن ‪ source‬وطرﯾﻘﺔ ﺗﺧزﯾن اﻟﻧﺗﯾﺟﺔ واﻟﻣﻘﺳوم ﺗﺷﺑﻪ ﻣﺛﯾﻼﺗﻬﺎ ﻓﻲ ﺗﻌﻠﯾﻣﺔ ‪.DIV‬‬
‫ﻣﺛﺎل )‪: (42.6‬‬
‫ﻣﺎ ﻗﯾﻣﺔ اﻟﻣﺳﺟل ‪) AX‬ﻓﻲ اﻟﻧظﺎم اﻟﺳﺎدس ﻋﺷري( ﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺎت اﻵﺗﯾﺔ‪:‬‬
‫‪MOV AX, 1260‬‬
‫‪MOV DX, 7‬‬
‫‪IDIV DL‬‬
‫اﻟﺣل‪:‬‬
‫ﺗﻌﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻠﻰ ﻗﺳﻣﺔ اﻟﻌدد ‪ (1260)10‬ﻋﻠﻰ اﻟﻌدد ‪ ٧‬ﺣﯾث ﯾﻛون ﻧﺎﺗﺞ اﻟﻘﺳﻣﺔ ‪.+١٨٠‬‬
‫وﺑﻣــﺎ أن اﻟﺗﻌﻠﯾﻣــﺔ اﻟﻣــﺳﺗﺧدﻣﺔ ﻫــﻲ ‪ DIV‬وأن ‪ DL‬ﻣــن اﻟﻧــوع ‪ Byte‬ﻓﺈﻧــﻪ ﯾــﺗم ﺗﺧ ـزﯾن ﻫــذا اﻟﻧــﺎﺗﺞ ﻓــﻲ‬
‫اﻟﻣﺳﺟل ‪.AL‬‬
‫ﻛذﻟك وﺑﻣﺎ أن طول اﻟﻣﺳﺟل ‪ AL‬ﻫو ‪ ٨‬ﺛﻧﺎﺋﯾﺎت ﻓﺈن أﻛﺑر ﻋدد ﺑﺈﺷﺎرة ﯾﻣﻛن ﺗﺧزﯾﻧﻪ ﻫو ‪.+١٢٧‬‬
‫ﻟــذﻟك ﻓــﺈن ﺗﻧﻔﯾــذ ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﯾــؤدي إﻟــﻰ ﺣــدوث ﺧطــﺄ ﻓــﯾض ﻓــﻲ اﻟﻧﺗﯾﺟــﺔ ‪(Divide Overflow‬‬
‫)‪.Error‬‬

‫‪- ٧٢ -‬‬
‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ ﺗﻌدﯾل اﻵﺳﻛﻲ ﻟﻠﻘﺳﻣﺔ ‪: (ASCII Adjust for Division) ADD‬‬
‫ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﯾﺟب أن ﺗﺳﺑق ﻋﻣﻠﯾﺔ اﻟﻘﺳﻣﺔ ﺑدﻻً ﻣن أن ﺗﺄﺗﻲ ﺑﻌدﻫﺎ‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪AAD‬‬
‫ﺑﺎﻟﻧﺳﺑﺔ ﻟﻌﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻓﯾﻣﻛن ﺗﻠﺧﯾﺻﻪ ﺑﺎﻟﺗﺎﻟﻲ‪:‬‬
‫‪ -‬ﯾﺿرب ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ AH‬ﺑﺎﻟﻌدد ‪١٠‬‬
‫‪ -‬ﺗﺿﺎف ﻧﺗﯾﺟﺔ اﻟﺿرب إﻟﻰ اﻟﻘﯾﻣﺔ اﻟﻣﺧزﻧﺔ ﻓﻲ اﻟﻣﺳﺟل ‪AL‬‬
‫‪ -‬ﯾﺻﻔر اﻟﻣﺳﺟل ‪AH‬‬
‫طرﯾﻘﺔ اﺳﺗﺧدام ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ‪:‬‬
‫; ‪ADD‬‬ ‫ﺣﯾث ﺗﻌﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻠﻰ ﺗﻌدﯾل ﻗﯾﻣﺔ اﻟﻣﻘﺳوم ﻏﯾر اﻟﻣﺿﻐوط‬
‫; ‪DIV BL‬‬ ‫ﺑﻌد ذﻟك ﻧﻔذ ﻋﻣﻠﯾﺔ اﻟﻘﺳﻣﺔ‬

‫‪ ٥-٣-٤‬ﺗﻌﻠﯾﻣﺎت ﻣد ﺧﺎﻧﺔ اﻹﺷﺎرة ‪: Sign Extension Instructions‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ ﺗﺣوﯾل ﺑﺎﯾت إﻟﻰ ﻛﻠﻣﺔ ‪: (Convert Byte to Word) CBW‬‬
‫ﺗﺳﺗﻌﻣل ﻟﻣد ﺧﺎﻧﺔ اﻹﺷﺎرة ﻓﻲ اﻟﻣﺳﺟل ‪ AL‬إﻟﻰ ﺟﻣﯾﻊ اﻟﺧﺎﻧﺎت اﻟﺛﻧﺎﺋﯾﺔ ﻓﻲ اﻟﻣﺳﺟل ‪.AH‬‬
‫وﻟﺗوﺿﯾﺢ ﻋﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ‪:‬‬
‫إﻓرض أن اﻟﻣﺳﺟل ‪ AL‬ﯾﺣﺗوي ﻋﻠﻰ اﻟﻘﯾﻣﺔ اﻟﺛﻧﺎﺋﯾﺔ ﻛﻣﺎ ﻫو ﻣﺑﯾن‪:‬‬

‫‪AL‬‬ ‫‪١١٠١١٠١‬‬

‫وﺑﻐض اﻟﻧظر ﻋن ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ ،AH‬وﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ‬


‫‪CBW‬‬
‫ﺗﺻﺑﺢ ﻣﺣﺗوﯾﺎت اﻟﻣﺳﺟل ‪ AX‬ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬
‫‪AH‬‬ ‫‪AL‬‬

‫‪AX‬‬ ‫‪١١١١١١١ ١١٠١١٠١‬‬

‫ﺣﯾ ــث أن ﺧﺎﻧ ــﺔ اﻹﺷ ــﺎرة ﻓ ــﻲ اﻟﻣ ــﺳﺟل ‪) AL‬أي اﻟﺧﺎﻧ ــﺔ اﻷﺧﯾـ ـرة( وﻣﻘ ــدارﻫﺎ ‪ ١‬ﯾ ــﺗم ﻣ ــدﻫﺎ إﻟ ــﻰ ﺟﻣﯾ ــﻊ‬
‫ﺧﺎﻧﺎت اﻟﻣﺳﺟل ‪.AH‬‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ ﺗﺣوﯾل ﻛﻠﻣﺔ إﻟﻰ ﻛﻠﻣﺔ ﻣزدوﺟﺔ ‪: (Convert Word to Double) CWD‬‬
‫ﺗﻌﻣل ﻋﻠﻰ ﻣد ﺧﺎﻧﺔ إﺷﺎرة اﻟﻌدد اﻟﻣﺧزن ﻓﻲ اﻟﻣﺳﺟل ‪ AX‬إﻟﻰ ﺟﻣﯾﻊ ﺧﺎﻧﺎت اﻟﻣﺳﺟل ‪.DX‬‬

‫‪- ٧٣ -‬‬
‫وﺗﻛﻣــن ﻓﺎﺋــدة ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﻓــﻲ ﺗﻣﻛــﯾن اﻟﻣﺑــرﻣﺞ ﻣــن ﺗﻘــﺳﯾم ﻣﻌﺎﻣــل ﺣــﺳﺎﺑﻲ طوﻟــﻪ ﻛﻠﻣــﺔ ﻋﻠــﻰ ﻣﻌﺎﻣــل‬
‫ﺣــﺳﺎﺑﻲ آﺧــر طوﻟــﻪ ﻛﻠﻣــﺔ أﯾــﺿﺎً ﻣــﻊ اﻟﻌﻠــم أن ﺗﻌﻠﯾﻣــﺎت اﻟﻘــﺳﻣﺔ ﺗﺗطﻠــب أن ﯾﻛــون ﻋــدد ﺧﺎﻧــﺎت اﻟﻌــدد‬
‫اﻟﻣﻘﺳوم ﺿﻌف ﻋدد ﺧﺎﻧﺎت اﻟﻌدد اﻟﻣﻘﺳوم ﻋﻠﯾﻪ‪.‬‬
‫ﻣﺛﺎل )‪: (44.6‬‬
‫ﺑﯾن ﻛﯾف ﯾﻣﻛن ﺗﻘﺳﯾم ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ AX‬ﻋﻠﻰ ﻣﺣﺗوى اﻟﻣﺳﺟل ‪BX‬ز‬
‫اﻟﺣل‪:‬‬
‫ﺗﺗطﻠــب اﻟﻘ ــﺳﻣﺔ ﻋﻠــﻰ ﻋ ــدد ﻣﻛــون ﻣ ــن ‪ ١٦‬ﺛﻧﺎﺋﯾــﺔ أن ﯾﻛ ــون اﻟﻣﻘــﺳوم ﻣﺧ ــزن ﻓــﻲ اﻟﻣ ــﺳﺟﻠﯾن ‪ AX‬و‬
‫‪ .DX‬وﺑﻣــﺎ أن اﻟﻣطﻠــوب ﻓــﻲ ﻫــذﻩ اﻟﻣــﺳﺄﻟﺔ ﻫــو ﺗﻘــﺳﯾم ﻣﺣﺗــوى اﻟﻣــﺳﺟل ‪ AX‬ﻋﻠــﻰ ﻣﺣﺗــوى اﻟﻣــﺳﺟل‬
‫‪.BX‬‬
‫ﻟــذﻟك ﻧﻠﺟ ــﺄ إﻟ ــﻰ ﻣ ــد إﺷــﺎرة اﻟﻣ ــﺳﺟل ‪ AX‬إﻟ ــﻰ ﺟﻣﯾ ــﻊ ﺧﺎﻧ ــﺎت اﻟﻣــﺳﺟل ‪ .DX‬ﺑﻌ ــد ذﻟ ــك ﯾﻣﻛ ــن ﺗﻧﻔﯾ ــذ‬
‫ﺗﻌﻠﯾﻣﺔ اﻟﻘﺳﻣﺔ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬
‫‪CWD‬‬
‫‪IDIV BX‬‬

‫‪ ٤-٤‬ﺗﻌﻠﯾﻣﺎت ﻧﻘل اﻟﺗﺣﻛم ‪: Control Transfer Instructions‬‬


‫ﯾﻣﻛن ﺗﺻﻧﯾف ﺗﻌﻠﯾﻣﺎت ﻧﻘل اﻟﺗﺣﻛم إﻟﻰ أرﺑﻊ ﻣﺟﻣوﻋﺎت ﻫﻲ‪:‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﻘﻔز ﻏﯾر اﻟﻣﺷروط واﺳﺗدﻋﺎء اﻟﺑرﻧﺎﻣﺞ اﻟﻔرﻋﻲ واﻟﻌودة ﻣﻧﻪ )‪.(JMP, CALL, RET‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت ﻧﻘل اﻟﺗﺣﻛم اﻟﻣﺷروط )‪.(Conditional Transfer Instructions‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﺗﻛرار )‪.(Iteration Control Instructions‬‬
‫‪ -‬ﺗﻌﻠﯾﻣﺎت اﻻﻋﺗراض )‪.(Interrupt Instructions‬‬

‫‪ ١-٤-٤‬ﺗﻌﻠﯾﻣﺎت اﻟﻘﻔز ﻏﯾر اﻟﻣﺷروط واﺳﺗدﻋﺎء اﻟﺑرﻧﺎﻣﺞ اﻟﻔرﻋﻲ واﻟﻌودة ﻣﻧﻪ ‪:‬‬
‫‪ -١‬ﺗﻌﻠﯾﻣﺔ اﻟﻘﻔز ﻏﯾر اﻟﻣﺷروط ‪: (Unconditional JUMP) JMP‬‬
‫ﺗــﺷﺑﻪ ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﺟﻣﻠــﺔ ‪ GOTO‬ﻓــﻲ ﻟﻐﺗــﻲ ﺑﯾــﺳك وﺑﺎﺳــﻛﺎل وﻏﯾرﻫــﺎ‪ ،‬ﺣﯾــث أن ﺗﻧﻔﯾــذﻫﺎ ﯾــؤدي إﻟــﻰ‬
‫اﻻﻧﺗﻘﺎل إﻟﻰ اﻟﺗﻌﻠﯾﻣﺔ اﻟﻣوﺳوﻣﺔ ﺑﻣﻌﺎﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪JMP Target‬‬
‫وﻋﻧد اﻟﺗﻌﺎﻣل ﻣﻊ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﯾﺟب ﻣراﻋﺎة اﻵﺗﻲ‪:‬‬
‫‪ -‬إذا ﻛــﺎن اﻟﻣوﻗــﻊ اﻟــذي ﺳــﯾﺗم اﻻﻧﺗﻘــﺎل إﻟﯾــﻪ ﺿــﻣن ﻧﻔــس اﻟﻘطــﺎع‪ ،‬ﻓــﺈن ﻫــذا اﻟﻧــوع ﯾطﻠــق ﻋﻠﯾــﻪ اﻟﻘﻔــز‬
‫اﻟﻘرﯾب )‪.(Near Jump‬‬

‫‪- ٧٤ -‬‬
‫‪ -‬إذا ﻛﺎن اﻟﻣوﻗﻊ اﻟذي ﺳﯾﺗم اﻻﻧﺗﻘﺎل إﻟﯾﻪ ﯾﻘﻊ ﺿﻣن ﻗطﺎع ﻏﯾـر ﻗطـﺎع اﻟﺗﻌﻠﯾﻣـﺔ ‪ ،JMP‬ﯾطﻠـق ﻋﻠـﻰ‬
‫ﻫذا اﻟﻧوع ﻣن اﻟﻘﻔز ﺑﺎﻟﻘﻔز اﻟﺑﻌﯾد )‪.(Far Jump‬‬
‫‪ -‬أﻣ ــﺎ إذا ﻛ ــﺎن اﻟﻣوﻗ ــﻊ ﯾﺑﻌ ــد ﻋ ــن اﻟﺗﻌﻠﯾﻣ ــﺔ ‪ JMP‬ﺑﺄﻗ ــل ﻣ ــن ‪ ١٢٨‬ﺑﺎﯾ ــت أو ﯾ ــﺳﺑﻘﻪ ﺑﺄﻗ ــل ﻣ ــن ‪١٢٩‬‬
‫ﺑﺎﯾت‪ ،‬ﯾطﻠق ﻋﻠﻰ ﻫذا اﻟﻧوع ﻣن اﻟﻘﻔز ﺑﺎﻟﻘﻔز اﻟﻘﺻﯾر )‪.(Short Jump‬‬
‫‪ -‬ﻋﻧدﻣﺎ ﯾﻛون اﻟﻣﻌﺎﻣل وﺳﻣﺎً )‪ ،(Label‬ﻓﻲ ﻫذﻩ اﻟﺣﺎﻟﺔ ﯾطﻠق ﻋﻠﻰ ﻧوع اﻟﻘﻔز ﺑﺎﻟﻘﻔز اﻟﻣﺑﺎﺷر‪.‬‬
‫‪ -‬ﻋﻧــدﻣﺎ ﯾﻛــون اﻟﻣﻌﺎﻣــل أﺣــد ﻣواﻗــﻊ اﻟــذاﻛرة أو اﻟﻣــﺳﺟﻼت ﯾطﻠــق ﻋﻠــﻰ ﻫــذا اﻟﻧــوع ﻣــن اﻟﻘﻔــز ﺑــﺎﻟﻘﻔز‬
‫‪.JMP BX‬‬ ‫ﻏﯾر اﻟﻣﺑﺎﺷر )‪ .(Indirect Jump‬ﻣﺛل‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ اﺳﺗدﻋﺎء اﻹﺟراء ‪: CALL‬‬


‫ﻟﺗـ ــﺳﻬﯾل ﻛﺗﺎﺑ ـ ــﺔ اﻟﺑرﻧ ـ ــﺎﻣﺞ وﻣﺗﺎﺑﻌﺗـ ــﻪ ﯾﻣﻛ ـ ــن ﺗﻧظ ـ ــﯾم اﻟﺑرﻧـ ــﺎﻣﺞ وﺗﻘ ـ ــﺳﯾﻣﻪ إﻟ ـ ــﻰ أﺟ ـ ـزاء ﺗ ـ ــدﻋﻰ إﺟـ ـ ـراءات‬
‫‪ Procedures‬ﯾﺣﺗوي ﻛل ﻣﻧﻬﺎ ﻋﻠﻰ ﻣﺟﻣوﻋﺔ ﻣن اﻟﻌﻣﻠﯾﺎت اﻟﻣﺧﺻﺻﺔ ﻟﻣﻌﺎﻟﺟﺔ ﻣوﺿوع ﻣﻌﯾن‪.‬‬
‫ﺑﻌد ﺗﻌرﯾف ﻫذﻩ اﻹﺟراءات ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ﻣـرة واﺣـدة‪ ،‬ﻓﺈﻧـﻪ ﯾﻣﻛـن اﺳـﺗدﻋﺎؤﻫﺎ أي ﻋـدد ﻣـن اﻟﻣـرات ﻋﻧـد‬
‫اﻟﺣﺎﺟﺔ إﻟﯾﻬﺎ‪.‬‬
‫ﯾﺗم اﺳﺗدﻋﺎء اﻹﺟراء ﺑﺎﺳﺗﺧدام اﻟﺗﻌﻠﯾﻣﺔ ‪.CALL‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪CALL Target‬‬
‫ﺣﯾث ‪ Target‬ﯾﻣﺛل اﺳم اﻹﺟراء اﻟذي ﺳﯾﺗم اﺳﺗدﻋﺎﺋﻪ وﻧﻘل اﻟﺗﺣﻛم إﻟﯾﻪ‪.‬‬

‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ اﻟﻌودة ﻣن اﻟﺑرﻧﺎﻣﺞ اﻟﻔرﻋﻲ ‪: RET‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪RET‬‬
‫ﺣﯾث أن ﺗﻧﻔﯾذﻫﺎ ﯾﻌﻧﻲ اﻟﻌودة إﻟﻰ اﻟﺟﻣﻠﺔ اﻟﺗﻲ ﺗﻠﻲ ﺟﻣﻠﺔ اﻻﺳﺗدﻋﺎء ‪.CALL‬‬

‫ب‪ -‬ﺗﻌﻠﯾﻣﺎت ﻧﻘل اﻟﺗﺣﻛم اﻟﻣﺷروط ‪: Conditional Jump Instructions‬‬


‫ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺎت ﻟﻧﻘــل اﻟــﺗﺣﻛم ﺑــﺳﯾر ﺗﻧﻔﯾــذ اﻟﺑرﻧــﺎﻣﺞ إﻟــﻰ ﺗﻌﻠﯾﻣــﺔ ﻣﻌﯾﻧــﺔ ﻋﻧــد ﺗﺣﻘــق ﺷــرط ﻣــن‬
‫اﻟـﺷروط ﻣﺛــل أن ﺗﻛــون ﻣﺣﺗــوى اﻟﻣــﺳﺟل ‪ CX‬ﻣــﺳﺎوﯾﺎً ﻟﻠـﺻﻔر أو أن ﯾﻛــون راﯾــﺔ أو أﻛﺛــر ﻣــن ﻣــﺳﺟل‬
‫اﻟراﯾﺎت ﻓﻲ وﺿﻊ ﻣﻌﯾن‪.‬‬
‫ﻣﺛﺎل )‪: (45.6‬‬
‫ﻣﺛﺎل )‪: (46.6‬‬
‫ﻣﺛﺎل )‪: (47.6‬‬

‫‪- ٧٥ -‬‬
‫ج‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﺗﻛرار ‪: Iteration or Loop Instructions‬‬
‫ﻟﺗﻛرار ﺗﻧﻔﯾذ ﺗﻌﻠﯾﻣﺔ أو أﻛﺛر ﻟﺣﯾن ﺗﺣﻘق ﺷرط ﻣﻌﯾن‪.‬‬

‫‪ -١‬ﺗﻌﻠﯾﻣﺔ اﻟﺗﻛرار اﻟﻣﺷروط ﺑﻣﺣﺗوى اﻟﻣﺳﺟل ‪ CX‬ﻓﻘط ‪: LOOP‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪LOOP Location‬‬
‫ﯾؤدي ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ ﻣﺎ ﯾﻠﻲ‪:‬‬
‫‪ -‬إﻧﻘﺎص ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ CX‬ﺑﺎﻟﻘﯾﻣﺔ واﺣد‪.‬‬
‫‪ -‬ﻓﺣــص ﻣﺣﺗــوى اﻟﻣــﺳﺟل ‪ ،CX‬ﻓــﺈذا ﻛﺎﻧــت ﻫــذﻩ اﻟﻘﯾﻣ ــﺔ ﻻ ﺗــﺳﺎوي ‪ ٠‬ﻓﺈﻧــﻪ ﯾــﺗم إﻧﺗﻘــﺎل اﻟﺗﻧﻔﯾــذ إﻟ ــﻰ‬
‫اﻟﺗﻌﻠﯾﻣﺔ اﻟﻣﻌﻧوﻧﺔ ﺑﺎﻻﺳم ‪ٕ Location‬واﻻ ﻓﺈﻧﻪ ﺳﯾﺗم اﻻﻧﺗﻘﺎل إﻟﻰ اﻟﺗﻌﻠﯾﻣﺔ اﻟﺗﺎﻟﯾﺔ ﻟﺗﻌﻠﯾﻣﺔ ‪.LOOP‬‬
‫ﻣﺛﺎل )‪: (48.6‬‬
‫ﺣﺳﺎب ﻣﺟﻣوع اﻷﻋداد ﻣن ‪ ١‬إﻟﻰ ‪ ١٠‬وﺗﺧزﯾن اﻟﻧﺎﺗﺞ ﻓﻲ اﻟﻣﺳﺟل ‪.BX‬‬
‫; ‪MOV BX, 0‬‬ ‫ﺧزن اﻟﻘﯾﻣﺔ اﻻﺑﺗداﺋﯾﺔ ﺻﻔر ﻓﻲ اﻟﻣﺳﺟل ‪BX‬‬
‫; ‪MOV CX, 10‬‬ ‫ﺧزن ﻋدد ﻣرات اﻟﺗﻛرار ﻓﻲ اﻟﻣﺳﺟل ‪CX‬‬
‫; ‪MOV AX, 0‬‬ ‫ﺧزن اﻟﻘﯾﻣﺔ اﻻﺑﺗداﺋﯾﺔ ﺻﻔر ﻓﻲ اﻟﻣﺳﺟل ‪AX‬‬
‫‪Location:‬‬
‫; ‪INC AX‬‬ ‫أﺿف اﻟﻌدد ‪ ١‬إﻟﻰ ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ AX‬ﻟﻠﺣﺻول ﻋﻠﻰ اﻟﻌدد اﻟﺗﺎﻟﻲ‬
‫‪ADD BX, AX‬‬
‫‪LOOP Location‬‬
‫ﻋﻧدﻣﺎ ﺗﺻﺑﺢ ﻗﯾﻣﺔ اﻟﻣﺳﺟل ‪ CX‬ﻣﺳﺎوﯾﺔ ﻟﻠﺻﻔر ﻓﺈﻧﻪ ﺳﯾﺗوﻗف اﻟﺗﻛرار‪.‬‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺗﻲ ‪(LOOP while Not Equal) LOOPNE‬‬


‫وﻣﻛﺎﻓﺋﺗﻬﺎ ‪: (LOOP while Not Zero flag) LOOPNZ‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪LOOPNE Location‬‬
‫‪LOOPNZ Location‬‬ ‫أو‬
‫ﺗؤدي إﻟﻰ‪:‬‬
‫‪ -‬إﻧﻘﺎص ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ CX‬ﺑﺎﻟﻘﯾﻣﺔ ‪١‬‬
‫‪ -‬إذا ﺑﻘﯾـت اﻟﻘﯾﻣــﺔ اﻟﻣﺧزﻧــﺔ ﻓــﻲ اﻟﻣـﺳﺟل ‪ CX‬ﻻ ﺗــﺳﺎوي اﻟــﺻﻔر وﻛﺎﻧــت راﯾـﺔ اﻟــﺻﻔر ﻓــﻲ اﻟﺣﺎﻟــﺔ "‪"٠‬‬
‫ﯾــﺗم اﻻﻧﺗﻘــﺎل إﻟــﻰ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﻣﻌﻧوﻧــﺔ ﺑﺎﻻﺳــم ‪ٕ ،Location‬واﻻ ﻓﺈﻧــﻪ ﯾــﺗم اﻻﻧﺗﻘــﺎل إﻟــﻰ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺗﺎﻟﯾــﺔ‬
‫ﻟﺗﻌﻠﯾﻣﺔ اﻟدوران‪.‬‬

‫‪- ٧٦ -‬‬
‫‪ -٣‬ﺗﻌﻠﯾﻣﺗﻲ ‪(LOOP while Equal) LOOPE‬‬
‫وﻣﻛﺎﻓﺋﺗﻬﺎ ‪: (LOOP if Zero Flag) LOOPZ‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪LOOPE Location‬‬
‫‪LOOPZ Location‬‬ ‫أو‬
‫ﺗؤدي إﻟﻰ‪:‬‬
‫‪ -‬إﻧﻘﺎص ﻣﺣﺗوى اﻟﻣﺳﺟل ‪ CX‬ﺑﺎﻟﻘﯾﻣﺔ ‪١‬‬
‫‪ -‬إذا ﺑﻘﯾـت اﻟﻘﯾﻣــﺔ اﻟﻣﺧزﻧــﺔ ﻓــﻲ اﻟﻣـﺳﺟل ‪ CX‬ﻻ ﺗــﺳﺎوي اﻟــﺻﻔر وﻛﺎﻧــت راﯾـﺔ اﻟــﺻﻔر ﻓــﻲ اﻟﺣﺎﻟــﺔ "‪"١‬‬
‫ﯾــﺗم اﻻﻧﺗﻘــﺎل إﻟــﻰ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﻣﻌﻧوﻧــﺔ ﺑﺎﻻﺳــم ‪ٕ ،Location‬واﻻ ﻓﺈﻧــﻪ ﺳــﯾﺗم اﻻﻧﺗﻘــﺎل إﻟــﻰ اﻟﺗﻌﻠﯾﻣــﺔ اﻟﺗﺎﻟﯾــﺔ‬
‫ﻟﺗﻌﻠﯾﻣﺔ اﻟدوران‪.‬‬

‫د‪ -‬ﺗﻌﻠﯾﻣﺎت اﻻﻋﺗراض ‪: Interrupt Instructions‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ اﻻﻋﺗراض ‪: (Interrupt) INT‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪INT Interrupt_Type‬‬
‫ﺣﯾـث ﯾﻣﺛـل ‪ Interrupt_Type‬ﻧـوع اﻻﻋﺗـراض وﻫـو ﻋﺑـﺎرة ﻋـن ﻋـدد ﺻـﺣﯾﺢ ﺗﺗـراوح ﻗﯾﻣﺗـﻪ ﺑـﯾن ‪، ٠‬‬
‫‪.٢٥٥‬‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ ‪: (Interrupt On Overflow) INTO‬‬


‫ﺗﻌﺗﺑر ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻣن ﺗﻌﻠﯾﻣﺎت اﻻﻋﺗراض اﻟﻣﺷروط ﺣﯾث ﺗﻌﻣل ﻫذﻩ ﻋﻠـﻰ اﺳـﺗدﻋﺎء اﻻﻋﺗـراض ﻣـن‬
‫ﻧوع ‪ ٤‬ﻋﻧدﻣﺎ ﺗﺻﺑﺢ راﯾﺔ اﻟﻔﯾض )‪ (OF‬ﻓﻲ اﻟﺣﺎﻟﺔ "‪."١‬‬

‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ اﻟﻌودة ﻣن اﻻﻋﺗراض ‪: (Interrupt On Overflow) IRET‬‬


‫ﺗ ــﺳﺗﺧدم ﻫ ــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﻹﻋ ــﺎدة اﻟﻣﻌ ــﺎﻟﺞ إﻟ ــﻰ ﺣﺎﻟﺗ ــﻪ ﻗﺑ ــل ﺗﻧﻔﯾ ــذ روﺗ ــﯾن اﻻﻋﺗـ ـراض ﻟ ــذﻟك ﻓ ــﺈن اﻟﻣوﻗ ــﻊ‬
‫اﻟطﺑﯾﻌﻲ ﻟﻬذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻫو آﺧر ﺗﻌﻠﯾﻣﺔ ﻣن ﺗﻌﻠﯾﻣﺎت روﺗﯾن اﻻﻋﺗراض‪.‬‬

‫‪ ٥-٤‬ﺗﻌﻠﯾﻣﺎت ﻣﻌﺎﻟﺟﺔ اﻟﺑﯾﺎﻧﺎت اﻟﺛﻧﺎﺋﯾﺔ ‪: Bit Manipulation Instructions‬‬


‫أ‪ -‬اﻟﺗﻌﻠﯾﻣﺎت اﻟﻣﻧطﻘﯾﺔ ‪: Logical Instructions‬‬
‫‪ -١‬ﺗﻌﻠﯾﻣﺔ ‪: AND‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪AND dest, source‬‬

‫‪- ٧٧ -‬‬
‫ﺣﯾث أن ‪ 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‬‬

‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ ‪: (Exclusive OR Instruction) XOR‬‬


‫اﻟﻘواﻋد‪:‬‬
‫‪0‬‬ ‫‪XOR‬‬ ‫‪0‬‬ ‫=‬ ‫‪0‬‬
‫‪0‬‬ ‫‪XOR‬‬ ‫‪1‬‬ ‫=‬ ‫‪1‬‬
‫‪1‬‬ ‫‪XOR‬‬ ‫‪0‬‬ ‫=‬ ‫‪1‬‬
‫‪1‬‬ ‫‪XOR‬‬ ‫‪1‬‬ ‫=‬ ‫‪0‬‬

‫‪ -٤‬ﺗﻌﻠﯾﻣﺔ ‪: TEST‬‬
‫ﺗﺷﺑﻪ ﺗﻌﻠﯾﻣﺔ ‪ AND‬واﻟﻔﺎرق ﺑﯾﻧﻬﻣﺎ أن ﺗﻌﻠﯾﻣـﺔ ‪ TEST‬ﻻ ﺗـؤﺛر ﻋﻠـﻰ اﻟﻣﻌـﺎﻣﻼت وﺗﺄﺛﯾرﻫـﺎ اﻟوﺣﯾـد ﻫـو‬
‫ﻋﻠﻰ اﻟراﯾﺎت وﺑﻧﻔس اﻷﺳﻠوب اﻟذي ﺗؤﺛر ﻓﯾﻪ ﺗﻌﻠﯾﻣﺔ ‪.AND‬‬

‫‪ -٥‬ﺗﻌﻠﯾﻣﺔ اﻟﻧﻔﻲ ‪: NOT‬‬


‫ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﺑﺣﺎﺟﺔ إﻟﻰ ﻣﻌﺎﻣل واﺣد ﯾﻣﻛن أن ﯾﻛون أﺣد اﻟﻣﺳﺟﻼت أو ﻣوﻗﻊ ﻣن ﻣواﻗﻊ اﻟذاﻛرة‪.‬‬
‫وﺗﻧﻔﯾذ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﯾؤدي إﻟﻰ ﺗﻐﯾﯾر ﺣﺎﻟﺔ ﻛل ﺛﻧﺎﺋﯾﺔ ﻣن ﺛﻧﺎﺋﯾﺎت اﻟﻣﻌﺎﻣل‪.‬‬
‫ﻣﺛﺎل )‪: (53.6‬‬
‫‪NOT AL‬‬

‫‪- ٧٨ -‬‬
‫ب‪ -‬ﺗﻌﻠﯾﻣﺎت اﻹ زاﺣﺔ ‪: 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‬ﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ اﻹ زاﺣﺔ اﻟﺣﺳﺎﺑﯾﺔ ﻟﻠﯾﺳﺎر ‪: (Shift Arithmetic Left) SAL‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪SAL dest, count‬‬
‫ﻣﺛﺎل )‪: (55.6‬‬
‫‪Mov CL, 2‬‬
‫‪SAL AL, CL‬‬

‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ اﻹ زاﺣﺔ اﻟﻣﻧطﻘﯾﺔ ﻟﻠﯾﻣﯾن ‪: (Shift Logical Right) SHR‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪SHR dest, count‬‬
‫ﺣﯾث ﯾﺗم إزاﺣﺔ ‪ dest‬ﻟﻠﯾﻣﯾن ﺑﻣﻘدار ‪.count‬‬
‫ﻣﺛﺎل )‪: (56.6‬‬
‫‪MOV CL, 2‬‬
‫‪SHR AL, CL‬‬

‫‪- ٧٩ -‬‬
‫اﻟﺣل‪:‬‬
‫‪AL‬‬ ‫‪CF‬‬
‫‪١١٠١١٠١١‬‬ ‫‪٠‬‬ ‫ﻣﺣﺗوى ‪ AL‬و ‪ CF‬ﻗﺑل اﻟﺗﻧﻔﯾذ‬
‫‪٠٠١١٠١١٠‬‬ ‫‪١‬‬ ‫ﻣﺣﺗوى ‪ AL‬و ‪ CF‬ﺑﻌد اﻟﺗﻧﻔﯾذ‬

‫‪ -٤‬ﺗﻌﻠﯾﻣﺔ اﻹ زاﺣﺔ اﻟﻣﻧطﻘﯾﺔ ﻟﻠﯾﺳﺎر ‪: (Shift Logical Left) SHL‬‬


‫ﯾﺷﺑﻪ ﻋﻣل ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻋﻣل اﻟﺗﻌﻠﯾﻣﺔ ‪.SAL‬‬

‫ج‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟدوران ‪: Rotate Instructions‬‬


‫‪ -١‬ﺗﻌﻠﯾﻣﺔ اﻟدوران ﻟﻠﯾﻣﯾن ‪: (Rotate Right) ROR‬‬
‫ﻣﺛﺎل )‪: (57.6‬‬
‫إﻓرض أن ﻣﺣﺗـوى اﻟﻣـﺳﺟل ‪ AL‬ﻫـو ‪ (11011011)2‬وأن ﻣﺣﺗـوى ‪ CF‬ﻫـو ‪ ،٠‬ﺑـﯾن ﻣﺣﺗوﯾـﺎت ‪AL‬‬
‫و ‪ CF‬ﺑﻌد ﺗﻧﻔﯾذ اﻟﺗﻌﻠﯾﻣﺔ‪:‬‬
‫‪ROR AL, 1‬‬
‫اﻟﺣل‪:‬‬
‫‪AL‬‬ ‫‪CF‬‬
‫‪١١٠١١٠١١‬‬ ‫‪٠‬‬ ‫ﻣﺣﺗوى ‪ AL‬و ‪ CF‬ﻗﺑل اﻟﺗﻧﻔﯾذ‬
‫‪١١١٠١١٠١‬‬ ‫‪١‬‬ ‫ﻣﺣﺗوى ‪ AL‬و ‪ CF‬ﺑﻌد اﻟﺗﻧﻔﯾذ‬
‫ﻻﺣظ أن اﻟﺛﻧﺎﺋﯾﺔ اﻟﺧﺎرﺟﺔ ﻣن أﻗﺻﻰ اﻟﯾﻣﯾن ﺗﻌﺎد إﻟﻰ اﻟﺧﺎﻧﺔ اﻟﻣﻔرﻏﺔ ﻣن أﻗـﺻﻰ اﻟﯾـﺳﺎر إﺿـﺎﻓﺔ إﻟـﻰ‬
‫اﻻﺣﺗﻔﺎظ ﺑﻬﺎ ﻓﻲ ‪.CF‬‬

‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ اﻟدوران ﻟﻠﯾﺳﺎر ‪: (Rotate Left) ROL‬‬


‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪ROL dest, count‬‬
‫ﺣﯾث أن ‪ dest‬و ‪ count‬ﻛﻣﺎ ﻫو اﻟﺣﺎل ﻣﻊ ﺗﻌﻠﯾﻣﺎت اﻹزاﺣﺔ‪.‬‬
‫ﻣﺛﺎل )‪: (58.6‬‬
‫‪ROL AL, 1‬‬

‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ اﻟدوران ﻟﻠﯾﻣﯾن ﻣﻊ راﯾﺔ اﻟﺣﻣل ‪: (Rotate Right through carry) RCR‬‬
‫ﻣﺛﺎل )‪: (59.6‬‬
‫‪RCR AL, 1‬‬

‫‪- ٨٠ -‬‬
‫‪ -٤‬ﺗﻌﻠﯾﻣﺔ اﻟدوران ﻟﻠﯾﺳﺎر ﻣﻊ راﯾﺔ اﻟﺣﻣل ‪(Rotate Left through carry) RCL‬‬
‫ﻣﺛﺎل )‪: (60.6‬‬
‫‪RCL AL, 1‬‬

‫‪ ٦-٤‬ﺗﻌﻠﯾﻣﺎت ﻣﻌﺎﻟﺟﺔ ﺳﻼﺳل اﻟرﻣوز ‪: String Manipulation Instructions‬‬


‫ﯾوﺟـد ﺧﻣـﺳﺔ أﻧـواع ﻣـن ﺗﻌﻠﯾﻣـﺎت ﻣﻌﺎﻟﺟـﺔ ﺳﻼﺳـل اﻟرﻣــوز‪ ،‬ﺣﯾـث ﯾﻣﻛـن ﻟﻛـل ﻧـوع ﻣـن ﻫـذﻩ اﻷﻧـواع أن‬
‫ﯾﺄﺧذ أﺣد ﺛﻼﺛﺔ أﺷﻛﺎل ﺑﺎﺳﺗطﺎﻋﺔ اﻷﺳﻣﺑﻠر اﻟﺗﻌرف ﻋﻠﯾﻬﺎ‪.‬‬
‫‪ -‬اﻟﺷﻛل اﻷول ﯾﺳﺗﺧدم ﻟﻠﺗﻌﺎﻣل ﻣﻊ ﻋﻧﺎﺻر ﻣن اﻟﻧوع ‪ Byte‬أو ﻣن اﻟﻧوع ‪.Word‬‬
‫‪ -‬اﻟﺷﻛل اﻟﺛﺎﻧﻲ ﻓﻬو ﻣﺧﺻص ﻟﻣﻌﺎﻟﺟﺔ ﺳﻼﺳل اﻟرﻣوز ﻣن اﻟﻧوع ‪.Byte‬‬
‫‪ -‬اﻟﺷﻛل اﻟﺛﺎﻟث ﻓﻬو ﻣﺧﺻص ﻟﻣﻌﺎﻟﺟﺔ ﺳﻼﺳل اﻟرﻣوز ﻣن اﻟﻧوع ‪.Word‬‬

‫أ‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﺗﺣرﯾك ‪ MOVS‬و ‪ MOV B‬و ‪: MOV W‬‬


‫ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺎت ﻟﻧﻘــل ﻣﺣﺗــوى ﻣوﻗــﻊ ﻣــن ﻣواﻗــﻊ اﻟــذاﻛرة )ﺑﺎﯾــت أو ﻛﻠﻣــﺔ( إﻟــﻰ ﻣوﻗــﻊ آﺧــر ﻣــن‬
‫ﻧﻔس اﻟطول‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪MOVS dest, source‬‬
‫ﺣﯾث أن‪:‬‬
‫‪ dest‬ﯾﻣﺛل اﻟﺣﻘل اﻟﻣﺳﺗﻘﺑل واﻟﻣﻔروض أن ﯾﻛون ﻣوﺟوداً ﻓﻲ اﻟﻘطﺎع اﻹﺿﺎﻓﻲ‪.‬‬
‫‪ source‬ﯾﻣﺛل اﻟﺣﻘل اﻟﻣرﺳل واﻟﻣﻔروض أن ﯾﻛون ﻣوﺟوداً ﻓﻲ ﻗطﺎع اﻟﺑﯾﺎﻧﺎت‪.‬‬

‫أﻣــﺎ ﺑﺎﻟﻧــﺳﺑﺔ ﻟﻠﺗﻌﻠﯾﻣﺗــﯾن ‪ 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‬‬

‫ب‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﻣﻘﺎرﻧﺔ ‪: Compare String Instructions‬‬


‫ﯾوﺟـد ﺛـﻼث أﺷـﻛﺎل ﻟﺗﻌﻠﯾﻣـﺎت اﻟﻣﻘﺎرﻧـﺔ ﻫـﻲ‪ CMPSW , CMPSB , CMPS :‬ﺣﯾـث أن اﻟـﺷﻛل‬
‫‪ CMPS‬ﯾﺣﺗﺎج إﻟﻰ ﻣﻌﺎﻣﻠﯾن أﻣﺎ اﻟﺷﻛﻠﯾن اﻵﺧرﯾن ﻓﯾﺳﺗﻌﻣﻼن ﺑدون ﻣﻌﺎﻣﻼت‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪CMPS dest, source‬‬
‫إن ﻋﻣﻠﯾ ــﺔ اﻟﻣﻘﺎرﻧ ــﺔ ﺗﺗوﻗ ــف إﻣ ــﺎ ﻋﻧ ــدﻣﺎ ﺗ ــﺻﺑﺢ ﻗﯾﻣ ــﺔ اﻟﻣ ــﺳﺟل ‪ CX‬ﻣ ــﺳﺎوﯾﺔ ﻟﻠ ــﺻﻔر‪ ،‬أو ﻋﻧ ــدﻣﺎ ﯾ ــﺗم‬
‫ﻣﻘﺎرﻧﺔ ﻋﻧﺻرﯾن ﻣﺗﻛﺎﻓﺋﯾن‪.‬‬
‫ﻣﺛﺎل )‪: (62.6‬‬

‫ج‪ -‬ﺗﻌﻠﯾﻣﺎت اﺳﺗﻘﺻﺎء ﺳﻠﺳﻠﺔ ﻣن اﻟرﻣوز ‪: Scan String Instructions‬‬


‫ﺗﺳﺗﺧدم ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺎت ﻻﺳﺗﻘﺻﺎء ﺳﻠﺳﻠﺔ ﻣن اﻟرﻣوز ﻟﻠﺑﺣث ﻋن رﻣز ﻣﻌﯾن‪.‬‬

‫د‪ -‬ﺗﻌﻠﯾﻣﺎت ﺗﺣﻣﯾل ﻋﻧﺻر ﻣن ﻋﻧﺎﺻر ﺳﻠﺳﻠﺔ رﻣزﯾﺔ إﻟﻰ اﻟﻣﺳﺟل ‪ 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‬‬

‫ﻫـ‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﺗﺧزﯾن إﻟﻰ ﺳﻠﺳﻠﺔ رﻣزﯾﺔ ‪: Store – String Instructios‬‬


‫وﺗﺷﻣل ﺛﻼث أﺷﻛﺎل ﻫﻲ‪:‬‬
‫‪ -١‬ﺗﻌﻠﯾﻣﺔ ‪: (Store into String) STOS‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪STOS dest‬‬
‫ﺣﯾــث أن ‪ dest‬ﯾﻣﺛــل ﺳﻠــﺳﻠﺔ ﻣــن اﻟرﻣــوز ﻣــن اﻟﻧــوع ‪ Byte‬أو ‪ Word‬وﻏﺎﻟﺑــﺎً ﻣــﺎ ﺗﻛــون ﻣﻌرﻓــﺔ ﻓــﻲ‬
‫اﻟﻘطﺎع اﻹﺿﺎﻓﻲ‪.‬‬
‫ﯾ ـ ــؤدي ﺗﻧﻔﯾ ـ ــذ ﻫ ـ ــذﻩ اﻟﺗﻌﻠﯾﻣ ـ ــﺔ إﻟ ـ ــﻰ ﻧﻘ ـ ــل ﻣﺣﺗ ـ ــوى اﻟﻣ ـ ــﺳﺟل ‪ (Byte) AL‬أو ﻣﺣﺗ ـ ــوى اﻟﻣ ـ ــﺳﺟل ‪AX‬‬
‫)‪ (Word‬إﻟﻰ ﻣوﻗﻊ اﻟذاﻛرة اﻟﻣﺷﺎر إﻟﯾﻪ ﺑﺎﻟﻣﺳﺟل ‪.DI‬‬
‫ﻣﺛﺎل )‪: (65.6‬‬
‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ ‪: (Store Al into String of type Byte) STOS‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪STOSB‬‬
‫ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ ﻣﻛﺎﻓﺋﺔ ﻟﻠﺗﻌﻠﯾﻣﺔ اﻟﺳﺎﺑﻘﺔ‪.‬‬
‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ ‪: (Store AX into String of Type Word) STOSW‬‬
‫ﺗﻌﺗﺑ ــر ﻫـ ــذﻩ اﻟﺗﻌﻠﯾﻣ ــﺔ ﻣﻛﺎﻓﺋـ ــﺔ ﻟﻠﺗﻌﻠﯾﻣ ــﺔ ‪ STOS‬ﻋﻧـ ــدﻣﺎ ﺗﻛ ــون ﻋﻧﺎﺻـ ــر اﻟﺳﻠ ــﺳﻠﺔ اﻟرﻣزﯾـ ــﺔ ﻣ ــن اﻟﻧـ ــوع‬
‫‪ ،Word‬وﯾﻔﺿل اﺳﺗﺧداﻣﻬﺎ ﻋﻠﻰ اﻟﺗﻌﻠﯾﻣﺔ ‪.STOS‬‬

‫‪ ٧-٤‬ﺗﻌﻠﯾﻣﺎت اﻟﺗﺣﻛم ﺑﺎﻟﻣﻌﺎﻟﺞ ‪: Processor Control Instructions‬‬


‫ﺗﻘﺳم ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺎت إﻟﻰ ﺛﻼث ﻣﺟﻣوﻋﺎت ﻫﻲ‪:‬‬

‫‪- ٨٣ -‬‬
‫أ‪ -‬ﺗﻌﻠﯾﻣﺎت ﺧﺎﺻﺔ ﺑﻣﻌﺎﻟﺟﺔ اﻟراﯾﺎت ‪: Flags Manipulation Instructions‬‬
‫ﺑﺈﻣﻛـ ــﺎن اﻟﻣﺑـ ــرﻣﺞ اﻟـ ــﺗﺣﻛم ﺑﺎﻟﻣﻌـ ــﺎﻟﺞ ﺑواﺳـ ــطﺔ ﺗﻌـ ــدﯾل ﺣﺎﻟـ ــﺔ راﯾـ ــﺎت اﻟﺣﻣـ ــل ‪ ،CF‬ﺗﺣدﯾـ ــد اﻻﺗﺟـ ــﺎﻩ ‪DF‬‬
‫واﻻﻋﺗراض ‪.IF‬‬
‫أﻣﺎ ﺑﺎﻟﻧـﺳﺑﺔ ﻟﻠﺗﻌﻠﯾﻣﺗـﯾن ‪ CLD‬و ‪ STD‬واﻟﻣﺗﻌﻠﻘـﺔ ﺑراﯾـﺔ ﺗﺣدﯾـد اﻻﺗﺟـﺎﻩ ﻓـﯾﻣﻛن اﺳـﺗﺧداﻣﻬﺎ ﻟوﺿـﻊ راﯾـﺔ‬
‫ﺗﺣدﯾد اﻻﺗﺟﺎﻩ ﻓﻲ اﻟﺣﺎﻟﺔ "‪ "٠‬أو اﻟﺣﺎﻟﺔ "‪ "١‬ﺣﯾث ﺗﺣدد ﻫذﻩ اﻟﺣﺎﻟﺔ اﺗﺟﺎﻩ ﻣﻌﺎﻟﺟﺔ ﺳﻼﺳل اﻟرﻣوز‪.‬‬
‫أﻣــﺎ ﺑﺎﻟﻧــﺳﺑﺔ ﻟﻠﺗﻌﻠﯾﻣﺗــﯾن ‪ CLI‬و ‪ STI‬ﻓﯾــﺳﺗطﯾﻊ اﻟﻣﺑــرﻣﺞ اﺳــﺗﺧداﻣﻬﺎ ﻟﻠــﺗﺣﻛم ﺑﺎﻟﻣﻌــﺎﻟﺞ ﻟﺗﺣدﯾــد إﻣﻛﺎﻧﯾــﺔ‬
‫ﻣﻌﺎﻟﺟــﺔ اﻻﻋﺗراﺿــﺎت أو إﻫﻣﺎﻟﻬــﺎ‪ .‬ﻓﻌﻧــد وﺿــﻊ راﯾــﺔ اﻻﻋﺗ ـراض ﻓــﻲ اﻟﺣﺎﻟــﺔ "‪ "٠‬ﻓــﺈن اﻟﻣﻌــﺎﻟﺞ ﺳــوف‬
‫ﯾﻬﻣل أو ﯾؤﺟل ﻣﻌﺎﻟﺟﺔ اﻻﻋﺗراﺿﺎت اﻟﻣﻘﻧﻌﺔ‪.‬‬

‫ب‪ -‬ﺗﻌﻠﯾﻣﺎت اﻟﺗزاﻣن اﻟﺧﺎرﺟﻲ ‪: External Synchronization Instructions‬‬


‫ﺗــﺳﺗﺧدم ـﻫـذﻩ اﻟﺗﻌﻠﯾﻣــﺎت ﻟﺗﻧظــﯾم ﻋﻣــل اﻟﻣﻌــﺎﻟﺞ ﺑﻣزاﻣﻧﺗــﻪ ﻣــﻊ اﻷﺣــداث اﻟﻧﺎﺗﺟــﺔ ﻋــن ﻣﻠﺣﻘــﺎت اﻟﺣﺎﺳــب‬
‫اﻟﺧﺎرﺟﯾﺔ ﻣﺛل أﺟﻬزة اﻹدﺧﺎل واﻹﺧراج ﻋﻠﻰ ﺳﺑﯾل اﻟﻣﺛﺎل‪.‬‬
‫واﻟﺗﻌﻠﯾﻣﺎت اﻷرﺑﻊ اﻟﺗﺎﻟﯾﺔ ﻣن أﻫم ﺗﻌﻠﯾﻣﺎت اﻟﺗزاﻣن اﻟﺧﺎرﺟﻲ‪:‬‬
‫‪ -١‬ﺗﻌﻠﯾﻣﺔ اﻟﺗوﻗف اﻟﺧﺎﻣل ‪: HLT‬‬
‫ﯾؤدي ﺗﻧﻔﯾذ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ وﺿﻊ اﻟﻣﻌﺎﻟﺞ اﻟدﻗﯾق ‪ 8086/8088‬ﻓـﻲ ﺣﺎﻟـﺔ اﻟﺗوﻗـف اﻟﺧﺎﻣـل دون أي‬
‫ﻋﻣل‪.‬‬
‫‪ -٢‬ﺗﻌﻠﯾﻣﺔ اﻻﻧﺗظﺎر ‪: WAIT‬‬
‫ـﺷطﺎ ﻷن‬
‫ﯾؤدي ﺗﻧﻔﯾذ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ إﻟﻰ وﺿﻊ اﻟﻣﻌﺎﻟﺞ ﻓﻲ ﺣﺎﻟﺔ اﻟﺗوﻗف اﻟﻧﺷط‪ .‬وﯾـﺳﻣﻰ ﻫـذا اﻟﺗوﻗـف ﻧ ً‬
‫اﻟﻣﻌــﺎﻟﺞ ﯾﻘــوم أﺛﻧــﺎء ﺗوﻗﻔــﻪ ﺑﻔﺣــص ﺧــط ﻣــن ﺧطــوط اﻟﻣﻌــﺎﻟﺞ اﻟﻣــﺳﻣﻰ ‪ TEST‬ﻋﻠــﻰ ﻓﺗ ـرات ﻣﻧﺗظﻣــﺔ‪،‬‬
‫طول ﻛل ﻣﻧﻬﺎ ‪ ٥‬ﻧﺑﺿﺎت‪.‬‬
‫‪ -٣‬ﺗﻌﻠﯾﻣﺔ اﻹﻓﻼت ‪: (Escape) ESC‬‬
‫ﺗــﺳﺗﺧدم ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﻓــﻲ أﻧظﻣــﺔ اﻟﺣﺎﺳــوب ﻣﺗﻌــددة اﻟﻣﻌﺎﻟﺟــﺎت‪ ،‬ﺑﺗــﺿﻣﯾﻧﻬﺎ ﻓــﻲ ﺑرﻧــﺎﻣﺞ ﻟﻐــﺔ أﺳــﻣﺑﻠﻲ‬
‫ﻟﺗﻣﻛﯾن اﻟﻣﺑرﻣﺞ ﻣن ﺗﻧﻔﯾذ ﺗﻌﻠﯾﻣﺎت ﻣﻌﺎﻟﺞ آﺧر‪.‬‬
‫اﻟﺻﯾﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪ESC opcode, source‬‬
‫ﺣﯾث أن‪ – opcode :‬ﯾﻣﺛل رﻣز اﻟﺗﻌﻠﯾﻣﺔ اﻟﻣرﺳﻠﺔ ﻟﻠﻣﻌﺎﻟﺞ اﻟﻣﻌﻧﻲ‪.‬‬
‫‪ – Source‬ﯾﻣﺛل ﻣﻌﺎﻣل اﻟﺗﻌﻠﯾﻣﺔ اﻟﻣطﻠوﺑﺔ‪.‬‬
‫‪ -٤‬ﺗﻌﻠﯾﻣﺔ اﻟﺣﺟز ‪: LOCK‬‬
‫ﺗﺳﺑق إﺣدى اﻟﺗﻌﻠﯾﻣﺎت ﺑﻘﺻد ﺣﺟز ﺧطوط اﻟﻧﺎﻗﻠﺔ ﻟﻔﺗرة زﻣﻧﯾﺔ ﻣﺳﺎوﯾﺔ ﻟﻣدة ﺗﻧﻔﯾذ ﻫذﻩ اﻟﺗﻌﻠﯾﻣﺔ‪.‬‬
‫ج‪ -‬اﻟﺗﻌﻠﯾﻣﺔ ‪: (No Operation Instruction) NOP‬‬

‫‪- ٨٤ -‬‬
‫ﻫــذﻩ اﻟﺗﻌﻠﯾﻣــﺔ ﻻ ﺗــؤدي إﻟــﻰ ﺣــدوث أي ﻓﻌــل ﻓــﻲ اﻟﺣﺎﺳــوب ﺳــوى اﺳــﺗﻬﻼك اﻟوﻗــت‪ .‬واﻟﻣــﺳﺟل اﻟوﺣﯾــد‬
‫اﻟذي ﯾﺗﺄﺛر ﻣن ﺗﻧﻔﯾذﻫﺎ ﻫو ﻣؤﺷر اﻟﺗﻌﻠﯾﻣﺔ ‪.IP‬‬
‫ﯾﻣﻛن اﺳﺗﺧدام ﺗﻌﻠﯾﻣﺔ ‪ NOP‬ﻟﻸﻏراض اﻵﺗﯾﺔ‪:‬‬
‫‪ -١‬ﺑرﻣﺟﺔ اﻟﻔﺗرات اﻟزﻣﻧﯾﺔ ‪.Time Delays‬‬
‫‪ -٢‬ﺗﻌــدﯾل اﻟﺑرﻧــﺎﻣﺞ اﻟﻬــدﻓﻲ ﺑﺎﺳــﺗﺑدال ﺗﻌﻠﯾﻣــﺔ أو أﻛﺛــر ﺑــﺷﯾﻔرة اﻟﺗﻌﻠﯾﻣــﺔ ‪) NOP‬أي ‪ (90H‬ﺛــم ﺗﻧﻔﯾــذﻩ‬
‫دون إﻋﺎدة اﻟﺗرﺟﻣﺔ‪.‬‬

‫‪- ٨٥ -‬‬

You might also like