You are on page 1of 46

‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬

‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫دروس ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ‬


‫ﺗﻢ ﺗﺠﻤﯿﻌﮭﺎ ﻣﻦ ﻣﻮﻗﻊ اﻟﻔﺮﯾﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب وﻃﻼب اﻟﻌﻠﻢ ﻓﻲ ﻛﻞ ﻣﻜﺎن‬


‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﮫ ﻣﻦ ﻣﻨﺘﺪﯾﺎت اﻟﻔﺮﯾﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﺠﺰء اﻷول‬
‫ﻣﻘﺪﻣﺔ ﻓﻲ ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪-1-‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻟﻤﺤﺔ ﻋﻦ أﻧﻈﻤﺔ اﻟﻌﺪ‬


‫ﺗﻤﮭﯿﺪ‬
‫اﻋﺘﺎد اﻹﻧﺴﺎن ﻋﻠﻰ ﻧﻈﺎم اﻟﻌﺪ اﻟﻌﺸﺮي ﻷﻧﮫ ﻛﺎن ﯾﻤﻠﻚ ﻋ ﺸﺮة أﺻ ﺎﺑﻊ ﻓ ﻲ ﯾﺪﯾ ﮫ‪ ،‬ﻓﻌﻨ ﺪﻣﺎ ﯾﺮﯾ ﺪ إﺣ ﺼﺎء اﻷﺷ ﯿﺎء‬
‫أﻣﺎﻣﮫ ﻓﻜﺎن ﯾﻘﺎﺑﻞ ﻛﻞ ﻋﻨﺼﺮ ﻣﻦ اﻟﻤﻮﺟﻮدات أﻣﺎﻣﮫ ﺑﺈﺻﺒﻊ واﺣﺪة ﻣﻦ ﯾﺪﯾﮫ‪ ،‬و ﻋﻨﺪﻣﺎ ﺗﻨﺘﮭ ﻲ أﺻ ﺎﺑﻊ ﯾﺪﯾ ﮫ ﻓﺈﻧ ﮫ‬
‫ﯾﺤﺘﺎج إﻟﻰ ﺷﺨﺺ آﺧﺮ ﯾﺮﻓﻊ إﺻﺒﻊ واﺣﺪة ﺣﯿﺚ ﺗﻤﺜ ﻞ ﻛ ﻞ إﺻ ﺒﻊ ﻣ ﻦ أﺻ ﺎﺑﻊ اﻟ ﺸﺨﺺ اﻟﺜ ﺎﻧﻲ ﻋ ﺸﺮة أﺻ ﺎﺑﻊ‬
‫ﻣﻦ أﺻﺎﺑﻊ اﻟﺸﺨﺺ اﻷول و ﺑﺬﻟﻚ ﻛﺎن اﻟﺜﺎﻧﻲ ﯾﻠﻌﺐ دور اﻟﻌﺸﺮات أﻣﺎ اﻷول ﻓﯿﻠﻌﺐ دور اﻵﺣﺎد‪.‬‬
‫و ﺑﻌﺪ اﺧﺘﺮاع اﻟﻜﺘﺎﺑﺔ ﺳﺎرع ﻋﻠﻤﺎء اﻟﺮﯾﺎﺿﯿﺎت إﻟﻰ ﺗﺤﻮﯾ ﻞ ﻧﻈ ﺎم اﻟﻌ ﺪ اﻟﻌ ﺸﺮي إﻟ ﻰ ﺻ ﯿﻐﺔ ﻛﺘﺎﺑﯿ ﺔ‪ ،‬ﻓﺎﻋﺘﻤ ﺪوا‬
‫اﻷﺳﺎس اﻟﺘﺎﻟﻲ‪ ) :‬ﻧﻤﺜﻞ اﻷﻋﺪاد ﻣﻦ ‪ 1‬ﺣﺘﻰ ‪ 9‬ﺑﺮﻣﺰ واﺣ ﺪ ﻓﻘ ﻂ أﻣ ﺎ اﻟﻌ ﺪد اﻟ ﺬي ﯾ ﺄﺗﻲ ﺑﻌ ﺪ اﻟﺘ ﺴﻌﺔ ﻓﮭ ﻮ ﻋﺒ ﺎرة‬
‫ﻋﻦ ﻣﺰﯾﺞ رﻣﺰﯾﻦ اﻷول ھﻮ اﻟﺼﻔﺮ و اﻟﺜﺎﻧﻲ ھﻮ اﻟﻮاﺣﺪ (‪.‬‬
‫ﻣﻦ اﻟﻔﻜﺮة اﻟﺴﺎﺑﻘﺔ ﻧﺠﺪ أن اﻟﺮﻣﻮز اﻷﺳﺎﺳﯿﺔ ﻟﻨﻈﺎم اﻟﻌﺪ اﻟﻌﺸﺮي ھﻲ ﻣﻦ اﻟ ﺼﻔﺮ ﺣﺘ ﻰ اﻟﺘ ﺴﻌﺔ أي ھ ﻲ ﻋ ﺸﺮة‬
‫رﻣﻮز ﻧﺴﺘﻄﯿﻊ ﻣﻦ ﺧﻼﻟﮭﺎ ﺗﻜﻮﯾﻦ ﻋﺪد أي ﻋﺪد ﻃﺒﯿﻌﻲ‪.‬‬
‫ﻃﺮﯾﻘﺔ اﻟﻌﺪ‪:‬‬
‫ﻧﺒﺪأ ﺑﺎﻟﻌﺪ اﻋﺘﺒﺎراً ﻣﻦ أول رﻣﺰ و ھﻮ اﻟﺼﻔﺮ و ﻧﺰﯾﺪ ﺑﻤﻘﺪار واﺣ ﺪ واﺣ ﺪ إﻟ ﻰ أن ﻧ ﺼﻞ إﻟ ﻰ ﻧﮭﺎﯾ ﺔ اﻟﺮﻣ ﻮز أﻻ‬
‫و ھﻮ اﻟﺘﺴﻌﺔ‪ ،‬و إذا أردﻧﺎ اﻟﻤﺘﺎﺑﻌﺔ ﻓﺈﻧﻨﺎ ﻧﺼﻔﺮ اﻟﺨﺎﻧﺔ اﻟﺘﻲ ﻧﺘﻌﺎﻣﻞ ﻣﻌﮭﺎ و ﻧﻀﯿﻒ واﺣ ﺪ إﻟ ﻰ اﻟﺨﺎﻧ ﺔ اﻟﻤﺠ ﺎورة‬
‫ﻟﻨﺤﺼﻞ ﻋﻠﻰ اﻟﺮﻗﻢ ﻋﺸﺮة ) ‪ ( 10‬و ﻣﻦ ﺛﻢ ﻧﺒﺪأ ﺑﺰﯾ ﺎدة اﻵﺣ ﺎد ﻣ ﻦ ﺟﺪﯾ ﺪ ﺣﺘ ﻰ ﻧ ﺼﻞ إﻟ ﻰ ‪ 19‬ﻋﻨ ﺪھﺎ ﻧ ﺼﻔﺮ‬
‫اﻵﺣﺎد و ﻧﻀﯿﻒ واﺣﺪ إﻟﻰ ﺧﺎﻧﺔ اﻟﻌﺸﺮات ﻓﯿﻨﺘﺞ اﻟﻌﺪد ‪ 20‬و ھﻜ ﺬا ﺣﺘ ﻰ ﻧ ﺼﻞ إﻟ ﻰ اﻟﻌ ﺪد ‪ 99‬ﻋﻨ ﺪھﺎ ﻧﺤ ﺎول‬
‫زﯾﺎدة ﺧﺎﻧﺔ اﻵﺣﺎد ﻓﻼ ﻧﺴﺘﻄﯿﻊ ﻓﻨﺼﻔﺮھﺎ و ﻧﺤﺎول زﯾﺎدة اﻟﻌﺸﺮات ﻓ ﻼ ﻧ ﺴﺘﻄﯿﻊ أﯾ ﻀﺎً ﻓﻨ ﺼﻔﺮھﺎ و ﻧﺰﯾ ﺪ ﺧﺎﻧ ﺔ‬
‫إﻟﻰ ﻣﻨﺰﻟﺔ اﻟﻤﺌﺎت ﻓﻨﺤﺼﻞ ﻋﻠﻰ اﻟﻌﺪد ‪.100‬‬
‫اﻟﻌﺪ ﺑﺎﻟﻨﻈﺎم اﻟﺴﺖ ﻋﺸﺮي‬
‫ﯾﺨﺘﻠﻒ ھﺬا اﻟﻨﻈﺎم ﻋﻦ ﺳﻠﻔﮫ ﺑﺄن اﻟﺮﻣﻮز اﻷﺳﺎﺳﯿﺔ ھﻲ ﻣﻦ اﻟﺼﻔﺮ ﺣﺘ ﻰ اﻟﺘ ﺴﻌﺔ و ﯾ ﺄﺗﻲ ﺑﻌ ﺪ اﻟﺘ ﺴﻌﺔ اﻷﺣ ﺮف‬
‫ﻣﻦ ‪ A‬ﺣﺘﻰ ‪ F‬أي أن اﻟﺮﻣﻮز اﻷﺳﺎﺳﯿﺔ ھﻲ‪:‬‬
‫} ‪{ 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F‬‬
‫و ﻟﻜﻲ ﺗ ﺴﺘﻄﯿﻊ اﻟﻌ ﺪ ﺑ ﺴﮭﻮﻟﺔ ﻓ ﻲ ھ ﺬا اﻟﻨﻈ ﺎم أﻋ ﺪ ﻗ ﺮاءة اﻟﺘﻤﮭﯿ ﺪ و ﻟﻜ ﻦ ﺗﺨﯿ ﻞ ﺟ ﺪﻻً أن ﻟﻺﻧ ﺴﺎن ﺳ ﺖ ﻋ ﺸﺮة‬
‫إﺻﺒﻊ ﻓﻲ ﻛﻞ ﯾﺪ ﺛﻤﺎﻧﯿﺔ أﺻﺎﺑﻊ !!‬
‫ﺗﻤﺮﯾﻦ ﻋﻠﻰ اﻟﻌﺪ ﺑﺎﻟﻨﻈﺎم اﻟﺴﺖ ﻋﺸﺮي‪:‬‬
‫‪0,1,2,…,9,A,B,…,F,10,11,12,13,14,…,19,1A,1B,1C,…,1F,20,21,…,29,2A,2B,…,2F,30,‬‬
‫‪…,99,9A,9B,…,9F,A0,A1,A2,…,A9,AA,AB,AC,…,AF,…,FF,100,…,119,11A,11B,…,199‬‬
‫…‪,19A,‬‬
‫ﻧﻈﺎم اﻟﻌﺪ اﻟﺜﻨﺎﺋﻲ‬
‫ﺗﺘﻄﻠﺐ أﺟﮭﺰة اﻟﺤﻮاﺳﯿﺐ و اﻷﺟﮭﺰة اﻹﻟﻜﺘﺮوﻧﯿﺔ ﻧﻈ ﺎم ﻋ ﺪ ﺟﺪﯾ ﺪ ﻣﻼﺋ ﻢ ﻟﻄﺒﯿﻌ ﺔ ھ ﺬه اﻷﺟﮭ ﺰة‪ ،‬ﻓ ﻨﺤﻦ ﻧﻌﻠ ﻢ أن‬
‫ﺟﻤﯿﻊ اﻷﺟﮭﺰة اﻹﻟﻜﺘﺮوﻧﯿﺔ ﺗﻌﻤﻞ ﻋﻠﻰ اﻟﺘﯿﺎر اﻟﻜﮭﺮﺑﺎﺋﻲ و اﻟﺬي ﻟﮫ ﺣﺎﻟﺘﯿﻦ ھﻤﺎ اﻟﻮﺿﻊ ‪ on‬و اﻟﻮﺿﻊ ‪. off‬‬
‫و ﺑﺬﻟﻚ ﻛﺎن اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ھﻮ اﻟﺤ ﻞ ﺣﯿ ﺚ اﻋﺘﻤ ﺪ ﻋﻠ ﻰ رﻣ ﺰﯾﻦ ﻓﻘ ﻂ ﻓ ﻲ ﺗﻤﺜﯿ ﻞ أﻋ ﺪاده ھﻤ ﺎ اﻟ ﺼﻔﺮ و اﻟﻮاﺣ ﺪ‬
‫}‪. {0,1‬‬
‫اﻟﻌﺪ ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ‪:‬‬
‫‪0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1‬‬
‫‪111‬‬

‫اﻟﺘﺤﻮﯾﻞ ﺑﯿﻦ ﻧﻈﻢ اﻷﻋﺪاد‬


‫ﯾﻠﺰﻣﻨﺎ ﻓﻲ ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ اﻟﺘﺤﻮﯾﻼت اﻟﺘﺎﻟﯿﺔ‪:‬‬
‫‪ -1‬اﻟﺘﺤﻮﯾﻞ ﻣﻦ اﻟﺜﻨﺎﺋﻲ إﻟﻰ اﻟﻌﺸﺮي‪.‬‬
‫‪ -2‬اﻟﺘﺤﻮﯾﻞ ﻣﻦ اﻟﺴﺖ ﻋﺸﺮي إﻟﻰ اﻟﻌﺸﺮي‪.‬‬
‫‪ -3‬اﻟﺘﺤﻮﯾﻞ ﻣﻦ اﻟﻌﺸﺮي إﻟﻰ اﻟﺜﻨﺎﺋﻲ‪.‬‬
‫و ﺳﻨﻌﻄﻲ ﻣﺜﺎﻻً ﻋﻦ ﻛﻞ ﺣﺎﻟﺔ ﻣﻦ ھﺬه اﻟﺤﺎﻻت‪:‬‬
‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪-2-‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻣﺜﺎل‪ : 1‬ﺣﻮل اﻟﺮﻗﻢ اﻟﺜﻨﺎﺋﻲ اﻟﺘﺎﻟﻲ ‪ 0100‬إﻟﻰ ﻣﻘﺎﺑﻠﮫ ﻓﻲ ﻧﻈﺎم اﻟﻌﺪ اﻟﻌﺸﺮي‪:‬‬
‫‪(0100)b  0  2  0  2  1  2 2  0  2 3  0  0  4  0  4‬‬
‫‪0‬‬ ‫‪1‬‬

‫ﻣﺜﺎل‪: 2‬ﺣﻮل اﻟﻌﺪد اﻟﺴﺖ ﻋﺸﺮي اﻟﺘﺎﻟﻲ ‪ 33A‬إﻟﻰ ﻣﻘﺎﺑﻠﮫ ﻓﻲ ﻧﻈﺎم اﻟﻌﺪ اﻟﻌﺸﺮي‪:‬‬
‫‪(33 A)h  10  16  3  161  3  16 2  10  48  768  826‬‬
‫‪0‬‬

‫ﻣﺜﺎل‪ : 3‬ﺣﻮل اﻟﻌﺪد اﻟﻌﺸﺮي اﻟﺘﺎﻟﻲ ‪ 30‬إﻟﻰ ﻣﻘﺎﺑﻠﮫ ﻓﻲ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ‪:‬‬


‫ﻟﺪﯾﻨﺎ اﻟﺠﺪول اﻟﻤﺮﺳﻮم ﺟﺎﻧﺒﺎً‪:‬‬
‫‪… 128 64 32 16‬‬ ‫‪8‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫‪1‬‬
‫ﻧﺴﺘﺨﺪم ھﺬا اﻟﺠﺪول ﻣﻦ أﺟ ﻞ ھ ﺬا اﻟﻨ ﻮع ﻣ ﻦ‬
‫اﻟﺘﺤﻮﯾﻞ ﻓﻠﺘﺤﻮﯾﻞ اﻟﻌ ﺪد اﻟﻌ ﺸﺮي ‪ 30‬ﻧﻼﺣ ﻆ‬
‫أﻧ ﮫ ﻣﻜ ﻮن ﻣ ﻦ ‪ 16+8+4+2‬ﻓﻨ ﻀﻊ واﺣ ﺪات‬
‫ﺗﺤﺖ اﻷﻋﺪاد ‪ 16‬و ‪ 8‬و ‪ 4‬و ‪ 2‬و ﻧﻤﻸ اﻟﺒﺎﻗﻲ أﺻﻔﺎراً‪ ،‬و ﺑﺬﻟﻚ ﻧﺤﺼﻞ ﻋﻠﻰ اﻟﺮﻗﻢ اﻟﺜﻨﺎﺋﻲ اﻟﻤﻘﺎﺑﻞ‪.‬‬
‫اﻟﻤﺘﻤﻢ اﻟﺜﻨﺎﺋﻲ و ﻛﯿﻔﯿﺔ اﻟﺤﺼﻮل ﻋﻠﯿﮫ‬
‫ﯾﺴﺘﺨﺪم اﻟﻤﺘﻤﻢ اﻟﺜﻨﺎﺋﻲ ﻣﻦ أﺟﻞ ﺗﻤﺜﯿﻞ اﻷﻋﺪاد اﻟﺴﺎﻟﺒﺔ ﻓﻲ اﻟﺤﺎﺳﺐ ﻓﻲ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ و ﻟﺘﻤﺜﯿﻞ ﻋﺪد ﺳ ﺎﻟﺐ ﻧﺘﺒ ﻊ‬
‫اﻟﺨﻄﻮات اﻟﺘﺎﻟﯿﺔ‪:‬‬
‫‪ -1‬ﻧﻜﺘﺐ اﻟﻌﺪد ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ‪.‬‬
‫‪ -2‬ﻧﻘﻠﺐ اﻷﺻﻔﺎر واﺣﺪات و اﻟﻮاﺣﺪات أﺻﻔﺎراً‪.‬‬
‫‪ -3‬ﻧﻀﯿﻒ واﺣﺪ إﻟﻰ اﻟﺮﻗﻢ اﻟﻨﺎﺗﺞ‪.‬‬
‫ﻣﺜﺎل‪ :‬ﻣﺜّﻞ اﻟﻌﺪد ‪ -30‬ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻋﻦ ﻃﺮﯾﻖ اﻟﻤﺘﻤﻢ اﻟﺜﻨﺎﺋﻲ‪:‬‬
‫‪(30)d = 0001 1110‬‬
‫‪ => 1110 0001‬ﻧﻘﻠﺐ‬
‫‪ => 1110 0010‬ﻧﻀﯿﻒ‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪-3-‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻟﻤﺤﺔ ﻋﻦ اﻟﺤﺎﺳﺐ‬
‫ﯾُﻌﺮﱠف اﻟﺤﺎﺳﺐ اﻟﺮﻗﻤﻲ ﺑﺄﻧﮫ ﻧﻈﺎم إﻟﻜﺘﺮوﻧﻲ ﻟﻤﻌﺎﻟﺠﺔ اﻟﻤﻌﻄﯿﺎت‪ ،‬و ﯾﺘﺄﻟﻒ ﻣﻦ ﻗﺴﻤﯿﻦ أﺳﺎﺳﯿﯿﻦ‪:‬‬
‫اﻟﻘﺴﻢ اﻷول ‪ :‬اﻟﺒﺮﻣﺠﯿﺎت ‪. SOFTWARE‬‬
‫وﺣﺪة اﻟﺬاﻛﺮة‬ ‫اﻟﻘﺴﻢ اﻟﺜﺎﻧﻲ ‪ :‬اﻟﻜﯿﺎن اﻟﺼﻠﺐ ‪HARDWARE‬‬
‫و ﯾﻘﺴﻢ اﻟﻜﯿﺎن اﻟﺼﻠﺐ إﻟﻰ أﻗﺴﺎم رﺋﯿﺴﯿﺔ ھﻲ ‪:‬‬
‫‪ (1‬وﺣ ﺪة اﻟ ﺪﺧﻞ‪ :‬ﺗ ﺘﻢ ﻣ ﻦ‬
‫وﺣﺪة اﻟﺪﺧﻞ‬ ‫‪C.P.U‬‬ ‫وﺣﺪة اﻟﺨﺮج‬
‫ﺧﻼﻟﮭ ﺎ إدﺧ ﺎل اﻟﻤﻌﻄﯿ ﺎت‬
‫اﻟﺮﻗﻤﯿﺔ‪.‬‬
‫‪ (2‬وﺣﺪة اﻟﺨﺮج‪ :‬ﺗﺘﻢ ﻣﻦ ﺧﻼﻟﮭﺎ إﻇﮭﺎر اﻟﻨﺘﺎﺋﺞ ﺑﻌﺪ ﻣﻌﺎﻟﺠﺔ اﻟﻤﻌﻄﯿﺎت‪.‬‬
‫‪ (3‬وﺣﺪة اﻟﻤﻌﺎﻟﺠﺔ اﻟﻤﺮﻛﺰﯾﺔ‪ :‬ھﻲ اﻟﻤﺴﺆوﻟﺔ ﻋﻦ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ و اﻟﻤﻨﻄﻘﯿﺔ و ﻣﻌﺎﻟﺠﺔ اﻟﺒﯿﺎﻧﺎت‪.‬‬
‫‪ (4‬وﺣﺪة اﻟﺬاﻛﺮة‪ :‬ﺗﺨﺰن اﻟﺒﺮاﻣﺞ و اﻟﻤﻌﻄﯿﺎت‪.‬‬
‫اﻟﺒﻨﯿﺔ اﻟﺪاﺧﻠﯿﺔ ﻟﻠﻤﻌﺎﻟﺞ ‪8086‬‬

‫‪ADDRESS BUS‬‬
‫‪15‬‬ ‫‪8 7‬‬ ‫‪1‬‬ ‫)‪(20 BITS‬‬
‫‪AH‬‬ ‫‪AL‬‬
‫‪BH‬‬ ‫‪BL‬‬
‫‪GENERAL‬‬
‫‪REGISTERS‬‬ ‫‪CH‬‬ ‫‪CL‬‬ ‫‪DATA BUS‬‬

‫‪DH‬‬ ‫‪DL‬‬ ‫)‪(16 BITS‬‬

‫‪SP‬‬ ‫‪CS‬‬
‫‪BP‬‬ ‫‪DS‬‬ ‫‪BUS‬‬
‫‪CONTROL‬‬
‫‪DI‬‬ ‫‪SS‬‬ ‫‪LOGIC‬‬
‫‪ALU DATA BUS‬‬
‫‪SI‬‬ ‫‪ES‬‬
‫)‪(16 BITS‬‬
‫‪IP‬‬
‫‪INTERNAL‬‬
‫‪TEMPORARY REGISTERS‬‬ ‫‪COMUNICATION‬‬
‫‪REGISTERS‬‬

‫‪O BUS‬‬ ‫‪INSTRUCTION QUE‬‬


‫‪EU‬‬
‫‪CONTROL‬‬
‫‪SYSTEM‬‬
‫)‪(8 BITS‬‬ ‫‪1 2 3 4 5 6‬‬
‫‪ALU‬‬

‫‪EXECUTION UNIT‬‬ ‫‪BUS INTERFACE UNIT‬‬


‫‪FLAGS‬‬ ‫)‪(EU‬‬ ‫)‪(BIU‬‬

‫ﯾﺘﺄﻟﻒ اﻟﻤﻌﺎﻟﺞ ‪ 8086‬ﻣﻦ وﺣﺪﺗﯿﻦ ﻣﻨﻔﺼﻠﺘﯿﻦ ھﻤﺎ ‪:‬‬


‫‪ (1‬وﺣﺪة ﻣﻼﺋﻤﺔ اﻟﻤﻤﺮات ) ‪ : ( Execution Unit‬و ﺳﻨﺮﻣﺰ ﻟﮭﺎ ﺑﺎﻟﺮﻣﺰ ‪. EU‬‬
‫‪ (2‬وﺣﺪة اﻟﺘﻨﻔﯿﺬ ) ‪ : ( Bus interface Unit‬و ﺳﻨﺮﻣﺰ ﻟﮭﺎ ﺑﺎﻟﺮﻣﺰ ‪. BIU‬‬
‫ﺑﺸﻜﻞ ﻋﺎم ﻓﺈن اﻟـ ‪ BIU‬ﻣﺴﺆوﻟﺔ ﻋﻦ ﻣﻌﻈﻢ اﻷﻋﻤ ﺎل ﻣﺜ ﻞ ‪ :‬إﺣ ﻀﺎر اﻟﺘﻌﻠﯿﻤ ﺔ‪ ،‬ﻗ ﺮاءة و ﻛﺘﺎﺑ ﺔ اﻟﻤﺘﺤ ﻮﻻت ﻓ ﻲ‬
‫اﻟﺬاﻛﺮة‪ ،‬إدﺧﺎل و إﺧﺮاج اﻟﻤﻌﻄﯿﺎت ﻣﻦ و إﻟﻰ اﻷﺟﮭﺰة اﻟﻤﺤﯿﻄﯿﺔ‪.‬‬
‫أﻣ ﺎ اﻟ ـ ‪ EU‬ﻓﮭ ﻲ ﻣ ﺴﺆوﻟﺔ ﻋ ﻦ ﺗﻨﻔﯿ ﺬ اﻟﺘﻌﻠﯿﻤ ﺎت‪ .‬و ﻛ ﻼ اﻟﻮﺣ ﺪﺗﯿﻦ ﺗﻌﻤ ﻼن ﺑ ﺸﻜﻞ ﻣﺘ ﻮازٍ ﻟﺘﺨﻔ ﯿﺾ اﻟ ﺰﻣﻦ‬
‫اﻟﻤﻄﻠﻮب ﻹﺣﻀﺎر ﻋﺪة ﺗﻌﻠﯿﻤﺎت و ﺗﻨﻔﯿﺬھﺎ‪.‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﻣﻦ اﻟﺠﺪﯾﺮ ﺑﺎﻟﺬﻛﺮ ﺑﺄن ھﻨﺎﻟﻚ ﺛﻼﺛﺔ ﻣﻤﺮات ﻓﻲ اﻟﺤﺎﺳﺐ و ھﻲ‪:‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪-4-‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫‪ (1‬ﻣﻤ ﺮ اﻟﻤﻌﻄﯿ ﺎت ‪ : DATA BUS‬و ﯾ ﺼﻞ ﺑ ﯿﻦ اﻟﻤﻌ ﺎﻟﺞ و اﻟ ﺬاﻛﺮة وﻇﯿﻔﺘ ﮫ ﻧﻘ ﻞ اﻟﻤﻌﻄﯿ ﺎت ﻣ ﻦ و إﻟ ﻰ‬


‫اﻟﺬاﻛﺮة‪.‬‬
‫‪ (2‬ﻣﻤﺮ اﻟﻌﻨ ﺎوﯾﻦ ‪ : ADDRESS BUS‬و ﯾ ﺼﻞ ﺑ ﯿﻦ اﻟﻤﻌ ﺎﻟﺞ و اﻟ ﺬاﻛﺮة أﯾ ﻀﺎً و وﻇﯿﻔﺘ ﮫ ﻧﻘ ﻞ اﻟﻌﻨ ﺎوﯾﻦ ﻣ ﻦ‬
‫اﻟﻤﻌﺎﻟﺞ إﻟﻰ اﻟﺬاﻛﺮة‪.‬‬
‫‪ (3‬ﻣﻤﺮ اﻟﺘﺤﻜﻢ ‪ : CONTROL BUS‬ﻟﺘﻨﺴﯿﻖ ﻋﻤﻞ اﻟﻤﻤﺮﯾﻦ اﻟﺴﺎﺑﻘﯿﻦ‪.‬‬

‫وﺣﺪة ﻣﻼﺋﻤﺔ اﻟﻤﻤﺮات ‪Bus Interface Unit‬‬


‫و ﺗ ﺴﺘﺨﺪم ﻟﻤﻼﺋﻤ ﺔ اﻟﻤﻌ ﺎﻟﺞ ﻣ ﻊ اﻟﻌ ﺎﻟﻢ اﻟﺨ ﺎرﺟﻲ‪ .‬و ﺗﺘ ﺄﻟﻒ ﻣ ﻦ ‪ :‬ﺟ ﺎﻣﻊ اﻟﻌﻨ ﺎوﯾﻦ‪ ،‬ﻣ ﺴﺠﻼت اﻟﻤﻘ ﺎﻃﻊ‪ ،‬وﺣ ﺪة‬
‫اﻟﺘﺤﻜﻢ ﺑﺎﻟﻤﺤﺮف‪ ،‬ﺻﻒ اﻟﺘﻌﻠﯿﻤﺎت‪.‬‬
‫ﺗﻘﻮم وﺣﺪة اﻟـ ‪ BIU‬ﺑﺎﻟﺘﺤﻜﻢ ﺑﻤﻤﺮ اﻟﻤﻌﻄﯿﺎت و ﻣﻤﺮ اﻟﻌﻨﺎوﯾﻦ و ﻣﻤﺮ اﻟﺘﺤﻜﻢ ‪.‬‬
‫ﺗﺤﻀﺮ ‪ BIU‬اﻟﺘﻌﻠﯿﻤﺎت ﻣﻦ اﻟﺬاﻛﺮة ﺑﺎﯾﺖ ﺑﺎﯾﺖ و ﺗﻀﻌﮭﺎ ﻓﯿﻤﺎ ﯾﺴﻤﻰ ﺑﺮﺗﻞ اﻟﺘﻌﻠﯿﻤ ﺎت )ﺻ ﻒ اﻟﺘﻌﻠﯿﻤ ﺎت( اﻟ ﺬي‬
‫ﻻ ﯾ ﺘﻢ ﺗﻨﻔﯿ ﺬھﺎ أوﻻً‬‫ﯾﺘﺴﻊ ﻟﺴﺖ ﺑﺎﯾﺘﺎت ﻛﺤﺪ أﻋﻈﻤﻲ و ﻣ ﻦ اﻟﻄﺒﯿﻌ ﻲ أن اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺘ ﻲ ﺗ ﺪﺧﻞ رﺗ ﻞ اﻟﺘﻌﻠﯿﻤ ﺎت أو ً‬
‫ﻟﻠﻤﺤﺎﻓﻈﺔ ﻋﻠﻰ ﺗﺮﺗﯿﺐ اﻟﺘﻌﻠﯿﻤﺎت و ﯾﺪﻋﻰ ھﺬا اﻟﻤﺒﺪأ ﺑ ـ اﻟ ﺪاﺧﻞ أوﻻً ﺧ ﺎرج أوﻻً ‪ First In Last Out‬و ﻧﺮﻣ ﺰ‬
‫ﻟﮭﺬا اﻟﻤﺒﺪأ ﺑـ ‪.FIFO‬‬
‫إن إﺣ ﻀﺎر ﺷ ﯿﻔﺮة اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺘﺎﻟﯿ ﺔ ﯾ ﺘﻢ ﻋﻨ ﺪﻣﺎ ﺗﻜ ﻮن وﺣ ﺪة اﻟﺘﻨﻔﯿ ﺬ ‪ EU‬ﻣ ﺸﻐﻮﻟﺔ ﺑﺘﻨﻔﯿ ﺬ اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺤﺎﻟﯿ ﺔ ) ھ ﺬه‬
‫إﺣ ﺪى ﻣﺤ ﺴﻨﺎت اﻟﻤﻌ ﺎﻟﺞ ‪ 8086‬ﻋ ﻦ أﺳ ﻼﻓﮫ ﺣﯿ ﺚ ﻛﺎﻧ ﺖ اﻟ ـ ‪ CPU‬ﻓ ﻲ اﻟﻤﻌﺎﻟﺠ ﺎت اﻟ ﺴﺎﺑﻘﺔ ﻟﻠﻤﻌ ﺎﻟﺞ ‪8086‬‬
‫ﺗﺘﻮﻗﻒ ﻋﻦ اﻟﻌﻤﻞ ﺧﻼل ﻓﺘﺮة ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺤﺎﻟﯿﺔ (‪.‬‬
‫ﻋﻨ ﺪﻣﺎ ﺗﻔ ﻚ وﺣ ﺪة اﻟﺘﻨﻔﯿ ﺬ ‪ EU‬ﺷ ﯿﻔﺮة ﺗﻌﻠﯿﻤ ﺔ ﻣ ﺎ ﻣ ﻦ رﺗ ﻞ اﻟﺘﻌﻠﯿﻤ ﺎت و ﺗﻜ ﻮن ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺔ ﺗﻌﻠﯿﻤ ﺔ ﺗ ﺆدي إﻟ ﻰ‬
‫ﺗﻐﯿﯿﺮ ﺗﺴﻠﺴﻞ ﺗﻌﻠﯿﻤﺎت اﻟﺒﺮﻧﺎﻣﺞ )ﻗﻔﺰ إﻟﻰ ﺑﺮﻧﺎﻣﺞ ﻓﺮﻋﻲ ﻣﺜﻼً( ﻋﻨﺪھﺎ ﯾﺘﻢ ﺗﺼﻔﯿﺮ رﺗﻞ اﻟﺘﻌﻠﯿﻤﺎت و إﻋ ﺎدة ﻣﻠﺌ ﮫ‬
‫ﻣ ﻦ ﺟﺪﯾ ﺪ ﺑﺘﻌﻠﯿﻤ ﺎت اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ ) ﻷن وﺣ ﺪة ﻣﻼﺋﻤ ﺔ اﻟﻤﻤ ﺮات ‪ BIU‬ﺗﺠﻠ ﺐ اﻟﺘﻌﻠﯿﻤ ﺎت دون ﻣﻌﺮﻓ ﺔ ﻣ ﺎ‬
‫ﺗﺆدﯾﮫ ھﺬه اﻟﺘﻌﻠﯿﻤﺎت(‪.‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﺟﺎﻣﻊ اﻟﻌﻨﺎوﯾﻦ و ﻣﺴﺠﻼت اﻟﻤﻘﺎﻃﻊ ﺳﯿﺘﻢ ﺷﺮﺣﮭﺎ ﻻﺣﻘﺎً‪.‬‬
‫وﺣﺪة اﻟﺘﻨﻔﯿﺬ ‪Execution Unit‬‬
‫و ھﻲ ﻣﺴﺆوﻟﺔ ﻋﻦ ﻓﻚ ﺷﯿﻔﺮة اﻟﺘﻌﻠﯿﻤﺎت و ﺗﻨﻔﯿﺬھﺎ و ﺗﺘﺄﻟﻒ ﻣﻦ ‪:‬‬
‫‪ (1‬و ﺣﺪة اﻟﺤﺴﺎب و اﻟﻤﻨﻄﻖ‪.‬‬
‫‪ (2‬ﻣﺴﺠﻞ اﻷﻋﻼم‪.‬‬
‫‪ (3‬ﺛﻤﺎﻧﯿﺔ ﻣﺴﺠﻼت ﻟﻸﻏﺮاض اﻟﻌﺎﻣﺔ‪.‬‬
‫‪ (4‬ﻣﺴﺠﻼت ﻣﺆﻗﺘﺔ‪.‬‬
‫‪ (5‬ﻣﻨﻄﻖ اﻟﺘﺤﻜﻢ ﺑـ ‪.EU‬‬
‫ﺗﺠﻠﺐ وﺣﺪة اﻟﺘﻨﻔﯿﺬ ‪ EU‬اﻟﺘﻌﻠﯿﻤﺎت ﻣﻦ ﻣﻘﺪﻣﺔ رﺗﻞ اﻟﺘﻌﻠﯿﻤﺎت ﻓﻲ وﺣﺪة ﻣﻼﺋﻤ ﺔ اﻟﻤﻤ ﺮات ‪ BIU‬و ﺗﻔ ﻚ ﺷ ﯿﻔﺮﺗﮭﺎ‬
‫و ﺗﻘﻮم ﺑﺎﻟﻌﻤﻞ اﻟﺬي ﺗﻤﻠﯿﮫ ﻛﻞ ﺗﻌﻠﯿﻤﺔ ﻓﺈذا اﺣﺘﺎﺟﺖ ھﺬه اﻟﻮﺣﺪة ) ‪ ( EU‬إﻟﻰ ﻣﻌﻠﻮﻣ ﺔ ﻣﺨﺰﻧ ﺔ ﻓ ﻲ اﻟ ﺬاﻛﺮة ﻓﺈﻧﮭ ﺎ‬
‫ﺗﺄﻣﺮ وﺣﺪة ﻣﻼﺋﻤﺔ اﻟﻤﻤﺮات ‪ BIU‬ﺑﺈﺣﻀﺎرھﺎ و ذﻟﻚ ﻋﻦ ﻃﺮﯾﻖ إﻋﻄﺎﺋﮭﺎ ﻋﻨﻮان ھﺬه اﻟﻤﻌﻠﻮﻣﺔ ﻓﻲ اﻟﺬاﻛﺮة‪.‬‬
‫إن ﻣﻦ أﺣﺪ أھﻢ وﻇ ﺎﺋﻒ ‪ EU‬ھ ﻮ ﺗﻨﻔﯿ ﺬ اﻟﻌﻤﻠﯿ ﺎت اﻟﺤ ﺴﺎﺑﯿﺔ و اﻟﻤﻨﻄﻘﯿ ﺔ ﻋﻠ ﻰ اﻟﻤﻌﻠﻮﻣ ﺎت‪ ،‬و أﺛﻨ ﺎء ﺳ ﯿﺮ اﻟﺘﻨﻔﯿ ﺬ‬
‫ﺗﻘﻮم ‪ EU‬ﺑﻔﺤﺺ ﻣﺴﺠﻞ اﻷﻋﻼم ﺑﻌﺪ ﻛﻞ ﺗﻌﻠﯿﻤﺔ ) ﻣﺴﺠﻞ اﻷﻋﻼم ‪ :‬ھﻮ ﻋﺒﺎرة ﻋ ﻦ ﺳ ﺘﺔ ﻋ ﺸﺮ ﺑ ﺖ ﺗﻌﺒ ﺮ ﻋ ﻦ‬
‫ﺣﺎﻟﺔ اﻟﻤﻌﺎﻟﺞ ﺑﻌﺪ ﺗﻨﻔﯿﺬ ﻛﻞ ﺗﻌﻠﯿﻤﺔ ( ‪.‬‬
‫ﻣ ﺴﺠﻼت اﻷﻏ ﺮاض اﻟﻌﺎﻣ ﺔ ھ ﻲ ﺛﻤﺎﻧﯿ ﺔ ﻣ ﺴﺠﻼت ﻃ ﻮل ﻛ ﻞ ﻣ ﺴﺠﻞ ﻣﻨﮭ ﺎ ‪ 2‬ﺑﺎﯾ ﺖ و ھ ﺬه اﻟﻤ ﺴﺠﻼت ھ ﻲ‬
‫‪. AX,BX,CX,DX,SI,DI,BP,SP‬‬

‫ﺑﻨﯿﺔ اﻟﺬاﻛﺮة‬
‫ﺗﺘﺄﻟﻒ اﻟﺬاﻛﺮة ﻣﻦ ﺣﺠﺮات ﻣﺘﺴﻠﺴﻠﺔ ﺳﻌﺔ ﻛﻞ ﻣﻨﮭﺎ ‪ 8‬ﺑﺖ )واﺣ ﺪ ﺑﺎﯾ ﺖ( ‪ ،‬ﺗ ﺮﻗﻢ ھ ﺬه اﻟﺤﺠ ﺮات ﻣ ﻦ اﻟ ﺼﻔﺮ و‬
‫ﺣﺘﻰ ﻧﮭﺎﯾﺔ اﻟ ﺬاﻛﺮة و ﯾ ﺴﺘﺨﺪم اﻟﻨﻈ ﺎم اﻟ ﺴﺖ ﻋ ﺸﺮي ﻋ ﺎدة ﻓ ﻲ ﻋﻤﻠﯿ ﺔ اﻟﺘ ﺮﻗﯿﻢ و ﺑ ﺬﻟﻚ ﯾﻜ ﻮن ﻟﻜ ﻞ ﺣﺠ ﺮة رﻗ ﻢ‬
‫ﯾﻤﯿﺰھﺎ ﻋﻦ ﻏﯿﺮھﺎ‪ ،‬ﯾﺪﻋﻰ ھﺬا اﻟﺮﻗﻢ ﺑﻌﻨﻮان ﺗﻠﻚ اﻟﺤﺠﺮة‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪-5-‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﯾﻮﺿﻊ داﺧﻞ ﻛﻞ ﺣﺠﺮة رﻗﻢ ﺳﺖ ﻋﺸﺮي ﯾﺘﺮاوح ﺑﯿﻦ ‪ 0‬و ‪ FF‬و ﯾﺪﻋﻰ ھﺬا اﻟﺮﻗﻢ ﺑﻤﺤﺘﻮى ﺗﻠﻚ اﻟﺤﺠﺮة‪.‬‬
‫ﯾﻮﺟﺪ ﺑﯿﻦ اﻟﻤﻌﺎﻟﺞ و اﻟﺬاﻛﺮة ﻣﻤﺮان ھﻤﺎ ﻣﻤﺮ اﻟﻤﻌﻄﯿﺎت ﺑﻌﺮض ‪ 16‬ﺑﺖ و ﻣﻤﺮ اﻟﻌﻨﺎوﯾﻦ ﺑﻌﺮض ‪ 20‬ﺑﺖ‪.‬‬
‫ﻓﻤﺜﻼً ﻋﻨﺪﻣﺎ ﯾﺤﺘ ﺎج اﻟﻤﻌ ﺎﻟﺞ إﻟ ﻰ اﻟﻘﯿﻤ ﺔ اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ اﻟﺤﺠ ﺮة ذات اﻟ ﺮﻗﻢ ‪ ) 100‬ﻋﻨﻮاﻧﮭ ﺎ ‪ ( 100‬ﻓ ﺈن اﻟ ﺮﻗﻢ‬
‫‪ 100‬ﯾﻤﺜ ﻞ ﺑ ﺸﻜﻞ ﺛﻨ ﺎﺋﻲ و ﯾﻮﺿ ﻊ ﻋﻠ ﻰ ﻣﻤ ﺮ اﻟﻌﻨ ﺎوﯾﻦ و ﯾﺮﺳ ﻞ إﻟ ﻰ اﻟ ﺬاﻛﺮة‪ ،‬و ﺣﺎﻟﻤ ﺎ ﺗ ﺴﺘﻠﻢ اﻟ ﺬاﻛﺮة ھ ﺬا‬
‫اﻟﻌﻨﻮان ﻓﺈن ﻣﺤﺘﻮى اﻟﺤﺠﺮة ‪ 100‬ﯾﺮﺳﻞ إﻟﻰ اﻟﻤﻌﺎﻟﺞ ﻋﻦ ﻃﺮﯾﻖ ﻣﻤﺮ اﻟﻤﻌﻄﯿﺎت‪.‬‬
‫إن ﻛﻮن ﻣﻤ ﺮ اﻟﻌﻨ ﺎوﯾﻦ ذو ﻋ ﺮض ‪ 20‬ﺑ ﺖ ) ‪ 20‬ﺧ ﻂ ﻧﻘ ﻞ( ھ ﺬا ﯾﻌﻨ ﻲ أﻧ ﮫ ﯾ ﺴﺘﻄﯿﻊ ﻧ ـﻘﻞ رﻗ ﻢ ﺛﻨ ﺎﺋﻲ ذو ‪20‬‬
‫ﺧﺎﻧﺔ أي أن أﻛﺒﺮ ﻗﯿﻤﺔ ﯾﻤﻜﻦ وﺿﻌﮭﺎ ﻋﻠﻰ ﻣﻤﺮ اﻟﻌﻨﺎوﯾﻦ ھﻲ ‪:‬‬
‫‪2 20  1048576  1MB‬‬
‫و ﺑﺬﻟﻚ ﯾﺴﺘﻄﯿﻊ اﻟﻤﻌﺎﻟﺞ ‪ 8086‬ﻋﻨﻮﻧﺔ واﺣﺪ ﻣﯿﻐﺎ ﻣﻦ اﻟﺬاﻛﺮة ﻓﻘﻂ‪.‬‬

‫)ھﺬه اﻟﻔﻘﺮة ﻣﺮﺗﺒﻄﺔ ارﺗﺒﺎﻃﺎً وﺛﯿﻘﺎً ﺑﺎﻟﻤﺴﺠﻼت(‬ ‫ﻣﻘﺎﻃﻊ اﻟﺬاﻛﺮة‬


‫ﯾﺘﻌﺎﻣﻞ اﻟﻤﻌﺎﻟﺞ ﻛﻤﺎ ذﻛﺮﻧﺎ ﻣﻊ واﺣﺪ ﻣﯿﻐﺎ ﻣﻦ اﻟﺬاﻛﺮة‪ ،‬و ﯾﻤﻜﻦ أن ﻧﻘﺘﻄﻊ ﻣﻦ ھﺬه اﻟﻤﯿﻐﺎ أرﺑﻌ ﺔ ﻣﻘ ﺎﻃﻊ أﺳﺎﺳ ﯿﺔ‬
‫ﯾﺘﻌﺎﻣ ﻞ ﻣﻌﮭ ﺎ ﺑﺮﻧﺎﻣﺠﻨ ﺎ ﺑ ﺸﻜﻞ ﻣﺒﺎﺷ ﺮ )أي أﻧ ﮫ ﻻ ﺗ ﺘﻢ اﻻﺳ ﺘﻔﺎدة ﻣ ﻦ ﻛ ﻞ اﻟ ﺬاﻛﺮة ﺑ ﺂن واﺣ ﺪ( و ھ ﺬه اﻟﻤﻘ ﺎﻃﻊ‬
‫اﻷرﺑﻌﺔ ھﻲ‪:‬‬
‫‪ (1‬ﻣﻘﻄﻊ اﻟﺸﯿﻔﺮة ‪Code Segment CS‬‬
‫ﯾﺨﺼﺺ ھﺬا اﻟﻤﻘﻄﻊ ﻣﻦ اﻟﺬاﻛﺮة –ﻛﻤﺎ ھﻮ واﺿﺢ ﻣﻦ ﺗﺴﻤﯿﺘﮫ‪ -‬ﻟﺘﺨ ﺰﯾﻦ ﺷ ﯿﻔﺮة اﻟﺒﺮﻧ ﺎﻣﺞ‪ .‬و ھﻨ ﺎك ﻣ ﺴﺠﻞ ﻟ ﮫ‬
‫ﻧﻔﺲ اﻻﺳﻢ ‪ CS‬ﻣﻮﺟﻮد ﻓﻲ اﻟﻤﻌﺎﻟﺞ ﯾﺤﺘﻔﻆ ﺑﻘﯿﻤﺔ ﺗﺪل ﻋﻠﻰ ﺑﺪاﯾ ﺔ ھ ﺬا اﻟﻤﻘﻄ ﻊ ﻓ ﻲ اﻟ ﺬاﻛﺮة و ﯾ ﺴﺎﻋﺪه اﻟﻤ ﺴﺠﻞ‬
‫)‪ IP (Instruction Pointer‬اﻟ ﺬي ﯾﺤ ﺘﻔﻆ ﺑﻌﻨ ﻮان اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺘ ﻲ ﺳ ﺘﻨﻔﺬ اﻵن و ﺗﻌ ﺪل ﻗﯿﻤﺘ ﮫ آﻟﯿ ﺎً ﻟﯿ ﺸﯿﺮ إﻟ ﻰ‬
‫ﻋﻨﻮان اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‪.‬‬
‫‪ (2‬ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت ‪Data Segment DS‬‬
‫ﯾﺨ ﺼﺺ ھ ﺬا اﻟﻤﻘﻄ ﻊ ﻣ ﻦ اﻟ ﺬاﻛﺮة ﻟﺘﺨ ﺰﯾﻦ اﻟﻤﻌﻄﯿ ﺎت و اﻟﻤﺘﺤ ﻮﻻت‪ .‬و ھﻨ ﺎك ﻣ ﺴﺠﻞ ﻟ ﮫ ﻧﻔ ﺲ اﻻﺳ ﻢ ‪DS‬‬
‫ﻣﻮﺟﻮد ﻓﻲ اﻟﻤﻌﺎﻟﺞ ﯾﺤﺘﻔﻆ ﺑﻘﯿﻤﺔ ﺗ ﺪل ﻋﻠ ﻰ ﺑﺪاﯾ ﺔ ھ ﺬا اﻟﻤﻘﻄ ﻊ ﻓ ﻲ اﻟ ﺬاﻛﺮة و ﯾ ﺴﺎﻋﺪه اﻟﻤ ﺴﺠﻞ ‪ SI‬اﻟ ﺬي ﯾ ﺸﯿﺮ‬
‫إﻟﻰ اﻹزاﺣﺔ ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ ﺑﺪاﯾﺘﮫ‪.‬‬

‫‪ (3‬ﻣﻘﻄﻊ اﻟﻤﻜﺪس ‪Stack Segment SS‬‬


‫ﯾﺨ ﺼﺺ ھ ﺬا اﻟﻤﻘﻄ ﻊ ﻟﻠﺤﻔ ﻆ اﻟﻤﺆﻗ ﺖ ﻟ ﺒﻌﺾ اﻟﻤﻌﻠﻮﻣ ﺎت‬
‫‪00000h‬‬
‫اﻟ ﻀﺮورﯾﺔ و اﻟﺘ ﻲ‬
‫)‪) SP=(SP-2‬إدﺧﺎل ﻣﻌﻠﻮﻣﺎت(‬
‫ﯾﺨ ﺸﻰ أن ﺗ ﻀﯿﻊ أو‬
‫ﺗﺘﻐﯿ ﺮ أﺛﻨ ﺎء ﺗﻨﻔﯿ ﺬ‬
‫‪) SP‬ﻗﻤﺔ اﻟﻤﻜﺪس(‬ ‫ﺑﺮﻧ ﺎﻣﺞ ﻣ ﺎ‪ .‬و ھﻨ ﺎك ﻣ ﺴﺠﻞ ﻟ ﮫ‬
‫ﻧﻔ ﺲ اﻻﺳ ﻢ ‪ SS‬ﻣﻮﺟ ﻮد ﻓ ﻲ‬
‫‪Stack‬‬ ‫اﻟﻤﻌ ﺎﻟﺞ ﯾﺤ ﺘﻔﻆ ﺑﻘﯿﻤ ﺔ‬
‫)‪) SP=(SP+2‬إﺧﺮاج ﻣﻌﻠﻮﻣﺎت(‬
‫ﺗ ﺪل ﻋﻠ ﻰ ﺑﺪاﯾ ﺔ ھ ﺬا‬
‫ﻗﻌﺮ اﻟﻤﻜﺪس ‪BP‬‬ ‫اﻟﻤﻘﻄﻊ ﻓﻲ اﻟﺬاﻛﺮة‪.‬‬

‫‪FFFFFh‬‬ ‫آﻟﯿﺔ ﻋﻤﻞ اﻟﻤﻜﺪس ‪ ) Last In First Out LIFO‬آﺧﺮ ﻣﺎ‬


‫‪Memory‬‬
‫ﯾ ﺪﺧﻞ أول ﻣ ﺎ ﯾﺨ ﺮج ( ‪ :‬أي أن أول ﻋﻨ ﺼﺮ ﯾ ﺪﺧﻞ إﻟ ﻰ‬
‫اﻟﻤﻜﺪس ﯾﺼﺒﺢ ﻓﻲ ﻗﻌﺮه و آﺧﺮ ﻋﻨﺼﺮ ﯾﺪﺧﻞ اﻟﻤﻜﺪس ﯾﺼﺒﺢ ﻓﻲ ﻗﻤﺘﮫ و ﯾﺘﻢ‬
‫ﺳﺤﺐ اﻟﻤﻌﻠﻮﻣﺎت ﻣﻦ اﻟﻤﻜﺪس ﻣﻦ ﻗﻤﺘ ﮫ ﺣﯿ ﺚ ﻟ ﺪﯾﻨﺎ ﻣ ﺴﺠﻞ اﺳ ﻤﮫ ‪ Stack Pointer SP‬ﯾ ﺸﯿﺮ دوﻣ ﺎً إﻟ ﻰ ﻗﻤ ﺔ‬
‫اﻟﻤﻜ ﺪس ﻓﮭ ﻮ ﯾﺘﻐﯿ ﺮ ﺣ ﺴﺐ اﻟﺤﺎﻟ ﺔ اﻟﺘ ﻲ ﯾ ﺘﻢ ﺑﮭ ﺎ اﻟﺘﻌﺎﻣ ﻞ ﻣ ﻊ اﻟﻤﻜ ﺪس ) إدﺧ ﺎل ﻣﻌﻠﻮﻣ ﺎت أو إﺧ ﺮاج (‪ .‬ﻓﻌﻨ ﺪ‬
‫إدﺧﺎل ﻣﻌﻠﻮﻣﺔ ﺑﻄﻮل ‪ 2‬ﺑﺎﯾﺖ ﻓﺈن ﻗﻤﺔ اﻟﻤﻜﺪس ﺗﻘﺘﺮب ﻣﻦ ﺑﺪاﯾ ﺔ اﻟ ﺬاﻛﺮة )اﻧﻈ ﺮ اﻟ ﺸﻜﻞ( و ﺑ ﺬﻟﻚ ﺗ ﻨﻘﺺ ﻗﯿﻤ ﺔ‬
‫‪ SP‬ﺑﻤﻘﺪار ‪ 2‬ﻷن إﻣﻼء اﻟﻤﻜﺪس ﯾﻌﻨﻲ اﻻﻗﺘ ﺮاب ﻣ ﻦ اﻟﻌﻨ ﻮان اﻷﺻ ﻐﺮ و اﻟﻌﻜ ﺲ ﺑ ﺎﻟﻌﻜﺲ أي ﻋﻨ ﺪﻣﺎ ﻧ ﺴﺤﺐ‬
‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪-6-‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻣﻌﻠﻮﻣﺔ ﻣﻦ اﻟﻤﻜﺪس ﻓﺈن ﻗﻤﺘﮫ ﺗﺒﺘﻌﺪ ﻋﻦ ﺑﺪاﯾﺔ اﻟﺬاﻛﺮة و ﺑ ﺬﻟﻚ ﺗﺰﯾ ﺪ ‪ SP‬ﺑﻤﻘ ﺪار ‪ 2‬ﻷن إﻓ ﺮاغ اﻟﻤﻜ ﺪس ﯾﻌﻨ ﻲ‬
‫اﻻﻗﺘﺮاب ﻣﻦ اﻟﻌﻨﻮان اﻷﻛﺒﺮ‪.‬‬
‫‪ (4‬ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت اﻹﺿﺎﻓﻲ ‪Extra Segment ES‬‬
‫ﯾﺴﺘﺨﺪم ﻋﻨﺪ اﻟﺤﺎﺟﺔ إﻟﻰ اﺳﺘﺨﺪام ﻣﻘﻄﻌﻲ ﻣﻌﻄﯿﺎت ﺑﻨﻔﺲ اﻟﻮﻗ ﺖ و ﺑ ﺬﻟﻚ ﻧ ﺴﺘﻄﯿﻊ اﻻﺳ ﺘﻔﺎدة ﻣ ﻦ ﻣ ﺴﺎﺣﺔ أﻛﺒ ﺮ‬
‫ﻓﻲ اﻟ ﺬاﻛﺮة‪ .‬و ﯾ ﺴﺎﻋﺪه اﻟﻤ ﺴﺠﻞ ‪ Destination Index DI‬اﻟﻤﻮﺟ ﻮد ﻓ ﻲ اﻟﻤﻌ ﺎﻟﺞ و اﻟ ﺬي ﯾ ﺸﯿﺮ إﻟ ﻰ اﻹزاﺣ ﺔ‬
‫ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ ﺑﺪاﯾﺘﮫ‪.‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﯾﺠﺐ اﻟﺘﻤﯿﯿﺰ ﺑﯿﻦ اﻟﻤﻘﻄﻊ و ﻣﺴﺠﻞ اﻟﻤﻘﻄﻊ ﺣﯿﺚ اﻟﻤﻘﻄﻊ ھﻮ ﺟﺰء ﻣﻦ اﻟ ﺬاﻛﺮة ﺑﯿﻨﻤ ﺎ ﻣ ﺴﺠﻞ اﻟﻤﻘﻄ ﻊ‬
‫ﯾﺘﺄﻟﻒ ﻣﻦ ﺑﺎﯾﺘﯿﻦ و ھﻮ ﻣﻮﺟﻮد ﻓﻲ اﻟﻤﻌﺎﻟﺞ‪.‬‬

‫اﻟﻤﺴﺠﻼت ‪Registers‬‬
‫ﯾﻤﻠﻚ اﻟﻤﻌﺎﻟﺞ ‪ 8086‬أرﺑﻌﺔ ﻣﺠﻤﻮﻋﺎت ﻣﻦ اﻟﻤﺴﺠﻼت ذات ‪ 16‬ﺑﺖ ﯾﺴﺘﻄﯿﻊ اﻟﻤﺒﺮﻣﺞ اﻟﻮﺻﻮل إﻟﯿﮭﺎ و ھﻲ‪:‬‬
‫‪ (1‬ﻣﺆﺷﺮ اﻟﺘﻌﻠﯿﻤﺔ ‪IP‬‬
‫‪ (2‬أرﺑﻌﺔ ﻣﺴﺠﻼت ﻣﻌﻄﯿﺎت ‪. AX,BX,CX,DX‬‬
‫‪ (3‬أرﺑﻌﺔ ﻣﺴﺠﻼت ﺗﺄﺷﯿﺮ و ﻓﮭﺮﺳﺔ ‪. SI,DI,BP,SP‬‬
‫‪ (4‬أرﺑﻌﺔ ﻣﺴﺠﻼت ﻣﻘﺎﻃﻊ ‪. CS,DS,SS,ES‬‬
‫ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ذﻟﻚ ﯾﻮﺟﺪ ﻣﺴﺠﻞ آﺧﺮ ھﻮ ﻣﺴﺠﻞ اﻷﻋ ﻼم و ﯾ ﺪﻋﻰ أﯾ ﻀﺎً ﻣ ﺴﺠﻞ اﻟﺤﺎﻟ ﺔ و ھ ﻮ ﻣ ﺴﺠﻞ ذو ‪16‬‬
‫ﺑﺖ و ﻟﻜﻦ ﻧﺴﺘﺨﺪم ﻣﻨﮫ ‪ 9‬ﺧﺎﻧﺎت ﻓﻘﻂ‪.‬‬
‫ﺳﻨﺸﺮح ﻛﻞٍ ﻣﻦ ھﺬه اﻟﻤﺴﺠﻼت ﺑﺎﻟﺘﻔﺼﯿﻞ ‪:‬‬

‫اﻟﻤﺠﻤﻮﻋﺔ اﻷوﻟﻰ ‪ :‬ﻣﺴﺠﻼت اﻟﻤﻘﺎﻃﻊ‬


‫و ھﻲ ﻋﺒﺎرة ﻋﻦ أرﺑﻌﺔ ﻣﺴﺠﻼت ﻃﻮل ﻛﻞ ﻣﻨﮭﺎ ‪ 16‬ﺑﺖ أي ‪ 2‬ﺑﺎﯾﺖ و ھﻲ ‪:‬‬
‫‪ (1‬ﻣﺴﺠﻞ ﻣﻘﻄﻊ اﻟﺸﯿﻔﺮة ‪ : CS‬ﯾﺤﺘﻮي ﻋﻠﻰ ﻋﻨﻮان أول ﺣﺠﺮة ﻓ ﻲ ﻣﻘﻄ ﻊ ﺷ ﯿﻔﺮة اﻟﺒﺮﻧ ﺎﻣﺞ ﻓ ﻲ اﻟ ﺬاﻛﺮة‪ ،‬أي‬
‫أﻧﮫ ﯾﺸﯿﺮ إﻟﻰ ﺑﺪاﯾﺔ ﻣﻘﻄﻊ اﻟﺸﯿﻔﺮة‪.‬‬
‫‪ (2‬ﻣﺴﺠﻞ ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت ‪ : DS‬ﯾﺤﺘﻮي ﻋﻠﻰ ﻋﻨﻮان أول ﺣﺠﺮة ﻓﻲ ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿ ﺎت ﻓ ﻲ اﻟ ﺬاﻛﺮة‪ ،‬أي أﻧ ﮫ‬
‫ﯾﺸﯿﺮ إﻟﻰ ﺑﺪاﯾﺔ ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت‪.‬‬
‫‪ (3‬ﻣ ﺴﺠﻞ ﻣﻘﻄ ﻊ اﻟﻤﻜ ﺪس ‪ : SS‬ﯾﺤﺘ ﻮي ﻋﻠ ﻰ ﻋﻨ ﻮان أول ﺣﺠ ﺮة ﻓ ﻲ ﻣﻘﻄ ﻊ اﻟﻤﻜ ﺪس ﻓ ﻲ اﻟ ﺬاﻛﺮة‪ ،‬أي أﻧ ﮫ‬
‫ﯾﺸﯿﺮ إﻟﻰ ﺑﺪاﯾﺔ ﻣﻘﻄﻊ اﻟﻤﻜﺪس‪.‬‬
‫‪ (4‬ﻣﺴﺠﻞ ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت اﻹﺿﺎﻓﻲ ‪ : ES‬ﯾﺤﺘﻮي ﻋﻠﻰ ﻋﻨ ﻮان أول ﺣﺠ ﺮة ﻓ ﻲ ﻣﻘﻄ ﻊ اﻟﻤﻌﻄﯿ ﺎت اﻹﺿ ﺎﻓﻲ‬
‫ﻓﻲ اﻟﺬاﻛﺮة‪ ،‬أي أﻧﮫ ﯾﺸﯿﺮ إﻟﻰ ﺑﺪاﯾﺔ ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت اﻹﺿﺎﻓﻲ‪.‬‬

‫‪00000h‬‬
‫‪15‬‬ ‫‪0‬‬ ‫ﻣﻘﻄﻊ اﻟﺸﯿﻔﺮة ‪CS‬‬
‫‪CS‬‬

‫‪DS‬‬ ‫ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت ‪DS‬‬ ‫‪64 KB‬‬


‫‪SS‬‬
‫ﻣﻘﻄﻊ اﻟﻤﻜﺪس ‪SS‬‬
‫‪ES‬‬

‫ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت اﻹﺿﺎﻓﻲ ‪ES‬‬

‫‪FFFFFh‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪-7-‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﻤﺠﻤﻮﻋﺔ اﻟﺜﺎﻧﯿﺔ‪ :‬ﻣﺴﺠﻼت اﻟﻔﮭﺮﺳﺔ و اﻟﺘﺄﺷﯿﺮ‬


‫و ھ ﻲ ﻋﺒ ﺎرة ﻋ ﻦ أرﺑﻌ ﺔ ﻣ ﺴﺠﻼت ﻣ ﺴﺎﻋﺪة ﺗ ﺴﺎﻋﺪ ﻓ ﻲ إﯾﺠ ﺎد اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ ﺑﺎﻟﺘﻌ ﺎون ﻣ ﻊ ﻣ ﺴﺠﻼت‬
‫اﻟﻤﻘﺎﻃﻊ‪ ،‬و ﻃﻮل ھﺬه اﻟﻤﺴﺠﻼت ‪ 16‬ﺑﺖ أي ‪ 2‬ﺑﺎﯾﺖ‪ ،‬و ھﻲ ‪:‬‬
‫‪ (1‬ﻣﺴﺠﻞ دﻟﯿﻞ اﻟﻤﺼﺪر ‪ : Source Index SI‬ﯾﺨﺰن ﻓﯿﮫ ﻋﻨﻮان ﯾﺪل ﻋﻠﻰ اﻹزاﺣﺔ ﺿﻤﻦ ﻣﻘﻄ ﻊ اﻟﻤﻌﻄﯿ ﺎت‬
‫‪ DS‬و ﺑﻤﻌﻨ ﻰ آﺧ ﺮ ﯾ ﺴﺘﻌﻤﻞ ﻓ ﻲ إﻣ ﺴﺎك اﻟﻌﻨ ﺎوﯾﻦ اﻟﻔﻌﺎﻟ ﺔ ﻣ ﻦ أﺟ ﻞ اﻟﺘﻌﻠﯿﻤ ﺎت اﻟﺘ ﻲ ﺗﺘﻨ ﺎول اﻟﻤﻌﻄﯿ ﺎت‬
‫اﻟﻤﺨﺰﻧﺔ ﻓﻲ ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت ﻓﻲ اﻟﺬاﻛﺮة‪.‬‬
‫‪ (2‬ﻣ ﺴﺠﻞ دﻟﯿ ﻞ اﻟﮭ ﺪف ‪ : Destination Index DI‬ﯾﺨ ﺰن ﻓﯿ ﮫ ﻋﻨ ﻮان ﯾ ﺪل ﻋﻠ ﻰ اﻹزاﺣ ﺔ ﺿ ﻤﻦ ﻣﻘﻄ ﻊ‬
‫اﻟﻤﻌﻄﯿ ﺎت اﻹﺿ ﺎﻓﻲ ‪ ، ES‬و ﺑﻤﻌﻨ ﻰ آﺧ ﺮ ﯾ ﺴﺘﻌﻤﻞ ﻣ ﺴﺠﻞ دﻟﯿ ﻞ اﻟﮭ ﺪف ‪ DI‬ﻣ ﻦ أﺟ ﻞ اﺳ ﺘﻨﺘﺎج اﻟﻌﻨ ﻮان‬
‫اﻟﻔﯿﺰﯾﺎﺋﻲ اﻟﺬي ﯾﺤﺪد ﺣﺠﺮة ﻣﺘﺤﻮل اﻟﮭﺪف‪.‬‬
‫‪ (3‬ﻣﺴﺠﻞ ﻣﺆﺷﺮ اﻟﻤﻜﺪس ‪ : Stack Pointer SP‬ﯾﺴﻤﺢ ﻣﺆﺷﺮ اﻟﻤﻜﺪس ﺑﻮﺻﻮل ﺳﮭﻞ ﻟﻠﺤﺠﺮات ﻓ ﻲ ﻣﻘﻄ ﻊ‬
‫اﻟﻤﻜﺪس اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﺬاﻛﺮة ﺣﯿﺚ أن اﻟﻘﯿﻤ ﺔ ﻓ ﻲ ‪ SP‬ﺗﻤﺜ ﻞ اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل ﻟﺤﺠ ﺮة اﻟﻤﻜ ﺪس اﻟﺘﺎﻟﯿ ﺔ اﻟﺘ ﻲ‬
‫ﯾﻤﻜ ﻦ اﻟﻮﺻ ﻮل إﻟﯿﮭ ﺎ ﻧ ﺴﺒﺔ إﻟ ﻰ اﻟﻌﻨ ﻮان اﻟﺤ ﺎﻟﻲ اﻟﻤﻮﺟ ﻮد ﻓ ﻲ ﻣ ﺴﺠﻞ ﻣﻘﻄ ﻊ اﻟﻤﻜ ﺪس ‪ SS‬و ﯾﺤ ﺘﻔﻆ ‪SP‬‬
‫دوﻣ ﺎً ﺑﻘﯿﻤ ﺔ ﺗ ﺪل ﻋﻠ ﻰ ﻗﻤ ﺔ اﻟﻤﻜ ﺪس ‪ ،‬ھ ﺬا و إن ﻗﯿﻤ ﺔ ھ ﺬا اﻟﻤ ﺴﺠﻞ ﺗﺘﻌ ﺪل ﺗﻠﻘﺎﺋﯿ ﺎً ﻋﻨ ﺪ وﺿ ﻊ أو ﺳ ﺤﺐ‬
‫ﻣﻌﻠﻮﻣﺔ ﺑﺎﻟﻤﻜﺪس‪.‬‬
‫‪ (4‬ﻣﺴﺠﻞ ﻣﺆﺷﺮ اﻟﻘﺎﻋﺪة ‪ : Base Pointer BP‬ﯾﺤﻮي ﻗﯿﻤﺔ ﺗﺪل ﻋﻠﻰ اﻹزاﺣﺔ ﺑﺎﻟﻨ ﺴﺒﺔ ﻟﻤﻘﻄ ﻊ اﻟﻤﻜ ﺪس ‪SS‬‬
‫و ھﻮ ﯾﺴﺘﺨﺪم ﻟﻘﺮاءة اﻟﻤﻌﻄﯿﺎت ﺿﻤﻦ ﻣﻘﻄﻊ اﻟﻤﻜﺪس ﺑﺪون إزاﻟﺘﮭﺎ ﻣﻦ اﻟﻤﻜﺪس‪.‬‬
‫اﻟﻤﺠﻤﻮﻋﺔ اﻟﺜﺎﻟﺜﺔ‪ :‬ﻣﺴﺠﻼت اﻟﻤﻌﻄﯿﺎت‬
‫ﺗ ﺴﺘﺨﺪم ھ ﺬه اﻟﻤ ﺴﺠﻼت ﻣ ﻦ أﺟ ﻞ اﻟﺘﺨ ﺰﯾﻦ اﻟﻤﺆﻗ ﺖ ﻟﻠﻨﺘ ﺎﺋﺞ اﻟﻤﺮﺣﻠﯿ ﺔ أﺛﻨ ﺎء ﺗﻨﻔﯿ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ ﺣﯿ ﺚ أن ﺗﺨ ﺰﯾﻦ‬
‫اﻟﻤﻌﻄﯿﺎت ﻓﻲ ھﺬه اﻟﻤﺴﺠﻼت ﯾﻤﻜﻨﻨﺎ ﻣﻦ اﻟﻮﻟﻮج إﻟﻰ ﺗﻠﻚ اﻟﻤﻌﻄﯿﺎت ﺑﺸﻜﻞ أﺳﺮع ﻣﻤﺎ ﻟﻮ ﻛﺎﻧﺖ ﻓ ﻲ اﻟ ﺬاﻛﺮة‪ ،‬و‬
‫ﺗﻘﺴﻢ اﻟﻤﺴﺠﻼت إﻟﻰ ‪:‬‬
‫‪ (1‬ﻣﺴﺠﻞ اﻟﻤﺮاﻛﻢ ‪ Accumulator‬و ﯾﺮﻣﺰ ﻟﮫ ﺑﺎﻟﺮﻣﺰ ‪. A‬‬
‫‪ (2‬ﻣﺴﺠﻞ اﻟﻘﺎﻋﺪة ‪ Base‬و ﯾﺮﻣﺰ ﻟﮫ ﺑﺎﻟﺮﻣﺰ ‪. B‬‬
‫‪ (3‬ﻣﺴﺠﻞ اﻟﻌﺪ ‪ Count‬و ﯾﺮﻣﺰ ﻟﮫ ﺑﺎﻟﺮﻣﺰ ‪. C‬‬
‫‪ (4‬ﻣﺴﺠﻞ اﻟﻤﻌﻄﯿﺎت ‪ Data‬و ﯾﺮﻣﺰ ﻟﮫ ﺑﺎﻟﺮﻣﺰ ‪. D‬‬
‫و ﻛﻞ ﻣﺴﺠﻞ ﻣﻦ اﻟﻤﺴﺠﻼت اﻟ ﺴﺎﺑﻘﺔ ﯾﻤﻜ ﻦ اﺳ ﺘﻌﻤﺎﻟﮫ إﻣ ﺎ ﻛﻜﻠﻤ ﺔ ‪ 16‬ﺑ ﺖ و ﯾ ﺪل ﻋﻠ ﻰ ذﻟ ﻚ ﺑﻜﺘﺎﺑ ﺔ اﻟﺤ ﺮف ‪X‬‬
‫ﺑﻌﺪ اﺳﻢ اﻟﻤﺴﺠﻞ أو ﯾﻤﻜﻦ اﺳﺘﻌﻤﺎﻟﮫ ﻛﺒﺎﯾﺘﯿﻦ ﻛﻞ ﻣﻨﮭﻤﺎ ‪ 8‬ﺑﺖ و ﯾﺪل ﻋﻠﻰ ذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﺤﺮﻓﯿﻦ ‪ H,L‬ﺣﯿﺚ ‪:‬‬
‫‪ L‬ﻟﻠﺒﺎﯾﺖ ذو اﻟﻌﻨﻮان اﻷﺻﻐﺮ ‪ ،‬ﻣﺜﺎل ‪. AL‬‬
‫‪ H‬ﻟﻠﺒﺎﯾﺖ ذو اﻟﻌﻨﻮان اﻷﻛﺒﺮ ‪ ،‬ﻣﺜﺎل ‪. BH‬‬
‫ھﻜ ﺬا و إن ﻛ ﻼً ﻣ ﻦ ھ ﺬه اﻟﻤ ﺴﺠﻼت ﯾﻤﻜ ﻦ اﺳ ﺘﺨﺪاﻣﮫ ﻣ ﻦ أﺟ ﻞ اﻟﺘﻌﻠﯿﻤ ﺎت اﻟﺮﯾﺎﺿ ﯿﺔ أو اﻟﻤﻨﻄﻘﯿ ﺔ ﻓ ﻲ ﻟﻐ ﺔ‬
‫اﻷﺳﻤﺒﻠﻲ ﻣﺜﻞ ‪. And, Add‬‬
‫و ﻣﻦ أﺟﻞ ﺑﻌﺾ اﻟﺘﻌﻠﯿﻤﺎت ﻣﺜﻞ اﻟﺒﺮاﻣﺞ اﻟﺘ ﻲ ﺗﺤﺘ ﻮي ﻋﻠ ﻰ ﺗﻌﻠﯿﻤ ﺎت ﺳﻼﺳ ﻞ ﻓﺈﻧﮭ ﺎ ﺗ ﺴﺘﻌﻤﻞ ﻣ ﺴﺠﻼت ﻣﻌﯿﻨ ﺔ‬
‫ﻣﺜﻞ اﺳﺘﻌﻤﺎل اﻟﻤﺴﺠﻞ ‪ C‬ﻟﺘﺨﺰﯾﻦ اﻟﻌﺪد اﻟﺬي ﯾﻤﺜﻞ ﻋ ﺪد اﻟﺒﺎﯾﺘ ﺎت اﻟﺘ ﻲ ﺳ ﺘﻨﻔﺬ ﻋﻠﯿﮭ ﺎ ﺗﻌﻠﯿﻤ ﺎت اﻟ ﺴﻼﺳﻞ ) ﻋ ﺪد‬
‫ﻣﺮات ﺗﻜﺮار ﺗﻌﻠﯿﻤﺔ اﻟﺴﻠﺴﻠﺔ (‬

‫ﻣﺴﺠﻞ ﻣﺆﺷﺮ اﻟﺘﻌﻠﯿﻤﺔ ‪Instruction Pointer IP‬‬


‫ھﺬا اﻟﻤﺴﺠﻞ ﯾﺤﺪد ﻣﻮﻗﻊ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ اﻟﺘﻲ ﺳﺘﻨﻔﺬ ﻓﻲ ﻣﻘﻄﻊ اﻟﺸﯿﻔﺮة و ﺑﻌﺪ ﺟﻠﺐ ﺷﯿﻔﺮة اﻟﺘﻌﻠﯿﻤﺔ ﻣﻦ اﻟ ﺬاﻛﺮة‬
‫ﻓﺈن ‪ BIU‬ﺗﻌﺪل ﻗﯿﻤﺔ ‪ IP‬ﺑﺤﯿﺚ ﺗﺸﯿﺮ إﻟﻰ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ ﻓﻲ اﻟﺬاﻛﺮة ) اﻟﺘﻌﺪﯾﻞ ﯾﺘﻢ آﻟﯿﺎً (‪.‬‬
‫ﻣﺴﺠﻞ اﻷﻋﻼم ‪Flags Register‬‬
‫ھﻮ ﻣﺴﺠﻞ ذو ‪ 16‬ﺑﺖ ﻣﻮﺟﻮد ﻓﻲ وﺣﺪة اﻟﺘﻨﻔﯿﺬ ﻛﻤﺎ ھﻮ واﺿﺢ ﺑﺎﻟﺸﻜﻞ ‪:‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪-8-‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫‪15 14 13 12 11 10 9‬‬ ‫‪8‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪O‬‬ ‫‪D‬‬ ‫‪C‬‬
‫‪IF‬‬ ‫‪TF SF ZF‬‬ ‫‪AF‬‬ ‫‪PF‬‬
‫‪F‬‬ ‫‪F‬‬ ‫‪F‬‬

‫و ﻛﻤﺎ ﻧﻼﺣ ﻆ ﻣ ﻦ اﻟ ﺸﻜﻞ اﻟ ﺴﺎﺑﻖ أﻧ ﮫ ﯾﻮﺟ ﺪ ﺳ ﺘﺔ أﻋ ﻼم ﻟﻠﺤﺎﻟ ﺔ ھ ﻲ ‪ ، CF, PF, AF, ZF, SF, OF‬و ﻛ ﺬﻟﻚ‬
‫ﯾﻮﺟﺪ ﺛﻼﺛﺔ أﻋﻼم ﻟﻠﺘﺤﻜﻢ ‪. DF, IF, TF‬‬
‫أ( أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫ﺗﺸﯿﺮ إﻟﻰ اﻟﺤﺎﻻت اﻟﻨﺎﺗﺠﺔ ﻛﻨﺘﯿﺠ ﺔ ﻟﺘﻨﻔﯿ ﺬ ﺗﻌﻠﯿﻤ ﺔ ﻣﻨﻄﻘﯿ ﺔ أو رﯾﺎﺿ ﯿﺔ ﺣﯿ ﺚ ﺗﻜ ﻮن إﻣ ﺎ ﻓ ﻲ ﺣﺎﻟ ﺔ واﺣ ﺪ ﻣﻨﻄﻘ ﻲ‬
‫‪ Set‬أو ﺗﻜﻮن ﻓﻲ ﺣﺎﻟﺔ ﺻﻔﺮ ﻣﻨﻄﻘﻲ ‪ ، Reset‬و ﺳﻨﻠﺨﺺ ﻓﯿﻤﺎ ﯾﻠﻲ ﻋﻤﻞ ﻛﻞٍ ﻣﻨﮭﺎ‪:‬‬
‫أوﻻً‪ :‬ﻋﻠﻢ اﻹﻧﺰﯾﺎح ‪Carry Flag‬‬
‫ﯾﻜﻮن ﻓﻲ ﺣﺎﻟﺔ اﻟﻮاﺣﺪ اﻟﻤﻨﻄﻘﻲ إذا وﺟﺪ اﻧﺰﯾﺎح ﺧﺎرﺟﻲ ) ﺣﻤﻞ ( أو اﺳﺘﻌﺎرة ﻣﻦ أﺟ ﻞ اﻟﺨﺎﻧ ﺔ اﻷﺧﯿ ﺮة )اﻟﺒ ﺖ‬
‫اﻷﺧﯿﺮ( و ذﻟﻚ أﺛﻨﺎء ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺎت اﻟﺮﯾﺎﺿﯿﺔ‪.‬‬
‫و ﯾﻜﻮن ﻓﻲ ﺣﺎﻟﺔ اﻟﺼﻔﺮ اﻟﻤﻨﻄﻘﻲ إذا ﻟﻢ ﯾﻮﺟﺪ ﺣﻤﻞ أو اﺳﺘﻌﺎرة ﻣﻦ أﺟﻞ اﻟﺒﺖ اﻷﺧﯿﺮ‪.‬‬
‫أﻣﺜﻠﺔ‪:‬‬
‫أوﻻً‪ :‬ﺣﺎﻟﺔ اﻹﻧﺰﯾﺎح‬
‫‪7‬‬ ‫‪6 5 4 3 2 1 0‬‬
‫ﻻﺣﻆ ﺑﺄن اﻟﻨﺘﯿﺠﺔ ﻟﻢ ﺗﺘﺴﻊ ﻓﻲ ﺛﻤﺎﻧﯿﺔ ﺑﺘﺎت و إﻧﻤﺎ‬
‫‪1 1 0 0 0 1 1 0‬‬ ‫ﺗﺤﺘﺎج إﻟﻰ ﺗﺴﻊ ﺑﺘﺎت و ﻧﻌﺒﺮ ﻋﻦ ذﻟﻚ ﺑﺜﻤﺎﻧﯿﺔ ﺑﺘﺎت‬
‫‪1 1 0 0 0 1 1 1‬‬ ‫‪+‬‬ ‫و ‪ CF=1‬أي أﻧﮫ ﻟﺪﯾﻨﺎ ﻓﻲ اﻟﯿﺪ واﺣﺪ‪.‬‬
‫ﺑﺒﺴﺎﻃﺔ‪ :‬ﻓﻤﮭﻤﺎ ﻛَﺒُﺮَ اﻟﻌﺪدان ﻓﺈن ﺗﺴﻌﺔ ﺑﺘﺎت ﯾﻤﻜﻦ‬
‫أن ﺗﺴﺘﻮﻋﺒﮭﺎ‪.‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪CF=1‬‬
‫ﺛﺎﻧﯿﺎً‪ :‬ﺣﺎﻟﺔ اﻻﺳﺘﻌﺎرة‬
‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫ﻻﺣﻆ ﺑﺄن اﻟﻌﺪد اﻷول اﻟﻤﻤﺜﻞ ﺛﻨﺎﺋﯿﺎً أﺻﻐﺮ ﻣﻦ اﻟﻌﺪد‬
‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫اﻟﺜﺎﻧﻲ اﻟﻤﻤﺜﻞ ﺛﻨﺎﺋﯿﺎً أﯾﻀﺎً ‪ ،‬ﻟﺬﻟﻚ ﻓﻌﻨﺪ إﺟﺮاء ﻋﻤﻠﯿﺔ‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪-‬‬ ‫اﻟﻄﺮح و ﻓﻲ ﻣﺜﺎﻟﻨﺎ ھﺬا ﺗﺨﯿﻠﻨﺎ ﺑﺖ ﺗﺎﺳﻊ ﻓﯿﮫ اﻟﻘﯿﻤﺔ‬
‫واﺣﺪ )اﺳﺘﻌﺮﻧﺎ( و ﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن ‪ CF=1‬أي ﻟﺪﯾﻨﺎ‬
‫اﺳﺘﻌﺎرة ﻣﻦ أﺟﻞ اﻟﺒﺖ اﻷﻋﻠﻰ رﺗﺒﺔ‪.‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬

‫و ﻓﻲ اﻟﻤﺜﺎﻟﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﻧﻄﺒﻖ ﻧﻔﺲ اﻟﻜﻼم ﻣ ﻦ أﺟ ﻞ ‪ 2‬ﺑﺎﯾ ﺖ و ﻟﻜ ﻦ اﻹﻧﺰﯾ ﺎح اﻟﺨ ﺎرج و اﻻﺳ ﺘﻌﺎرة ﺗﻜ ﻮن ﻣ ﻦ‬
‫أﺟﻞ اﻟﺒﺖ اﻟﺨﺎﻣﺲ ﻋﺸﺮ )اﻷﺧﯿﺮ(‪.‬‬
‫ﺛﺎﻧﯿﺎً‪ :‬ﻋﻠﻢ اﻻزدواﺟﯿﺔ ‪Parity Flag PF‬‬
‫ﯾﺼﺒﺢ ﻓﻲ ﺣﺎﻟﺔ واﺣﺪ ﻣﻨﻄﻘﻲ إذا ﻛﺎﻧﺖ ﻧﺘﯿﺠﺔ آﺧ ﺮ ﺗﻌﻠﯿﻤ ﺔ ﺗﺤ ﻮي ﻋﻠ ﻰ ﻋ ﺪداً زوﺟﯿ ﺎً ﻣ ﻦ اﻟﺨﺎﻧ ﺎت اﻟﻮاﺣﺪﯾ ﺔ )‬
‫ﺑﻌﺪ اﻟﺘﺤﻮﯾﻞ إﻟﻰ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻃﺒﻌﺎً ( و إﻻ ﯾﻜﻮن ﻓﻲ ﺣﺎﻟﺔ اﻟﺼﻔﺮ اﻟﻤﻨﻄﻘﻲ‪.‬‬
‫ﻧﻼﺣﻆ أن ﻋﻠﻢ ‪ PF‬ﯾﻔﺤﺺ اﻟﺒﺎﯾﺖ اﻟﺴﻔﻠﻲ ﻓﻘﻂ ﺣﺘﻰ ﻟﻮ ﻛﻨﺎ ﻧﺘﻌﺎﻣﻞ ﻣ ﻊ ﻛﻠﻤ ﺔ ) ‪ 2‬ﺑﺎﯾ ﺖ ( ‪ ،‬أﻣ ﺎ ﻋﻨ ﺪﻣﺎ ﻧﺘﻌﺎﻣ ﻞ‬
‫ﻣﻊ ﺑﺎﯾﺖ واﺣﺪ ﻓﻘﻂ ﻓﺈﻧﮫ ﯾﻔﺤﺼﮫ ﻛﻠﮫ‪.‬‬
‫ﺛﺎﻟﺜﺎً‪ :‬ﻋﻠﻢ اﻹﻧﺰﯾﺎح اﻟﻤﺴﺎﻋﺪ ‪Auxiliary Flag AF‬‬
‫ﯾﻜ ﻮن ﻓ ﻲ ﺣﺎﻟ ﺔ اﻟﻮاﺣ ﺪ اﻟﻤﻨﻄﻘ ﻲ إذا وﺟ ﺪ إﻧﺰﯾ ﺎح ﻣ ﻦ اﻟﻨ ﺼﻒ اﻟ ﺴﻔﻠﻲ إﻟ ﻰ اﻟﻨ ﺼﻒ اﻟﻌﻠ ﻮي أو اﺳ ﺘﻌﺎرة ﻣ ﻦ‬
‫اﻟﻨﺼﻒ اﻟﻌﻠﻮي إﻟﻰ اﻟﻨﺼﻒ اﻟﺴﻔﻠﻲ و ذﻟﻚ ﻣﻦ أﺟﻞ اﻟﺒﺎﯾﺖ اﻟﺴﻔﻠﻲ ﻣﻦ اﻟﻜﻠﻤ ﺔ ) ‪ 2‬ﺑﺎﯾ ﺖ ( و ﺑﻤﻌﻨ ﻰ آﺧ ﺮ أﻧ ﮫ‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪-9-‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫إذا ﻛﺎن ﻟﺪﯾﻨﺎ إﻧﺰﯾﺎح ﻣﻦ اﻟﺨﺎﻧﺔ ‪ 3‬إﻟﻰ اﻟﺨﺎﻧﺔ ‪ 4‬ﻓ ﺈن ‪ AF=1‬و ذﻟ ﻚ ﻓ ﻲ ﺣ ﺎل ﻛﺎﻧ ﺖ اﻟﻤﻌﻄﯿ ﺎت ﺑﺎﯾ ﺖ واﺣ ﺪ أو‬
‫ﺑﺎﯾﺘﯿﻦ )ﻛﻠﻤﺔ(‪ ،‬و ﻓﯿﻤﺎ ﻋﺪا ذﻟﻚ ﯾﻜﻮن ‪. AF=0‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪7‬‬ ‫‪6 5 4 3 2 1 0‬‬
‫‪1 1 0 0 0 1 1 0‬‬
‫‪1 1 0 0 0 1 1 1‬‬ ‫‪+‬‬
‫ﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ ﯾﻜﻮن ‪ AF=0‬ﻷﻧﮫ‬
‫ﻟﻢ ﯾﻜﻦ ﻣﻌﻨﺎ ﺑﺎﻟﯿﺪ واﺣﺪ ﻋﻨﺪ اﻻﻧﺘﻘﺎل‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫ﻣﻦ اﻟﺨﺎﻧﺔ اﻟﺜﺎﻟﺜﺔ إﻟﻰ اﻟﺨﺎﻧﺔ اﻟﺮاﺑﻌﺔ‬
‫ﻓﻲ اﻟﻨﺎﺗﺞ‬

‫اﻟﺨﺎﻧﺔ اﻟﺮاﺑﻌﺔ‬ ‫اﻟﺨﺎﻧﺔ اﻟﺜﺎﻟﺜﺔ‬

‫راﺑﻌﺎً‪ :‬ﻋﻠﻢ اﻟﺼﻔﺮ ‪Zero Flag ZF‬‬


‫ﯾﺼﺒﺢ ﻓﻲ ﺣﺎﻟﺔ واﺣﺪ ﻣﻨﻄﻘﻲ ﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻧﺎﺗﺞ آﺧﺮ ﻋﻤﻠﯿﺔ ﺣﺴﺎﺑﯿﺔ أو ﻣﻨﻄﻘﯿﺔ ﯾﺴﺎوي اﻟﺼﻔﺮ‪.‬‬
‫ﯾﺼﺒﺢ ﻓﻲ ﺣﺎﻟﺔ ﺻﻔﺮ ﻣﻨﻄﻘﻲ ﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻧﺎﺗﺞ آﺧﺮ ﻋﻤﻠﯿﺔ ﺣﺴﺎﺑﯿﺔ أو ﻣﻨﻄﻘﯿﺔ ﻻ ﯾﺴﺎوي اﻟﺼﻔﺮ‪.‬‬
‫ﺧﺎﻣﺴﺎً‪ :‬ﻋﻠﻢ اﻹﺷﺎرة ‪Sign Flag SF‬‬
‫ﯾﻜﻮن ﻋﻠﻢ ‪ SF‬ﻓﻲ ﺣﺎﻟﺔ واﺣﺪ ﻣﻨﻄﻘﻲ ‪ Set‬إذا ﻛﺎﻧﺖ ﻧﺘﯿﺠﺔ آﺧﺮ ﻋﻤﻠﯿﺔ ﺣﺴﺎﺑﯿﺔ ﻋﺪداً ﺳﺎﻟﺒﺎً‪.‬‬
‫ﯾﻜﻮن ﻋﻠﻢ ‪ SF‬ﻓﻲ ﺣﺎﻟﺔ ﺻﻔﺮ ﻣﻨﻄﻘﻲ ‪ Reset‬إذا ﻛﺎﻧﺖ ﻧﺘﯿﺠﺔ آﺧﺮ ﻋﻤﻠﯿﺔ ﺣﺴﺎﺑﯿﺔ ﻋﺪداً ﻣﻮﺟﺒﺎً‪.‬‬
‫ﻣﺼﻄﻠﺢ‪ :‬ﻣﻦ إﺣﺪى ﻃﺮق ﺗﻤﺜﯿﻞ اﻷﻋﺪاد اﻟﺴﺎﻟﺒﺔ ﻓﻲ اﻟﻜﻤﺒﯿﻮﺗﺮ ھﻲ اﻋﺘﺒﺎر اﻟﺨﺎﻧﺔ اﻷﺧﯿﺮة ﻣﺨﺼ ﺼﺔ ﻟﻺﺷ ﺎرة‬
‫و ﺑﻤﺎ أن اﻟﺒﺎﯾﺖ ﻣﻜﻮن ﻣﻦ ﺛﻤﺎﻧﯿﺔ ﺧﺎﻧﺎت ﻓﺴﯿﺘﻢ اﻗﺘﻄﺎع اﻟﺨﺎﻧﺔ اﻷﺧﯿﺮة ﻣﻨﮫ ﻣﻦ أﺟﻞ اﻹﺷﺎرة ﻓﺈن اﺣﺘ ﻮت ﻋﻠ ﻰ‬
‫اﻟﻘﯿﻤﺔ واﺣﺪ ﻓﺈن اﻟﺨﺎﻧﺎت اﻟﺴﺒﻌﺔ اﻟﺒﺎﻗﯿﺔ ھﻲ ﻋﺪد ﺛﻨﺎﺋﻲ ﺳ ﺎﻟﺐ أﻣ ﺎ إذا اﺣﺘ ﻮت ﻋﻠ ﻰ اﻟﻘﯿﻤ ﺔ ﺻ ﻔﺮ ﻓ ﺈن اﻟﺨﺎﻧ ﺎت‬
‫اﻟﺴﺒﻌﺔ اﻟﻤﺘﺒﻘﯿﺔ ﻣﺎ ھﻲ إﻻ ﻋﺪد ﻣﻮﺟﺐ‪.‬‬
‫و ﺑﺬﻟﻚ ﯾﻜﻮن ‪ SF‬ھﻮ ﻧﺴﺨﺔ ﻋﻦ اﻟﺨﺎﻧﺔ اﻷﺧﯿﺮة ﻓﻲ اﻟﻨﺎﺗﺞ ﻋﻨﺪ اﻋﺘﻤﺎد ھﺬا اﻟﻨﻈﺎم ﻟﺘﻤﺜﯿﻞ اﻷﻋﺪاد اﻟﺴﺎﻟﺒﺔ‪.‬‬
‫ﻻﺣﻆ أﻧﮫ اﻧﻄﻼﻗﺎً ﻣﻦ ھﺬا اﻟﻤﺒﺪأ ﻓﻲ اﻟﺘﻤﺜﯿﻞ ﯾﻤﻜﻨﻨﺎ ﺗﻤﺜﯿﻞ اﻟﻤﺠﺎﻻت اﻟﺘﺎﻟﯿﺔ ﻣﻦ اﻷﻋﺪاد‪:‬‬
‫ﻣﻦ أﺟﻞ ﺑﺎﯾﺖ واﺣﺪ ﻣﻦ –‪ 128‬إﻟﻰ ‪127+‬‬
‫ﻣﻦ أﺟﻞ ﺑﺎﯾﺘﯿﻦ ﻣﻦ –‪ 32768‬إﻟﻰ ‪32767+‬‬
‫ﺳﺎدﺳﺎً‪ :‬ﻋﻠﻢ اﻟﻄﻔﺤﺎن ‪Overflow Flag OF‬‬
‫ﯾﻜ ﻮن ﻓ ﻲ ﺣﺎﻟ ﺔ واﺣ ﺪ ﻣﻨﻄﻘ ﻲ ﻋﻨ ﺪﻣﺎ ﻻ ﺗﺘ ﺴﻊ اﻟﻨﺘﯿﺠ ﺔ ﻓ ﻲ اﻟﻤﻜ ﺎن اﻟﻤﺨ ﺼﺺ ﻟﺘﺨﺰﯾﻨﮭ ﺎ أي ﺗﺘﺠ ﺎوز اﻟﻘ ﺪرة‬
‫اﻟﺘﺨﺰﯾﻨﯿﺔ‪ ،‬أﻣﺎ إذا ﻟﻢ ﺗﻜﻦ اﻟﻨﺘﯿﺠﺔ ﺧﺎرج اﻟﻤﺠﺎل اﻟﻤﺤﺪد ﻓﺈن ‪ OF‬ﯾﺒﻘﻰ ﻓﻲ ﺣﺎﻟﺔ اﻟﺼﻔﺮ اﻟﻤﻨﻄﻘﻲ‪.‬‬
‫ﯾﺤﺪث اﻟﻄﻔﺤﺎن ﻓﻲ اﻟﺤﺎﻻت اﻟﺘﺎﻟﯿﺔ‪:‬‬
‫‪ (1‬ﺟﻤﻊ أﻋﺪاد ﻣﻮﺟﺒﺔ ﻛﺒﯿﺮة‪.‬‬
‫‪ (2‬ﺟﻤﻊ أﻋﺪاد ﺳﺎﻟﺒﺔ ﻛﺒﯿﺮة‪.‬‬
‫‪ (3‬ﻃﺮح ﻋﺪد ﻣﻮﺟﺐ ﻛﺒﯿﺮ ﻣﻦ ﻋﺪد ﺳﺎﻟﺐ ﻛﺒﯿﺮ‪.‬‬
‫‪ (4‬ﻃﺮح ﻋﺪد ﺳﺎﻟﺐ ﻛﺒﯿﺮ ﻣﻦ ﻋﺪد ﻣﻮﺟﺐ ﻛﺒﯿﺮ‪.‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﺟﻤﯿﻊ اﻷﻋﻼم اﻟﺴﺎﺑﻘﺔ ﻣﺎ ﻋﺪا ‪ CF‬ﺗُﻘﺮأ ﻓﻘﻂ أي ﻻ ﻧﺴﺘﻄﯿﻊ ﺗﻐﯿﯿﺮ ﻣﺤﺘﻮاھﺎ ﻟﺬﻟﻚ ﯾﻤﻜﻦ ﻗﺮاءﺗﮭ ﺎ ﻓﻘ ﻂ‬
‫و ﻻ ﯾﻤﻜﻦ ﺗﻐﯿﯿﺮ ﻣﺤﺘﻮﯾﺎﺗﮭﺎ ﺑﻮاﺳﻄﺔ ﺗﻌﻠﯿﻤﺎت ﺑﺮﻣﺠﯿﺔ ﻣﺒﺎﺷﺮة‪.‬‬
‫اﻟﻤﻌﺎﻟﺞ ﻣﺰود ﺑﺘﻌﻠﯿﻤﺎت ﺗﺴﺘﻄﯿﻊ اﺧﺘﺒﺎر ﺣﺎﻟﺔ ھﺬه اﻷﻋﻼم ﻟﺘﻐﯿﯿ ﺮ ﺗﺘ ﺎﺑﻊ ﺗﻨﻔﯿ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ ﻓﻤ ﺜﻼً ﯾﻤﻜ ﻦ اﺧﺘﺒ ﺎر‬
‫ﻋﻠﻢ ‪ ZF=1‬ﻛﺸﺮط ﻣﻦ أﺟﻞ اﻟﻘﻔﺰ إﻟﻰ ﺟﺰء آﺧﺮ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫و ﻓﯿﻤﺎ ﯾﻠﻲ ﺳﻨﺸﺮح أﻋﻼم اﻟﺘﺤﻜﻢ‪:‬‬
‫أوﻻً‪ :‬ﻋﻠﻢ اﻟﺨﻄﻮة اﻟﻮﺣﯿﺪة ‪Trap Flag TF‬‬
‫ﯾﻮﺿ ﻊ ﺑﺎﻟﺤﺎﻟ ﺔ واﺣ ﺪ ﻣﻨﻄﻘ ﻲ ﻋﻨ ﺪﻣﺎ ﻧﺮﻏ ﺐ ﺑﺘﻨﻔﯿ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ ﺧﻄ ﻮة ﺧﻄ ﻮة و ھ ﻮ ﻣﻔﯿ ﺪ ﻋﻨ ﺪﻣﺎ ﻧﺮﯾ ﺪ ﺗ ﺼﺤﯿﺢ‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎ و اﺳﺘﻜﺸﺎف ﻣﻮاﻗﻊ اﻷﺧﻄﺎء‪.‬‬
‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 10 -‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﺛﺎﻧﯿﺎً‪ :‬ﻋﻠﻢ اﻟﻤﻘﺎﻃﻌﺔ ‪Interrupt Flag IF‬‬


‫ﯾﺴﺘﺨﺪم ﻣﻦ أﺟﻞ اﻟﺘﻌﺒﯿﺮ ﻋﻦ إﻣﻜﺎﻧﯿﺔ أو ﻋﺪم إﻣﻜﺎﻧﯿﺔ ﺗﻨﻔﯿﺬ اﻟﻤﻘﺎﻃﻌ ﺔ‪ ،‬ﻓﯿﻮﺿ ﻊ ﺑﺎﻟﺤﺎﻟ ﺔ واﺣ ﺪ ﻣﻨﻄﻘ ﻲ ﻋﻨ ﺪﻣﺎ ﻻ‬
‫ﻧﺮﻏ ﺐ ﺑﺘﻨﻔﯿ ﺬ أي ﻣﻘﺎﻃﻌ ﺔ )اﻟﻤﻘﺎﻃﻌ ﺔ ﻣﺤﺠﻮﺑ ﺔ( أﻣ ﺎ ﻋﻨ ﺪ وﺿ ﻌﮫ ﻓ ﻲ ﺣﺎﻟ ﺔ اﻟ ﺼﻔﺮ اﻟﻤﻨﻄﻘ ﻲ ﻓ ﺈن اﻟﻤﻘﺎﻃﻌ ﺔ‬
‫ﻣﺴﻤﻮح ﺑﮭﺎ‪.‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬اﻟﻤﻘﺎﻃﻌﺔ ھﻲ ﻋﺒﺎرة ﻋﻦ ﺧﺪﻣﺔ ﺗﺆدي إﻟﻰ ﻋﻤﻞ ﻣﻌﯿﻦ ﻓﻤﺜﻼً اﻟﻤﻘﺎﻃﻌﺔ ‪ 21‬و اﻟﺘ ﻲ ﻣ ﻦ أﺣ ﺪ ﺧ ﺪﻣﺎﺗﮭﺎ‬
‫اﻟﻌﻮدة إﻟﻰ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ‪.‬‬
‫ﺛﺎﻟﺜﺎً‪ :‬ﻋﻠﻢ اﻻﺗﺠﺎه ‪Direction Flag DF‬‬
‫ﯾﺪل ﻋﻠﻰ اﺗﺠﺎه ﺳﯿﺮ اﻟﻌﻤﻠﯿﺎت اﻟﺘﺴﻠﺴﻠﯿﺔ‪.‬‬
‫ﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻓﻲ ﺣﺎﻟﺔ واﺣﺪ ﻣﻨﻄﻘﻲ ﻓﺈن اﻟﺴﻠﺴﻠﺔ ﺗﻜﻮن ﻣﻦ اﻟﻌﻨﻮان اﻷﻋﻠﻰ إﻟﻰ اﻟﻌﻨﻮان اﻷدﻧﻰ‪.‬‬
‫ﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻓﻲ ﺣﺎﻟﺔ ﺻﻔﺮ ﻣﻨﻄﻘﻲ ﻓﺈن اﻟﺴﻠﺴﻠﺔ ﺗﻜﻮن ﻣﻦ اﻟﻌﻨﻮان اﻷدﻧﻰ إﻟﻰ اﻟﻌﻨﻮان اﻷﻋﻠﻰ‪.‬‬
‫ﻣﻔﮭﻮم اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ و اﻹزاﺣﺎت‬
‫ﻣﻘﺪﻣﺔ‬
‫ﻻﺣﻈﻨﺎ أن اﻟﺬاﻛﺮة ﺑﻄﻮل ‪ 1‬ﻣﯿﻐﺎ ﺑﺎﯾﺖ أي أﻧﮭ ﺎ ﻣﺮﻗﻤ ﺔ ﻣ ﻦ ‪ 00000h‬إﻟ ﻰ ‪ FFFFFh‬ﻟ ﺬﻟﻚ ﻓﺈﻧﻨ ﺎ ﻧﺤﺘ ﺎج أﺛﻨ ﺎء‬
‫ﻋﻨﻮﻧﺔ اﻟﻤﻘﺎﻃﻊ إﻟﻰ رﻗﻢ ﺳﺖ ﻋﺸﺮي ﺑﻄﻮل ‪ 20‬ﺑﺖ ذﻟﻚ ﻷن ﺗﻤﺜﯿﻞ رﻗﻢ ﺳﺖ ﻋ ﺸﺮي ﺑﻄ ﻮل ﺧﻤ ﺲ ﺧﺎﻧ ﺎت )‬
‫و ھ ﻮ اﻟﻤ ﺴﺘﺨﺪم ﻓ ﻲ ﺗ ﺮﻗﯿﻢ ﺣﺠ ﺮات اﻟ ﺬاﻛﺮة ( ﯾﺤﺘ ﺎج إﻟ ﻰ ﻋ ﺸﺮﯾﻦ ﺑ ﺖ ﻟﻜ ﻦ ﻣ ﺴﺠﻼت اﻟﻤﻘ ﺎﻃﻊ و اﻟﺘ ﻲ‬
‫ﻧﺴﺘﺨﺪﻣﮭﺎ ﻓﻲ اﻟﻌﻨﻮﻧﺔ ھﻲ ﺑﻄﻮل ‪ 16‬ﺑﺖ ﻓﻘﻂ اﻷﻣﺮ اﻟﺬي ﯾﻀﻄﺮﻧﺎ إﻟﻰ اﺳﺘﻨﺘﺎج ﻋﻨﻮان ﻓﯿﺰﯾ ﺎﺋﻲ ﺑﻌ ﺸﺮﯾﻦ ﺑ ﺖ‬
‫!!‬
‫آﻟﯿﺔ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ‪Physical Address PA‬‬
‫ﯾﻠﺰﻣﻨﺎ ﻹﯾﺠﺎد اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻗﯿﻤﺘﯿﻦ ھﻤﺎ ‪:‬‬
‫‪ (2‬ﻗﯿﻤﺔ اﻟﻤﺴﺠﻞ اﻟﻤﺴﺎﻋﺪ ﻟﮫ‬ ‫‪ (1‬ﻗﯿﻤﺔ ﻣﺴﺠﻞ اﻟﻤﻘﻄﻊ‬
‫ﻓﻜﺮة ‪: Very good Tip‬‬
‫ﻋﻨﺪﻣﺎ ﻧﺮﯾﺪ إزاﺣﺔ رﻗﻢ ﻣﻤﺜﻞ ﺑﺎﻟﻨﻈﺎم اﻟﻌﺸﺮي ﺧﺎﻧﺔ واﺣﺪة ﻧﺤﻮ اﻟﯿﺴﺎر ﻓﺈﻧﻨﺎ ﻧﻀﺮﺑﮫ ﺑﻌﺸﺮة !!‬
‫ﻣﺜﺎل‪ :‬ھﻞ ﺗﺴﺘﻄﯿﻊ إزاﺣﺔ اﻟﺮﻗﻢ ‪ 192‬إﻟﻰ اﻟﯿﺴﺎر ﺧﻄﻮة واﺣﺪة ﻟﯿﺼﺒﺢ ‪ 1920‬؟؟‬
‫ﻧﻌﻢ و ذﻟﻚ ﺑﻀﺮﺑﮫ ﺑﻌﺸﺮة ﻛﺎﻟﺘﺎﻟﻲ ‪192 x 10 = 1920‬‬
‫و ﻛﺬﻟﻚ اﻷﻣﺮ ﻓﻲ اﻟﻨﻈﺎم اﻟﺴﺖ ﻋﺸﺮي‪ ،‬ﻓﻌﻨﺪﻣﺎ ﻧﺮﯾﺪ إزاﺣﺔ رﻗﻢ ﺳﺖ ﻋﺸﺮي ﻓﺈﻧﻨﺎ ﻧﻀﺮﺑﮫ ﺑﻌﺸﺮة اﻟﻨﻈﺎم‬
‫‪10 h = 16 d‬‬ ‫اﻟﺴﺖ ﻋﺸﺮي و اﻟﺘﻲ ھﻲ‬

‫ﻋﺸﺮة اﻟﻨﻈﺎم اﻟﺴﺖ ﻋﺸﺮي‬ ‫ﻣﻘﺎﺑﻠﮭﺎ ﻓﻲ اﻟﻨﻈﺎم اﻟﻌﺸﺮي‬


‫ﻟﺬﻟﻚ ﯾﺘﻢ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﺑﺎﻟﻄﺮﯾﻘﺔ اﻟﺘﺎﻟﯿﺔ‪:‬‬
‫‪ (1‬ﻧﺄﺧﺬ ﻗﯿﻤﺔ ﻣﺴﺠﻞ اﻟﻤﻘﻄﻊ اﻟﻤﻤﺜﻠﺔ ﺑﺎﻟﻨﻈﺎم اﻟﺴﺖ ﻋ ﺸﺮي و ﻧ ﻀﺮﺑﮭﺎ ﺑﻌ ﺸﺮة اﻟﻨﻈ ﺎم اﻟ ﺴﺖ ﻋ ﺸﺮي ﻓﺘﻨ ﺰاح‬
‫ﻗﯿﻤﺔ ﻣﺴﺠﻞ اﻟﻤﻘﻄﻊ ﺧﺎﻧﺔ واﺣﺪة ﻧﺤﻮ اﻟﯿﺴﺎر‪.‬‬
‫‪ (2‬ﻧﺠﻤ ﻊ ﻗﯿﻤ ﺔ اﻟﻤ ﺴﺠﻞ اﻟﻤ ﺴﺎﻋﺪ ﻟ ﻨﻔﺲ اﻟﻤﻘﻄ ﻊ و اﻟﻤﻤﺜﻠ ﺔ أﯾ ﻀﺎً ﺑﺎﻟﻨﻈ ﺎم اﻟ ﺴﺖ ﻋ ﺸﺮي ﻓﺘﻜ ﻮن اﻟﻨﺘﯿﺠ ﺔ ھ ﻲ‬
‫ﺣﺼﻮﻟﻨﺎ ﻋﻠﻰ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ‬
‫)‪ = PA (Physical Address‬ﻗﯿﻤﺔ اﻟﻤﺴﺠﻞ اﻟﻤﺴﺎﻋﺪ ‪ x 10h ) +‬ﻣﺴﺠﻞ اﻟﻤﻘﻄﻊ (‬
‫أﻣﺜﻠﺔ‪:‬‬
‫ﺑﻔﺮض ﻟﺪﯾﻨﺎ ﻣﺴﺠﻞ ﻣﻘﻄﻊ اﻟ ﺸﯿﻔﺮة ‪ CS‬ﯾﺤﺘ ﻮي ﻋﻠ ﻰ ‪ 1B6C‬و ﻗﯿﻤ ﺔ ﻣ ﺴﺠﻞ ﻣﺆﺷ ﺮ اﻟﺘﻌﻠﯿﻤ ﺔ ‪ IP‬اﻟﻤ ﺴﺎﻋﺪ ﻟ ﮫ‬
‫ھﻲ ‪ A0‬أوﺟﺪ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻟﻠﺘﻌﻠﯿﻤﺔ ‪:‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 11 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﺤﻞ‪:‬‬
‫‪PA = ( CS x 10h ) + IP = 1B6C x 10h + A0 = 1B760‬‬

‫‪1B6C‬‬
‫‪A0‬‬ ‫ﻣﺤﺘﻮى ‪IP‬‬

‫ﺟﺎﻣﻊ‬
‫اﻟﻌﻨﺎوﯾﻦ‬

‫‪1B760‬‬ ‫اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ‬

‫ﯾﻮﺟﮫ ھﺬا اﻟﻌﻨﻮان إﻟﻰ اﻟﺬاﻛﺮة‬

‫ﻣﺜﺎل آﺧﺮ‪ :‬أوﺟﺪ ‪ PA‬ﺑﻔﺮض ‪ DS = 1000h‬و ‪. SI = 1F‬‬


‫اﻟﺤﻞ‪:‬‬
‫‪PA = ( 1000 x 10 ) + 1F = 1001F‬‬
‫اﻟﻄﺮﯾﻘﺔ اﻟﻌﻜﺴﯿﺔ ) ھﺬه اﻟﻄﺮﯾﻘﺔ ﯾﺠﺐ إﺗﻘﺎﻧﮭﺎ ذھﻨﯿﺎً (‬
‫ﻋﻨ ﺪﻣﺎ ﻧُﻌﻄ ﻰ اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ و ﻧﺮﯾ ﺪ اﺳ ﺘﻨﺘﺎج ﻗﯿﻤ ﺔ ﻣ ﺴﺠﻞ اﻟﻤﻘﻄ ﻊ ) ﻋﻨ ﻮان اﻟﻤﻘﻄ ﻊ ( و ﻗﯿﻤ ﺔ اﻟﻤ ﺴﺠﻞ‬
‫اﻟﻤﺴﺎﻋﺪ ﻟﮫ ) اﻹزاﺣﺔ ( ﻧﺘﺒﻊ إﺣﺪى اﻟﻄﺮﯾﻘﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ ‪:‬‬
‫اﻟﻄﺮﯾﻘﺔ اﻷوﻟﻰ‬
‫‪ -1‬ﻧﺄﺧ ﺬ اﻟﺨﺎﻧ ﺎت اﻷرﺑﻌ ﺔ اﻟﯿﻤﯿﻨﯿ ﺔ ﻣ ﻦ اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ اﻟﻤﻌﻄ ﻰ و ﻧﻌﺘﺒﺮھ ﺎ إزاﺣ ﺔ ) أي ﻧ ﻀﻊ ﻗﯿﻤﺘﮭ ﺎ ﻓ ﻲ‬
‫اﻟﻤﺴﺠﻞ اﻟﻤﺴﺎﻋﺪ ( ‪.‬‬
‫‪ -2‬ﻧﺼﻔﺮ اﻟﺨﺎﻧﺎت اﻷرﺑﻌﺔ اﻷوﻟﻰ ﻣﻦ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻓﯿﻨﺘﺞ ﻣﻌﻨﺎ رﻗﻢ ﺳ ﺖ ﻋ ﺸﺮي أول أرﺑ ﻊ ﺧﺎﻧ ﺎت ﻣﻨ ﮫ‬
‫أﺻﻔﺎراً ‪.‬‬
‫‪ -3‬ﻧﺤﺬف اﻟﺼﻔﺮ اﻷول ﻣﻦ اﻟﺮﻗﻢ اﻟﻨﺎﺗﺞ ﻓﯿﻨﺘﺞ ﻣﻌﻨﺎ رﻗﻢ ﺳﺖ ﻋﺸﺮي ھﻮ ﻗﯿﻤﺔ ﻣﺴﺠﻞ اﻟﻤﻘﻄﻊ ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﻔﺮض ﻟﺪﯾﻨﺎ ﻋﺪد ﻣﻮﺟﻮد ﻓﻲ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ‪ 41000h‬أوﺟﺪ ﻗﯿﻤ ﺔ ﻣ ﺴﺠﻞ اﻟﻤﻌﻄﯿ ﺎت ‪ DS‬و ﻗﯿﻤ ﺔ اﻟﻤ ﺴﺠﻞ‬
‫اﻟﻤﺴﺎﻋﺪ ﻟﮫ ‪. SI‬‬
‫اﻟﺤﻞ‪ :‬ﺣﺴﺐ اﻟﻄﺮﯾﻘﺔ ﺑﺄﺧﺬ اﻟﺨﺎﻧ ﺎت اﻷرﺑﻌ ﺔ اﻷوﻟ ﻰ ﻣ ﻦ ﻋﻠ ﻰ اﻟﯿﻤ ﯿﻦ ﺗﻜ ﻮن ﻗﯿﻤ ﺔ ‪ SI‬ﺗ ﺴﺎوي ‪ 1000h‬و ھ ﻲ‬
‫اﻹزاﺣﺔ‪.‬‬
‫‪DS = 4000h‬‬ ‫‪( 3-2‬‬
‫ﻃﺮﯾﻘﮫ أﺧﺮى‬
‫‪ -1‬ﻧﺄﺧﺬ اﻟﺨﺎﻧﺔ اﻷوﻟﻰ ﻣﻦ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ وﻧﻌﺘﺒﺮھﺎ إزاﺣﺔ‪.‬‬
‫‪ -2‬ﻧﺤﺬف ﺗﻠﻚ اﻟﺨﺎﻧﺔ ﻣﻦ اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ ﻓﯿ ﺼﺒﺢ اﻟ ﺮﻗﻢ اﻟﻨ ﺎﺗﺞ ﻣﺆﻟ ﻒ ﻣ ﻦ أرﺑ ﻊ ﺧﺎﻧ ﺎت و ھ ﻮ ﯾﻤﺜ ﻞ ﻗﯿﻤ ﺔ‬
‫ﻣﺴﺠﻞ اﻟﻤﻘﻄﻊ‪.‬‬
‫ﻣﺜﺎل‪ :‬ﺑﻔﺮض ﻛﺎن ‪PA = 41000h‬‬
‫اﻟﺤﻞ ‪ :‬ﺑﺄﺧﺬ اﻟﺨﺎﻧﺔ اﻷوﻟﻰ‬
‫)‪1‬‬ ‫‪SI=0‬‬
‫)‪2‬‬ ‫أﺧﺬﻧﺎ اﻟﺨﺎﻧﺎت اﻟﻤﺘﺒﻘﯿﺔ ﻣﻦ اﻟﺮﻗﻢ ‪DS=4100‬‬
‫أي أن‬
‫‪4100:0000‬‬ ‫‪4000:1000‬‬
‫إزاﺣﺘﮫ ﻋﻨﻮان‬ ‫إزاﺣﺘﮫ ﻋﻨﻮان‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 12 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﻤﻮدﯾﻞ اﻟﺒﺮﻣﺠﻲ ﻟﻠﻤﻌﺎﻟﺞ ‪8086‬‬

‫‪00000h‬‬
‫‪IP‬‬
‫ﻣﻘﻄﻊ اﻟﺸﯿﻔﺮة‬
‫‪64KB‬‬
‫‪CS‬‬

‫‪DS‬‬

‫‪SS‬‬

‫‪ES‬‬ ‫ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت‬


‫‪64KB‬‬

‫‪AH‬‬ ‫‪AL‬‬ ‫‪AX‬‬

‫‪BH‬‬ ‫‪BL‬‬ ‫‪BX‬‬

‫‪CH‬‬ ‫‪CL‬‬ ‫‪CX‬‬


‫ﻣﻘﻄﻊ اﻟﻤﻜﺪس‬
‫‪64KB‬‬
‫‪DH‬‬ ‫‪DL‬‬ ‫‪DX‬‬

‫‪SP‬‬

‫‪BP‬‬
‫ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت‬
‫‪SI‬‬ ‫اﻹﺿﺎﻓﻲ‬ ‫‪64KB‬‬

‫‪DI‬‬

‫‪FFFFFh‬‬
‫ﻣﺴﺠﻞ اﻷﻋﻼم‬
‫اﻟﺬاﻛﺮة اﻟﺨﺎرﺟﯿﺔ‬
‫‪MPU 8086‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 13 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫أﺳﺎﻟﯿﺐ اﻟﻌﻨﻮﻧﺔ‬
‫ﻣﻘﺪﻣﺔ‪:‬‬
‫إن ﺣﯿ ﺰ اﻟ ﺬاﻛﺮة ﻣ ﻨﻈﻢ ﻋﻠ ﻰ ﺷ ﻜﻞ ﺑﺎﯾﺘ ﺎت ﻣﻌﻨﻮﻧ ﺔ ﻣ ﻦ ‪ 00000h‬إﻟ ﻰ ‪ FFFFFh‬ﻟ ﺬﻟﻚ ﻣ ﻦ أﺟ ﻞ ﻛﻠﻤ ﺎت‬
‫اﻟﻤﻌﻄﯿﺎت ‪ 16‬ﺑﺖ ﯾﺘﻢ ﺗﺨﺰﯾﻦ اﻟﺒﺎﯾﺖ اﻟﺴﻔﻠﻲ ﻓ ﻲ اﻟﻌﻨ ﻮان اﻷﺻ ﻐﺮ و اﻟﺒﺎﯾ ﺖ اﻟﻌﻠ ﻮي ﻓ ﻲ اﻟﻌﻨ ﻮان اﻷﻛﺒ ﺮ ﻛﻤ ﺎ‬
‫ﻧﻌﻠ ﻢ أن اﻟ ﺬاﻛﺮة ﺗﺤﺘ ﻮي أرﺑ ﻊ ﻣﻘ ﺎﻃﻊ ﻛ ﻞ ﻣﻨﮭ ﺎ ‪ 64KB‬و ھ ﻲ ﻣﻘﻄ ﻊ اﻟ ﺸﯿﻔﺮة و ﻣﻘﻄ ﻊ اﻟﻤﻌﻄﯿ ﺎت و ﻣﻘﻄ ﻊ‬
‫اﻟﻤﻜﺪس و ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت اﻹﺿﺎﻓﻲ‪ ،‬ﺣﯿﺚ ﯾﺘﻢ اﻟﺮﺟﻮع إﻟ ﻰ ھ ﺬه اﻟﻤﻘ ﺎﻃﻊ ﺑﻤ ﺴﺎﻋﺪة ﻣ ﺴﺠﻼت اﻟﻤﻘ ﺎﻃﻊ ذات‬
‫اﻟ ـ‪ 16‬ﺑ ﺖ و ھ ﻲ ‪ CS, DS, SS, ES‬و ﻛ ﻞ ﻣ ﻦ ھ ﺬه اﻟﻤ ﺴﺠﻼت ﯾﺤﺘ ﻮي ﻋﻨﻮاﻧ ﺎً ﻗﺎﻋ ﺪﯾﺎً ذا ‪ 16‬ﺑ ﺖ و اﻟ ﺬي‬
‫ﯾﺴﺘﺨﺪم ﻓﻲ ﺗﻮﻟﯿﺪ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻟﻠﺬاﻛﺮة و اﻟﺬي ﯾﺸﯿﺮ إﻟﻰ ﺑﺪاﯾﺔ اﻟﻤﻘﻄﻊ اﻟﻤﻄﺎﺑﻖ ﻓﻲ اﻟﺬاﻛﺮة‪.‬‬
‫ﯾﺴﺘﻄﯿﻊ اﻟﻤﺒﺮﻣﺞ ﺗﺒﺪﯾﻞ اﻟﻘﯿﻢ ﻓﻲ ﻣﺴﺠﻼت اﻟﻤﻘﺎﻃﻊ ﺑﺮﻣﺠﯿﺎً‪ ،‬ﻓﻤﺜﻼً ‪ :‬ﯾﻤﻜﻦ ﺗﮭﯿﺌﺔ ﻣﻘﻄﻊ ﻣﻌﻄﯿﺎت ﺟﺪﯾ ﺪ ﺑﺒ ﺴﺎﻃﺔ‬
‫و ذﻟﻚ ﺑﺘﺒﺪﯾﻞ ﻗﯿﻤﺔ اﻟﻤﺴﺠﻞ ‪ DS‬ﻋﻦ ﻃﺮﯾﻖ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ ‪:‬‬
‫‪Mov AX,A000‬‬
‫‪Mov DS,AX‬‬
‫و ﺳﺒﺐ وﺟﻮد ھﺎﺗﯿﻦ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ ھﻮ ﻋﺪم وﺟﻮد ﺗﻌﻠﯿﻤﺔ واﺣﺪة ﻟﺘﺤﻤﯿﻞ ﻣﺴﺠﻞ ﻣﻘﻄﻊ ﺑﻌﺪد ﺛﺎﺑﺖ‪.‬‬
‫إن اﻟﻤﻌﺎﻟﺞ ‪ 8086‬ﻣﺰود ﺑﺘﺴﻌﺔ أﻧﻈﻤﺔ ﻋﻨﻮﻧﺔ ﻣﺨﺘﻠﻔﺔ‪ ،‬و ھﻲ‪ :‬اﻟﻌﻨﻮﻧﺔ ﺑﺎﻟﻤﺴﺠﻞ – اﻟﻌﻨﻮﻧﺔ اﻟﻔﻮرﯾﺔ – اﻟﻌﻨﻮﻧ ﺔ‬
‫اﻟﻤﺒﺎﺷ ﺮة – اﻟﻌﻨﻮﻧ ﺔ ﻏﯿ ﺮ اﻟﻤﺒﺎﺷ ﺮة ﺑﺎﻟﻤ ﺴﺠﻞ – اﻟﻌﻨﻮﻧ ﺔ اﻟﻘﺎﻋﺪﯾ ﺔ – اﻟﻌﻨﻮﻧ ﺔ اﻟﻤﻔﮭﺮﺳ ﺔ ‪ -‬اﻟﻌﻨﻮﻧ ﺔ اﻟﻘﺎﻋﺪﯾ ﺔ‬
‫اﻟﻤﻔﮭﺮﺳﺔ – اﻟﻌﻨﻮﻧﺔ ﺑﺎﻟﺴﻠﺴﻠﺔ – اﻟﻌﻨﻮﻧﺔ ﺑﺎﻟﻨﺎﻓﺬة‪.‬‬
‫و ھﺬه اﻷﻧﻈﻤﺔ اﻟﺘ ﺴﻌﺔ ﻋ ﺪا اﻟﻌﻨﻮﻧ ﺔ ﺑﺎﻟﻤ ﺴﺠﻞ و اﻟﻌﻨﻮﻧ ﺔ اﻟﻔﻮرﯾ ﺔ ﺗﺘﻄﻠ ﺐ اﻟﺮﺟ ﻮع إﻟ ﻰ اﻟﻤﺘﺤ ﻮل اﻟﻤﺨ ﺰن ﻓ ﻲ‬
‫اﻟﺬاﻛﺮة ﻟﺬﻟﻚ ﻧﺤﺘﺎج ﻷن ﺗﺒﺪأ وﺣﺪة ﻣﻼﺋﻤﺔ اﻟﻤﻤﺮات ‪ BIU‬ﺑﺪورة ﻣﻤﺮ ﻟﻘﺮاءة أو ﻛﺘﺎﺑﺔ ﻓﻲ اﻟﺬاﻛﺮة و ھﻜ ﺬا ﻓ ﺈن‬
‫ﻛ ﻞ ﻧﻈ ﺎم ﻋﻨﻮﻧ ﺔ ﻟ ﮫ ﻃﺮﯾﻘ ﺔ ﻣﺨﺘﻠﻔ ﺔ ﻟﺤ ﺴﺎب ﻋﻨ ﻮان اﻟﻤﺘﺤ ﻮل اﻟ ﺬي ﺳ ﯿﺨﺮج ﻋﻠ ﻰ ﻣﻤ ﺮ اﻟﻌﻨ ﺎوﯾﻦ أﺛﻨ ﺎء دورة‬
‫اﻟﻤﻤﺮ‪ ،‬و ﺳﻨﺪرس اﻵن ﻛﻼً ﻣﻦ ھﺬه اﻷﻧﻈﻤﺔ ﺑﺎﻟﺘﻔﺼﯿﻞ‪:‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﺟﻤﯿﻊ اﻟﺘﻌﻠﯿﻤﺎت ﺳﺘﺸﺮح ﻻﺣﻘﺎً‪.‬‬

‫أوﻻً‪ :‬ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ ﺑﺎﻟﻤﺴﺠﻞ‬


‫ﻓﻲ ھﺬا اﻟﻨﻈﺎم ﯾﻜﻤﻦ اﻟﻤﺘﺤﻮل ﺑﻤﺴﺠﻞ داﺧﻠﻲ ﻟﻠﻤﻌﺎﻟﺞ‪ ،‬ﻓﻤﺜﻼً اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﻲ ﺗﺴﺘﻌﻤﻞ ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ ﺑﺎﻟﻤﺴﺠﻞ ھ ﻲ‬
‫‪ MOV AX,BX‬و اﻟﺘﻲ ﺗﻌﻨﻲ ﻧﻘﻞ ﻣﺤﺘﻮى ‪) BX‬ﻣﺘﺤ ﻮل اﻟﻤ ﺼﺪر( إﻟ ﻰ اﻟﻤ ﺴﺠﻞ ‪) AX‬ﻣﺘﺤ ﻮل اﻟﮭ ﺪف( أي أن‬
‫ﺗﻨﻔﯿﺬ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﯾﺘﻢ دون اﻟﺮﺟﻮع إﻟﻰ اﻟﺬاﻛﺮة أي ﻓﻲ اﻟﻤﻌﺎﻟﺞ ﻷن ﻛ ﻼ اﻟﻤ ﺴﺠﻠﯿﻦ ‪ AX‬و ‪ BX‬ﻣﻮﺟ ﻮدﯾﻦ ﻓ ﻲ‬
‫اﻟﻤﻌﺎﻟﺞ‪:‬‬

‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬


‫‪IP‬‬ ‫‪0000‬‬ ‫‪IP‬‬ ‫‪0002‬‬ ‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬
‫‪01000‬‬ ‫‪8B‬‬ ‫‪MOV AX,BX‬‬
‫‪01000‬‬ ‫‪8B‬‬ ‫‪MOV AX,BX‬‬
‫‪CS‬‬ ‫‪0100‬‬ ‫‪01001‬‬ ‫‪C3‬‬ ‫‪CS‬‬ ‫‪0100‬‬
‫‪01001‬‬ ‫‪C3‬‬
‫‪01002‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬
‫‪01002‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬
‫‪AX‬‬ ‫‪XXXX‬‬ ‫‪AX‬‬ ‫‪ABCD‬‬
‫‪BX‬‬ ‫‪ABCD‬‬ ‫‪BX‬‬ ‫‪ABCD‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 14 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻧﻼﺣﻆ ﻣﻦ اﻟﺸﻜﻠﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ و ﻓﻲ اﻟﺸﻜﻞ اﻷول ﻧﺠﺪ أﻧﮫ ﻗﺪ ﺗﻢ ﺗﻮﻟﯿﺪ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻟﻠﺘﻌﻠﯿﻤ ﺔ ﺑﻮاﺳ ﻄﺔ اﻟ ـ‪IP‬‬
‫و اﻟـ ‪ CS‬ﺣﯿﺚ ﯾﺘﻢ إﺣﻀﺎر اﻟﺘﻌﻠﯿﻤﺔ إﻟﻰ اﻟﻤﻌﺎﻟﺞ و ﺗﺘﻢ ﻓﻚ ﺷﯿﻔﺮﺗﮭﺎ ) ‪ 8BC3‬ﻣﻦ اﻟﺠﺪول ( ‪.‬‬
‫ﺛﺎﻧﯿﺎً‪ :‬ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ اﻟﻔﻮرﯾﺔ‬
‫ﻓﻲ ھﺬا اﻟﻨﻈﺎم ﯾﻜﻮن اﻟﻤﺘﺤﻮل ﺟﺰء ﻣﻦ اﻟﺘﻌﻠﯿﻤﺔ و ﻟﯿﺲ ﻣ ﻀﻤﻮن ﺳ ﺠﻞ أو ﻋﻨ ﻮان ﺣﺠ ﺮة ذاﻛ ﺮة ﺣﯿ ﺚ ﯾ ﺪﻋﻰ‬
‫ھﺬا اﻟﻤﺘﺤﻮل ﺑﺎﻟﻤﺘﺤﻮل اﻟﻔﻮري و اﻟﻤﺘﺤﻮﻻت اﻟﻔﻮرﯾﺔ ﺗﻤﺜﻞ ﻣﻌﻄﯿﺎت ﺛﺎﺑﺘﺔ ﯾﻤﻜ ﻦ أن ﺗﻜ ﻮن ﺑﺎﯾ ﺖ أو ﻛﻠﻤ ﺔ ) ‪2‬‬
‫ﺑﺎﯾﺖ (‪.‬‬
‫ﻣﺜ ﺎل‪ MOV AL,15 :‬ﻧﺠ ﺪ أن ﻣﺘﺤ ﻮل اﻟﻤ ﺼﺪر ھ ﻮ ‪ 15h‬و ھ ﻮ ﻣﺘﺤ ﻮل ﻣ ﺼﺪر ﻓ ﻮري ذو ﺑﺎﯾ ﺖ واﺣ ﺪ و‬
‫اﻟﺸﻜﻼن اﻟﺘﺎﻟﯿﺎن ﯾﻮﺿﺤﺎن ﺣﺎﻟﺔ اﻟﻤﻌﺎﻟﺞ ﻗﺒﻞ و ﺑﻌﺪ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺴﺎﺑﻘﺔ‪.‬‬

‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬


‫‪IP‬‬ ‫‪0000‬‬ ‫‪IP‬‬ ‫‪0002‬‬ ‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬
‫‪01000‬‬ ‫‪B0‬‬ ‫‪MOV AL,15‬‬
‫‪01000‬‬ ‫‪B0‬‬ ‫‪MOV AL,15‬‬
‫‪CS‬‬ ‫‪0100‬‬ ‫‪01001‬‬ ‫‪15‬‬ ‫‪CS‬‬ ‫‪0100‬‬
‫‪01001‬‬ ‫‪15‬‬
‫‪01002‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬
‫‪AL‬‬ ‫‪AL‬‬ ‫‪01002‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬
‫‪AX‬‬ ‫‪XX‬‬ ‫‪AX‬‬ ‫‪15‬‬

‫ﺛﺎﻟﺜﺎً‪ :‬ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ اﻟﻤﺒﺎﺷﺮة‬


‫ﯾﺨﺘﻠﻒ ھﺬا اﻟﻨﻈﺎم ﻋﻦ ﻧﻈﺎم اﻟﻌـﻨﻮﻧﺔ اﻟﻔﻮرﯾ ﺔ ﺑ ﺄن اﻟ ـﺤﺠﺮات اﻟﺘ ﻲ ﺗﻠ ﻲ رﻣ ﺰ اﻟﺘﻌﻠﯿﻤ ﺔ ﺗﺤـ ـﻮي ﻋﻠ ﻰ اﻟﻌﻨ ـﻮان‬
‫اﻟﻔﻌﺎل ﻟﻠﺬاﻛﺮة ‪ EA = Effective memory Address‬أي اﻹزاﺣﺔ و ھﺬا اﻟﻌﻨ ﻮان ﻣﺆﻟ ﻒ ﻣ ﻦ ‪ 16‬ﺑ ﺖ ﺣﯿ ﺚ‬
‫ﯾﺘﻢ ﺗﻮﻟﯿﺪ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ اﻧﻄﻼﻗﺎً ﻣﻦ ‪ DS‬و ‪. ES‬‬
‫ﻣﺜﺎل‪:‬‬
‫]‪MOV CX,[1234‬‬
‫ﺑﻔﺮض ﻛﺎن ‪ DS = 200‬ﻋﻨﺪﺋﺬ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﯾﺤﺴﺐ ﺑﺎﻟﻌﻼﻗﺔ ‪:‬‬
‫‪PA = 200 x 10h + 1134 = 03243h‬‬
‫ﺛﻢ ﯾﺬھﺐ اﻟﻤﻌﺎﻟﺞ إﻟﻰ اﻟﻤﻮﻗ ﻊ ‪ 03234h‬ﻓ ﻲ اﻟ ﺬاﻛﺮة و ﯾﺄﺧ ﺬ ﻣﺤﺘ ﻮى ﺗﻠ ﻚ اﻟﺤﺠ ﺮة و ﯾ ﻀﻌﮭﺎ ﻓ ﻲ ‪ CL‬و ﯾﺄﺧ ﺬ‬
‫ﻣﺤﺘﻮى اﻟﺤﺠﺮة اﻟﺘﻲ ﺗﻠﯿﮭﺎ و ﯾﻀﻌﮭﺎ ﻓﻲ ‪. CH‬‬

‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬ ‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬


‫‪IP‬‬ ‫‪0000‬‬ ‫‪IP‬‬ ‫‪4000‬‬
‫‪01000‬‬ ‫‪8B‬‬ ‫‪MOV CX,Beta‬‬ ‫‪01000‬‬ ‫‪8B‬‬ ‫‪MOV CX,Beta‬‬

‫‪CS‬‬ ‫‪0100‬‬ ‫‪01001‬‬ ‫‪0E‬‬ ‫‪CS‬‬ ‫‪0100‬‬ ‫‪01001‬‬ ‫‪0E‬‬

‫‪01002‬‬ ‫‪34‬‬ ‫‪01002‬‬ ‫‪34‬‬


‫‪01003‬‬ ‫‪12‬‬ ‫‪01003‬‬ ‫‪12‬‬
‫‪DS‬‬ ‫‪0200‬‬ ‫‪DS‬‬ ‫‪0200‬‬
‫‪CX‬‬ ‫‪XXXX‬‬ ‫‪01004‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬ ‫‪CX‬‬ ‫‪BEED‬‬ ‫‪01004‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬
‫…‬ ‫…‬
‫‪03234‬‬ ‫‪ED‬‬ ‫ﻣﻌﺎﻣﻞ اﻟﻤﺼﺪر‬ ‫‪03234‬‬ ‫‪ED‬‬

‫‪BE‬‬ ‫‪BE‬‬

‫راﺑﻌﺎً‪ :‬ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ ﻏﯿﺮ اﻟﻤﺒﺎﺷﺮة ﺑﺎﻟﻤﺴﺠﻞ ‪:‬‬


‫ھ ﺬا اﻟﻨﻈ ﺎم ﯾ ﺸﺒﮫ ﻧﻈ ﺎم اﻟﻌﻨﻮﻧ ﺔ اﻟﻤﺒﺎﺷ ﺮة ﻟﻜ ﻦ ﯾﺨﺘﻠ ﻒ ﻋﻨ ﮫ ﺑ ﺄن اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل ) إزاﺣ ﺔ ( ﯾﻜﻤ ﻦ ﻓ ﻲ ﻣ ﺴﺠﻞ‬
‫ﻣﺆﺷﺮ ‪ BX,BP‬أو ﻣﺴﺠﻞ دﻟﯿﻞ ‪. SI,DI‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 15 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻣﺜﺎل‪:‬‬
‫إن اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﻲ ﺗﺴﺘﺨﺪم ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ ﻏﯿﺮ اﻟﻤﺒﺎﺷ ﺮة ﺑﺎﻟﻤ ﺴﺠﻞ ھ ﻲ ]‪ MOV AX,[SI‬ﺣﯿ ﺚ ﯾ ﺘﻢ ﺗﻮﻟﯿ ﺪ اﻟﻌﻨ ﻮان‬
‫اﻟﻔﯿﺰﯾ ﺎﺋﻲ ﻟﻠﻤﺘﺤ ﻮل ﺑﺎﻻﺳ ﺘﻨﺎد إﻟ ﻰ ‪ SI‬و ‪ . DS‬ﻋ ﻦ ﻃﺮﯾ ﻖ اﻟﻌﻼﻗ ﺔ ‪ ، PA = ( DS x 10h ) + SI‬و ﺑﻔ ﺮض‬
‫ﻛﺎﻧ ﺖ ‪ SI = 1234‬و ‪ DS = 200‬ﻓ ﺈن ‪ PA = ( 0200 x 10 ) + 1234 = 03234‬و ھ ﻮ ﻣﻌﺎﻣ ﻞ اﻟﻤ ﺼﺪر‬
‫ﺣﯿﺚ ﯾﺬھﺐ اﻟﻤﻌﺎﻟﺞ إﻟﻰ اﻟﺤﺠﺮة ‪ 03234‬و ﯾﺄﺧﺬ ﻣﻨﮭﺎ ﻗﯿﻤﺘﮭﺎ و ﯾﻀﻌﮭﺎ ﻓﻲ ‪ AL‬أﻣ ﺎ ﻗﯿﻤ ﺔ اﻟﺤﺠ ﺮة اﻟﺘ ﻲ ﺗﻠﯿﮭ ﺎ‬
‫ﻓﯿﺘﻢ وﺿﻌﮭﺎ ﻓﻲ ‪ AH‬و ﯾﺒﯿﻦ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﺣﺎﻟﺔ اﻟﻤﻌﺎﻟﺞ ﻗﺒﻞ و ﺑﻌﺪ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺴﺎﺑﻘﺔ‪:‬‬

‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬ ‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬


‫‪IP‬‬ ‫‪0000‬‬ ‫‪IP‬‬ ‫‪0000‬‬
‫‪01000‬‬ ‫‪8B‬‬ ‫]‪MOV AX,[SI‬‬ ‫‪01000‬‬ ‫‪8B‬‬ ‫]‪MOV AX,[SI‬‬
‫‪CS‬‬ ‫‪0100‬‬ ‫‪CS‬‬ ‫‪0100‬‬
‫‪01001‬‬ ‫‪0E‬‬ ‫‪01001‬‬ ‫‪0E‬‬
‫‪DS‬‬ ‫‪0200‬‬ ‫‪01002‬‬ ‫‪XX‬‬ ‫ﺗﻌﻠﯿﻤﺔ ﺗﺎﻟﯿﺔ‬
‫‪DS‬‬ ‫‪0200‬‬ ‫‪01002‬‬ ‫‪XX‬‬ ‫ﺗﻌﻠﯿﻤﺔ ﺗﺎﻟﯿﺔ‬
‫‪AX XXXX‬‬ ‫…‬ ‫‪AX BEED‬‬ ‫…‬
‫ﻣﻌﺎﻣﻞ اﻟﻤﺼﺪر‬ ‫ﻣﻌﺎﻣﻞ اﻟﻤﺼﺪر‬
‫‪SI‬‬ ‫‪1234‬‬ ‫‪03234‬‬ ‫‪ED‬‬ ‫‪SI‬‬ ‫‪1234‬‬ ‫‪03234‬‬ ‫‪ED‬‬
‫‪BE‬‬ ‫‪BE‬‬

‫ﺧﺎﻣﺴﺎً‪ :‬ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ اﻟﻘﺎﻋﺪﯾﺔ‬


‫ﻓﻲ ھﺬا اﻟﻨﻈﺎم ﻣﻦ اﻟﻌﻨﻮﻧﺔ ﯾﺤﺴﺐ اﻟﻌﻨﻮان ﺑﻮاﺳﻄﺔ ﺟﻤ ﻊ اﻹزاﺣ ﺔ ) ‪ ( disp‬ﻣ ﻊ ﻣﺤﺘﻮﯾ ﺎت إﻣ ﺎ ﻣ ﺴﺠﻞ اﻟﻘﺎﻋ ﺪة‬
‫‪ BX‬أو ﻣﺴﺠﻞ ﻣﺆﺷﺮ اﻟﻘﺎﻋﺪة ‪ BP‬ﻣﻊ اﻟﻘﯿﻤﺔ اﻟﺤﺎﻟﯿﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﺴﺠﻞ ‪ DS‬أو ‪ SS‬ﻋﻠﻰ اﻟﺘﺮﺗﯿﺐ أي‪:‬‬
‫‪PA = ( DS X 10h ) + BX + disp = ( SS x 10h ) + BP + disp‬‬
‫إن ﺗﻌﻠﯿﻤﺔ ‪ MOV‬اﻟﺘﻲ ﺗﺴﺘﺨﺪم اﻟﻌﻨﻮﻧﺔ اﻟﻘﺎﻋﺪﯾﺔ ﻟﺘﺤﺪﯾﺪ ﺣﺠﺮة ﻣﺘﺤﻮل اﻟﮭﺪف ھﻲ‬
‫‪MOV [BX].Beta,AL‬‬
‫‪ 8870‬و إن ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺔ ﺗ ﺴﺘﺨﺪم ﻣ ﺴﺠﻞ اﻟﻘﺎﻋ ﺪة ‪ BX‬و اﻹزاﺣ ﺔ‬ ‫إن ﺷ ﯿﻔﺮة اﻟﺘﻌﻠﯿﻤ ﺔ اﻟ ﺴﺎﺑﻘﺔ ھ ﻲ ‪3412‬‬
‫اﻟﻤﺒﺎﺷ ﺮة ‪ Beta‬ﻻﺷ ﺘﻘﺎق اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل ﻟﻤﺘﺤ ﻮل اﻟﮭ ﺪف ﺣﯿ ﺚ ﯾ ﺘﻢ ﺗﺤﻘﯿ ﻖ ﻧﻈ ﺎم اﻟﻌﻨﻮﻧ ﺔ اﻟﻘﺎﻋﺪﯾ ﺔ ﺑﻮاﺳ ﻄﺔ‬
‫ﺗﺨﺼﯿﺺ ﻣ ﺴﺠﻞ اﻟﻘﺎﻋ ﺪة أو ﻣ ﺴﺠﻞ ﻣﺆﺷ ﺮ اﻟﻘﺎﻋ ﺪة ﺑﻘﻮﺳ ﯿﻦ ﻣﺘﻮﺳ ﻄﯿﻦ ) ﻣ ﺮﺑﻌﯿﻦ ( ﻣﺘﺒﻮﻋ ﺎً ﺑﻨﻘﻄ ﺔ و إزاﺣ ﺔ‬
‫ﻣﺒﺎﺷﺮة ) ‪ .( Beta‬إن ﻣﺘﺤﻮل اﻟﻤﺼﺪر ﻓﻲ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻣﺘﻮﺿﻊ ﻓﻲ اﻟﺒﺎﯾﺖ اﻟﺴﻔﻠﻲ ﻣﻦ اﻟﻤ ﺮاﻛﻢ أي ﻓ ﻲ ‪ AL‬و‬
‫ﺑﻔﺮض أن ﻗﯿﻤﺔ ‪ Beta‬ھﻲ ‪ 1234h‬ﻓﺈن اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻟﻤﺘﺤﻮل اﻟﮭﺪف ﯾﺘﻢ ﺣﺴﺎﺑﮫ ﺑﺎﻟﻌﻼﻗﺔ‪:‬‬
‫‪PA = (DS x 10h ) + BX + disp = 02000 + 1000 + 1234 = 04234h‬‬

‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬ ‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬


‫‪IP‬‬ ‫‪0000‬‬ ‫‪IP‬‬ ‫‪0000‬‬
‫‪MOV‬‬ ‫‪MOV‬‬
‫‪01000‬‬ ‫‪8A‬‬ ‫‪01000‬‬ ‫‪8A‬‬
‫‪CS‬‬ ‫‪0100‬‬ ‫]‪AL,array[SI‬‬ ‫‪CS‬‬ ‫‪0100‬‬ ‫]‪AL,array[SI‬‬
‫‪01001‬‬ ‫‪44‬‬ ‫‪01001‬‬ ‫‪44‬‬
‫‪DS‬‬ ‫‪0200‬‬ ‫‪DS‬‬ ‫‪0200‬‬
‫‪01002‬‬ ‫‪34‬‬ ‫‪01002‬‬ ‫‪34‬‬
‫‪AX‬‬ ‫‪XXXX‬‬ ‫‪AX XX BE‬‬
‫‪01003‬‬ ‫‪12‬‬ ‫‪01003‬‬ ‫‪12‬‬
‫‪SI‬‬ ‫‪2000‬‬ ‫‪01004‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬
‫‪SI‬‬ ‫‪2000‬‬ ‫‪01004‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬

‫…‬ ‫…‬

‫‪02000‬‬ ‫‪XX‬‬ ‫‪02000‬‬

‫‪02001‬‬ ‫‪XX‬‬ ‫‪02001‬‬

‫ھﺬا اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﺗﺤﺴﺒﮫ اﻟـ ‪ BIU‬و ﻣﻦ ﺛﻢ ﺗﻄﻠﺐ اﻟـ ‪ EU‬ﺑﺪء دورة ﻣﻤﺮ ﻛﺘﺎﺑﺔ ﻓ ﻲ اﻟ ﺬاﻛﺮة و ھﻜ ﺬا ﯾﻜﺘ ﺐ‬
‫ﻣﺘﺤﻮل اﻟﻤﺼﺪر ‪ AL‬ﻓﻲ ﺣﺠﺮة اﻟﺬاﻛﺮة ذات اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ ‪ 04234h‬أي ﺑﻌ ﺪ ﺗﻨﻔﯿ ﺬ اﻟﺘﻌﻠﯿﻤ ﺔ ﺗ ﺼﺒﺢ ﺣﺎﻟ ﺔ‬
‫اﻟﻤﻌﺎﻟﺞ ﻛﻤﺎ ھﻮ واﺿﺢ ﻓﻲ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ‪.‬‬
‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 16 -‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﺳﺎدﺳﺎً‪ :‬ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ اﻟﻤﻔﮭﺮﺳﺔ‬


‫ﻓﻲ ھﺬه اﻟﻄﺮﯾﻘﺔ ﻣﻦ اﻟﻌﻨﻮﻧﺔ ﯾﺘﻢ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﻌﻨﻮان اﻟﻔﻌﺎل ﻧﺘﯿﺠﺔ ﺟﻤﻊ ﻣﺤﺘﻮى ﻣﺴﺠﻞ اﻟﻔﮭ ﺮس إﻣ ﺎ ‪ DI‬أو‬
‫‪ SI‬إﻟﻰ ﻋﻨﻮان اﻹزاﺣﺔ ) ‪ disp ( displacement‬و ھﺬا اﻟﻨ ﻮع ﻣ ﻦ اﻟﻌﻨﻮﻧ ﺔ ﯾﻨﺎﺳ ﺐ أﻏ ﺮاض اﻟﺠ ﺪاول ﺣﯿ ﺚ‬
‫ﯾﻜ ﻮن ﻋﻨ ﻮان اﻹزاﺣ ﺔ ﻓ ﻲ ﺑﺪاﯾ ﺔ أول ﻋﻨ ﻮان ﻣ ﻦ اﻟﺠ ﺪول و ﻣ ﺴﺠﻞ اﻟﻔﮭ ﺮس ﯾﺆﺷ ﺮ إﻟ ﻰ أي ﻋﻨ ﺼﺮ ﻣ ﻦ‬
‫ﻣﺤﺘﻮﯾﺎت اﻟﺠﺪول‪.‬‬
‫ﻣﺜﺎل‪ :‬ﻟﯿﻜﻦ ﻟﺪﯾﻨﺎ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ و اﻟﺘﻲ ﺷﯿﻔﺮﺗﮭﺎ ‪ 8A443412‬و ھﻲ ]‪. MOV AL,array[SI‬‬
‫ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺔ ﯾ ﺘﻢ ﻓﯿﮭ ﺎ ﺗﺤﺪﯾ ﺪ ﻣﺘﺤ ﻮل اﻟﻤ ﺼﺪر ﺑﻮاﺳ ﻄﺔ اﻟﻌﻨﻮﻧ ﺔ اﻟﻤﻔﮭﺮﺳ ﺔ اﻟﻤﺒﺎﺷ ﺮة ﺣﯿ ﺚ أن ‪ array‬ﺗﻤﺜ ﻞ‬
‫اﻹزاﺣ ﺔ اﻟﻤﺒﺎﺷ ﺮة و ھ ﻲ ﺗ ﺴﺒﻖ ﻣ ﺴﺠﻞ اﻟ ﺪﻟﯿﻞ اﻟﻤﻮﺟ ﻮد ﺿ ﻤﻦ ﻗﻮﺳ ﯿﻦ ﻣﺘﻮﺳ ﻄﯿﻦ‪ ،‬ﺣﯿ ﺚ ﯾ ﺘﻢ ﺗﻮﻟﯿ ﺪ اﻟﻌﻨ ﻮان‬
‫اﻟﻔﯿﺰﯾﺎﺋﻲ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪PA = ( DS x 10h ) + EA‬‬
‫‪; EA = ( SI ) + disp => EA = 2000 + 1234 = 3234h‬‬
‫‪PA = ( DS x 10h ) + EA = 02000 + 3234 = 05234h‬‬

‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬ ‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬


‫‪IP‬‬ ‫‪0000‬‬ ‫‪MOV‬‬
‫‪IP‬‬ ‫‪4000‬‬ ‫‪MOV‬‬
‫‪01000‬‬ ‫‪88‬‬ ‫‪01000‬‬ ‫‪8A‬‬
‫‪[BX].Beta,AL‬‬ ‫‪[BX].Beta,AL‬‬
‫‪CS‬‬ ‫‪0100‬‬ ‫‪CS‬‬ ‫‪0100‬‬
‫‪01001‬‬ ‫‪07‬‬ ‫‪01001‬‬ ‫‪44‬‬
‫‪DS‬‬ ‫‪0200‬‬ ‫‪01002‬‬ ‫‪34‬‬ ‫‪DS‬‬ ‫‪0200‬‬ ‫‪01002‬‬ ‫‪34‬‬
‫‪ ED‬إﻟ‪BE‬ﻰ ‪AL‬‬
‫‪AX‬‬ ‫‪ 05234h‬ﺗﻨﻘ ﻞ‬ ‫اﻟﻔﯿﺰﯾ ﺎﺋﻲ‬
‫‪01003‬‬ ‫‪ AX‬اﻟ ﺬاﻛﺮة ذات اﻟﻌﻨ ﻮان ‪12‬‬
‫ھﻲ أن ﻣﺤﺘﻮﯾ‪ED‬ﺎت‪BE‬ﺣﺠ ﺮة‬ ‫إن ﻧﺘﯿﺠﺔ ﺗﻨﻔﯿﺬ ھﺬه‪12‬اﻟﺘﻌﻠﯿﻤﺔ‬
‫‪01003‬‬

‫‪BX‬‬ ‫‪1000‬‬ ‫‪01004‬‬ ‫‪XX‬‬ ‫اﻟﺴﺎﺑﻖ‪.‬‬ ‫اﻟﺸﻜﻞ‬ ‫‪ 01004‬ﻣﻮﺿﺢ ﻓﻲ‬


‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬
‫‪BX‬‬ ‫‪2000‬‬
‫اﻟﻤﻌﺎﻟﺞ ﻛﻤﺎ ھﻮ‬
‫‪XX‬‬ ‫ﺣﺎﻟﺔ‬
‫ﺗﺼﺒﺢاﻟﺘﺎﻟﯿﺔ‬
‫و اﻟﺘﻌﻠﯿﻤﺔ‬

‫…‬ ‫اﻟﻘﺎﻋﺪﯾﺔ اﻟﻤﻔﮭﺮﺳﺔ ‪:‬‬


‫…‬ ‫ﺳﺎﺑﻌﺎً‪ :‬ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ‬
‫ﺴﺠﻞ اﻟﻘﺎﻋ ﺪة ﻣ ﻊ ﻣ ﺴﺠﻞ‬ ‫ﻣﺤﺘ ﻮى ﻣ‬
‫‪02000‬‬ ‫‪02000‬اﻟﺤﺼﻮل ﻋﻠ ﻰ اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل ﻧﺘﯿﺠ ﺔ ﺟﻤ ﻊ ‪XX‬‬
‫اﻟﻌﻨﻮﻧﺔ ﯾﺘﻢ‬
‫ﻓﻲ ھﺬا اﻟﻨﻮع ﻣﻦ ‪XX‬‬
‫اﻟﻤﺬﻛﻮرﯾﻦ‪.‬‬
‫اﻟﻤﺴﺠﻠﯿﻦ ‪02001‬‬
‫‪XX‬‬ ‫ﻋﻨﻮان ﯾﺠﺐ إﺿﺎﻓﺔ ھﺬا اﻟﻌﻨﻮان إﻟﻰ ﻣﺤﺘﻮى‬ ‫‪XX‬وﺟﻮد‪02001‬‬‫اﻟﻔﮭﺮس و ﻓﻲ ﺣﺎل‬
‫اﻟﻤﺼﺪر ﻛﻤﺎ ﯾﻠﻲ‪:‬‬‫]‪ MOV AH,[BX].Beta[SI‬ﯾﺘﻢ ﻓﯿﮭﺎ ﺣﺴﺎب اﻟﻌﻨﻮان اﻟﻔﻌﺎل ﻟﻤﺘﺤﻮل …‬
‫…‬ ‫ﻣﺜﺎل‪ :‬اﻟﺘﻌﻠﯿﻤﺔ‬
‫‪EA = BX + Beta +04234‬‬
‫‪SI‬‬ ‫‪XX‬‬ ‫ﻣﻌﺎﻣﻞ اﻟﮭﺪف‬ ‫‪04234‬‬ ‫‪ED‬‬
‫‪PA = ( DS x 10h )04235‬‬
‫‪+ EA =XX‬‬
‫‪02000 + 4234 = 06234h‬‬ ‫‪04234‬‬ ‫‪XX‬‬

‫و ﯾﺒﯿﻦ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﺣﺎﻟﺔ اﻟﻤﻌﺎﻟﺞ ﻗﺒﻞ و ﺑﻌﺪ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ‪:‬‬

‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬ ‫ﻋﻨﻮان‬ ‫ﺷﯿﻔﺮة‬ ‫اﻟﺘﻌﻠﯿﻤﺔ‬


‫‪IP‬‬ ‫‪0000‬‬ ‫‪MOV AH‬‬ ‫‪IP‬‬ ‫‪0000‬‬ ‫‪MOV AH‬‬
‫‪01000‬‬ ‫‪8A‬‬ ‫‪01000‬‬ ‫‪8A‬‬
‫]‪,[BX].Beta[SI‬‬ ‫]‪,[BX].Beta[SI‬‬
‫‪CS‬‬ ‫‪0100‬‬ ‫‪01001‬‬ ‫‪20‬‬ ‫‪CS‬‬ ‫‪0100‬‬ ‫‪01001‬‬ ‫‪20‬‬

‫‪DS‬‬ ‫‪0200‬‬ ‫‪01002‬‬ ‫‪34‬‬ ‫‪DS‬‬ ‫‪0200‬‬ ‫‪01002‬‬ ‫‪34‬‬


‫‪01003‬‬ ‫‪12‬‬ ‫‪01003‬‬ ‫‪12‬‬
‫‪AX XX XX‬‬ ‫‪AX BE XX‬‬
‫‪01004‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬ ‫‪01004‬‬ ‫‪XX‬‬ ‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‬
‫‪BX‬‬ ‫‪1000‬‬ ‫…‬ ‫‪BX‬‬ ‫‪1000‬‬ ‫…‬

‫‪SI‬‬ ‫‪2000‬‬ ‫‪02000‬‬ ‫‪XX‬‬ ‫‪SI‬‬ ‫‪2000‬‬ ‫‪02000‬‬ ‫‪XX‬‬


‫‪02001‬‬ ‫‪XX‬‬ ‫‪02001‬‬ ‫‪XX‬‬

‫…‬ ‫…‬
‫‪06234‬‬ ‫‪BE‬‬ ‫ﻣﻌﺎﻣﻞ اﻟﻤﺼﺪر‬ ‫‪06234‬‬ ‫‪BE‬‬ ‫ﻣﻌﺎﻣﻞ اﻟﻤﺼﺪر‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 17 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﺣﯿﺚ ﻧﻼﺣﻆ أﻧﮫ ﺑﻌﺪ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ ﺗﺼﺒﺢ ﻣﺤﺘﻮﯾﺎت ‪ AH = BEh‬و اﻟﺘ ﻲ ﺗﻤﺜ ﻞ ﻣﺤﺘﻮﯾ ﺎت ﺣﺠ ﺮة اﻟ ﺬاﻛﺮة ذات‬
‫اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ‪. 06234h‬‬

‫ﺛﺎﻣﻨﺎً‪ :‬ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ ﺑﺎﻟﺴﻠﺴﻠﺔ‬


‫إن ﺗﻌﻠﯿﻤ ﺎت اﻟﺴﻠ ﺴﻠﺔ ﻓ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﺗﻌﻠﯿﻤ ﺎت اﻟﻤﻌ ﺎﻟﺞ ‪ 8086‬ﺗ ﺴﺘﻌﻤﻞ أوﺗﻮﻣﺎﺗﯿﻜﯿ ﺎً ﻣ ﺴﺠﻞ دﻟﯿ ﻞ اﻟﻤ ﺼﺪر و‬
‫ﻣﺴﺠﻞ دﻟﯿﻞ اﻟﮭ ﺪف ﻟﺘﻌﯿ ﯿﻦ اﻟﻌﻨ ﺎوﯾﻦ اﻟﻔﻌﺎﻟ ﺔ ﻟﻤﺘﺤ ﻮﻟﻲ اﻟﻤ ﺼﺪر و اﻟﮭ ﺪف‪ .‬ﻓﻤ ﺜﻼً ﺗﻌﻠﯿﻤ ﺔ ‪ MOVS‬ھ ﻲ ﺗﻌﻠﯿﻤ ﺔ‬
‫اﻟﻨﻘ ﻞ ﻟﻠﺴﻠ ﺴﻠﺔ‪ ،‬و ھ ﻲ ﺗ ﺴﺘﺨﺪم ‪ SI‬و اﻟﻤﻘﻄ ﻊ ‪ DS‬ﻣ ﻦ أﺟ ﻞ ﻣﺘﺤ ﻮل اﻟﻤ ﺼﺪر و ‪ DI‬و اﻟﻤﻘﻄ ﻊ ‪ ES‬ﻣ ﻦ أﺟ ﻞ‬
‫ﻣﺘﺤﻮل اﻟﮭﺪف‪ .‬و ﻧﻼﺣﻆ أﻧﮫ ﻻ ‪ SI‬و ﻻ ‪ DI‬ﺗﻈﮭﺮان ﻓﻲ ﺗﻌﻠﯿﻤﺔ اﻟﺴﻠﺴﻠﺔ‪.‬‬

‫ﺗﺎﺳﻌﺎً‪ :‬ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ ﺑﺎﻟﻨﺎﻓﺬة‬


‫ﯾ ﺴﺘﻌﻤﻞ ھ ﺬا اﻟﻨﻈ ﺎم ﻣ ﻊ ﺗﻌﻠﯿﻤ ﺎت اﻹدﺧ ﺎل و اﻹﺧ ﺮاج ﻟﻨﻮاﻓ ﺬ ‪ . I/O‬ﻣ ﻦ أﺟ ﻞ اﻟﻨﻮاﻓ ﺬ ﻓ ﻲ ﺣﯿﱠ ﺰ ﻋﻨﻮﻧ ﺔ ‪I/O‬‬
‫ﯾﺴﺘﺨﺪم ﻓﻘ ﻂ ﻧﻈ ﺎم اﻟﻌﻨﻮﻧ ﺔ اﻟﻤﺒﺎﺷ ﺮة و ﻧﻈ ﺎم اﻟﻌﻨﻮﻧ ﺔ ﻏﯿ ﺮ اﻟﻤﺒﺎﺷ ﺮة ﻻﺳ ﺘﻌﻤﺎل اﻟﻤ ﺴﺠﻞ ‪ . DX‬ﻓﻤ ﺜﻼً اﻟﻌﻨﻮﻧ ﺔ‬
‫اﻟﻤﺒﺎﺷﺮة ﻟﻨﺎﻓﺬة دﺧﻞ ﺗﻜﻮن ﻛﻤﺎ ﻓﻲ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‪:‬‬
‫]‪IN AL,15h  IN AL,[15h‬‬
‫ﺗﻌﻨﻲ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ إدﺧﺎل ﻣﻌﻄﯿﺎت ذات ﺑﺎﯾﺖ واﺣﺪ ﻣ ﻦ ﻧﺎﻓ ﺬة اﻟ ﺪﺧﻞ ذات اﻟﻌﻨ ﻮان ‪ 15h‬ﻣ ﻦ ﺣﯿ ﺰ ﻋﻨﻮﻧ ﺔ ‪I/O‬‬
‫إﻟﻰ اﻟﻤﺴﺠﻞ ‪.AL‬‬
‫ﻣﺜﺎل آﺧﺮ ﻋﻦ اﺳﺘﻌﻤﺎل اﻟﻌﻨﻮﻧﺔ ﻏﯿﺮ اﻟﻤﺒﺎﺷﺮة ﻟﻠﻨﺎﻓﺬة ﻣﻦ أﺟﻞ ﻣﺘﺤﻮل اﻟﻤﺼﺪر ھﻮ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ‪:‬‬
‫]‪IN AL,[DX‬‬
‫ھ ﺬا ﯾﻌﻨ ﻲ إدﺧ ﺎل ﻣﻌﻄﯿ ﺎت ذات ﺑﺎﯾ ﺖ واﺣ ﺪ ﻣ ﻦ ﻧﺎﻓ ﺬة اﻟ ﺪﺧﻞ اﻟﺘ ﻲ ﻋﻨﻮاﻧﮭ ﺎ ﯾﻜ ﻮن ﻣﺤ ﺪد ﺑﻮاﺳ ﻄﺔ ﻣ ﻀﻤﻮن‬
‫ﻣ ﺴﺠﻞ ‪ DX‬ﻓﻤ ﺜﻼً‪ :‬إذا ﻛ ﺎن ‪ DX = 1234h‬ﻓ ﺈن ﻣﺤﺘﻮﯾ ﺎت اﻟﻨﺎﻓ ﺬة ذات اﻟﻌﻨ ﻮان ‪ 1234h‬ﯾ ﺘﻢ ﺗﺤﻤﯿﻠﮭ ﺎ ﻓ ﻲ‬
‫اﻟﻤﺴﺠﻞ ‪.AL‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 18 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﺠﺰء اﻟﺜﺎﻧﻲ‬
‫ﺗﻌﻠﯿﻤﺎت اﻟﻤﻌﺎﻟﺞ ‪8086‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 19 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻣﻘﺪﻣﺔ ﻓﻲ ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ‬


‫ھﺬه اﻟﻠﻐﺔ ﻣﺰودة ﻟﻮﺻﻒ ﻛ ﻞ ﻣ ﻦ اﻟﻌﻤﻠﯿ ﺎت اﻷﺳﺎﺳ ﯿﺔ اﻟﺘ ﻲ ﯾﻤﻜ ﻦ إﻧﺠﺎزھ ﺎ ﺑﻮاﺳ ﻄﺔ اﻟﻤﻌ ﺎﻟﺞ اﻟﻤ ﺼﻐﺮ‪ ،‬ﺗُﻜﺘ ﺐ‬
‫ﺗﻌﻠﯿﻤ ﺎت ھ ﺬه اﻟﻠﻐ ﺔ ﺑﺎﺳ ﺘﻌﻤﺎل اﻟﺮﻣ ﻮز اﻟﮭﺠﺎﺋﯿ ﺔ أو ﻣ ﺎ ﯾُ ﺪﻋﻰ ‪ ALPHANUMERIC‬ﺑ ﺪﻻً ﻣ ﻦ اﻷﺻ ﻔﺎر و‬
‫اﻟﻮاﺣﺪات ﻓﻲ ﺷﯿﻔﺮة اﻵﻟﺔ ﻟﻠﻤﻌﺎﻟﺞ‪ .‬إن اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻜﺘﺎﺑﺔ اﻷﻣﺮ )اﻟﺘﻌﻠﯿﻤﺔ( ﻓﻲ ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ ھﻲ‪:‬‬
‫ﺗﻌﻠﯿﻖ ; ﺗﻌﻠﯿﻤﺔ ‪ :‬ﻻﻓﺘﺔ‬
‫ﻋﺎدة ﻓﺈن اﻟﺘﻌﻠﯿﻘﺎت أو اﻟﻤﻼﺣﻈﺎت اﻟﺘﻲ ﺗﺼﻒ اﻷواﻣﺮ ﺗﻮﺿﻊ ﻋﻠﻰ اﻟﻄﺮف اﻷﯾﻤﻦ‪ .‬و ھﺬا اﻟﻨﻮع ﻣﻦ اﻟﺘﻮﺛﯿ ﻖ‬
‫ﺑ ﯿﻦ اﻟﺘﻌﻠﯿﻤ ﺔ و اﻟﺘﻌﻠﯿ ﻖ ﯾﺠﻌ ﻞ ﻣ ﻦ اﻟ ﺴﮭﻞ ﻋﻠ ﻰ اﻟﻤﺒ ﺮﻣﺞ ﻛﺘﺎﺑ ﺔ و ﻗ ﺮاءة و ﺗ ﺼﺤﯿﺢ اﻟ ﺸﯿﻔﺮة‪ .‬و ﻧﻘ ﺼﺪ ﺑﻜﻠﻤ ﺔ‬
‫اﻟﺸﯿﻔﺮة أن اﻟﺒﺮﻧ ﺎﻣﺞ ﻣﻜﺘ ﻮب ﺑﻠﻐ ﺔ اﻵﻟ ﺔ ﻟﻠﻤﻌ ﺎﻟﺞ و اﻟ ﺬي ﯾُﻌ ﺮف ﺑ ﺸﯿﻔﺮة اﻟﮭ ﺪف ‪ object code‬أﻣ ﺎ اﻟﺒﺮﻧ ﺎﻣﺞ‬
‫اﻟﻤﻜﺘﻮب ﺑﻠﻐﺔ اﻷﺳﻤﺒﻠﻲ ﻓﯿﺪﻋﻰ ﺑﺸﯿﻔﺮة اﻟﻤﺼﺪر ‪ . source code‬ھﺬا و إن ﻛ ﻞ ﺗﻌﻠﯿﻤ ﺔ ﻓ ﻲ ﺑﺮﻧ ﺎﻣﺞ اﻟﻤ ﺼﺪر‬
‫ﺗﻄ ﺎﺑﻖ أﻣ ﺮاً واﺣ ﺪاً ﻓ ﻲ ﻟﻐ ﺔ اﻷﺳ ﻤﺒﻠﻲ ﺣﯿ ﺚ أن اﻷﻣ ﺮ ﯾﺠ ﺐ أن ﯾﺤ ﺪﱢد أي ﻋﻤﻠﯿ ﺔ ﺳ ﯿﺘﻢ ﺗﻨﻔﯿ ﺬھﺎ و ﻣ ﺎ ھ ﻲ‬
‫ﻣﺘﺤﻮﻻت اﻟﻤﻌﻄﯿﺎت اﻟﺘﻲ ﺳﺘُﻌﺎﻟﺞ‪ .‬ﻟﮭﺬا اﻟﺴﺒﺐ ﺗُﻘﺴﻢ اﻟﺘﻌﻠﯿﻤﺔ إﻟﻰ ﻗﺴﻤﯿﻦ ﻣﻨﻔ ﺼﻠﯿﻦ ‪ :‬رﻣ ﺰ اﻟﺘﻌﻠﯿﻤ ﺔ ‪opcode‬‬
‫‪ = operation code‬و اﻟﻤﺘﺤﻮﻻت ‪ . operands‬رﻣﺰ اﻟﻌﻤﻠﯿ ﺔ ھ ﻮ ﺟ ﺰء ﻣ ﻦ اﻟﺘﻌﻠﯿﻤ ﺔ و اﻟ ﺬي ﯾﺤ ﺪد اﻟﻌﻤﻠﯿ ﺔ‬
‫اﻟﺘﻲ ﺳﺘُﻨﻔﺬ ﻓﻤﺜﻼً ﻧﺬﻛﺮ ﺑﻌﺾ اﻟﻌﻤﻠﯿﺎت اﻟﻨﻤﻮذﺟﯿﺔ ﻛﺎﻟﺠﻤﻊ و اﻟﻄﺮح و اﻟﻨﻘﻞ‪.‬‬
‫ﻓﻲ ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ ﺗﺴﺘﺨﺪم اﻟﻜﻠﻤﺎت اﻟﻤﺨﺘﺰﻟ ﺔ ‪ mnemonic‬ﻣ ﻦ أﺟ ﻞ اﻟﺘﻌﻠﯿﻤ ﺎت ﻓﻤ ﺜﻼً ﺑﺎﻟﻨ ﺴﺒﺔ ﻟﻠﻤﻌ ﺎﻟﺞ ‪8086‬‬
‫ﻓﺎﻟﻜﻠﻤﺎت اﻟﻤﺨﺘﺰﻟﺔ ﻓﻲ ﻟﻐﺔ اﻷﺳ ﻤﺒﻠﻲ ﻟﻌﻤﻠﯿ ﺎت اﻟﺠﻤ ﻊ و اﻟﻄ ﺮح و اﻟﻨﻘ ﻞ ھ ﻲ ﻋﻠ ﻰ اﻟﺘﺮﺗﯿ ﺐ ‪ ADD‬و ‪ SUB‬و‬
‫‪ . MOV‬أﻣﺎ اﻟﻤﺘﺤﻮﻻت ﻓﺘﺤﺪد اﻟﻤﻌﻄﯿﺎت اﻟﺘﻲ ﺳﺘُﻌﺎﻟﺞ ﻣﻦ ﻗِﺒ ﻞ اﻟﻤﻌ ﺎﻟﺞ ﺑﻮاﺳ ﻄﺔ رﻣ ﺰ اﻟﻌﻤﻠﯿ ﺔ ﻟﻠﺘﻌﻠﯿﻤ ﺔ ﻓﻤ ﺜﻼً‬
‫ﻓﻲ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﻲ ﺗﻀﯿﻒ ﻣﺤﺘﻮﯾﺎت ﻣ ﺴﺠﻞ اﻟﻘﺎﻋ ﺪة إﻟ ﻰ ﻣﺤﺘﻮﯾ ﺎت اﻟﻤ ﺮاﻛﻢ ﻓ ﺈن ‪ BX‬و ‪ AX‬ھ ﻲ اﻟﻤﺘﺤ ﻮﻻت و‬
‫ﺗُﻜﺘﺐ اﻟﺘﻌﻠﯿﻤﺔ ﻋﻠ ﻰ اﻟ ﺸﻜﻞ اﻟﺘ ﺎﻟﻲ ‪ ADD AX,BX‬ﻓﻔ ﻲ ھ ﺬا اﻟﻤﺜ ﺎل ﺗُ ﻀﺎف ﻣﺤﺘﻮﯾ ﺎت ‪ BX‬إﻟ ﻰ ‪ AX‬و ﯾﻮﺿ ﻊ‬
‫ﻧﺎﺗﺞ اﻟﺠﻤﻊ ﻓﻲ ‪ AX‬و ﻟﺬﻟﻚ ﯾُﻌﺘَﺒﺮ ‪ BX‬ﻣﺘﺤﻮل اﻟﻤﺼﺪر و ‪ AX‬ﻣﺘﺤﻮل اﻟﮭﺪف‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 20 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻃﺎﻗﻢ ﺗﻌﻠﯿﻤﺎت اﻟﻤﻌﺎﻟﺞ ‪8086‬‬


‫ﯾُ ﺰود اﻟﻤﻌ ﺎﻟﺞ ‪ 8086‬ﺑﻤﺠﻤﻮﻋ ﺔ ﺗﻌﻠﯿﻤ ﺎت ﻣﺆﻟﻔ ﺔ ﻣ ﻦ ‪ 117‬ﺗﻌﻠﯿﻤ ﺔ أﺳﺎﺳ ﯿﺔ و ﻛ ﺬﻟﻚ إن اﻟﻤﺠ ﺎل اﻟﻮاﺳ ﻊ‬
‫ﻟﻠﻤﺘﺤﻮﻻت و أﻧﻈﻤﺔ اﻟﻌﻨﻮﻧﺔ اﻟﻤﺴﻤﻮﺣﺔ ﻟﻼﺳﺘﻌﻤﺎل ﻣﻊ ھﺬه اﻟﺘﻌﻠﯿﻤﺎت ﯾﻮﺳﻊ ﻣﺠﻤﻮﻋﺔ اﻟﺘﻌﻠﯿﻤ ﺎت إﻟ ﻰ ﺗﻌﻠﯿﻤ ﺎت‬
‫أﻛﺜﺮ‪ ،‬ﻓﻤﺜﻼً ﺗﻌﻠﯿﻤﺔ ‪ Mov‬اﻷﺳﺎﺳﯿﺔ ﺗﻤﺘﺪ إﻟﻰ ‪ 28‬ﺗﻌﻠﯿﻤﺔ ﻣﺨﺘﻠﻔﺔ و ﻗﺎﺑﻠﺔ ﻟﻠﺘﻨﻔﯿﺬ ﻋﻠﻰ ﻣﺴﺘﻮى ﻟﻐﺔ اﻵﻟﺔ‪.‬‬
‫أوﻻً ‪ -‬ﺗﻌﻠﯿﻤﺎت ﻧﻘﻞ اﻟﻤﻌﻄﯿﺎت‬
‫ﯾﻤﻠﻚ اﻟﻤﻌ ﺎﻟﺞ ﻣﺠﻤﻮﻋ ﺔ ﺗﻌﻠﯿﻤ ﺎت وﻇﯿﻔﺘﮭ ﺎ ﻧﻘ ﻞ اﻟﻤﻌﻄﯿ ﺎت و ذﻟ ﻚ إﻣ ﺎ ﺑ ﯿﻦ ﻣ ﺴﺠﻼت اﻟﻤﻌ ﺎﻟﺞ اﻟﺪاﺧﻠﯿ ﺔ أو ﺑ ﯿﻦ‬
‫ﻣﺴﺠﻞ داﺧﻠﻲ و ﺣﺠﺮة ﺗﺨﺰﯾﻦ ﻓﻲ اﻟﺬاﻛﺮة و ھﻲ‪:‬‬
‫‪ (1‬ﺗﻌﻠﯿﻤﺔ ‪Mov‬‬
‫ﺗ ﺴﺘﺨﺪم ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺔ ﻟﻨﻘ ﻞ ﺑﺎﯾ ﺖ أو ﻛﻠﻤ ﺔ ﻣﻌﻄﯿ ﺎت ﻣ ﻦ ﻣﺘﺤ ﻮل اﻟﻤ ﺼﺪر إﻟ ﻰ ﻣﺘﺤ ﻮل اﻟﮭ ﺪف و ﻟﮭ ﺎ اﻟ ﺸﻜﻞ‬
‫اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫‪MOV‬‬ ‫ﻧﻘﻞ‬ ‫‪MOV D,S‬‬ ‫‪S→D‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫إن ‪ S,D‬ﻟﮭﺬه اﻟﺘﻌﻠﯿﻤﺔ ﯾﻤﻜﻦ أن ﺗﻜﻮن ﻣﺴﺠﻼت داﺧﻠﯿﺔ أو ﺣﺠﺮات ﺗﺨﺰﯾﻦ ﻓﻲ اﻟ ﺬاﻛﺮة و ﯾﺒ ﯿﻦ اﻟﺠ ﺪول اﻟﺘ ﺎﻟﻲ‬
‫ﻣﺨﺘﻠﻒ أﻧﻮاع ﻣﺘﺤﻮﻻت اﻟﻤﺼﺪر و اﻟﮭﺪف ﻣﻊ ﻣﺜﺎل ﻟﻜﻞ ﻣﻨﮭﺎ ‪:‬‬
‫اﻟﮭﺪف ‪Destination‬‬ ‫اﻟﻤﺼﺪر ‪Source‬‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺮﻣﺰ‬
‫‪Mem‬‬ ‫‪Acc‬‬ ‫اﻟﻤﺮاﻛﻢ‬ ‫‪Acc‬‬
‫‪Acc‬‬ ‫‪Mem‬‬ ‫ﺣﺠﺮة ذاﻛﺮة‬ ‫‪Mem‬‬
‫‪Reg‬‬ ‫‪Reg‬‬ ‫ﻣﺴﺠﻞ‬ ‫‪Reg‬‬
‫‪Reg‬‬ ‫‪Mem‬‬ ‫ﻣﺘﺤﻮل ﻓﻮري‬ ‫‪Imm‬‬
‫‪Mem‬‬ ‫‪Reg‬‬ ‫ﻣﺘﺤﻮل ﻣﻘﻄﻊ‬ ‫‪Seg-reg‬‬
‫‪Reg‬‬ ‫‪Imm‬‬ ‫ﻣﺴﺠﻞ ذو ‪ 16‬ﺑﺖ‬ ‫‪Reg16‬‬
‫‪Mem‬‬ ‫‪Imm‬‬ ‫ﺣﺠﺮﺗﻲ ذاﻛﺮة‬ ‫‪Mem16‬‬
‫‪Seg-reg‬‬ ‫‪Reg16‬‬
‫‪Seg-reg‬‬ ‫‪Mem16‬‬
‫‪Reg16‬‬ ‫‪Seg-reg‬‬
‫‪Mem16‬‬ ‫‪Seg-reg‬‬

‫اﻟﺤﺎﻻت اﻟﻤﺴﺘﺜﻨﺎة ﻣﻦ ﺗﻌﻠﯿﻤﺔ ‪MOV‬‬


‫‪-1‬ﻻ ﺗﺴﺘﻄﯿﻊ ﺗﻌﻠﯿﻤﺔ ‪ MOV‬أن ﺗﻨﻘﻞ اﻟﻤﻌﻄﯿ ﺎت ﺑ ﺸﻜﻞ ﻣﺒﺎﺷ ﺮ ﺑ ﯿﻦ ﺣﺠﺮﺗ ﻲ ذاﻛ ﺮة ﻟ ﺬﻟﻚ ﻻ ﻧ ﺮى ﻓ ﻲ اﻟﺠ ﺪول‬
‫اﻟﻤﺠ ﺎور اﻟﺤﺎﻟ ﺔ اﻟﺘﺎﻟﯿ ﺔ ‪ Mem → Mem :‬و ﻟﺤ ﻞ ھ ﺬه اﻟﻤ ﺸﻜﻠﺔ ﻓ ﺈن اﻟﻤﻌﻄﯿ ﺎت اﻟﻤﺮﻏ ﻮب ﺑﻨﻘﻠﮭ ﺎ ﯾﺠ ﺐ ﻧﻘﻠﮭ ﺎ‬
‫أوﻻً ﻓﻲ ﻣﺴﺠﻞ داﺧﻠﻲ ﺑﻮاﺳﻄﺔ ﺗﻌﻠﯿﻤﺔ ‪ ، MOV‬و ﻣﻦ ﺛﻢ ﺗﻨﻘ ﻞ ﻣﺤﺘﻮﯾ ﺎت ھ ﺬا اﻟﻤ ﺴﺠﻞ إﻟ ﻰ ﺣﺠ ﺮة ﺟﺪﯾ ﺪة ﻓ ﻲ‬
‫اﻟﺬاﻛﺮة ﺑﻮاﺳﻄﺔ ﺗﻌﻠﯿﻤﺔ ‪ MOV‬أﺧﺮى‪.‬‬
‫‪-2‬ﻻ ﯾﻤﻜ ﻦ وﺿ ﻊ ﻗﯿﻤ ﺔ ﻓﻮرﯾ ﺔ ﻓ ﻲ ﻣ ﺴﺠﻞ ﻣﻘﻄ ﻊ ﻣﺒﺎﺷ ﺮة‪ .‬أي أن اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺘﺎﻟﯿ ﺔ ﻏﯿ ﺮ ﻣ ﺴﻤﻮح ﺑﮭ ﺎ ‪MOV‬‬
‫‪ DS,1000‬و ﻟﺤﻞ ھﺬا اﻟﻤﺸﻜﻠﺔ ﻧﺴﺘﺨﺪم اﻟﺘﻌﻠﯿﻤﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ ‪:‬‬
‫‪MOV AX,1000‬‬
‫‪MOV DS,AX‬‬
‫‪-3‬ﻻ ﯾﻤﻜﻦ ﻧﻘﻞ ﻣﺤﺘﻮﯾﺎت أﺣﺪ ﻣﺴﺠﻼت اﻟﻤﻘﺎﻃﻊ إﻟﻰ ﻣﺴـﺠﻞ ﻣﻘﻄﻊ آﺧﺮ ﻣﺒﺎﺷﺮة‪ ،‬أي أن اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺘﺎﻟﯿ ﺔ ﻏﯿ ﺮ‬
‫ﻣﺴﻤﻮح ﺑﮭﺎ ‪ MOV DS,ES‬و ﻟﺤﻞ ھﺬه اﻟﻤﺸﻜﻠﺔ ﻧﻘﻮم ﺑـ‬
‫‪MOV AX,ES‬‬
‫‪MOV DS,AX‬‬
‫ﻣﺜﺎل ﻋﺎم ‪ MOV AL,[SI] :‬ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﺗﻌﻨ ﻲ ﻧﻘ ﻞ ﻣﺤﺘﻮﯾ ﺎت ﺣﺠ ﺮة اﻟ ﺬاﻛﺮة اﻟﻤ ﺸﺎر إﻟﯿﮭ ﺎ ﺑﻮاﺳ ﻄﺔ اﻟﻤ ﺴﺠﻞ‬
‫‪ SI‬إﻟﻰ اﻟﻤﺴﺠﻞ ‪ AL‬و إن ﻧﻈﺎم اﻟﻌﻨﻮﻧﺔ ﻓﻲ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ھﻮ ﻋﻨﻮﻧﺔ ﻏﯿﺮ ﻣﺒﺎﺷﺮة ﺑﺎﻟﻤﺴﺠﻞ و ﻣﺘﺤ ﻮل اﻟﻤ ﺼﺪر‬
‫ﻋﻨﻮاﻧﮫ اﻟﻔﯿﺰﯾﺎﺋﻲ ھﻮ ‪ PA = DS x 10h + SI‬أﻣﺎ ﻣﺘﺤﻮل اﻟﮭﺪف ﻓﮭﻮ ‪. AL‬‬
‫‪ (2‬ﺗﻌﻠﯿﻤﺔ اﻟﺘﺒﺪﯾﻞ ‪XCHG‬‬
‫ﺗُﺴﺘﺨﺪم ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻻﺳﺘﺒﺪال ﻣﺘﺤﻮل اﻟﻤﺼﺪر ﺑﻤﺘﺤﻮل اﻟﮭﺪف و ﻻﺳﺘﺒﺪال ﻣﺘﺤﻮل اﻟﮭﺪف ﺑﻤﺘﺤﻮل اﻟﻤﺼﺪر‪.‬‬
‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 21 -‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬


‫‪S→D‬‬
‫‪XCHG‬‬ ‫ﺗﺒﺪﯾﻞ‬ ‫‪XCHG D,S‬‬ ‫‪D→S‬‬
‫ﻻ ﯾﻮﺟﺪ‬

‫اﻟﮭﺪف ‪D‬‬ ‫اﻟﻤﺼﺪر ‪S‬‬ ‫و ﯾﺒ ﯿﻦ اﻟﺠ ﺪول اﻟﺘ ﺎﻟﻲ ﻣﺨﺘﻠ ﻒ أﻧ ﻮاع ﻣﺘﺤ ﻮﻻت اﻟﻤ ﺼﺪر و‬
‫‪Acc‬‬ ‫‪Reg16‬‬ ‫اﻟﮭﺪف ﻟﺘﻌﻠﯿﻤﺔ ‪. XCHG‬‬
‫‪Mem‬‬ ‫‪Reg‬‬ ‫ﻣﺜﺎل‪:‬‬
‫‪Reg‬‬ ‫‪Reg‬‬
‫‪XCHG AX,BX‬‬
‫ﻓﻲ ھﺬا اﻟﻤﺜﺎل ﯾﺘﻢ اﻟﺘﺒﺪﯾﻞ ﺑﯿﻦ ﻣﺤﺘﻮﯾﺎت ‪ AX‬و ‪.BX‬‬
‫‪XCHG [SUM],BX‬‬
‫ﯾﺘﻢ اﻟﺘﺒﺪﯾﻞ ﺑﯿﻦ ﻣﺤﺘﻮى اﻟﺤﺠﺮة ‪ SUM‬ﻓﻲ اﻟﺬاﻛﺮة و ﺑﯿﻦ اﻟﻤﺴﺠﻞ ‪. BX‬‬
‫‪ (3‬ﺗﻌﻠﯿﻤﺔ ‪XLAT‬‬
‫ﺗﺘﻌﺎﻣﻞ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻣﻊ ‪ AL‬ﻓﻘﻂ ‪ ،‬إن ﺗﻌﺎﻣﻞ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﯾﺘﻢ ﻣﻊ اﻟﺠﺪاول اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ اﻟ ﺬاﻛﺮة ﻓﻠ ﻮ وﺿ ﻌﻨﺎ‬
‫ﻓ ﻲ ‪ BX‬إزاﺣ ﺔ ﺑﺪاﯾ ﺔ اﻟﺠ ﺪول ﻧ ﺴﺒﺔ إﻟ ﻰ ﻣﻘﻄ ﻊ اﻟﻤﻌﻄﯿ ﺎت ‪ DS‬و وﺿ ﻌﻨﺎ ﻓ ﻲ ‪ AL‬إزاﺣ ﺔ اﻟﻌﻨ ﺼﺮ ﻧ ﺴﺒﮫ إﻟ ﻰ‬
‫ﺑﺪاﯾﺔ اﻟﺠﺪول‪ ،‬ﻋﻨﺪھﺎ ﺗﻘﻮم ﺗﻌﻠﯿﻤ ﺔ ‪ XLAT‬ﺑﺠﻤ ﻊ ﻣﺤﺘﻮﯾ ﺎت اﻟﻤ ﺴﺠﻞ ‪ AL‬ﻣ ﻊ ﻣﺤﺘﻮﯾ ﺎت اﻟﻤ ﺴﺠﻞ ‪ BX‬و ﺗﻌﺘﺒ ﺮ‬
‫اﻟﻨﺎﺗﺞ إزاﺣﺔ ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت‪ ،‬ﺛﻢ ﺗﻘﻮم ﺑﻮﺿﻊ ﻗﯿﻤﺔ اﻟﺤﺠﺮة اﻟﻤﻌﻄﻰ إزاﺣﺘﮭﺎ ﻓﻲ ‪. AL‬‬
‫اﻷﻋﻼم‬
‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺘﺄﺛﺮة‬
‫‪( DS x 10h ) +‬‬
‫‪XLAT‬‬ ‫ﺗﺮﺟﻤﺔ‬ ‫ﺟﺪول اﻟﻤﺼﺪر ‪XLAT‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫‪[AL+BX] → AL‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﻔﺮض أﻧﮫ ﻟﺪﯾﻨﺎ ﺟﺪول ﻓ ﻲ اﻟ ﺬاﻛﺮة ﯾﺤﺘ ﻮي ﻋﻠ ﻰ ﻣﺮﺑﻌ ﺎت اﻷﻋ ﺪاد ﻣ ﻦ ‪ 1‬إﻟ ﻰ ‪ 9‬أي أﻧ ﮫ ﻓ ﻲ أول ﺣﺠ ﺮة ﻣ ﻦ‬
‫اﻟﺠﺪول ﯾﻮﺿﻊ ﻣﺮﺑﻊ اﻟﻌﺪد ‪ 1‬و ﻓ ﻲ اﻟﺤﺠ ﺮة اﻟﺜﺎﻧﯿ ﺔ ﯾﻮﺿ ﻊ ﻣﺮﺑ ﻊ اﻟﻌ ﺪد ‪) 2‬أي ‪ ، (4‬و‬
‫‪DS‬‬ ‫ھﻜﺬا … وﻣﻦ ھﺬا ﻧﺮى أن اﻟﺠﺪول ﻃﻮﻟﮫ ﺗﺴﻊ ﺑﺎﯾﺘﺎت إزاﺣﺔ ﺑﺪاﯾﺘﮫ ﻋﻦ ﺑﺪاﯾ ﺔ‬
‫ﻣﻘﻄﻊ اﻟـ ‪ DS‬ھﻲ ‪. 100‬‬
‫‪100‬‬ ‫ﻋﻨﺪﻣﺎ ﯾﻄﻠﺐ ﻣﻨﺎ اﻟﺤﺼﻮل ﻋﻠ ﻰ ﻣﺮﺑ ﻊ أﺣ ﺪ ھ ﺬه اﻷﻋ ﺪاد و ﻟ ﯿﻜﻦ اﻟﻌ ﺪد ‪ 4‬أي‬
‫‪1‬‬
‫‪4‬‬
‫أن اﻟﻤﻄﻠﻮب ھﻮ أن ﺗﺼﺒﺢ ﻗﯿﻤﺔ ‪ AL = 16‬ﻟﺬﻟﻚ ﻧﻘﻮم ﺑﻤﺎ ﯾﻠﻲ‪:‬‬
‫‪9‬‬ ‫‪ (1‬ﻧﻀﻊ ‪ AL = 3‬و ‪. BX = 100‬‬
‫‪16‬‬ ‫‪ (2‬ﻧﻌﻄﻲ اﻟﺘﻌﻠﯿﻤﺔ ‪. XLAT‬‬
‫و ﺑﻌﺪ ﺗﻨﻔﯿﺬھﺎ ﯾﺼﺒﺢ ‪ AL = 16‬و ھﻮ اﻟﻤﻄﻠﻮب‪.‬‬

‫‪109‬‬ ‫‪ (4‬اﻟﺘﻌﻠﯿﻤﺎت ‪LEA, LES, LDS‬‬


‫ﺗﺴﺘﻌﻤﻞ ھﺬه اﻟﺘﻌﻠﯿﻤﺎت ﻣﻦ أﺟ ﻞ ﻋﻤﻠﯿ ﺔ ﻧﻘ ﻞ اﻟﻤﻌﻄﯿ ﺎت ﻟﺘﺤﻤﯿ ﻞ ﻣ ﺴﺠﻞ ﻣﻘﻄ ﻊ‬
‫أو ﻣﺴﺠﻞ أﻏﺮاض ﻋﺎﻣﺔ ﺑﻌﻨﻮان ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﻣﻦ اﻟﺬاﻛﺮة‪ .‬اﻟﺘﻌﻠﯿﻤﺔ ‪ LEA‬وﻇﯿﻔﺘﮭﺎ ھﻲ ﺗﺤﻤﯿﻞ ﻣﺴﺠﻞ ﺑﻌﻨ ﻮان‬
‫ﻓﻌﺎل أﻣﺎ ‪ LDS‬ﻓﮭﻲ ﻟﺘﺤﻤﯿﻞ ﻣﺴﺠﻞ ﻣﺎ و ﻣﺴﺠﻞ ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت ‪ DS‬و ﺗﻌﻠﯿﻤﺔ ‪ LES‬وﻇﯿﻔﺘﮭﺎ ﺗﺤﻤﯿﻞ ﻣ ﺴﺠﻞ‬
‫ﻣﺎ و ﻣﺴﺠﻞ ﻣﻘﻄﻊ اﻟﻤﻌﻄﯿﺎت اﻹﺿﺎﻓﻲ ‪ . ES‬وھﺬه اﻟﺘﻌﻠﯿﻤﺎت ﻣﻮﺻﻮﻓﺔ ﻛﻤﺎ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻷﻋﻼم‬
‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺘﺄﺛﺮة‬
‫‪LEA‬‬ ‫ﺗﺤﻤﯿﻞ ﻋﻨﻮان ﻓﻌﺎل‬ ‫‪LEA reg16,mem16‬‬ ‫‪Mem16 → reg16‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ﺗﺤﻤﯿﻞ ﻣﺴﺠﻞ و‬ ‫‪Mem32 → reg16‬‬
‫‪LDS‬‬ ‫‪LDS reg16,mem32‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫اﻟﻤﺴﺠﻞ ‪DS‬‬ ‫‪Mem32+2 → DS‬‬
‫ﺗﺤﻤﯿﻞ ﻣﺴﺠﻞ و‬ ‫‪Mem32 → reg16‬‬
‫‪LES‬‬ ‫‪LES reg16,mem32‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫اﻟﻤﺴﺠﻞ ‪ES‬‬ ‫‪Mem32+2 → ES‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 22 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫أﻣﺜﻠﺔ‪:‬‬

‫‪100‬‬ ‫‪00‬‬
‫‪LEA SI,[100] => SI = 1000‬‬
‫‪10‬‬

‫‪LDS SI,[200] => SI = 553F‬‬


‫‪DS = 1000‬‬ ‫‪200‬‬ ‫‪3F‬‬
‫‪55‬‬
‫‪LES DI,[300] => DI = 4030‬‬ ‫‪00‬‬
‫‪ES = 3000‬‬ ‫‪10‬‬

‫‪300‬‬ ‫‪30‬‬
‫‪40‬‬
‫‪00‬‬
‫‪30‬‬

‫ﺛﺎﻧﯿﺎً ‪ -‬اﻟﺘﻌﻠﯿﻤﺎت اﻟﺮﯾﺎﺿﯿﺔ‬


‫و ھﻲ ﺗﺸﻤﻞ ﺗﻌﻠﯿﻤﺎت ﻣﻦ أﺟﻞ ﻋﻤﻠﯿﺎت اﻟﺠﻤﻊ‪ ،‬اﻟﻄﺮح‪ ،‬اﻟﻀﺮب و اﻟﻘﺴﻤﺔ‪.‬‬
‫‪ (1‬ﺗﻌﻠﯿﻤﺎت اﻟﺠﻤﻊ‬
‫و ھﻲ ﻣﻮﺻﻮﻓﺔ ﺑﺎﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬

‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬


‫‪S+D→D‬‬
‫‪ADD‬‬ ‫ﺟﻤﻊ‬ ‫‪ADD D,S‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫‪Carry → CF‬‬
‫ﺟﻤﻊ ﻣﻊ أﺧﺬ اﻻﻧﺰﯾﺎح‬ ‫‪S + D + CF → D‬‬
‫‪ADC‬‬ ‫‪ADC D,S‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫ﺑﻌﯿﻦ اﻻﻋﺘﺒﺎر‬ ‫‪Carry → CF‬‬
‫‪INC‬‬ ‫اﻟﺰﯾﺎدة ﺑﻤﻘﺪار واﺣﺪ‬ ‫‪INC D‬‬ ‫‪D+1 → D‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫ﺗﺼﺤﯿﺢ ﻧﺎﺗﺞ ﺟﻤﻊ‬
‫‪AAA‬‬ ‫‪AAA‬‬ ‫ﺳﯿﺘﻢ ﺷﺮﺣﮭﺎ ﻻﺣﻘﺎً‬ ‫‪AF,CF‬‬
‫ﻋﺪدﯾﻦ ﺑﺸﯿﻔﺮة اﻵﺳﻜﻲ‬
‫ﺗﺼﺤﯿﺢ ﻧﺎﺗﺞ ﺟﻤﻊ‬ ‫ﻛﻞ أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫‪DAA‬‬ ‫‪DAA‬‬ ‫ﺳﯿﺘﻢ ﺷﺮﺣﮭﺎ ﻻﺣﻘﺎً‬
‫ﻋﺪدﯾﻦ ﺑﺸﯿﻔﺮة ‪BCD‬‬ ‫ﻣﺎﻋﺪا ‪OF‬‬

‫ﺗﻌﻠﯿﻤﺘﻲ ‪ ADD‬و ‪ADC‬‬


‫اﻟﮭﺪف ‪D‬‬ ‫اﻟﻤﺼﺪر ‪S‬‬
‫‪Reg‬‬ ‫‪Reg‬‬
‫‪ADD,‬‬ ‫إن اﻟﻤﺘﺤ ﻮﻻت اﻟﻤ ﺴﻤﻮﺣﺔ ﻓ ﻲ ﺗﻌﻠﯿﻤ ﺎت اﻟﺠﻤ ﻊ‬
‫‪Reg‬‬ ‫‪Mem‬‬ ‫‪ ADC‬ﻣﺒﯿﻨﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫‪Mem‬‬ ‫‪Reg‬‬
‫‪Reg‬‬ ‫‪Imm‬‬
‫‪Mem‬‬ ‫‪Imm‬‬
‫‪Acc‬‬ ‫‪Imm‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 23 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫و ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺘﺤﻮﻻت اﻟﻤﺴﻤﻮﺣﺔ ﻓﻲ ﺗﻌﻠﯿﻤﺔ ‪ INC‬ﻓﮭﻲ ‪:‬‬


‫‪ Reg8‬او ‪ Reg16‬او ‪Mem‬‬

‫ﻣﺜﺎل‪ :‬ﺑﻔ ﺮض ‪ AX = 4F3Dh‬و ‪ BX = FD81h‬و ‪ CF = 1‬ﻓﻤ ﺎ ھ ﻲ ﻧﺘﯿﺠ ﺔ ﺗﻨﻔﯿ ﺬ اﻟﺘﻌﻠﯿﻤ ﺔ ‪ ADC AX,BX‬؟‬
‫ﻣﺒﯿﻨﺎً ﺣﺎﻟﺔ أﻋﻼم اﻟﺤﺎﻟﺔ ﺑﻌﺪ ﺗﻨﻔﯿﺬ ﻋﻤﻠﯿﺔ اﻟﺠﻤﻊ ھﺬه ‪.‬‬
‫اﻟﺤﻞ‪ :‬ﺳﻨﻜﺘﺐ اﻟﺸﯿﻔﺮة اﻟﺜﻨﺎﺋﯿﺔ ﻟﻠﻤﺘﺤﻮﻻت ﻣﻦ أﺟﻞ ﺗﻮﺿﯿﺢ ﺣﺎﻟﺔ اﻷﻋﻼم‬
‫‪1111 111‬‬ ‫‪1‬‬
‫‪AX = 0100 1111 0011 1101 b‬‬
‫‪BX = 1111 1101 1000 0001 b‬‬
‫= ‪CF‬‬ ‫‪0001 b‬‬ ‫‪+‬‬
‫‪1‬‬ ‫‪0100 1100 1011 1111 b‬‬
‫‪CF‬‬
‫و اﻵن أﻋﻼم اﻟﺤﺎﻟﺔ ھﻲ‪:‬‬
‫‪ PF = 0‬ﻷن ﻋﺪد اﻟﻮاﺣﺪات ﻓﺮدي ﻓﻲ اﻟﺒﺎﯾﺖ اﻷول ﻣﻦ ﻧﺎﺗﺞ اﻟﺠﻤﻊ‬
‫‪ AF = 0‬ﻷﻧﮫ ﻻ ﯾﻮﺟﺪ اﻧﺰﯾﺎح ﻣﻦ اﻟﺨﺎﻧﺔ ‪ 3‬إﻟﻰ اﻟﺨﺎﻧﺔ ‪ 4‬ﻓﻲ اﻟﺒﺎﯾﺖ اﻷول ﻣﻦ ﻧ ﺎﺗﺞ اﻟﺠﻤ ﻊ ) ﺣﯿ ﺚ ﯾ ﺘﻢ ﺗ ﺮﻗﯿﻢ‬
‫اﻟﺨﺎﻧﺎت ﺑﺪءاً ﻣﻦ اﻟﺼﻔﺮ (‬
‫‪ SF = 0‬و ھﻲ آﺧﺮ ﺧﺎﻧﺔ ﻣﻦ ﻧﺘﯿﺠﺔ اﻟﺠﻤﻊ ) اﻟﻨﺎﺗﺞ ﻣﻮﺟﺐ (‬
‫‪ CF = 1‬ﺑﺴﺒﺐ وﺟﻮد اﻧﺰﯾﺎح ﺧﺎرﺟﻲ‬
‫‪ OF = 0‬ﻷﻧﮫ ﯾﻮﺟﺪ إﻧﺰﯾﺎح داﺧﻠﻲ و إﻧﺰﯾﺎح ﺧﺎرﺟﻲ‬
‫ﻣﻼﺣﻈﺔ‪ :‬اﻻﻧﺰﯾﺎح اﻟﺪاﺧﻠﻲ ھﻮ اﻟﺪاﺧﻞ إﻟﻰ اﻟﺨﺎﻧﺔ ذات اﻷھﻤﯿﺔ اﻟﻌﻈﻤﻰ ‪MSB‬‬
‫ﻣﻼﺣﻈﺔ‪ OF = 1 :‬إذا وﺟﺪ اﻧﺰﯾﺎح داﺧﻠﻲ ﻓﻘﻂ أو وﺟﺪ اﻧﺰﯾﺎح ﺧﺎرﺟﻲ ﻓﻘﻂ‬
‫ﺗﻌﻠﯿﻤﺔ اﻟﺘﺼﺤﯿﺢ ‪DAA‬‬
‫ﺗﺴﺘﺨﺪم ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻹﻧﺠﺎز ﻋﻤﻠﯿ ﺔ ﺗ ﺼﺤﯿﺢ ﻟﻨ ﺎﺗﺞ ﺟﻤ ﻊ ﻋ ﺪدﯾﻦ ﺑ ﺸﯿﻔﺮة ‪ ) BCD‬ھ ﺬا و ﯾﺠ ﺐ أن ﯾﻜ ﻮن ﻧ ﺎﺗﺞ‬
‫اﻟﺠﻤﻊ ﺣﺘﻤﺎً ﻓﻲ ‪ AL‬أي ﻓﻲ اﻟﻨﺼﻒ اﻟﺴﻔﻠﻲ ﻣﻦ اﻟﻤﺮاﻛﻢ ‪ ( AX‬و اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﯾﺒﯿﻦ اﻟﺤ ﺎﻻت اﻟﻤﻤﻜﻨ ﺔ ﻟﺠﻤ ﻊ‬
‫ﻋﺪدﯾﻦ ﺑﺸﯿﻔﺮة ‪: BCD‬‬
‫‪+‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬
‫‪0‬‬ ‫‪9‬‬
‫‪1‬‬ ‫‪9‬‬ ‫‪10‬‬
‫‪2‬‬ ‫‪9‬‬ ‫‪10‬‬
‫‪3‬‬ ‫‪9‬‬ ‫‪10‬‬
‫‪4‬‬ ‫‪9‬‬ ‫‪10‬‬
‫‪5‬‬ ‫‪9‬‬ ‫‪10‬‬
‫‪6‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪15‬‬
‫‪7‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪15‬‬ ‫‪16‬‬
‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪15‬‬ ‫‪16‬‬
‫‪9‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪15‬‬ ‫‪16‬‬ ‫‪18‬‬

‫اﻟﻤﻨﻄﻘﺔ اﻷوﻟﻰ أرﻗﺎﻣﮭﺎ ﻣﻦ ‪ 0‬إﻟﻰ ‪ 9‬و ﻓﯿﮭﺎ ﺗﻜﻮن ﻧﺘﯿﺠﺔ اﻟﺠﻤ ﻊ ﺻ ﺤﯿﺤﺔ و ﻻ ﺗﺤﺘ ﻮي ﻋﻠ ﻰ اﻧﺰﯾ ﺎح و ﻟﯿ ﺴﺖ‬
‫ﺑﺤﺎﺟﺔ إﻟﻰ ﺗﺼﺤﯿﺢ ﻣﺜﻼً ‪ 7+2=9‬و ھﻲ أرﻗﺎم واﻗﻌﺔ ﺿﻤﻦ ﻧﻄﺎق اﻟﻤﻨﻄﻘﺔ اﻷوﻟﻰ‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 24 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﻤﻨﻄﻘ ﺔ اﻟﺜﺎﻧﯿ ﺔ أرﻗﺎﻣﮭ ﺎ ﻣ ﻦ ‪ 10‬إﻟ ﻰ ‪ 15‬و ﻓﯿﮭ ﺎ ﺗﻜ ﻮن ﻧﺘﯿﺠ ﺔ اﻟﺠﻤ ﻊ ﻏﯿ ﺮ ﺻ ﺤﯿﺤﺔ و ﺑﺤﺎﺟ ﺔ إﻟ ﻰ ﺗ ﺼﺤﯿﺢ‬
‫ﺑﺈﺿﺎﻓﺔ اﻟﻌﺪد ‪ 6‬ﻓﻨﺤﺼﻞ ﻋﻠ ﻰ رﻗ ﻢ و ﺣﻤ ﻞ إﻟ ﻰ اﻟﻌ ﺪد اﻟﺜ ﺎﻧﻲ ﻓﻤ ﺜﻼً ‪ 9+5=E‬ﻓﺒﺈﺿ ﺎﻓﺔ ‪ 6‬إﻟ ﻰ اﻟﻌ ﺪد ‪ E‬ﯾﻜ ﻮن‬
‫اﻟﻨﺎﺗﺞ ‪ 6+E=14‬و ﺑﺬﻟﻚ ﺗﻜﻮن اﻟﻨﺘﯿﺠﺔ ﺻﺤﯿﺤﺔ‪.‬‬
‫اﻟﻤﻨﻄﻘﺔ اﻟﺜﺎﻟﺜﺔ أرﻗﺎﻣﮭﺎ ﻣﻦ ‪ 16‬و ﺣﺘﻰ ‪ 18‬و ﻓﯿﮭﺎ ﺗﻜﻮن ﻧﺘﯿﺠﺔ اﻟﺠﻤﻊ ﻏﯿﺮ ﺻﺤﯿﺤﺔ و ﺑﺤﺎﺟﺔ إﻟ ﻰ ﺗ ﺼﺤﯿﺢ و‬
‫ھﻨﺎ ﺗﺘﻜﻮن اﻟﻨﺘﯿﺠﺔ ﻣﻦ ﺣﺎﺻﻞ ﺟﻤﻊ ﻣﻊ اﻧﺰﯾﺎح‪.‬‬

‫ﺑﻤﺎ أن ﻧﺎﺗﺞ اﻟﺠﻤﻊ ﻣﻮﺟﻮد ﻓﻲ ‪ AL‬ﺣﯿﺚ ﻧﻤﺜﻞ ‪AL = Bit7 … Bit0‬‬


‫إن ﻗﺎﻋﺪة اﻟﺘﺼﺤﯿﺢ ﻓﻲ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ھﻲ ‪:‬‬
‫‪1) if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1‬‬
‫‪then AL = AL + 6 , AF = 1‬‬
‫‪2) if AL > 9Fh or CF = 1‬‬
‫‪then AL = AL + 60h , CF =1‬‬

‫ﻣﺜﺎل‪ :‬ﺑﻔﺮض أن ‪ AL = 28 BCD‬و ‪BL = 68 BCD‬‬


‫ﻣﺎ ھﻮ ﻧﺎﺗﺞ ﺗﻨﻔﯿﺬ ﻣﺎ ﯾﻠﻲ‪:‬‬
‫‪ADD AL,BL‬‬
‫‪DAA‬‬

‫اﻟﺤﻞ‪ :‬إن ﻧﺘﯿﺠﺔ ﺗﻨﻔﯿﺬ ھﺎﺗﯿﻦ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ ھﻲ‬


‫‪1‬‬
‫‪28 BCD = 0010‬‬ ‫‪1000 b‬‬
‫‪68 BCD = 0110 1000 b +‬‬ ‫ﺣﯿﺚ ‪ 0110‬ﺗﻤﺜﻞ اﻟﺮﻗﻢ ﺳﺘﺔ‬
‫‪1001 0000 → AL‬‬
‫‪CF = 0‬‬ ‫‪0110‬‬ ‫‪+‬‬
‫‪1001 0110 => AL = 96 BCD‬‬
‫‪AF = 1‬‬
‫ﺗﻌﻠﯿﻤﺔ ‪AAA‬‬
‫ﺗﺴﺘﺨﺪم ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻟﺘﺼﺤﯿﺢ ﻧﺎﺗﺞ ﺟﻤﻊ ﻋﺪدﯾﻦ ﺑﺸﯿﻔﺮة آﺳﻜﻲ ) و ھﻨﺎ أﯾ ﻀﺎً ﯾﺠ ﺐ أن ﯾﻜ ﻮن ﻧ ﺎﺗﺞ اﻟﺠﻤ ﻊ ﻓ ﻲ‬
‫اﻟﻤﺴﺠﻞ ‪ ( AL‬و ﻗﺎﻋﺪة اﻟﺘﺼﺤﯿﺢ ﻓﻲ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ھﻲ‪:‬‬
‫‪if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF =1‬‬
‫‪then AL = AL + 06‬‬
‫‪AL = AL and 0Fh‬‬
‫‪AH = AH + 1‬‬
‫‪AF = 1‬‬
‫‪CF = 1‬‬
‫‪Else AL = AL and 0Fh‬‬
‫‪AH = 00‬‬
‫ﻣﺜﺎل‪ :‬ﺑﻔﺮض أن ‪ AL =32h = 2 ASCII‬و ‪ BL = 34h = 4 ASCII‬ﻣﺎ ھﻮ ﻧﺎﺗﺞ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ‪:‬‬
‫‪ADD AL,BL‬‬
‫‪AAA‬‬

‫اﻟﺤﻞ‪ :‬إن ﻧﺎﺗﺞ ﺗﻨﻔﯿﺬ ھﺎﺗﯿﻦ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ ھﻮ ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬


‫‪AL = 0011 0010‬‬
‫‪BL = 0011 0100 +‬‬
‫‪0110 0110‬‬ ‫→‬ ‫‪AL = 66h‬‬
‫‪AL = 06h , AH = 00‬‬
‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 25 -‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫و ھﻨﺎ ‪ AF = 0‬ﺑﺴﺒﺐ ﻋﺪم وﺟﻮد اﻧﺰﯾﺎح ﻣﻦ اﻟﺨﺎﻧﺔ ‪ 3‬إﻟﻰ اﻟﺨﺎﻧﺔ ‪) 4‬ﺣﯿﺚ ﯾﺒﺪأ اﻟﺘﺮﻗﯿﻢ اﻋﺘﺒﺎراً ﻣﻦ اﻟﺼﻔﺮ (‬
‫‪ (2‬ﺗﻌﻠﯿﻤﺎت اﻟﻄﺮح‬
‫ھﻨﺎك ﻣﺠﻤﻮﻋﺔ واﺳﻌﺔ ﻣﻦ ﺗﻌﻠﯿﻤﺎت اﻟﻄﺮح ﻛﻤﺎ ھﻮ واﺿﺢ ﻣﻦ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫‪D-S→D‬‬
‫‪SUB‬‬ ‫ﻃﺮح‬ ‫‪SUB D,S‬‬
‫‪burrow → CF‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫اﻟﻄﺮح ﻣﻊ‬ ‫‪D - S - CF → D‬‬
‫‪SBB‬‬ ‫‪SBB D,S‬‬
‫‪Carry → CF‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫اﻻﺳﺘﻌﺎرة‬
‫اﻹﻧﻘﺎص ﺑﻤﻘﺪار‬
‫‪DEC‬‬ ‫‪DEC D‬‬ ‫‪D-1 → D‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫واﺣﺪ‬
‫‪0–D→D‬‬
‫‪NEG‬‬ ‫اﻟﻤﺘﻤﻢ اﻟﺜﻨﺎﺋﻲ‬ ‫‪NEG D‬‬
‫‪1 → CF‬‬
‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫ﺗﺼﺤﯿﺢ ﻧﺎﺗﺞ‬ ‫ﻛﻞ أﻋﻼم‬
‫‪DAS‬‬ ‫ﻃﺮح ﻋﺪدﯾﻦ‬ ‫‪DAS‬‬ ‫ﺳﯿﺘﻢ ﺷﺮﺣﮭﺎ ﻻﺣﻘﺎً‬ ‫اﻟﺤﺎﻟﺔ ﻋﺪا‬
‫ﺑﺸﯿﻔﺮة ‪BCD‬‬ ‫‪OF‬‬
‫ﺗﺼﺤﯿﺢ ﻧﺎﺗﺞ ﺟﻤﻊ‬
‫‪AAS‬‬ ‫ﻋﺪدﯾﻦ ﺑﺸﯿﻔﺮة‬ ‫‪AAS‬‬ ‫ﺳﯿﺘﻢ ﺷﺮﺣﮭﺎ ﻻﺣﻘﺎً‬ ‫‪AF, CF‬‬
‫اﻵﺳﻜﻲ‬
‫ﻣﻼﺣﻈﺔ‪ :‬إن اﻟﻤﺘﺤﻮﻻت اﻟﻤﺴﺘﺨﺪﻣﺔ ﻣﻦ أﺟﻞ ﺗﻌﻠﯿﻤﺘﻲ اﻟﻄﺮح ‪ SUB, SBB‬ھﻲ ﻧﻔﺴﮭﺎ اﻟﻤﺘﺤ ﻮﻻت اﻟﻤ ﺴﻤﻮﺣﺔ‬
‫ﻣﻦ أﺟﻞ ﺗﻌﻠﯿﻤﺘ ﻲ اﻟﺠﻤ ﻊ ‪ ADD,ADC‬أﻣ ﺎ ﺑﺎﻟﻨ ﺴﺒﺔ إﻟ ﻰ اﻟﻤﺘﺤ ﻮﻻت اﻟﻤ ﺴﺘﺨﺪﻣﺔ ﻣ ﻦ أﺟ ﻞ ﺗﻌﻠﯿﻤ ﺔ ‪ DEC‬ﻓﮭ ﻲ‬
‫ﻧﻔ ﺴﮭﺎ اﻟﻤﺘﺤ ﻮﻻت اﻟﻤ ﺴﻤﻮﺣﺔ ﻣ ﻦ أﺟ ﻞ ﺗﻌﻠﯿﻤ ﺔ ‪ INC‬و ﺑﺎﻟﻨ ﺴﺒﺔ ﻟﺘﻌﻠﯿﻤ ﺔ ‪ NEG‬ﻓ ﺎﻟﻤﺘﺤﻮﻻت اﻟﻤ ﺴﻤﻮﺣﺔ ھ ﻲ‬
‫‪. Reg, Reg16, Mem, Mem16‬‬
‫ﻣﺜ ﺎل‪ :‬ﺑﻔ ﺮض أن ‪ SI = 0018h‬و ‪ DS = 2F00h‬و اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ اﻟﻤﺘﻮﻟ ﺪ ﻋﻨﮭﻤ ﺎ ھ ﻮ ‪ 2F018h‬و‬
‫ﺑﻔﺮض ﻛﺎﻧﺖ ﻣﺤﺘﻮﯾﺎت اﻟﺤﺠﺮة اﻟﺘﻲ ﯾ ﺸﯿﺮ إﻟﯿﮭ ﺎ اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ ‪ ، [2F018] = 0400h‬ﻣ ﺎ ھ ﻮ ﻧ ﺎﺗﺞ ﺗﻨﻔﯿ ﺬ‬
‫اﻟﺘﻌﻠﯿﻤﺔ ‪. SUB [SI],03F8h‬‬
‫اﻟﺤﻞ‪:‬‬
‫ﺗﻘﻮم ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﺑﻄﺮح ﻣﺤﺘﻮﯾ ﺎت ﻣﺘﺤ ﻮل اﻟﻤ ﺼﺪر ) ﻣﺘﺤ ﻮل ﻓ ﻮري ھﻨ ﺎ ( ﻣ ﻦ ﻣﺤﺘﻮﯾ ﺎت ﻣﺘﺤ ﻮل اﻟﮭ ﺪف )‬
‫ﻣﺤﺘﻮﯾﺎت ﺣﺠﺮة ذاﻛﺮة ھﻨﺎ ( ﺣﯿ ﺚ أن ﺗﻌﻠﯿﻤ ﺔ اﻟﻄ ﺮح ﺗ ﺘﻢ ﺑﺈﯾﺠ ﺎد اﻟﻤ ﺘﻤﻢ اﻟﺜﻨ ﺎﺋﻲ ﻟﻤﺘﺤ ﻮل اﻟﻤ ﺼﺪر و ﻣ ﻦ ﺛ ﻢ‬
‫ﺟﻤﻌﮫ ﻣﻊ ﻣﺘﺤﻮل اﻟﮭﺪف‪.‬‬

‫‪Destination = 0400h = 0000 0100 0000 0000 b‬‬


‫‪Source = 03F8h = 1111 1100 0000 1000 b + 0000 0000 0000 1000 b‬‬

‫ﺗﺬﻛﺮة ﺑﺎﻟﻤﺘﻤﻢ اﻟﺜﻨﺎﺋﻲ ) و اﻟﺬي ﯾﺸﺎر إﻟﯿﮫ ﺑﻮﺿﻊ ﺧﻄﯿﻦ ﻓﻮق اﻟﻌﺪد اﻟﺬي ﻧﺮﯾﺪ إﯾﺠﺎد اﻟﻤﺘﻤﻢ اﻟﺜﻨﺎﺋﻲ ﻟﮫ ( ‪:‬‬
‫إذا أردت اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﻤﺘﻤﻢ اﻟﺜﻨﺎﺋﻲ ﻟﻠﻌﺪد ‪ 03F8h‬ﻓﺎﻋﻤﻞ ﻣﺎ ﯾﻠﻲ‪:‬‬
‫‪ (1‬ﺗﺤﻮﯾﻞ ھﺬا اﻟﻌﺪد إﻟﻰ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻓﯿﺼﺒﺢ ‪0000 0011 1111 1000‬‬
‫‪ (2‬أﻗﻠﺐ اﻷﺻﻔﺎر واﺣﺪات و اﻟﻮاﺣﺪات أﺻﻔﺎراً ﻓﯿﻨﺘﺞ ‪1111 1100 0000 0111‬‬
‫‪ (3‬أﺿﻒ واﺣﺪ إﻟﻰ اﻟﺮﻗﻢ اﻟﻨﺎﺗﺞ ﻓﺘﺤﺼﻞ ﻋﻠﻰ اﻟﻤﺘﻤﻢ اﻟﺜﻨﺎﺋﻲ ‪– 03F8h = 1111 1100 0000 1000‬‬

‫ﻻﺣﻆ أن ‪ PF = 0 :‬ﻷن ﻋﺪد اﻟﻮاﺣﺪات ﻓﺮدي ﻓﻲ اﻟﺒﺎﯾﺖ اﻷول ﻣﻦ اﻟﻨﺎﺗﺞ ‪.‬‬


‫‪ AF =1‬ﻷﻧ ﮫ ﻻ ﯾﻮﺟ ﺪ ﻣﻌﻨ ﺎ ﺣﻤ ﻞ ) اﻧﺰﯾ ﺎح ( ﻋﻨ ﺪ اﻻﻧﺘﻘ ﺎل ﻣ ﻦ اﻟﺨﺎﻧ ﺔ اﻟﺜﺎﻟﺜ ﺔ إﻟ ﻰ اﻟﺨﺎﻧ ﺔ اﻟﺮاﺑﻌ ﺔ‬
‫)ﻋﻜﺲ ﺣﺎﻟﺔ اﻟﺠﻤﻊ(‪.‬‬
‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 26 -‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫‪ ZF = 0‬ﻷن اﻟﻨﺘﯿﺠﺔ ﻟﯿﺴﺖ ﺻﻔﺮﯾﺔ‪.‬‬


‫‪ SF = 0‬و ھﻲ ﻗﯿﻤﺔ آﺧﺮ ﺧﺎﻧﺔ ﻣﻦ اﻟﻨﺎﺗﺞ ‪.MSB‬‬
‫‪ CF = 0‬ﻷن ھﻨﺎك اﻧﺰﯾﺎح ﺧﺎرﺟﻲ )ﻋﻜﺲ ﺣﺎﻟﺔ اﻟﺠﻤﻊ(‪.‬‬
‫‪ OF = 0‬ﻟﺤﺼﻮل اﻧﺰﯾﺎح داﺧﻠﻲ و اﻧﺰﯾﺎح ﺧﺎرﺟﻲ ﺑﺂن واﺣﺪ‪.‬‬
‫ﺗﻌﻠﯿﻤﺔ ‪DAS‬‬
‫ﺗﺴﺘﺨﺪم ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺔ ﻟﺘ ﺼﺤﯿﺢ ﻧ ﺎﺗﺞ ﻃ ﺮح ﻋ ﺪدﯾﻦ ﺑ ﺸﯿﻔﺮة ‪ BCD‬ﺣﯿ ﺚ ﯾﻜﻤ ﻦ ﻧ ﺎﺗﺞ ﻃ ﺮح ھ ﺬﯾﻦ اﻟﻌ ﺪدﯾﻦ ﻓ ﻲ‬
‫اﻟﻤﺴﺠﻞ ‪ AL‬و ﻗﺎﻋﺪة اﻟﺘﺼﺤﯿﺢ ھﻲ ‪:‬‬
‫‪1) if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1‬‬
‫‪then AL = AL – 06 , AF = 1‬‬
‫‪2) if AL > 9Fh or CF=1‬‬
‫‪then AL = AL – 60h , CF = 1‬‬
‫ﻣﺜﺎل‪ :‬ﺑﻔﺮض أن ‪ AL = 86 BCD‬و ‪ ، AH = 07 BCD‬ﺑﯿﻦ ﻧﺘﯿﺠﺔ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ‪:‬‬
‫‪SUB AL,AH‬‬
‫‪DAS‬‬
‫اﻟﺤﻞ‪:‬‬

‫‪AL = 1000 0110 b‬‬


‫‪AH = 1111 1001 b +‬‬
‫‪1 0111 1111 b => AL = 7Fh‬‬
‫و اﻵن ‪:‬‬
‫‪ AF = 1‬ﺑﺴﺒﺐ ﻋﺪم وﺟﻮد اﻧﺰﯾﺎح ﻣﻦ اﻟﺨﺎﻧﺔ اﻟﺜﺎﻟﺜﺔ إﻟﻰ اﻟﺨﺎﻧﺔ اﻟﺮاﺑﻌﺔ‪.‬‬
‫‪ CF = 0‬ﻟﻮﺟﻮد اﻧﺰﯾﺎح ﺧﺎرﺟﻲ‬
‫و ﺑﺘﻄﺒﯿﻖ اﻟﺸﺮط ‪ 1‬ﻣﻦ ﻗﺎﻋﺪة اﻟﺘﺼﺤﯿﺢ ﻧﺠﺪ أن ‪AL = 79h , AF = 1‬‬
‫ﺗﻌﻠﯿﻤﺔ ‪AAS‬‬
‫ﺗﺴﺘﺨﺪم ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻟﺘﺼﺤﯿﺢ ﻧﺎﺗﺞ ﻃﺮح ﻋﺪدﯾﻦ ﺑﺎﻟﺸﯿﻔﺮة ‪ ASCII‬ﺣﯿﺚ ﯾﻜﻤﻦ ﻧﺎﺗﺞ اﻟﻄﺮح ﻓ ﻲ ‪ ، AL‬و ﻗﺎﻋ ﺪة‬
‫اﻟﺘﺼﺤﯿﺢ ھﻲ‪:‬‬
‫‪if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1‬‬
‫‪then AL = AL – 06h , AL = AL and 0Fh‬‬
‫‪AH = AH – 01‬‬ ‫‪, AF = 1 , CF = 1‬‬
‫‪Else AL = AL and 0Fh , AH = 00‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﻔﺮض أن ‪ AL = 38h = 8 ASCII‬و ‪ ، BL = 35h = 5 ASCII‬ﻣﺎ ھﻮ ﻧﺎﺗﺞ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ‪:‬‬
‫‪SUB AL,BL‬‬
‫‪AAS‬‬
‫اﻟﺤﻞ‪:‬‬
‫‪AL = 0011 1000 b‬‬
‫‪BL = 1100 1011 b +‬‬
‫‪1 0000 0011 b => AL = 03h‬‬
‫‪ AF = 0‬ﺑﺴﺒﺐ وﺟﻮد اﻧﺰﯾﺎح ﻣﻦ اﻟﺨﺎﻧﺔ اﻟﺜﺎﻟﺜﺔ إﻟﻰ اﻟﺨﺎﻧﺔ اﻟﺮاﺑﻌﺔ‬
‫‪ CF = 0‬ﺑﺴﺒﺐ وﺟﻮد اﻧﺰﯾﺎح ﺧﺎرﺟﻲ‬
‫و ﺑﻌﺪ ﺗﻄﺒﯿﻖ ﻗﺎﻋﺪة اﻟﺘﺼﺤﯿﺢ ﻧﺠﺪ ‪AL = 03h , AH = 00‬‬

‫‪ (3‬ﺗﻌﻠﯿﻤﺎت اﻟﻀﺮب و اﻟﻘﺴﻤﺔ‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 27 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﯾ ﺘﻢ ﺗﻄﺒﯿ ﻖ ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺎت ﻋﻠ ﻰ اﻷﻋ ﺪاد اﻟﺜﻨﺎﺋﯿ ﺔ أو ﺑﺎﻟ ﺸﯿﻔﺮة ‪ BCD‬أي ﻓ ﻲ ﻣﻌﺎﻟﺠ ﺔ اﻷﻋ ﺪاد ذات اﻹﺷ ﺎرة و‬
‫اﻷﻋﺪاد ﺑﺪون إﺷﺎرة‪ .‬و ھﺬه اﻟﺘﻌﻠﯿﻤﺎت ﻣﺒﯿﻨﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫‪AL.S8 → AX‬‬
‫‪MUL‬‬ ‫ﺿﺮب ﺑﺪن إﺷﺎرة‬ ‫‪MUL S‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫‪AX.S16 → DX,AX‬‬
‫‪Q[AX/S8] → AL‬‬
‫ﺗﻘﺴﯿﻢ ﺑﺪون‬ ‫‪R[AX/S8] → AH‬‬
‫‪DIV‬‬ ‫‪DIV S‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫إﺷﺎرة‬ ‫‪Q[(DX,AX)/S16] → AX‬‬
‫‪R[(DX,AX)/S16] → DX‬‬

‫ﺑﺒﺴﺎﻃﺔ ‪ :‬اﻟﻨﻘﻄﺔ ﺗﻌﻨﻰ ﻋﻤﻠﯿﺔ اﻟﻀﺮب اﻟﻌﺎدﯾﺔ‪ ،‬و اﻟﺮﻣﺰ ‪ S8‬ﯾﻌﻨﻲ ﻣﺘﺤﻮل ﻣﺼﺪر ﻋﺒﺎرة ﻋ ﻦ ﺑﺎﯾ ﺖ أﻣ ﺎ اﻟﺮﻣ ﺰ‬
‫‪ R‬ﻓﯿﻌﻨﻲ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ و اﻟﺮﻣﺰ ‪ Q‬ﻣﺎ ھﻮ إﻻ ﺣﺎﺻﻞ ﻗﺴﻤﺔ‪.‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬إذا ﻛﺎﻧﺖ ﻗﯿﻤﺔ ‪ Q‬ﻓﻲ اﻟﺤﺎﻟﺔ اﻷوﻟﻰ ) ﺣﺎﻟﺔ ﺑﺎﯾﺖ ( ﻣﺴﺎوﯾﺔ ﻟـ‪ FF‬أو ﻛﺎﻧﺖ ﻗﯿﻤ ﺔ ‪ Q‬ﻓ ﻲ اﻟﺤﺎﻟ ﺔ اﻟﺜﺎﻧﯿ ﺔ‬
‫) ﺣﺎﻟﺔ ﻛﻠﻤﺔ ( ﻣﺴﺎوﯾﺔ إﻟﻰ ‪ FFFFh‬ﻓﺘﺤﺪث ﻣﻘﺎﻃﻌﺔ ﻣﻦ اﻟﻨﻮع ﺻﻔﺮ‪ ،‬و ﺗُﻌﺮف ھﺬه اﻟﻤﻘﺎﻃﻌﺔ ﺑﺨﻄﺄ اﻟﺘﻘﺴﯿﻢ‪.‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﺘﻌﻠﯿﻤﺎت اﻟ ﻀﺮب و اﻟﺘﻘ ﺴﯿﻢ ﻟﻸﻋ ﺪاد ذات اﻹﺷ ﺎرة ﻓﮭ ﻲ ﻣ ﺸﺎﺑﮭﺔ ﺗﻤﺎﻣ ﺎً ﻟﻠﺘﻌﻠﯿﻤ ﺎت اﻟ ﺴﺎﺑﻘﺔ و‬
‫ﺗُﻌﺮف ﻛﻤﺎ ﯾﻠﻲ‪:‬‬
‫‪ IMUL‬ھﻲ ﺗﻌﻠﯿﻤﺔ اﻟﻀﺮب ﻣﻊ أﺧﺬ اﻹﺷﺎرة ﺑﻌﯿﻦ اﻻﻋﺘﺒﺎر‪.‬‬
‫‪ IDIV‬ھﻲ ﺗﻌﻠﯿﻤﺔ اﻟﺘﻘﺴﯿﻢ ﻣﻊ أﺧﺬ اﻹﺷﺎرة ﺑﻌﯿﻦ اﻻﻋﺘﺒﺎر‪.‬‬

‫و ﺗﻜﻮن إﺷﺎرة اﻟﻨﺎﺗﺞ ﻓﻲ ﻛﻠﺘﺎ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ آﺧﺮ ﺧﺎﻧﺔ ﻣﻨﮫ أي ﺧﺎﻧﺔ اﻟـ ‪. MSB‬‬

‫و ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ذﻟﻚ ھﻨﺎك اﻟﺘﻌﻠﯿﻤﺎت اﻟﺘﺎﻟﯿﺔ )ﺗﺎﺑﻊ ﻟﺠﺪول اﻟﻀﺮب و اﻟﻘﺴﻤﺔ(‪:‬‬

‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫ﺗﺼﺤﯿﺢ اﻟﻨﺎﺗﺞ ﻓﻲ ‪ AL‬ﻣﻦ‬ ‫‪Q[AL/10d] → AH‬‬
‫‪AAM‬‬ ‫ﺿﺮب ﻋﺪدﯾﻦ ‪ BCD‬أو‬ ‫‪AAM‬‬ ‫‪R[AL/10d] → AL‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫ﻋﺪدﯾﻦ ﺛﻨﺎﺋﯿﯿﻦ‬
‫ﺗﺼﺤﯿﺢ ‪ AX‬ﻣﻦ أﺟﻞ اﻟﻘﺴﻤﺔ‬
‫ﺣﯿﺚ ‪ AX‬ﻟﯿﺲ ﻧﺎﺗﺞ اﻟﻘﺴﻤﺔ و‬
‫إﻧﻤﺎ ھﻮ ﻣﺘﺤﻮل اﻟﮭﺪف ﻓﻲ‬
‫‪AH.10d + AL → AL‬‬ ‫‪SF, ZF,‬‬
‫‪AAD‬‬ ‫ﻋﻤﻠﯿﺔ اﻟﻘﺴﻤﺔ‪ .‬ﻟﺬﻟﻚ ﻧﻄﺒﻖ ھﺬه‬ ‫‪AAD‬‬
‫‪00 → AH‬‬ ‫‪PF‬‬
‫اﻟﺘﻌﻠﯿﻤﺔ ﻗﺒﻞ ﺗﻌﻠﯿﻤﺔ اﻟﻘﺴﻤﺔ‬
‫ﻋﻠﻰ ﻋﻜﺲ ﺑﺎﻗﻲ ﺗﻌﻠﯿﻤﺎت‬
‫اﻟﺘﺼﺤﯿﺢ‬
‫→ ‪MSB of AL‬‬
‫‪CBW‬‬ ‫ﺗﺤﻮﯾﻞ ﺑﺎﯾﺖ إﻟﻰ ﻛﻠﻤﺔ‬ ‫‪CBW‬‬
‫‪All bits of AH‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ﺗﺤﻮﯾﻞ ﻛﻠﻤﺔ إﻟﻰ ﻛﻠﻤﺔ‬ ‫→ ‪MSB of AX‬‬
‫‪CWD‬‬ ‫‪CBW‬‬
‫‪All bits of DX‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ﻣﻀﺎﻋﻔﺔ‬

‫إن اﻟﻤﺘﺤﻮﻻت اﻟﻤﺴﻤﻮﺣﺔ ﻓﻲ ﺗﻌﻠﯿﻤﺎت اﻟﻀﺮب و اﻟﻘﺴﻤﺔ ھﻲ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺼﺪر ‪: S‬‬


‫‪ Mem16, Mem8, Reg16, Reg8‬و ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ ﻟﻠﮭﺪف ‪ D‬ﻓﺎﻟﻤﺘﺤﻮل اﻟﻮﺣﯿﺪ اﻟﻤﺴﻤﻮح ھﻮ اﻟﻤﺮاﻛﻢ دوﻣﺎً‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 28 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻣﻼﺣﻈﺔ‪ :‬إن ﺗﻌﻠﯿﻤﺎت اﻟﻘﺴﻤﺔ ﯾﻤﻜﻦ اﺳﺘﺨﺪاﻣﮭﺎ ﻟﺘﻘﺴﯿﻢ اﻟﻤﻘﺴﻮم ﺑـ ‪ 8‬ﺑﺘﺎت ﻓﻲ ‪ AL‬ﻋﻠﻰ ﻣﻘﺴﻮم ﻋﻠﯿﮫ ﺑ ـ ‪ 8‬ﺑﺘ ﺎت‬
‫أﯾﻀﺎً‪ .‬و ﻹﻧﺠﺎز ھ ﺬا ﯾﺠ ﺐ أوﻻً ﺗﻤﺪﯾ ﺪ إﺷ ﺎرة اﻟﻤﻘ ﺴﻮم ﻟﻤ ﻞء اﻟﻤ ﺴﺠﻞ ‪ AX‬و ھ ﺬا ﯾﻌﻨ ﻲ ﻣ ﻞء ‪ AH‬ﺑﺄﺻ ﻔﺎر إذا‬
‫ﻛ ﺎن اﻟﻌ ﺪد ﻣﻮﺟﺒ ﺎً أو ﺑﻮاﺣ ﺪات إذا ﻛ ﺎن اﻟﻌ ﺪد ﺳ ﺎﻟﺒﺎً ) أي ﺣ ﺴﺐ ﺧﺎﻧ ﺔ اﻹﺷ ﺎرة ( و ﺗ ﺘﻢ ھ ﺬه اﻟﻌﻤﻠﯿ ﺔ ﺑﻮاﺳ ﻄﺔ‬
‫اﻟﺘﻌﻠﯿﻤﺔ ‪ . CBW‬و ﺑﺸﻜﻞ ﻣﺸﺎﺑﮫ ﻓﺈن ﺗﻌﻠﯿﻤﺎت اﻟﺘﻘﺴﯿﻢ ‪ 32‬ﺑ ﺖ ﻋﻠ ﻰ ‪ 16‬ﺑ ﺖ ﯾﻤﻜ ﻦ اﺳ ﺘﺨﺪاﻣﮭﺎ ﻟﺘﻘ ﺴﯿﻢ ﻣﻘ ﺴﻮم‬
‫ذي ‪ 16‬ﺑ ﺖ ﻓ ﻲ ‪ AX‬ﻋﻠ ﻰ ﻣﻘ ﺴﻮم ﻋﻠﯿ ﮫ ذي ‪ 16‬ﺑ ﺖ و ذﻟ ﻚ ﺑﺘﺤﻮﯾ ﻞ اﻟﻜﻠﻤ ﺔ إﻟ ﻰ ﻛﻠﻤ ﺔ ﻣ ﻀﺎﻋﻔﺔ و ﯾ ﺘﻢ ھ ﺬا‬
‫ﺑﻮاﺳﻄﺔ اﻟﺘﻌﻠﯿﻤﺔ ‪.CWD‬‬
‫ﻛﻤﺎ ذﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً ﻓﺈن اﻷﻋﺪاد ﻏﯿﺮ اﻟﻤﺠﻤﻌﺔ ﯾﺘﻢ ﺣﻔﻈﮭﺎ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪15‬‬ ‫اﻟﻘﺴﻢ اﻟﻌﻠﻮي ﻣﻦ اﻟﺒﺎﯾ ﺖ اﻟ ﺬي ﯾﺤﺘ ﻮي ﻋﻠ ﻰ اﻟﻌ ﺪد ﻏﯿ ﺮ اﻟﻤﺠﻤ ﻊ ﯾﺠ ﺐ ‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫أن ﺗﻜﻮن ﻗﯿﻤﺘﮫ ﻣﺴﺎوﯾﺔ إﻟﻰ اﻟﺼﻔﺮ‪.‬‬
‫إن اﻟﺘﻌﻠﯿﻤﺔ ‪ AAM‬ﺗﺴﺘﺨﺪم ﻟﺘﺼﺤﯿﺢ ﻧﺎﺗﺞ ﺿﺮب ﻋﺪدﯾﻦ ﻏﯿﺮ ﻣﺠﻤﻌ ﯿﻦ‬
‫ﻷﻧﮫ ﻋﻨ ﺪ ﺿ ﺮب ﻋ ﺪدﯾﻦ ﻏﯿ ﺮ ﻣﺠﻤﻌ ﯿﻦ ﻧﺤ ﺼﻞ ﻋﻠ ﻰ ﻧﺘﯿﺠ ﺔ ﻣﺠﻤﻌ ﺔ و اﻟﻨﺘﯿﺠ ﺔ ﯾﺠ ﺐ أن ﺗﻜ ﻮن ﻏﯿ ﺮ ﻣﺠﻤﻌ ﺔ‪،‬‬
‫ﻟﺬﻟﻚ ﻧﺼﺤﺤﮭﺎ ﺑﻮاﺳﻄﺔ اﻟﺘﻌﻠﯿﻤﺔ ‪. AAM‬‬
‫ﻣﺜﺎل‪ :‬ﺑﻔﺮض أن ‪ BL = 09‬و ‪ AL = 07‬ﻓﻤﺎ ھﻲ ﻧﺘﯿﺠﺔ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺎت اﻟﺘﺎﻟﯿﺔ ‪:‬‬
‫‪MUL BL‬‬
‫‪AAM‬‬

‫اﻟﺤﻞ‪:‬‬
‫‪AX = 00 07‬‬
‫‪BX = 00 09‬‬
‫‪MUL 00 3F‬‬ ‫‪AX‬‬
‫‪AAM 06 03‬‬ ‫‪AX‬‬
‫ﻗﺎﻋﺪة اﻟﺘﺼﺤﯿﺢ ﻓﻲ ﺗﻌﻠﯿﻤﺔ ‪ AAD‬ھﻲ ‪:‬‬
‫إن اﻟﺘﻘ ﺴﯿﻢ ﺑﺎﻟﻨ ﺴﺒﺔ إﻟ ﻰ اﻷﻋ ﺪاد ﻏﯿ ﺮ اﻟﻤﺠﻤﻌ ﺔ ﯾ ﺆدي إﻟ ﻰ اﻟﺤ ﺼﻮل ﻋﻠ ﻰ ﻧﺘ ﺎﺋﺞ ﺧﺎﻃﺌ ﺔ و ﻟ ﺬﻟﻚ ﯾﺠ ﺐ ﺗﺠﻤﯿ ﻊ‬
‫اﻷﻋ ﺪاد ﻗﺒ ﻞ ﻗ ﺴﻤﺘﮭﺎ‪ .‬و ﺑﻔ ﺮض أن ‪ ) AX = 0604h‬و ھ ﻲ أﻋ ﺪاد ﻏﯿ ﺮ ﻣﺠﻤﻌ ﺔ ( ﻓﻨﺘﯿﺠ ﺔ ﺗﻄﺒﯿ ﻖ ﺗﻌﻠﯿﻤ ﺔ‬
‫اﻟﺘﺼﺤﯿﺢ ‪ ) AAD‬و اﻟﺘﻲ ﯾﺘﻢ ﺗﻄﺒﯿﻘﮭﺎ ﻗﺒﻞ ﻋﻤﻠﯿﺔ اﻟﺘﻘﺴﯿﻢ ( ھﻲ‪:‬‬
‫‪AL = 06 x 10d + 04h = 64d = 40h‬‬
‫‪AH = 00h‬‬ ‫‪=> AX = 0040h‬‬

‫ﺛﺎﻟﺜﺎً ‪ -‬اﻟﺘﻌﻠﯿﻤﺎت اﻟﻤﻨﻄﻘﯿﺔ‬


‫ﺗﻨﺠﺰ ﻋﻤﻠﯿﺎﺗﮭﺎ اﻟﻤﻨﻄﻘﯿﺔ ﺧﺎﻧﺔ ﺑﺨﺎﻧﺔ ﻋﻠﻰ ﻣﺘﺤﻮﻻﺗﮭﺎ‪ .‬و اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﯾﺒﯿﻦ اﻟﺘﻌﻠﯿﻤﺎت اﻟﻤﻨﻄﻘﯿﺔ‪:‬‬
‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫‪AND‬‬ ‫‪ AND‬اﻟﻤﻨﻄﻘﻲ‬ ‫‪AND D,S‬‬ ‫‪S.D → D‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫‪OR‬‬ ‫‪ OR‬اﻟﻤﻨﻄﻘﻲ‬ ‫‪OR D,S‬‬ ‫‪S+D→D‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫‪XOR‬‬ ‫‪ XOR‬اﻟﻤﻨﻄﻘﻲ‬ ‫‪XOR D,S‬‬ ‫‪S+D→D‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫‪NOT‬‬ ‫‪ NOT‬اﻟﻤﻨﻄﻘﻲ‬ ‫‪NOT D‬‬ ‫‪D→D‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫إن اﻟﻤﺘﺤ ﻮﻻت اﻟﻤ ﺴﻤﻮﺣﺔ ﻣ ﻦ أﺟ ﻞ ﺗﻌﻠﯿﻤ ﺔ ‪ XOR, OR, AND‬ﻣﺒﯿﻨ ﺔ ﻓ ﻲ‬
‫‪D‬‬ ‫‪S‬‬
‫اﻟﺠﺪول ﺟﺎﻧﺒﺎً‪:‬‬
‫‪Reg‬‬ ‫‪Reg‬‬
‫‪Reg‬‬ ‫‪Mem‬‬
‫‪Mem‬‬ ‫‪Reg‬‬
‫‪Reg‬‬ ‫‪Imm‬‬
‫‪Mem‬‬ ‫‪Imm‬‬
‫‪AX‬‬ ‫‪Imm‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 29 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫راﺑﻌﺎً ‪ -‬ﺗﻌﻠﯿﻤﺎت اﻹزاﺣﺔ‬


‫ھﻨﺎك ﻧﻮﻋﺎن ﻣﻦ ﺗﻌﻠﯿﻤ ﺎت اﻹزاﺣ ﺔ ھﻤ ﺎ اﻹزاﺣ ﺔ اﻟﻤﻨﻄﻘﯿ ﺔ و اﻹزاﺣ ﺔ اﻟﺮﯾﺎﺿ ﯿﺔ ﻛﻤ ﺎ ھ ﻮ واﺿ ﺢ ﻓ ﻲ اﻟﺠ ﺪول‬
‫اﻟﺘﺎﻟﻲ‪:‬‬

‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫إزاﺣﺔ‬ ‫‪SAL/SHL D,count‬‬
‫رﯾﺎﺿﯿﺔ‪/‬إزاﺣﺔ‬ ‫‪OF,CF‬‬
‫‪SAL/SHL‬‬
‫ﻣﻨﻄﻘﯿﺔ و ﻛﻼھﻤﺎ‬
‫ﻧﺤﻮ اﻟﯿﺴﺎر‬

‫‪CF‬‬ ‫‪0‬‬

‫اﻟﻌﻤﻠﯿﺔ ھﻨﺎ ھﻲ إزاﺣ ﺔ ﻣﺤﺘﻮﯾ ﺎت ‪ D‬ﻧﺤ ﻮ اﻟﯿ ﺴﺎر ﺑﺎﺗﺠ ﺎه ‪ CF‬ﻋ ﺪداً ﻣ ﻦ اﻟﺨﺎﻧ ﺎت ﻣ ﺴﺎوﯾﺎً ﻟﻘﯿﻤ ﺔ ‪ count‬و ﻣ ﻞء‬
‫ﺟﻤﯿﻊ اﻟﺨﺎﻧﺎت اﻟﯿﻤﻨﻰ اﻟﻤﻔﺮﻏﺔ ﺑﺄﺻﻔﺎر‪.‬‬
‫و ﺑﺎﻟﻨﺴﺒﺔ ﻟﺘﺄﺛﯿﺮ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻋﻠﻰ ﻋﻠﻢ ‪ : OF‬إذا ﺗﺒﺪﻟﺖ ﺧﺎﻧﺔ اﻹﺷﺎرة ﻧﺘﯿﺠﺔ اﻹزاﺣﺔ ﻓﺈن ‪. OF = 1‬‬

‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫إزاﺣﺔ ﻣﻨﻄﻘﯿﺔ‬ ‫‪SHR D,count‬‬ ‫‪OF,CF‬‬
‫‪SHR‬‬
‫ﻧﺤﻮ اﻟﯿﻤﯿﻦ‬

‫‪0‬‬ ‫‪CF‬‬

‫اﻟﻌﻤﻠﯿﺔ ھﻨﺎ ھ ﻲ إزاﺣ ﺔ ﻣﺤﺘﻮﯾ ﺎت ‪ D‬ﻧﺤ ﻮ اﻟﯿﻤ ﯿﻦ ﺑﺎﺗﺠ ﺎه ‪ CF‬ﻋ ﺪداً ﻣ ﻦ اﻟﺨﺎﻧ ﺎت ﻣ ﺴﺎوﯾﺎً ﻟﻘﯿﻤ ﺔ ‪ count‬و ﻣ ﻞء‬
‫ﺟﻤﯿﻊ اﻟﺨﺎﻧﺎت اﻟﯿﺴﺮى اﻟﻤﻔﺮﻏﺔ ﺑﺄﺻﻔﺎر‪.‬‬
‫و ﺑﺎﻟﻨﺴﺒﺔ ﻟﺘﺄﺛﯿﺮ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻋﻠﻰ اﻟﻌﻠﻢ ‪ : OF‬إذا ﺗﺒﺪﻟﺖ ﺧﺎﻧﺔ اﻹﺷﺎرة ﻧﺘﯿﺠﺔ اﻹزاﺣﺔ ﻓﺈن ‪OF = 1‬‬

‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫إزاﺣﺔ رﯾﺎﺿﯿﺔ‬
‫‪SAR‬‬ ‫‪SAR D,count‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫ﻧﺤﻮ اﻟﯿﻤﯿﻦ‬

‫‪CF‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 30 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﻌﻤﻠﯿﺔ ھﻨ ﺎ ھ ﻲ إزاﺣ ﺔ ﻣﺤﺘﻮﯾ ﺎت ‪ D‬ﻧﺤ ﻮ اﻟﯿﻤ ﯿﻦ ﺑﺎﺗﺠ ﺎه ‪ CF‬ﻋ ﺪداً ﻣ ﻦ اﻟﻤ ﺮات ﻣ ﺴﺎوﯾﺎً ﻟﻘﯿﻤ ﺔ ‪ count‬و ﻣ ﻞء‬
‫اﻟﺨﺎﻧﺎت ﺟﻤﯿﻊ اﻟﺨﺎﻧﺎت اﻟﯿﺴﺮى ﺑﻘﯿﻤﺔ اﻟﺨﺎﻧﺔ ‪ ) MSB‬ﺧﺎﻧﺔ اﻹﺷﺎرة أو آﺧﺮ ﺧﺎﻧﺔ (‪.‬‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﺑﺎﻟﻨ ﺴﺒﺔ ﻟﻠﺘﻌﻠﯿﻤﺘ ﯿﻦ ‪ : SHL, SAL‬إذا ﻃﺒﻘﻨ ﺎ ھ ﺎﺗﯿﻦ اﻟﺘﻌﻠﯿﻤﺘ ﯿﻦ ﻣ ﻦ أﺟ ﻞ اﻹزاﺣ ﺔ ﺑﻌ ﺪد ﻣ ﻦ اﻟﺨﺎﻧ ﺎت‬
‫‪ count = N‬ﻓﮭﺬا ﯾﻌﻨﻲ ﺿﺮب ﻣﺘﺤﻮل اﻟﮭﺪف ﺑـ ‪ 2 n‬و اﻟﺬي ھﻮ ﻣﻀﺎﻋﻔﺎت اﻟﻌﺪد ‪. 2‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬إن اﻟﺘﻌﻠﯿﻤﺔ ‪ SHR‬ﺗﻌﻨﻲ ﺗﻘﺴﯿﻢ ﻣﺘﺤﻮل اﻟﮭﺪف ﻋﻠﻰ اﻟﻌﺪد ‪ 2 count‬ﺗﺤﺖ ﻛﻮن ‪ LSB = 0‬ﻛ ﻞ ﻣ ﺮة و‬
‫ﻓﻲ ﺣـﺎﻟﺔ ‪ LSB = 1‬ﻓﻌﻨﺪھﺎ ﯾﻜﻮن ﻟﺪﯾﻨﺎ ﺑﺎﻗﻲ ﻣﻮﺿﻮع ﻓﻲ اﻟﻌﻠﻢ ‪. CF‬‬
‫ﻣﺜﺎل‪ :‬اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﯾﻘﻮم ﺑﺤﺴﺎب اﻟﻌﻼﻗﺔ اﻟﺮﯾﺎﺿﯿﺔ اﻟﺘﺎﻟﯿﺔ ﻣ ﺴﺘﺨﺪﻣﺎً ﺗﻌﻠﯿﻤ ﺎت اﻹزاﺣ ﺔ و اﻟﺘﻌﻠﯿﻤ ﺎت اﻟﺮﯾﺎﺿ ﯿﺔ‬
‫‪:‬‬
‫‪3.(AX) + 7.(BX) → DX‬‬
‫‪MOV SI,AX‬‬ ‫‪; copy AX into SI‬‬
‫‪SAL SI,1‬‬ ‫‪; 2 AX‬‬
‫‪ADD SI,AX‬‬ ‫‪; 3 AX‬‬
‫‪MOV DX,BX‬‬ ‫‪; copy BX into DX‬‬
‫‪MOV CL,03H‬‬ ‫‪; load shift count‬‬
‫‪SAL DX,CL‬‬ ‫‪; 8 BX‬‬
‫‪SUB DX,BX‬‬ ‫‪; 7 BX‬‬
‫‪ADD DX,SI‬‬ ‫‪; result‬‬
‫إن اﻟﻤﺘﺤﻮﻻت اﻟﻤﺴﻤﻮﺣﺔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺘﻌﻠﯿﻤﺎت اﻹزاﺣﺔ ھﻲ‪:‬‬
‫‪D‬‬ ‫‪Count‬‬
‫‪Reg‬‬ ‫‪1‬‬
‫أي ﻋﻨ ﺪﻣﺎ ‪ Count‬ﻻ ﯾ ﺴﺎوي اﻟﻮاﺣ ﺪ ﻓﻌﻨﺪﺋ ﺬ ﯾﺠ ﺐ ﺗﺤﻤﯿ ﻞ ﻗﯿﻤ ﺔ‬
‫‪Reg‬‬ ‫‪CL‬‬ ‫‪ count‬ﻓ ﻲ اﻟﻤ ﺴﺠﻞ ‪ CL‬ﺛ ﻢ ﻛﺘﺎﺑ ﺔ ﺗﻌﻠﯿﻤ ﺎت اﻹزاﺣ ﺔ أي‪ :‬ﻋﻨ ﺪﻣﺎ‬
‫‪Mem‬‬ ‫‪1‬‬ ‫‪ count‬ﯾﺴﺎوي اﻟﻮاﺣﺪ ﻓﯿﻤﻜﻦ أن ﻧﻜﺘﺐ ‪:‬‬
‫‪Mem‬‬ ‫‪CL‬‬ ‫‪SAL AX,1‬‬
‫و ﻋﻨﺪﻣﺎ ‪ <= count  1‬ﯾﺠﺐ أن ﻧﻜﺘﺐ ‪:‬‬
‫‪MOV CL,count‬‬
‫‪SAL AX,CL‬‬
‫ھﺬا و إن ﻗﯿﻤﺔ ‪ count‬ﻣﺤﺪدة ﺑﺎﻟﻤﺠﺎل ]‪ [1,FF‬و اﻷﻗﻮاس اﻟﻤﺤﯿﻄﯿﺔ ﻟﯿﺲ ﻟﮭﺎ ﻋﻼﻗﺔ ﺑﻤﻔﮭﻮم اﻹزاﺣﺔ ﻃﺒﻌﺎً‪.‬‬
‫ﺧﺎﻣﺴﺎً ‪ -‬ﺗﻌﻠﯿﻤﺎت اﻟﺘﺪوﯾﺮ‬
‫و ھﻲ ﻣﺒﯿﻨﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫ﺗﺪوﯾﺮ ﻧﺤﻮ‬
‫‪ROL‬‬ ‫‪ROL D,count‬‬ ‫‪OF,CF‬‬
‫اﻟﯿﻤﯿﻦ‬

‫‪CF‬‬

‫اﻟﻌﻤﻠﯿﺔ ھﻨﺎ ھﻲ ﺗﺪوﯾﺮ ﻣﺤﺘﻮﯾﺎت ‪ D‬ﻧﺤ ﻮ اﻟﯿ ﺴﺎر ﻋ ﺪداً ﻣ ﻦ اﻟﻤ ﺮات ﻣ ﺴﺎوﯾﺎً ﻟﻘﯿﻤ ﺔ ‪ . count‬و ﻛ ﻞ ﺧﺎﻧ ﺔ ﺗُ ﺰاح‬
‫ﺧﺎرج اﻟـ ‪ MSB‬ﺗﻮﺿﻊ ﻓﻲ اﻟﺨﺎﻧﺔ ‪ LSB‬و ﻓﻲ ‪. CF‬‬

‫و ﺑﺎﻟﻨﺴﺒﺔ ﻟﺘﺄﺛﯿﺮ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻋﻠﻰ اﻟﻌﻠﻢ ‪ OF‬ﻓﮭﻮ ﻧﻔﺲ اﻟﻤﻨﺎﻗﺸﺔ ﻓﻲ اﻟﺘﻌﻠﯿﻤﺎت اﻟﺴﺎﺑﻘﺔ‪.‬‬

‫اﻟﻜﻠﻤﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬


‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 31 -‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫ﺗﺪوﯾﺮ ﻧﺤﻮ‬
‫‪ROR‬‬ ‫‪ROR D,count‬‬ ‫‪OF,CF‬‬
‫اﻟﯿﺴﺎر‬

‫‪CF‬‬

‫اﻟﻌﻤﻠﯿﺔ ھﻨﺎ ھﻲ ﺗ ﺪوﯾﺮ ﻣﺤﺘﻮﯾ ﺎت ‪ D‬ﻧﺤ ﻮ اﻟﯿﻤ ﯿﻦ ﻋ ﺪداً ﻣ ﻦ اﻟﻤ ﺮات ﻣ ﺴﺎوﯾﺎً ﻟﻘﯿﻤ ﺔ ‪ . count‬و ﻛ ﻞ ﺧﺎﻧ ﺔ ﺗُ ﺰاح‬
‫ﺧﺎرج اﻟـ ‪ LSB‬ﺗﻮﺿﻊ ﻓﻲ اﻟﺨﺎﻧﺔ ‪ MSB‬و ﻓﻲ ‪. CF‬‬
‫و ﺑﺎﻟﻨﺴﺒﺔ ﻟـ ‪ OF‬ﻓﮭﻮ ﻧﻔﺲ اﻟﻤﻨﺎﻗﺸﺔ ﻓﻲ اﻟﺘﻌﻠﯿﻤﺎت اﻟﺴﺎﺑﻘﺔ‪.‬‬
‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫ﺗﺪوﯾﺮ ﻧﺤﻮ‬
‫‪RCL‬‬ ‫اﻟﯿﺴﺎر ﻋﺒﺮ اﻟـ‬ ‫‪RCL D,count‬‬ ‫‪OF,CF‬‬
‫‪CF‬‬

‫‪CF‬‬

‫اﻟﻌﻤﻠﯿ ﺔ ھﻨ ﺎ ﻣ ﺸﺎﺑﮭﺔ ﻟﺘﻌﻠﯿﻤ ﺔ ‪ ROL‬ﻣ ﺎ ﻋ ﺪا أن اﻟﻤﺤﺘ ﻮى اﻷﺻ ﻠﻲ ﻟ ـ ‪ CF‬ﯾﻮﺿ ﻊ ﻓ ﻲ اﻟﺨﺎﻧ ﺔ ‪ LSB‬أﻣ ﺎ اﻟﺨﺎﻧ ﺔ‬
‫اﻟﻤﺰاﺣﺔ ﺧﺎرج اﻟـ ‪ MSB‬ﻓﺘﻮﺿﻊ ﻓﻲ ‪. CF‬‬
‫و ﺑﺎﻟﻨﺴﺒﺔ ﻟـ ‪ OF‬ﻧﻔﺲ اﻟﻤﻨﺎﻗﺸﺔ اﻟﺴﺎﺑﻘﺔ‪.‬‬

‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫ﺗﺪوﯾﺮ ﻧﺤﻮ‬
‫‪RCR‬‬ ‫اﻟﯿﻤﯿﻦ ﻋﺒﺮ اﻟـ‬ ‫‪RCR D,count‬‬ ‫‪OF,CF‬‬
‫‪CF‬‬

‫‪CF‬‬

‫اﻟﻌﻤﻠﯿﺔ ھﻨﺎ ﻣﺸﺎﺑﮭﺔ ﻟﺘﻌﻠﯿﻤ ﺔ ‪ ROR‬ﻣ ﺎ ﻋ ﺪا أن اﻟﻤﺤﺘ ﻮى اﻷﺻ ﻠﻲ ﻟ ـ ‪ CF‬ﯾﻮﺿ ﻊ ﻓ ﻲ اﻟﺨﺎﻧ ﺔ ‪ MSB‬أﻣ ﺎ اﻟﺨﺎﻧ ﺔ‬
‫اﻟﻤﺰاﺣﺔ ﺧﺎرج اﻟـ ‪ LSB‬ﻓﺘﻮﺿﻊ ﻓﻲ ‪. CF‬‬
‫و ﺑﺎﻟﻨﺴﺒﺔ ﻟـ ‪ OF‬ﻧﻔﺲ اﻟﻤﻨﺎﻗﺸﺔ اﻟﺴﺎﺑﻘﺔ‪.‬‬
‫ﺳﺎدﺳﺎً ‪ -‬ﺗﻌﻠﯿﻤﺎت ﻣﺴﺠﻼت اﻷﻋﻼم‬
‫و ھﻲ ﻣﺒﯿﻨﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ‪:‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 32 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫‪Flags → AH‬‬
‫ﺗﺤﻤﯿﻞ ‪ AH‬ﻣﻦ‬
‫‪LAHF‬‬ ‫‪LAHF‬‬ ‫اﻟﻨﺼﻒ اﻷول ﻣﻦ ﻣﺴﺠﻞ اﻷﻋﻼم‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ﻣﺴﺠﻞ اﻷﻋﻼم‬
‫ﯾﻮﺿﻊ ﻓﻲ ‪AH‬‬
‫ﺗﺨﺰﯾﻦ ﻗﯿﻤﺔ ‪AH‬‬ ‫‪AH → Flags‬‬
‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫‪SAHF‬‬ ‫ﻓﻲ ﻣﺴﺠﻞ‬ ‫‪SAHF‬‬ ‫ﯾﻮﺿﻊ ‪ AH‬ﻓﻲ اﻟﻨﺼﻒ اﻷول ﻣﻦ‬
‫ﻋﺪا ‪OF‬‬
‫اﻷﻋﻼم‬ ‫ﻣﺴﺠﻞ اﻷﻋﻼم‬
‫‪CLC‬‬ ‫ﺗﻨﻈﯿﻒ اﻟـ ‪CF‬‬ ‫‪CLC‬‬ ‫‪0 → CF‬‬ ‫‪CF‬‬
‫‪STC‬‬ ‫ﺗﻮﺿﯿﻊ اﻟـ ‪CF‬‬ ‫‪STC‬‬ ‫‪1 → CF‬‬ ‫‪CF‬‬
‫‪CMC‬‬
‫ﻣﺘﻤﻢ أﺣﺎدي ﻟـ‬ ‫‪CMC‬‬ ‫‪CF → CF‬‬ ‫‪CF‬‬
‫‪CF‬‬
‫‪CLI‬‬ ‫ﺗﻨﻈﯿﻒ ‪IF‬‬ ‫‪CLI‬‬ ‫‪0 → IF‬‬ ‫‪IF‬‬
‫‪STI‬‬ ‫ﺗﻮﺿﯿﻊ اﻟـ ‪IF‬‬ ‫‪STI‬‬ ‫‪1 → IF‬‬ ‫‪IF‬‬

‫ﺳﺎﺑﻌﺎً ‪ -‬ﺗﻌﻠﯿﻤﺎت اﻟﻤﻘﺎرﻧﺔ‬


‫ﺗﺴﻤﺢ ﺗﻌﻠﯿﻤﺔ اﻟﻤﻘﺎرﻧﺔ ‪ CMP‬ﺑﻤﻘﺎرﻧﺔ ﻋﺪدﯾﻦ ﺑـ ‪ 8‬ﺑﺖ أو ‪ 16‬ﺑﺖ و ھﻲ ﻣﺸﺮوﺣﺔ ﺑﺎﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬

‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫‪D–S‬‬
‫‪CMP‬‬ ‫ﻣﻘﺎرﻧﺔ ﻋﺪدﯾﻦ‬ ‫‪CMP D,S‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫ﺗﺘﺄﺛﺮ اﻷﻋﻼم‬

‫ﺗﺠﺮي ﻋﻤﻠﯿﺔ اﻟﻄﺮح ﺿﻤﻨﯿﺎً دون ﺗﺨﺰﯾﻦ ﻧﺘﯿﺠﺘﮭﺎ ﻓﻲ ﻣﺘﺤﻮل اﻟﮭﺪف ‪ ) D‬أي ﺗﺒﻘﻰ ﻛﻼً ﻣﻦ ﻣﺤﺘﻮﯾ ﺎت اﻟﻤ ﺼﺪر‬
‫‪ S‬و ﻣﺤﺘﻮﯾﺎت اﻟﮭﺪف ‪ D‬ﻋﻠﻰ ﺣﺎﻟﮭﺎ ( و ﺗﺴﺘﻌﻤﻞ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻟﺠﻌﻞ أﻋﻼم اﻟﺤﺎﻟﺔ ﺗﺄﺧ ﺬ ﻗﯿﻤ ﺔ واﺣ ﺪ ﻣﻨﻄﻘ ﻲ أو‬
‫ﺻﻔﺮ ﻣﻨﻄﻘﻲ‪ .‬إن اﻟﻤﺘﺤﻮﻻت اﻟﻤﺴﻤﻮﺣﺔ ﻟﮭﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻣﺒﯿﻨﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫‪D‬‬ ‫‪S‬‬
‫‪Reg‬‬ ‫‪Reg‬‬
‫‪Reg‬‬ ‫‪Mem‬‬
‫‪Mem‬‬
‫‪Reg‬‬
‫‪Reg‬‬
‫‪Imm‬‬
‫ﺛﺎﻣﻨﺎً ‪ -‬ﺗﻌﻠﯿﻤﺎت اﻟﻘﻔﺰ‬
‫‪Mem‬‬ ‫‪Imm‬‬ ‫اﻟﻐﺎﯾ ﺔ ﻣ ﻦ ﺗﻌﻠﯿﻤ ﺔ اﻟﻘﻔ ﺰ ھ ﻲ ﺗﻌ ﺪﯾﻞ ﻃﺮﯾ ﻖ ﺗﻨﻔﯿ ﺬ اﻟﺘﻌﻠﯿﻤ ﺎت ﻓ ﻲ‬
‫‪Acc‬‬ ‫‪Imm‬‬ ‫اﻟﺒﺮﻧ ﺎﻣﺞ‪ .‬و ھﻨ ﺎك ﻧﻮﻋ ﺎن ﻣ ﻦ ﺗﻌﻠﯿﻤ ﺎت اﻟﻘﻔ ﺰ‪ ،‬وھ ﻲ ‪ :‬اﻟﻘﻔ ﺰ‬
‫اﻟﻤﺸﺮوط و اﻟﻘﻔﺰ ﻏﯿﺮ اﻟﻤﺸﺮوط‪ .‬ﻓﻲ اﻟﻘﻔﺰ ﻏﯿﺮ اﻟﻤﺸﺮوط ﻻ ﯾﻮﺟ ﺪ‬
‫أي ﺷﺮوط ﻣﻦ أﺟ ﻞ ﺣ ﺪوث اﻟﻘﻔ ﺰ أﻣ ﺎ ﻓ ﻲ اﻟﻘﻔ ﺰ اﻟﻤ ﺸﺮوط ﻓ ﺈن اﻟﺤ ﺎﻻت اﻟ ﺸﺮﻃﯿﺔ اﻟﻤﻮﺟ ﻮدة ﻓ ﻲ ﻟﺤﻈ ﺔ ﺗﻨﻔﯿ ﺬ‬
‫ﺗﻌﻠﯿﻤﺔ اﻟﻘﻔﺰ ﺗﺘﺨﺬ اﻟﻘﺮار ﻓﯿﻤﺎ إذا ﺳﯿﺤﺪث اﻟﻘﻔﺰ أم ﻻ‪ ،‬ﻓﻔﻲ ﺣﺎل ﺗﺤﻘﻖ اﻟﺤ ﺎﻻت اﻟ ﺸﺮﻃﯿﺔ ﻓﺈﻧ ﮫ ﯾ ﺘﻢ اﻟﻘﻔ ﺰ‪ ،‬و إﻻ‬
‫ﯾُﺘﺎﺑﻊ اﻟﺘﻨﻔﯿﺬ ﺑﺎﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﻲ ﺗﻠﻲ ﺗﻌﻠﯿﻤﺔ اﻟﻘﻔﺰ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 33 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫‪ (1‬ﺗﻌﻠﯿﻤﺔ اﻟﻘﻔﺰ ﻏﯿﺮ اﻟﻤﺸﺮوط‬


‫و ھﻲ ﻣﺸﺮوﺣﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻘﻔﺰ إﻟﻰ اﻟﻌﻨﻮان‬
‫ﻗﻔﺰ ﻏﯿﺮ‬
‫‪JMP‬‬ ‫‪JMP operand‬‬ ‫اﻟﻤﺤﺪد ﺑﻮاﺳﻄﺔ‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ﻣﺸﺮوط‬
‫اﻟﻤﺘﺤﻮل ‪operand‬‬
‫ھﻨﺎك ﻧﻮﻋﺎن أﺳﺎﺳﯿﺎن ﻣﻦ اﻟﻘﻔﺰ ﻏﯿﺮ اﻟﻤﺸﺮوط اﻷول ﯾﺪﻋﻰ ﺑﺎﻟﻘﻔﺰ ﺿﻤﻦ اﻟﻤﻘﻄﻊ اﻟﺠﺰﺋ ﻲ‪ ،‬و اﻟﺜ ﺎﻧﻲ ھ ﻮ اﻟﻘﻔ ﺰ‬
‫ﺑﯿﻦ اﻟﻤﻘﺎﻃﻊ اﻟﺠﺰﺋﯿﺔ أي ﯾُﻤَﻜِﻨُﻨﺎ ﻣﻦ اﻟﻘﻔﺰ ﻣﻦ أﺣﺪ ﻣﻘﺎﻃﻊ اﻟﺸﯿﻔﺮة إﻟ ﻰ ﻣﻘﻄ ﻊ آﺧ ﺮ و إن ﺗﺤﻘﯿ ﻖ ھ ﺬا اﻟﻨ ﻮع ﻣ ﻦ‬
‫اﻟﻘﻔﺰ ﯾﺘﻄﻠﺐ ﻣﻨﺎ ﺗﻌﺪﯾﻞ ﻣﺤﺘﻮﯾﺎت ﻛﻞ ﻣﻦ ﻣﻘﻄﻊ ال‪ CS‬و ﻣﺴﺠﻞ ﻣﺆﺷﺮ اﻟﺘﻌﻠﯿﻤﺔ ‪ ، IP‬أﻣﺎ اﻟﻘﻔ ﺰ ﺿ ﻤﻦ اﻟﻤﻘﻄ ﻊ‬
‫اﻟﺠﺰﺋﻲ ﻓﺈﻧﮫ ﯾﺘﻄﻠﺐ ﻣﻨﺎ ﺗﻌﺪﯾﻞ ﻗﯿﻤﺔ ال‪ IP‬ﻓﻘﻂ‪.‬‬
‫إن اﻟﻤﺘﺤﻮﻻت اﻟﻤﺴﻤﻮﺣﺔ ﻟﺘﻌﻠﯿﻤﺔ اﻟﻘﻔﺰ ﻏﯿﺮ اﻟﻤﺸﺮوط ھﻲ ‪:‬‬
‫‪Operand‬‬
‫ﻣﺘﺤﻮل اﻟﻼﻓﺘﺔ اﻟﻘﺼﯿﺮة‬
‫‪Short_Label‬‬
‫ﻣﺘﺤﻮل اﻟﻼﻓﺘﺔ اﻟﻘﺮﯾﺒﺔ‬
‫‪Near_Label‬‬ ‫ﻟﻠﻘﻔﺰ ﺿﻤﻦ اﻟﻤﻘﻄﻊ اﻟﺠﺰﺋﻲ‬
‫ﻣﺘﺤﻮل ﻣﺆﺷﺮ ذاﻛﺮي ‪ 16‬ﺑﺖ‬
‫‪Memptr16‬‬
‫ﻣﺘﺤﻮل ﻣﺆﺷﺮ ﻣﺴﺠﻠﻲ ‪ 16‬ﺑﺖ‬
‫‪Regptr16‬‬
‫ﻣﺘﺤﻮل اﻟﻼﻓﺘﺔ اﻟﺒﻌﯿﺪة‬ ‫ﻟﻠﻘﻔﺰ ﺑﯿﻦ اﻟﻤﻘﺎﻃﻊ اﻟﺠﺰﺋﯿﺔ‬
‫‪Far_Labrl‬‬
‫ﻣﺘﺤﻮل ﻣﺆﺷﺮ ذاﻛﺮي ‪ 32‬ﺑﺖ‬
‫‪Memptr32‬‬

‫اﻟﻘﻔﺰ ﺿﻤﻦ اﻟﻤﻘﻄﻊ اﻟﺠﺰﺋﻲ‬


‫أ ( إن ﻣﺘﺤﻮﻻت اﻟﻼﻓﺘﺔ اﻟﻘ ﺼﯿﺮة و اﻟﻼﻓﺘ ﺔ اﻟﻘﺮﯾﺒ ﺔ ﺗﺤ ﺪد اﻟﻘﻔ ﺰ اﻟﻨ ﺴﺒﻲ ﻟﻌﻨ ﻮان ﺗﻌﻠﯿﻤ ﺔ اﻟﻘﻔ ﺰ ﻧﻔ ﺴﮭﺎ ﻓﻤ ﺜﻼُ ﻓ ﻲ‬
‫ﺗﻌﻠﯿﻤ ﺔ اﻟﻘﻔ ﺰ ﺑﺎﻟﻼﻓﺘ ﺔ اﻟﻘ ﺼﯿﺮة ﯾ ﺘﻢ ﺗ ﺸﻔﯿﺮ اﻟﻌ ﺪد ذي ‪ 8‬ﺑ ﺖ ﻛﻤﺘﺤ ﻮل ﻓ ﻮري ﻟﺘﺤﺪﯾ ﺪ اﻹزاﺣ ﺔ )‪ (Disp‬ذات‬
‫اﻹﺷﺎرة اﻟﺘﻲ ﺗﺸﯿﺮ إﻟﻰ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ اﻟﺘﻲ ﺳﯿﺘﻢ ﺗﻨﻔﯿ ﺬھﺎ ﻣ ﻦ ﺣﺠ ﺮة ﺗﻌﻠﯿﻤ ﺔ اﻟﻘﻔ ﺰ‪ ،‬و ﻋﻨ ﺪﻣﺎ ﺗﻨﻔ ﺬ ﺗﻌﻠﯿﻤ ﺔ اﻟﻘﻔ ﺰ‬
‫ﯾﻌﺎد ﺷﺤﻦ ال‪ IP‬ﺑﻘﯿﻤﺔ ﺟﺪﯾﺪة ﻣﻮﺿﺤﺔ ﻛﻤﺎ ﯾﻠﻲ‪:‬‬
‫ﻗﯿﻤ ﺔ ‪ IP‬اﻟﺠﺪﯾ ﺪة = ]) ﻗﯿﻤ ﺔ ‪ + IP‬ﻃ ﻮل ﺷ ﯿﻔﺮة ﺗﻌﻠﯿﻤ ﺔ اﻟﻘﻔ ﺰ ( ‪ +‬ﻣﻘ ﺪار اﻹزاﺣ ﺔ ذات اﻹﺷ ﺎرة ﺑﻌ ﺪ ﺗﻤﺪﯾ ﺪھﺎ‬
‫ﺑﺠﻌﻞ ﻣﺘﺤﻮل ‪ 8‬ﺑﺘﺎت ﺑﺎﻟﺸﻜﻞ ‪ 16‬ﺑﺖ [‬
‫إن اﻟﻘﯿﻤﺔ اﻟﺠﺪﯾﺪة ﻟـ ‪ IP‬ﻣﻊ ﻗﯿﻤﺔ ‪ CS‬اﻟﺤﺎﻟﯿﺔ ﺗﻌﻄﻲ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻟﻠﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ اﻟﺘﻲ ﺳﺘﺠﻠﺐ و ﺗﻨﻔﺬ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻟﯿﻜﻦ ﻟﺪﯾﻨﺎ‬
‫‪IP = 0112h‬‬
‫‪JMP disp ; disp = 0F2h‬‬
‫إن ﻋﻨﻮان ﺗﻌﻠﯿﻤﺔ اﻟﻘﻔﺰ ) ﻣﻮﺟﻮد ﺗﺤﺖ اﻟﻌﻨﻮان اﻟﻤﺨﺰن ﻓﻲ ‪ ، ( IP‬إذن ﺳﯿﺘﻢ اﻟﻘﻔ ﺰ إﻟ ﻰ اﻟﺘﻌﻠﯿﻤ ﺔ ذات اﻟﻌﻨ ﻮان‬
‫اﻟﺘﺎﻟﻲ‪:‬‬
‫‪ ) = 0112 + 2 + FFF2 = 0106h‬ﺑﻌ ﺪ ﺗﻤﺪﯾ ﺪ إﺷ ﺎرﺗﮭﺎ ( ‪ = IP + 2 + disp‬اﻟﻌﻨ ﻮان اﻟﻤﻨﻄﻘ ﻲ ‪address‬‬
‫)أھﻤﻠﻨﺎ ﺧﺎﻧﺔ اﻟﺤﻤﻞ(‬
‫ﺑﻤﺎ أن اﻟﻌﻨﻮان اﻟﻨﺎﺗﺞ أﺻﻐﺮ ﻣﻦ ﻋﻨﻮان ﺗﻌﻠﯿﻤﺔ اﻟﻘﻔ ﺰ ﻓﮭ ﺬا ﯾﻌﻨ ﻲ أﻧﻨ ﺎ ﻧﻘﻔ ﺰ إﻟ ﻰ ﺗﻌﻠﯿﻤ ﺔ ﺗ ﺴﺒﻖ ﺗﻌﻠﯿﻤ ﺔ اﻟﻘﻔ ﺰ أي‬
‫اﻟﻘﻔﺰ ﻧﺤﻮ اﻟــﻮراء ‪. 0106 < 0112‬‬

‫ﻣﺜﺎل آﺧﺮ‪:‬‬
‫‪IP = 0112h‬‬
‫‪JMP 04‬‬
‫‪Address = 0112 + 2 + 0004 = 0118h‬‬
‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 34 -‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻧﻼﺣﻆ أن ‪ 0118 > 0112‬ﻓﮭﺬا ﯾﻌﻨﻲ أن اﻟﻘﻔﺰ ﻧﺤﻮ اﻷﻣﺎم‪.‬‬


‫و ﻟﻠﺤﺼﻮل ﻋﻠﻰ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﯾﺠﺐ إﺿﺎﻓﺔ ﻣﻘﺪار ال‪ CS‬ﻟﻘﯿﻤﺔ ‪. address‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﺑﻤﺎ أن ﻣﺘﺤﻮل اﻟﻼﻓﺘﺔ اﻟﻘﺼﯿﺮة ذو ‪ 8‬ﺑﺘﺎت ﻓﮭﻮ ﯾﺴﻤﺢ ﺑﺎﻟﻘﻔﺰ ﻓ ﻲ اﻟﻤﺠ ﺎل ﻣ ﻦ ‪ -126‬إﻟ ﻰ ‪ +129‬و‬
‫ﺳﺒﺐ ذﻟﻚ أﻧﮫ إذا أﺿﻔﻨﺎ ﻃﻮل ﺷﯿﻔﺮة ﺗﻌﻠﯿﻤ ﺔ اﻟﻘﻔ ﺰ و ھ ﻮ ‪ 2‬ﺑﺎﯾ ﺖ إﻟ ﻰ اﻟﻤﺠ ﺎل اﻟﺘ ﺎﻟﻲ ﻣ ﻦ ‪ -128‬إﻟ ﻰ ‪+127‬‬
‫ﺳﻨﺤﺼﻞ ﻋﻠﻰ اﻟﻤﺠﺎل اﻟﺴﺎﺑﻖ‪ .‬أﻣﺎ ﻣﺘﺤﻮل اﻟﻼﻓﺘﺔ اﻟﻘﺮﯾﺒﺔ ﻓﮭﻮ ﻣﺘﺤﻮل ﻓﻮري ذو ‪ 16‬ﺑﺖ و ﻟﺬﻟﻚ ﯾ ﺴﻤﺢ ﺑ ﺎﻟﻘﻔﺰ‬
‫ﺿﻤﻦ ﻣﺠﺎل ﯾﺴﺎوي ‪ 32KB‬ﻧﺤﻮ اﻟﺨﻠﻒ أو ﻧﺤﻮ اﻷﻣﺎم ﻣﻦ ﻋﻨﻮان ﺗﻌﻠﯿﻤﺔ اﻟﻘﻔﺰ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪JMP label‬‬
‫ھﺬا ﯾﻌﻨﻲ اﻟﻘﻔﺰ إﻟﻰ ﻧﻘﻄﺔ ﻓﻲ اﻟﺒﺮﻧ ﺎﻣﺞ ﻣﻘﺎﺑﻠ ﺔ ﻟﻠﻤﺘﺤ ﻮل ‪ label‬ﺣﯿ ﺚ ﺗ ﺘﻢ إﺿ ﺎﻓﺔ ھ ﺬا اﻟﻤﺘﺤ ﻮل ) اﻹزاﺣ ﺔ ‪16‬‬
‫ﺑﺖ ( إﻟﻰ ﻗﯿﻤﺔ ال‪ IP‬و اﻟﻘﯿﻤﺔ اﻟﺠﺪﯾﺪة ﻟـ ‪ IP‬و اﻟﻘﯿﻤﺔ اﻟﺤﺎﻟﯿﺔ ﻓﻲ ‪ CS‬ﺗﻌﻄ ﻲ اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ ﻟﻠﺘﻌﻠﯿﻤ ﺔ اﻟﺘ ﻲ‬
‫ﺳﺘﻨﻔﺬ ‪.‬‬
‫ب( ﯾﻤﻜﻦ ﺗﺤﺪﯾﺪ اﻟﻘﻔﺰ إﻟﻰ ﻋﻨﻮان ﺑﺸﻜﻞ ﻏﯿﺮ ﻣﺒﺎﺷﺮ ﺑﻮاﺳﻄﺔ ﻣﺤﺘﻮﯾﺎت ﺣﺠﺮة ذاﻛ ﺮة أو ﻣﺤﺘﻮﯾ ﺎت ﻣ ﺴﺠﻞ أي‬
‫ﺑﺎﺳ ﺘﺨﺪام ﻣﺘﺤ ﻮل ﻣﺆﺷ ﺮ ذاﻛ ﺮي ‪ 16‬ﺑ ﺖ أو ﻣﺘﺤ ﻮل ﻣﺆﺷ ﺮ ﻣ ﺴﺠﻠﻲ ‪ 16‬ﺑ ﺖ و ھﻨ ﺎ أﯾ ﻀﺎً ﯾ ﺘﻢ اﻟﻘﻔ ﺰ ﺿ ﻤﻦ‬
‫ﻣﺠﺎل ‪.  32 KB‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪JMP BX‬‬
‫ﻓﻲ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﯾُﺴﺘﻌﻤﻞ ﻣﻀﻤﻮن اﻟﻤﺴﺠﻞ ‪ BX‬ﻣﻦ أﺟ ﻞ اﻹزاﺣ ﺔ و ھ ﺬا ﯾﻌﻨ ﻲ أن ﻗﯿﻤ ﺔ ‪ BX‬ﯾ ﺘﻢ ﺗﺤﻤﯿﻠﮭ ﺎ ﻓ ﻲ‬
‫‪ IP‬ﺛﻢ ﯾﺤﺴﺐ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻟﻠﺘﻌﻠﯿﻤﺔ اﻟﺘ ﻲ ﺳ ﯿﺘﻢ اﻟﻘﻔ ﺰ إﻟﯿﮭ ﺎ ﺑﺎﺳ ﺘﻌﻤﺎل اﻟﻤﺤﺘﻮﯾ ﺎت اﻟﺤﺎﻟﯿ ﺔ ﻟ ـ ‪ CS‬و اﻟﻘﯿﻤ ﺔ‬
‫اﻟﺠﺪﯾﺪة ﻟـ ‪. IP‬‬
‫ﺑﻔﺮض أن ‪:‬‬
‫‪BX = 0200h‬‬ ‫اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻟﻠﺘﻌﻠﯿﻤﺔ اﻟﺘﻲ ﺳﯿﺘﻢ اﻟﻘﻔﺰ‬
‫‪CS = 0100h‬‬ ‫إﻟﯿﮭﺎ‬
‫‪PA = ( CS x 10h ) + BX = 01000 + 0200 = 01200h‬‬
‫ﻣﻼﺣﻈ ﺔ ‪ :‬ﯾﻤﻜ ﻦ اﺳ ﺘﺨﺪام ﻣﺨﺘﻠ ﻒ أﻧ ﻮاع أﻧﻈﻤ ﺔ اﻟﻌﻨﻮﻧ ﺔ ﻟﺘﺤﺪﯾ ﺪ اﻟﻤﺘﺤ ﻮل اﻟﻤ ﺴﺘﻌﻤﻞ ﻛﻤﺆﺷ ﺮ ذاﻛ ﺮي ﻓﻤ ﺜ ً‬
‫ﻼ‬
‫]‪ JMP [SI‬ﻓﻔﻲ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﺗﺴﺘﻌﻤﻞ ﻣﺤﺘﻮﯾﺎت ‪ SI‬ﻛﻌﻨﻮان ﺣﺠﺮة اﻟﺬاﻛﺮة اﻟﺘﻲ ﺗﺤﺘ ﻮي ﻋﻠ ﻰ اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل‪،‬‬
‫ھﺬا اﻟﻌﻨﻮان ﯾﺘﻢ ﺗﺤﻤﯿﻠﮫ ﻓﻲ ‪ IP‬و اﻟﺬي ﯾُﺴﺘﻌﻤﻞ ﻣﻊ ﻣﺤﺘﻮﯾﺎت ‪ CS‬اﻟﺤﺎﻟﯿ ﺔ ﻟﺤ ﺴﺎب اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ ﻟﻠﺘﻌﻠﯿﻤ ﺔ‬
‫اﻟﺘﻲ ﺳﯿﺘﻢ اﻟﻘﻔﺰ إﻟﯿﮭﺎ و ﻋﺎدة ﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ ﺗﺴﺘﺨﺪم اﻟﻤﺴﺠﻼت اﻟﺘﺎﻟﯿﺔ ‪. DI, SI, BX:‬‬
‫اﻟﻘﻔﺰ ﺑﯿﻦ اﻟﻤﻘﺎﻃﻊ اﻟﺠﺰﺋﯿﺔ أو اﻟﻘﻔﺰ ﺧﺎرج اﻟﻤﻘﻄﻊ اﻟﺠﺰﺋﯿﺔ‬
‫أ( ﺗَﺴﺘﻌﻤِﻞ اﻟﻼﻓﺘﺔ اﻟﺒﻌﯿﺪة ﻣﺘﺤﻮﻻً ﻓﻮرﯾﺎً ذا ‪ 32‬ﺑﺖ ﻟﺘﺤﺪﯾﺪ اﻟﻘﻔﺰ إﻟﻰ ﻋﻨﻮان ﻣ ﺎ‪ .‬ﺣﯿ ﺚ ﯾ ﺘﻢ ﺗﺤﻤﯿ ﻞ اﻟ ـ ‪ 16‬ﺑ ﺖ‬
‫اﻷوﻟﻰ ﻣﻦ ھ ﺬا اﻟﻤﺘﺤ ﻮل ﻓ ﻲ ‪ IP‬و ﺗﻜ ﻮن ھ ﻲ اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل ﻧ ﺴﺒﺔ ﻟﻤﺤﺘﻮﯾ ﺎت اﻟﻤ ﺴﺠﻞ ‪ CS‬أﻣ ﺎ اﻟ ـ ‪ 16‬ﺑ ﺖ‬
‫اﻟﺜﺎﻧﯿﺔ ﻓﯿﺘﻢ ﺗﺤﻤﯿﻠﮭﺎ ﻓﻲ اﻟﻤﺴﺠﻞ ‪ CS‬و اﻟﺘﻲ ﺗﺤﺪد ﻣﻘﻄﻊ اﻟﺸﯿﻔﺮة اﻟﺠﺪﯾﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪JMP farlabel‬‬
‫ﺣﯿﺚ ‪ farlabel‬ھﻮ ﻣﺘﺤﻮل ﺑـ ‪ 32‬ﺑﺖ ) اﻟﻜﻠﻤﺔ اﻷول ﺗﺸﺤﻦ ﻓﻲ ‪ IP‬و اﻟﻜﻠﻤﺔ اﻟﺜﺎﻧﯿﺔ ﺗﺸﺤﻦ ﻓﻲ اﻟـ ‪.( CS‬‬
‫ب( إن اﻟﻄﺮﯾﻘﺔ ﻏﯿ ﺮ اﻟﻤﺒﺎﺷ ﺮة ﻟﺘﺤﺪﯾ ﺪ اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل و ﻋﻨ ﻮان ﻣﻘﻄ ﻊ اﻟ ﺸﯿﻔﺮة ﻣ ﻦ أﺟ ﻞ اﻟﻘﻔ ﺰ ﺑ ﯿﻦ اﻟﻤﻘ ﺎﻃﻊ‬
‫اﻟﺠﺰﺋﯿ ﺔ ھ ﻲ ﺑﺎﺳ ﺘﻌﻤﺎل ﻣﺘﺤ ﻮل ﻣﺆﺷ ﺮ ذاﻛ ﺮي ﺑ ـ ‪ 32‬ﺑ ﺖ‪ .‬و ﻓ ﻲ ھ ﺬه اﻟﺤﺎﻟ ﺔ ﻓ ﺈن أرﺑ ﻊ ﺑﺎﯾﺘ ﺎت ﻣ ﻦ اﻟ ﺬاﻛﺮة‬
‫ﻣﺘﺘﺎﺑﻌ ﺔ اﻋﺘﺒ ﺎراً ﻣ ﻦ اﻟﻌﻨ ﻮان اﻟﻤﺤ ﺪد ﺗﺤﺘ ﻮي ﻋﻠ ﻰ اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل و ﻋﻨ ﻮان ﻣﻘﻄ ﻊ اﻟ ﺸﯿﻔﺮة اﻟﺠﺪﯾ ﺪ ﻋﻠ ﻰ‬
‫اﻟﺘﺮﺗﯿﺐ‪ .‬و ھﻨﺎ أﯾﻀﺎً ﯾﻤﻜﻦ اﺳﺘﺨﺪام أي ﻧﻮع ﻣﻦ أﻧﻮاع أﻧﻈﻤﺔ اﻟﻌﻨﻮﻧﺔ اﻟﻤﺨﺘﻠﻔﺔ‪ ،‬ﻣﺜﺎل‪:‬‬
‫]‪ JMP farseg [DI‬ﻓﻔ ﻲ ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺔ ﺗُ ﺴﺘﻌﻤﻞ ﻣﺤﺘﻮﯾ ﺎت ‪ DS, DI‬ﻟﺤ ﺴﺎب ﻋﻨ ﻮان ﺣﺠ ﺮة اﻟ ﺬاﻛﺮة اﻟﺘ ﻲ‬
‫ﺗﺘﻀﻤﻦ اﻟﻜﻠﻤﺔ اﻷوﻟﻰ ﻟﻠﻤﺆﺷﺮ اﻟﺬي ﯾُﻌﺮﱢف اﻟﺤﺠﺮة اﻟﺘﻲ ﺳﯿﺘﻢ اﻟﻘﻔﺰ إﻟﯿﮭﺎ‪ ،‬ﻓﺈذا ﻛﺎن ‪:‬‬
‫إن اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ ﻟﻠﻤﺆﺷﺮ ھﻮ ‪:‬‬ ‫‪DI = 0200h‬‬
‫‪PA = DS x 10h + DI = 01000 + 0200 = 01200h‬‬ ‫‪DS = 0100h‬‬
‫و ﻟﺘﻜﻦ ﻣﺤﺘﻮﯾﺎت ھﺬه اﻟﺤﺠﺮة و اﻟﺤﺠﺮات اﻟﺘﻲ ﺗﻠﯿﮭﺎ ﻛﻤﺎ ھﻮ واﺿﺢ ﻓﻲ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 35 -‬‬
‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫) ‪Address ( h‬‬ ‫‪Content‬‬ ‫ﻗﯿﻤﺔ ‪ IP‬اﻟﺠﺪﯾﺪة ھﻲ ‪IP = 3010h‬‬


‫‪01200‬‬ ‫‪10‬‬ ‫ﻗﯿﻤﺔ ‪ CS‬اﻟﺠﺪﯾﺪة ھﻲ ‪CS = 0400h‬‬
‫إذن اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ ﻟﻠﺘﻌﻠﯿﻤ ﺔ اﻟﺘ ﻲ ﺳ ﯿﺘﻢ اﻟﻘﻔ ﺰ‬
‫‪01201‬‬ ‫‪30‬‬
‫إﻟﯿﮭﺎ ھﻮ‪:‬‬
‫‪01202‬‬ ‫‪00‬‬ ‫‪PA = CS x 10h + IP = 07010h‬‬
‫‪01203‬‬ ‫‪04‬‬

‫‪ (2‬ﺗﻌﻠﯿﻤﺔ اﻟﻘﻔﺰ اﻟﻤﺸﺮوط‬


‫و ھﻲ ﻣﺸﺮوﺣﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬

‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫ﻗﻔﺰ‬ ‫إذا ﺗﺤﻘﻖ اﻟﺸﺮط ‪ cc‬ﻓﺈﻧﮫ ﯾﺘﻢ اﻟﻘﻔﺰ إﻟﻰ اﻟﻌﻨﻮان‬
‫‪Jcc‬‬ ‫ﻣﺸﺮو‬ ‫ﻣﺘﺤﻮل ‪Jcc‬‬ ‫اﻟﻤﺤﺪد ﺑﻮاﺳﻄﺔ اﻟﻤﺘﺤﻮل و إﻻ ﻓﯿﺘﻢ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ط‬ ‫اﻟﺘﺎﻟﯿﺔ ﻟﺘﻌﻠﯿﻤﺔ اﻟﻘﻔﺰ‬

‫ھﻨﺎك ‪ 18‬ﻣﻦ ﺗﻌﻠﯿﻤﺎت اﻟﻘﻔﺰ اﻟﻤﺸﺮوط و ھﻲ ﻣﺸﺮوﺣﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬

‫ﺔ‬ ‫اﻟﻜﻠﻤ‬
‫اﻟﻤﻌﻨﻰ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬
‫‪JC‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن‬
‫‪CF = 1‬‬
‫‪JNC‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن‬
‫‪CF = 0‬‬
‫‪JO‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن‬
‫‪OF = 1‬‬
‫‪JNO‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن‬
‫‪OF = 0‬‬
‫‪JS‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن‬
‫‪SF = 1‬‬
‫‪JNS‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن‬
‫‪SF = 0‬‬
‫‪JCXZ‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن‬
‫‪CX = 0000‬‬
‫‪JE/JZ‬‬ ‫اﻟﻘﻔﺰ ﻓﻲ ﺣﺎﻟﺔ اﻟﺘﺴﺎوي‪/‬أو إذا ﻛﺎن اﻟﻨﺎﺗﺞ ﯾﺴﺎوي اﻟﺼﻔﺮ‬
‫‪JGE/JNL‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن أﻛﺒﺮ أو ﯾﺴﺎوي‪/‬اﻟﻘﻔﺰ إذا ﻟﻢ ﯾﻜﻦ أﺻﻐﺮ‬
‫‪JA/JNBE‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن ﻓﻮق‪/‬اﻟﻘﻔﺰ إذا ﻟﻢ ﯾﻜﻦ ﺗﺤﺖ أو ﯾﺴﺎوي‬
‫‪JAE/JNB‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن ﻓﻮق أو ﯾﺴﺎوي‪/‬اﻟﻘﻔﺰ إذا ﻟﻢ ﯾﻜﻦ ﺗﺤﺖ‬
‫‪JB/JNAE‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن ﺗﺤﺖ‪/‬اﻟﻘﻔﺰ إذا ﻟﻢ ﯾﻜﻦ ﻓﻮق أو ﯾﺴﺎوي‬
‫‪JBE/JNA‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن ﺗﺤﺖ أو ﯾﺴﺎوي‪/‬اﻟﻘﻔﺰ إذا ﻟﻢ ﯾﻜﻦ ﻓﻮق‬
‫‪JG/JNLE‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن أﻛﺒﺮ‪/‬اﻟﻘﻔﺰ إذا ﻟﻢ ﯾﻜﻦ أﺻﻐﺮ أو ﯾﺴﺎوي‬
‫‪JLE/JNG‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎن أﺻﻐﺮ أو ﯾﺴﺎوي‪/‬اﻟﻘﻔﺰ إذا ﻟﻢ ﯾﻜﻦ أﻛﺒﺮ‬
‫‪JNE/JNZ‬‬ ‫اﻟﻘﻔﺰ إذا ﻟﻢ ﯾﻜﻦ ﯾﺴﺎوي‪/‬اﻟﻘﻔﺰ إذا ﻛﺎن اﻟﻨﺎﺗﺞ ﯾﺴﺎوي ﻗﯿﻤﺔ ﻏﯿﺮ ﺻﻔﺮﯾﺔ‬
‫‪JNB/JBO‬‬ ‫اﻟﻘﻔﺰ إذا ﻛﺎﻧﺖ ﺧﺎﻧﺔ ‪ Parity‬ﻏﯿﺮ ﻣﻮﺟﻮدة‪/‬اﻟﻘﻔﺰ إذا ﻛﺎن ‪PF = 0‬‬
‫‪JP/JPE‬‬ ‫اﻟﻘﻔﺰ ﻓﻲ ﺣﺎﻟﺔ وﺟﻮد ﺧﺎﻧﺔ ‪/Parity‬اﻟﻘﻔﺰ إذا ﻛﺎن ‪PF = 1‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 36 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻟﻠﺘﻤﯿﯿﺰ ﺑﯿﻦ ﻣﻘﺎرﻧﺔ اﻷﻋﺪاد ذات اﻹﺷﺎرة و اﻷﻋﺪاد ﺑ ﺪون إﺷ ﺎرة ﻓ ﺈن ھﻨ ﺎك اﺳ ﻤﯿﻦ ﻣﺨﺘﻠﻔ ﯿﻦ ﯾﺒ ﺪو أﻧﮭﻤ ﺎ ﻧﻔ ﺲ‬
‫اﻟﺸﻲء ﻓﻲ ﺗﻌﻠﯿﻤﺎت اﻟﻘﻔﺰ و ھﻤﺎ ﻓﻮق ) ‪ ( A‬و ﺗﺤﺖ ) ‪ ( B‬ﻣﻦ أﺟﻞ ﻣﻘﺎرﻧﺔ اﻷﻋﺪاد ﺑ ﺪون إﺷ ﺎرة‪ ،‬و أﺻ ﻐﺮ )‬
‫‪ ( L‬و أﻛﺒﺮ ) ‪ ( G‬ﻣﻦ أﺟﻞ ﻣﻘﺎرﻧﺔ اﻷﻋ ﺪاد ذات اﻹﺷ ﺎرة‪ .‬ﻓﻤ ﺜﻼً اﻟﻌ ﺪد ‪ ABCDh‬ھ ﻮ ﻓ ﻮق اﻟﻌ ﺪد ‪ 1234h‬إذا‬
‫اﻋﺘﺒﺮﻧﺎھﻤﺎ ﻋﺪدﯾﻦ ﺑﺪون إﺷﺎرة‪ .‬أﻣﺎ إذا اﻋﺘﺒﺮﻧﺎھﻤﺎ ﺑﺈﺷﺎرة ﻓﺈن ‪ ABCDh‬ھﻮ ﻋ ﺪد ﺳ ﺎﻟﺐ و ‪ 1234h‬ھ ﻮ ﻋ ﺪد‬
‫ﻣﻮﺟﺐ و ﻟﺬﻟﻚ ‪ ABCDh‬ھﻮ أﺻﻐﺮ ﻣﻦ ‪.1234h‬‬

‫اﻟﺒﺮاﻣﺞ اﻟﻔﺮﻋﯿﺔ ‪SUBROUTINES‬‬


‫ھ ﻲ إﺟ ﺮاءات ﻣﻜﺘﻮﺑ ﺔ ﺑ ﺸﻜﻞ ﻣ ﺴﺘﻘﻞ ﻋ ﻦ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﺮﺋﯿ ﺴﻲ‪ .‬ﻣﺘ ﻰ وﺟ ﺐ ﻋﻠ ﻰ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﺮﺋﯿ ﺴﻲ أن ﯾﻨﺠ ﺰ‬
‫اﻟﻮﻇﯿﻔﺔ اﻟﻤﺤﺪدة ﺑﻮاﺳﻄﺔ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻲ ﻓﺈﻧﮫ ﯾﺴﺘﺪﻋﻲ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ إﻟ ﻰ اﻟﻌﻤ ﻞ و ﻣ ﻦ أﺟ ﻞ ھ ﺬا ﯾﺠ ﺐ‬
‫أن ﯾﺘﺤﻮل اﻟﺘﺤﻜﻢ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺮﺋﯿﺴﻲ إﻟﻰ ﻧﻘﻄﺔ اﻟﺒﺪاﯾﺔ ﻓ ﻲ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ‪ ،‬ﺣﯿ ﺚ ﯾ ﺴﺘﻤﺮ ﺗﻨﻔﯿ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ‬
‫‪subroutine‬‬ ‫‪Main program‬‬

‫‪2‬‬
‫‪1‬‬

‫‪CALL SUB‬‬
‫‪6‬‬
‫‪7‬‬

‫‪3‬‬ ‫‪5‬‬

‫‪4‬‬ ‫‪CALL SUB‬‬

‫‪8‬‬
‫‪9‬‬

‫‪RETURN‬‬

‫اﻟﻔﺮﻋﻲ‪ ،‬و ﻋﻨﺪ اﻛﺘﻤ ﺎل اﻟﺘﻨﻔﯿ ﺬ ﯾﻌ ﻮد اﻟ ﺘﺤﻜﻢ إﻟ ﻰ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﺮﺋﯿ ﺴﻲ ﺑﺎﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺘﺎﻟﯿ ﺔ ﻟﺘﻌﻠﯿﻤ ﺔ ﻣﻨ ﺎداة اﻟﺒﺮﻧ ﺎﻣﺞ‬
‫اﻟﻔﺮﻋﻲ‪:‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫إن اﻟﻔﺮق ﺑﯿﻦ اﻟﻌﻤﻞ ﻟﻤﻨﺎداة اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻲ و اﻟﻘﻔ ﺰ ھ ﻮ أن ﻣﻨ ﺎداة اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ ﻻ ﺗﻨ ﺘﺞ ﻗﻔ ﺰاً ﻓﻘ ﻂ إﻟ ﻰ‬
‫اﻟﻌﻨﻮان اﻟﻤﻨﺎﺳﺐ ﻓﻲ ذاﻛﺮة ﺗﺨﺰﯾﻦ اﻟﺒﺮﻧ ﺎﻣﺞ و ﻟﻜﻨﮭ ﺎ أﯾ ﻀﺎً ﺗﻤﻠ ﻚ ﺗﻘﻨﯿ ﺔ ﻣ ﻦ أﺟ ﻞ ﺣﻔ ﻆ اﻟﻤﻌﻠﻮﻣ ﺎت ﻣﺜ ﻞ ‪ IP‬و‬
‫‪ CS‬اﻟﺘﻲ ﺗﻜﻮن ﻣﻄﻠﻮﺑﺔ ﻟﻠﻌﻮدة إﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺮﺋﯿﺴﻲ‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 37 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﺗﻌﻠﯿﻤﺎت اﻟﻤﻨﺎداة و اﻟﻌﻮدة‬


‫ﻛﻼً ھﺎﺗﯿﻦ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ ﻣﻌًﺎ ﺗُﺰودان ﺗﻘﻨﯿ ﺔ ﻣ ﻦ أﺟ ﻞ اﺳ ﺘﺪﻋﺎء اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ إﻟ ﻰ اﻟﻌﻤ ﻞ و إﻋ ﺎدة اﻟ ﺘﺤﻜﻢ إﻟ ﻰ‬
‫اﻟﺒﺮﻧﺎﻣﺞ اﻷﺳﺎﺳﻲ ﻟﻤﺘﺎﺑﻌﺔ ﺗﻨﻔﯿﺬه‪ .‬إن ﺗﻌﻠﯿﻤﺔ اﻟﻤﻨﺎداة ﻣﺸﺮوﺣﺔ ﻓﻲ اﻟﺠﺪول‪:‬‬
‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫ﯾُﺘﺎﺑﻊ اﻟﺘﻨﻔﯿﺬ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻲ ﻣﻦ‬
‫اﻟﻌﻨﻮان اﻟﻤﺤﺪد ﺑﻮاﺳﻄﺔ اﻟﻤﺘﺤﻮل‬
‫ﻣﻨﺎداة‬
‫‪ operand‬اﻟﻤﻮﺟﻮد ﻓﻲ ﺗﻌﻠﯿﻤﺔ‬
‫‪CALL‬‬ ‫ﺑﺮﻧﺎﻣﺞ‬ ‫‪CALL operand‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫اﻟﻤﻨﺎداة‪ .‬و اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﻄﻠﻮﺑﺔ ﻣﻦ‬
‫ﻓﺮﻋﻲ‬
‫أﺟﻞ اﻟﻌﻮدة ﻣﺜﻞ ‪ IP‬و ‪ CS‬ﺗُﺤﻔﻆ ﻓﻲ‬
‫اﻟﻤﻜﺪس‬
‫ھﻨﺎك ‪ 5‬أﻧﻮاع ﻟﻠﻤﺘﺤﻮﻻت اﻟﻤﺴﻤﻮح ﺑﺎﺳﺘﺨﺪاﻣﮭﺎ ﻣﻊ ﺗﻌﻠﯿﻤﺔ اﻟﻤﻨﺎداة و ھﻲ‪:‬‬
‫‪OPERAND‬‬
‫‪Near_pro‬‬
‫ﻟﻠﻤﻨﺎداة ﺿﻤﻦ اﻟﻤﻘﻄﻊ‬
‫‪Memptr16‬‬
‫اﻟﺠﺰﺋﻲ‬
‫‪Regptr16‬‬
‫‪Far_proc‬‬ ‫ﻟﻠﻤﻨﺎداة ﺧﺎرج اﻟﻤﻘﻄﻊ‬
‫‪Memptr32‬‬ ‫اﻟﺠﺰﺋﻲ‬
‫إن اﻟﻤﺘﺤ ﻮﻻت اﻟﺜﻼﺛ ﺔ اﻷوﻟ ﻰ ﻣﺨﺼ ﺼﺔ ﻟﻠﻤﻨ ﺎداة ﺿ ﻤﻦ اﻟﻤﻘﻄ ﻊ اﻟﺠﺰﺋ ﻲ ﻟﻠﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ ) أي اﻟﺒﺮﻧ ﺎﻣﺞ‬
‫اﻟﺮﺋﯿ ﺴﻲ و اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ ﯾﻘﻌ ﺎن ﻓ ﻲ ﻧﻔ ﺲ ﻣﻘﻄ ﻊ اﻟ ﺸﯿﻔﺮة ( ﺣﯿ ﺚ أن ﺗﻨﻔﯿ ﺬ ﺗﻌﻠﯿﻤ ﺔ اﻟﻤﻨ ﺎداة ﯾ ﺴﺒﺐ ﺣﻔ ﻆ‬
‫ﻣﺤﺘﻮﯾﺎت ‪ IP‬ﻓﻲ اﻟﻤﻜﺪس ﻷﻧﮫ ﺳ ﻮف ﯾ ﺘﻢ ﺗﻌ ﺪﯾﻞ ﻗﯿﻤ ﺔ ‪ IP‬آﻟﯿ ﺎً ﻟﺘ ﺘﻼﺋﻢ ﻣ ﻊ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ‪ .‬و ﻋﻨﺪﺋ ﺬ ﯾ ﻨﻘﺺ‬
‫ﻣﺆﺷﺮ اﻟﻤﻜﺪس ﺑﻤﻘﺪار ‪ ، 2‬إن اﻟﻘﯿﻤﺔ اﻟﻤﺤﻔﻮﻇﺔ ﻓﻲ ‪ IP‬ﺿﻤﻦ اﻟﻤﻜﺪس ھ ﻲ ﻋﻨ ﻮان اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺘ ﻲ ﺗﻠ ﻲ ﺗﻌﻠﯿﻤ ﺔ‬
‫اﻟﻤﻨﺎداة‪.‬‬
‫ﺑﻌﺪ وﺿﻊ ﻗﯿﻤﺔ ‪ IP‬ﻓﻲ اﻟﻤﻜﺪس ) أي ﺣﻔﻆ اﻟﻌﻨﻮان اﻟﺬي ﺳﻨﻌﻮد إﻟﯿ ﮫ ﺑﻌ ﺪ ﺗﻨﻔﯿ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ ( ﯾ ﺘﻢ ﺷ ﺤﻦ‬
‫‪ IP‬ﺑﻌﻨﻮان و ﺑﻘﯿﻤﺔ ﺟﺪﯾﺪة ذات ‪ 16‬ﺑﺖ ھ ﺬه اﻟﻘﯿﻤ ﺔ ﺗ ﺸﯿﺮ إﻟ ﻰ ﻋﻨ ﻮان اﻟﺘﻌﻠﯿﻤ ﺔ اﻷوﻟ ﻰ ﻣ ﻦ ﺗﻌﻠﯿﻤ ﺎت اﻟﺒﺮﻧ ﺎﻣﺞ‬
‫اﻟﻔﺮﻋﻲ اﻟﻤﺨﺰﻧﺔ ﻓﻲ اﻟﺬاﻛﺮة‪ ،‬و ﯾﻤﻜﻦ ذﻛﺮ ﺗﻌﻠﯿﻤﺔ اﻟﻤﻨ ﺎداة ﺿ ﻤﻦ اﻟﻤﻘﻄ ﻊ اﻟﺠﺰﺋ ﻲ ﻋﻠ ﻰ اﻟ ﺸﻜﻞ اﻟﺘ ﺎﻟﻲ ﻛﺄﻣﺜﻠ ﺔ‬
‫ﻋﻠﻰ ﻣﺘﺤﻮات اﻟﺠﺪول اﻟﺴﺎﺑﻖ و ﻋﻠﻰ اﻟﺘﺮﺗﯿﺐ‪:‬‬
‫‪CALL near_proc‬‬
‫]‪CALL [SI‬‬
‫‪CALL BX‬‬
‫أﻣﺎ اﻟﻨﻮع اﻵﺧﺮ ﻟﺘﻌﻠﯿﻤﺔ اﻟﻤﻨﺎداة ) اﻟﻤﻨ ﺎداة ﺧ ﺎرج اﻟﻤﻘﻄ ﻊ اﻟﺠﺰﺋ ﻲ ( ﻓﮭ ﻮ ﯾ ﺴﻤﺢ ﻟﻠﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ ﺑ ﺄن ﯾﻜﻤ ﻦ‬
‫ﻓﻲ ﻣﻘﻄﻊ ﺷﯿﻔﺮة آﺧﺮ‪ ،‬و ﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ ﺗﺴﺘﺨﺪم اﻟﻤﺘﺤﻮﻻت اﻟﺘﺎﻟﯿﺔ ‪ Memptr32 ، Far_pro‬ﻛﻤ ﺎ ھ ﻮ واﺿ ﺢ‬
‫ﻓﻲ اﻟﺠﺪول اﻟﺴﺎﺑﻖ‪ .‬ﺗﺤﺪد ھﺬه اﻟﻤﺘﺤﻮﻻت ﻛﻼً ﻣﻦ اﻟﻌﻨﻮان اﻟﺠﺪﯾﺪ ﻟـ ‪ IP‬و ﻋﻨﻮان اﻟﻤﻘﻄﻊ اﻟﺠﺪﯾ ﺪ ﻟ ـ ‪ . CS‬ﻓ ﻲ‬
‫ﻛﻠﺘ ﺎ اﻟﺤ ﺎﻟﺘﯿﻦ ﻓ ﺈن ﺗﻨﻔﯿ ﺬ ﺗﻌﻠﯿﻤ ﺔ اﻟﻤﻨ ﺎداة ﯾ ﺴﺒﺐ ﺣﻔ ﻆ ﻣﺤﺘﻮﯾ ﺎت اﻟﻤ ﺴﺠﻼت ‪ CS‬ﺛ ﻢ ‪ IP‬ﻓ ﻲ اﻟﻤﻜ ﺪس و ﻣ ﻦ ﺛ ﻢ‬
‫ﺗﺤﻤﯿ ﻞ اﻟﻘ ﯿﻢ اﻟﺠﺪﯾ ﺪة اﻟﻤﺤ ﺪدة ﺑ ﺎﻟﻤﺘﺤﻮل ‪ operand‬ﻓ ﻲ ‪ IP‬و ‪ . CS‬إن اﻟﻘ ﯿﻢ اﻟﻤﺨﺘﺰﻧ ﺔ ﻟ ـ ‪ CS‬و ‪ IP‬ﻓ ﻲ‬
‫اﻟﻤﻜﺪس ﺗﺴﻤﺢ ﺑﺎﻟﻌﻮدة إﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺮﺋﯿﺴﻲ ﻣ ﻦ ﻣﻘﻄ ﻊ ﺷ ﯿﻔﺮة آﺧ ﺮ‪ .‬إن اﻟﻤﺘﺤ ﻮل ‪ Far_proc‬ﯾﻤﺜ ﻞ ﻣﺘﺤ ﻮﻻً‬
‫ﻓﻮرﯾ ﺎً ﺑ ـ ‪ 32‬ﺑ ﺖ و اﻟ ﺬي ﯾﻜ ﻮن ﻣﺨﺰﻧ ﺎً ﻓ ﻲ اﻟﺒﺎﯾﺘ ﺎت اﻷرﺑﻌ ﺔ اﻟﺘ ﻲ ﺗﻠ ﻲ رﻣ ﺰ اﻟﺘﻌﻠﯿﻤ ﺔ ) ‪ ( opcode‬ﻟﺘﻌﻠﯿﻤ ﺔ‬
‫اﻟﻤﻨﺎداة ﻓﻲ ذاﻛﺮة اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬
‫‪ CALL 01234321‬ﺣﯿﺚ أن ھﺎﺗﺎن اﻟﻜﻠﻤﺘﺎن ﯾﺘﻢ ﺗﺤﻤﯿﻠﮭﻤﺎ ﻣﺒﺎﺷﺮة ﻣﻦ ذاﻛﺮة ﺗﺨﺰﯾﻦ اﻟﺒﺮﻧ ﺎﻣﺞ ﻓ ﻲ ‪ IP‬و ‪CS‬‬
‫ﺣﯿﺚ ‪ CS‬ھﻮ ﻣﻘﻄﻊ اﻟﺸﯿﻔﺮة ﻟﻠﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻲ‪ .‬إن ﻋﻨﻮان اﻟﺘﻌﻠﯿﻤﺔ اﻷوﻟﻰ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋ ﻲ ﯾﻜ ﻮن ﻣﺤ ﺪداً‬
‫ﺑﺎﻟﻜﻠﻤﺔ اﻷوﻟﻰ ﺑﻌﺪ ﺗﻌﻠﯿﻤﺔ ‪ CALL‬أي ﯾﺨﺰن ﺿﻤﻦ ‪ . IP‬أﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﺘﺤﻮل اﻟﻤﺆﺷﺮ ﻣ ﻦ ﻧ ﻮع ذاﻛ ﺮي ﺑ ـ ‪32‬‬
‫ﺑ ﺖ ﻓ ﺈن اﻟﻤﺆﺷ ﺮ ﻟﻠﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ ﯾﻜ ﻮن ﻣﺨﺰﻧ ﺎً ﻛﺄرﺑﻌ ﺔ ﺑﺎﯾﺘ ﺎت ﻓ ﻲ ذاﻛ ﺮة اﻟﻤﻌﻄﯿ ﺎت‪ ،‬و اﻟﺤﺠ ﺮة اﻷوﻟ ﻰ‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 38 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻟﻠﻤﺆﺷﺮ ﯾﻤﻜﻦ ﺗﺤﺪﯾﺪھﺎ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﺑﻮاﺳﻄﺔ أﺣﺪ اﻟﻤﺴﺠﻼت ) اﻟﻤﺜﺎل ھﻨﺎ ھﻮ ﻧﻔﺲ ﻣﺜﺎل اﻟﻘﻔﺰ ‪JMP farseg‬‬
‫]‪ [DI‬اﻟﺴﺎﺑﻖ (‪.‬‬

‫إن ﻛﻞ ﺑﺮﻧﺎﻣﺞ ﻓﺮﻋﻲ ﯾﺠﺐ أن ﯾﻨﺘﮭﻲ ﺑﺘﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﻲ ﺗﻌﯿ ﺪ اﻟ ﺘﺤﻜﻢ إﻟ ﻰ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﺮﺋﯿ ﺴﻲ و ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺔ‬
‫ھﻲ ﺗﻌﻠﯿﻤﺔ اﻟﻌﻮدة ‪ RET‬و ھﻲ ﻣﺸﺮوﺣﺔ ﺑﺎﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺘﺄﺛﺮة‬
‫اﻟﻌﻮدة إﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ‬
‫‪RET‬‬ ‫‪RET/RET operand‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫اﻟﻤُﺴﺘﺪﻋِﻲ‬

‫اﻟﻌ ﻮدة إﻟ ﻰ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻤ ﺴﺘﺪﻋﻲ ﻋ ﻦ ﻃﺮﯾ ﻖ إﻋ ﺎدة ﺗﺨ ﺰﯾﻦ ﻗ ﯿﻢ ‪ IP‬ﻓﻘ ﻂ أو ‪ IP‬و ‪ CS‬ﻣﻌ ًﺎ‬
‫)ﺣﺴﺐ ﻧﻮع ﺗﻌﻠﯿﻤﺔ اﻟﻤﻨﺎداة أي ﺿﻤﻦ اﻟﻤﻘﻄﻊ اﻟﺠﺰﺋ ﻲ أو ﺧﺎرﺟ ﮫ( ﻣ ﻦ أﺟ ﻞ اﻟﻤﺘﺤ ﻮل ‪ . Far_pro‬و إذا ﻛ ﺎن‬
‫اﻟﻤﺘﺤ ﻮل )‪ (operand‬ﻣﻮﺟ ﻮداً ﻓ ﻲ ﺗﻌﻠﯿﻤ ﺔ اﻟﻌ ﻮدة ‪ RET‬ﻓﯿﺠ ﺐ إﺿ ﺎﻓﺘﮫ إﻟ ﻰ ﻣﺤﺘﻮﯾ ﺎت ‪ . SP‬ھ ﺬا و إن‬
‫اﻟﻤﺘﺤﻮل إذا وﺟﺪ ﻓﻲ ﺗﻌﻠﯿﻤﺔ اﻟﻌﻮدة ﻓﮭﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺘﺤﻮل إزاﺣﺔ ﺑـ ‪ 16‬ﺑﺖ‪.‬‬
‫ﺗﺎﺳﻌﺎً ‪ -‬ﺗﻌﻠﯿﻤﺎت اﻟﺪﻓﻊ و اﻟﺴﺤﺐ‬
‫إن اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﻤ ﺴﺘﺨﺪﻣﺔ ﻟﺤﻔ ﻆ اﻟﺒ ﺎراﻣﺘﺮات ﻓ ﻲ اﻟﻤﻜ ﺪس ھ ﻲ ﺗﻌﻠﯿﻤ ﺔ اﻟ ﺪﻓﻊ ‪ PUSH‬و اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﻤ ﺴﺘﺨﺪﻣﺔ‬
‫ﻻﺳﺘﺮﺟﺎﻋﮭﺎ ھﻲ ﺗﻌﻠﯿﻤﺔ ‪ . POP‬ﺑﻌﺪ ﺳﯿﺎق اﻟﺘﺤﻮﯾﻞ إﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻲ ﻧﺠﺪ أﻧﮫ ﻣﻦ اﻟ ﻀﺮوري ﻋ ﺎدة ﺣﻔ ﻆ‬
‫ﻣﺤﺘﻮﯾﺎت اﻟﻤﺴﺠﻼت اﻟﺮﺋﯿﺴﯿﺔ أو ﺑﻌ ﺾ ﺑ ﺎراﻣﺘﺮات اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﺮﺋﯿ ﺴﻲ ھ ﺬه اﻟﻘ ﯿﻢ ﯾ ﺘﻢ ﺣﻔﻈﮭ ﺎ ﺑﻮاﺳ ﻄﺔ دﻓﻌﮭ ﺎ‬
‫إﻟ ﻰ اﻟﻤﻜ ﺪس‪ .‬و ﺑﮭ ﺬه اﻟﻄﺮﯾﻘ ﺔ ﯾ ﺘﻢ ﺣﻔ ﻆ اﻟﻤﺤﺘﻮﯾ ﺎت ﺳ ﻠﯿﻤﺔ ﻓ ﻲ ﻣﻘﻄ ﻊ اﻟﻤﻜ ﺪس ﻟﻠ ﺬاﻛﺮة أﺛﻨ ﺎء ﺗﻨﻔﯿ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ‬
‫اﻟﻔﺮﻋﻲ‪ ،‬و ﻗﺒﻞ اﻟﻌﻮدة إﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺮﺋﯿﺴﻲ ﻓﺈن اﻟﻤﺴﺠﻼت اﻟﻤﺤﻔﻮﻇﺔ و ﺑﺎراﻣﺘﺮات اﻟﺒﺮﻧﺎﻣﺞ اﻟﺮﺋﯿ ﺴﻲ ﯾُﻌ ﺎد‬
‫ﺗﺨﺰﯾﻨﮭ ﺎ ﺑﻮاﺳ ﻄﺔ ﺳ ﺤﺐ اﻟﻘ ﯿﻢ اﻟﻤﺤﻔﻮﻇ ﺔ ﻣ ﻦ اﻟﻤﻜ ﺪس‪ .‬ﻟ ﺬﻟﻚ ﻓ ﺈن اﻟﺒﻨﯿ ﺔ اﻟﻨﻤﻮذﺟﯿ ﺔ ﻟﻠﺒﺮﻧ ﺎﻣﺞ اﻟﻔﺮﻋ ﻲ ﺗﻜ ﻮن‬
‫ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪PUSH xx‬‬
‫ﻟﺤﻔﻆ اﻟﻤﺴﺠﻼت و اﻟﺒﺎراﻣﺘﺮات ﻓﻲ اﻟﻤﻜﺪس‬ ‫‪PUSH yy‬‬
‫‪PUSH zz‬‬
‫‪-----------‬‬
‫ﺟﺴﻢ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻲ‬ ‫‪-----------‬‬
‫‪-----------‬‬
‫‪POP zz‬‬
‫ﻻﺳﺘﺮﺟﺎع اﻟﻤﺴﺠﻼت و اﻟﺒﺎراﻣﺘﺮات ﻣﻦ‬ ‫ﻧﻼﺣﻆ أﻧﮫ ﯾﺘﻢ اﻻﺳﺘﺮﺟﺎع ھﻨﺎ‬
‫‪POP yy‬‬
‫اﻟﻤﻜﺪس‬ ‫ﺑﺸﻜﻞ‬
‫ﻋﻜﺴﻲ و ذﻟﻚ ﻷن ﻣﺒﺪأ ﻋﻤﻞ‬
‫‪POP xx‬‬
‫اﻟﻤﻜﺪس‬
‫ﻟﻠﻌﻮدة إﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﺴﺘﺪﻋﻲ‬ ‫ھﻮ ‪RET LIFO‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﯾﺘﻌﺎﻣﻞ اﻟﻤﻜﺪس ﻣﻊ ﻛﻠﻤﺎت و ﻟﯿﺲ ﻣﻊ ﺑﺎﯾﺘﺎت‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 39 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﺗﻌﻠﯿﻤﺎت ‪PUSH, POP‬‬


‫و ھﻲ ﻣﺸﺮوﺣﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺘﺄﺛﺮة‬
‫‪PUSH‬‬ ‫دﻓﻊ ﻛﻠﻤﺔ إﻟﻰ اﻟﻤﻜﺪس‬ ‫‪PUSH S‬‬ ‫))‪S → ((SP‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫‪POP‬‬ ‫ﺳﺤﺐ ﻛﻠﻤﺔ ﻣﻦ اﻟﻤﻜﺪس‬ ‫‪POP D‬‬ ‫‪((SP)) → D‬‬ ‫ﻻ ﯾﻮﺟﺪ‬

‫اﻟﻤﻜﺪس‪ ،‬ﻣﺴﺠﻞ ﻣﻘﻄﻊ اﻟﻤﻜﺪس ‪، SS‬ﻣﺆﺷﺮ اﻟﻤﻜﺪس ‪SP‬‬


‫أﺛﻨﺎء ﻋﻤﻠﯿﺎت اﻟﻤﻘﺎﻃﻌﺔ وﻣﻨﺎداة اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻲ ﯾﺘﻢ دﻓﻊ ﻣﺤﺘﻮﯾﺎت اﻟﻤ ﺴﺠﻼت اﻟﺪاﺧﻠﯿ ﺔ اﻟﻤﻌّﯿﻨ ﺔ ﺑﺎﻟﻤﻌ ﺎﻟﺞ إﻟ ﻰ‬
‫ﻗﺴﻢ ﻣﻦ اﻟﺬاﻛﺮة ﯾﺪﻋﻰ ﺑﺎﻟﻤﻜﺪس ﺣﯿﺚ ﺗﺒﻘ ﻰ ھ ﺬه اﻟﻤﺤﺘﻮﯾ ﺎت ھﻨ ﺎك ﺑ ﺸﻜﻞ ﻣﺆﻗ ﺖ‪ .‬وﻋﻨ ﺪ إﻛﻤ ﺎل روﺗ ﯿﻦ ﺧﺪﻣ ﺔ‬
‫اﻟﻤﻘﺎﻃﻌﺔ أو اﻟﺒﺮﻧﺎﻣﺞ اﻟﻔﺮﻋﻲ ﯾﺘﻢ ﺳﺤﺐ ھﺬه اﻟﻘﯿﻢ ﻣﻦ اﻟﻤﻜﺪس وﺗﻮﺿﻊ ﻓﻲ ﻧﻔﺲ اﻟﻤ ﺴﺠﻞ اﻟ ﺪاﺧﻠﻲ ﺣﯿ ﺚ ﻛ ﺎن‬
‫ﯾﺤﺘﻮھﺎ أﺻﻼً‪ .‬ﻓﻤﺜﻼً ﻋﻨﺪﻣﺎ ﺗﺤﺪث اﻟﻤﻘﺎﻃﻌﺔ ﻓ ﺈن اﻟﻤﻌ ﺎﻟﺞ و ﺑ ﺸﻜﻞ أوﺗﻮﻣ ﺎﺗﯿﻜﻲ ﯾ ﺪﻓﻊ ﺑﻤ ﺴﺠﻞ اﻷﻋ ﻼم‪ ،‬اﻟﻘﯿﻤ ﺔ‬
‫اﻟﺤﺎﻟﯿ ﺔ ﻓ ﻲ ‪ ، CS‬و اﻟﻘﯿﻤ ﺔ اﻟﺤﺎﻟﯿ ﺔ ﻓ ﻲ ‪ IP‬إﻟ ﻰ اﻟﻤﻜ ﺪس‪ .‬ﯾﻤﻜ ﻦ اﻟﺤ ﺼﻮل ﻋﻠ ﻰ ﻣﻘﻄ ﻊ ﻣﻜ ﺪس ﺟﺪﯾ ﺪ ﺑﺒ ﺴﺎﻃﺔ‬
‫ﺑﻌﻨﻮﻧﺔ ‪ SS‬ﺑﺮﻣﺠﯿﺎً ﻣﻦ ﺟﺪﯾﺪ‪ .‬و إن ﻣﺆﺷﺮ اﻟﻤﻜﺪس ‪ SP‬ﯾﺤﺘﻮي ﻋﻠﻰ اﻟﻌﻨﻮان اﻟﻔﻌﺎل ﻧﺴﺒﺔ ﻟﻠﻘﯿﻤ ﺔ ﻓ ﻲ ‪ . SS‬و‬
‫اﻟﻌﻨﻮان اﻟﻤﺸﺘﻖ ﻣﻦ ﻣﺤﺘﻮﯾﺎت ‪ SS‬و ‪ SP‬ھﻮ اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ ﻟﺤﺠ ﺮة اﻟﺘﺨ ﺰﯾﻦ اﻷﺧﯿ ﺮة ﻓ ﻲ اﻟﻤﻜ ﺪس )ﻗﻤ ﺔ‬
‫اﻟﻤﻜﺪس( اﻟﺘﻲ ﺗﻢﱠ دﻓﻊ اﻟﻤﻌﻄﯿﺎت إﻟﯿﮭﺎ‪ .‬إن اﻟﻘﯿﻤﺔ ﻓﻲ ﻣﺆﺷﺮ اﻟﻤﻜﺪس ﺗﺒﺪأ ﺑـ ‪ FFFFh‬ﻋﻨﺪ ﺑﺪء ﺗ ﺸﻐﯿﻞ اﻟﻤﻌ ﺎﻟﺞ‪.‬‬
‫و إن ﺟﻤﻊ ھﺬه اﻟﻘﯿﻤﺔ ﻣﻊ اﻟﻘﯿﻤﺔ اﻟﺤﺎﻟﯿﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ‪ SS‬ﯾﻌﻄ ﻲ اﻟﺤﺠ ﺮة ذات اﻟﻌﻨ ﻮان اﻟﻌﻠ ﻮي ﻓ ﻲ اﻟﻤﻜ ﺪس‬
‫)ﻗﺎﻋﺪة اﻟﻤﻜﺪس(‪ .‬ﺑﻤﺎ أن اﻟﻤﻌﻄﯿﺎت اﻟﻤﻨﻘﻮﻟﺔ ﻣﻦ و إﻟﻰ اﻟﻤﻜﺪس ﻋﺎدة ھﻲ ﻛﻠﻤ ﺎت ﻓﺈﻧﻨ ﺎ ﻧﺘ ﺼﻮر اﻟﻤﻜ ﺪس ﻋﻠ ﻰ‬
‫ﺷﻜﻞ ﺣﺠ ﺮات ذات ‪ 2‬ﺑﺎﯾ ﺖ‪ ،‬ﻛﻤ ﺎ أﻧ ﮫ ﻣ ﻦ اﻟ ﻀﺮوري أن ﺗﻜ ﻮن ﺟﻤﯿ ﻊ ﺣﺠ ﺮات اﻟﻤﻜ ﺪس ﻓ ﻲ ﺣ ﺪود اﻟﻜﻠﻤ ﺎت‬
‫اﻟﺰوﺟﯿﺔ و ذﻟﻚ ﻹﻧﻘﺎص ﻋﺪد دورات اﻟﺬاﻛﺮة اﻟﻤﻄﻠﻮﺑﺔ ﻟﺪﻓﻊ أو ﺳ ﺤﺐ اﻟﻤﻌﻄﯿ ﺎت ﻣ ﻦ اﻟﻤﻜ ﺪس‪ .‬ﯾﻘ ﻮم اﻟﻤﻌ ﺎﻟﺞ‬
‫ﺑﺪﻓﻊ اﻟﻤﻌﻄﯿﺎت و اﻟﻌﻨﺎوﯾﻦ إﻟﻰ اﻟﻤﻜﺪس ﻛﻠﻤﺔ ﻓﻲ ﻛﻞ ﻣﺮة‪ ،‬و ﻓ ﻲ ﻛ ﻞ ﻣ ﺮة ﯾ ﺘﻢ دﻓ ﻊ ﻗﯿﻤ ﺔ ﻣ ﺴﺠﻞ ﻣ ﺎ إﻟ ﻰ ﻗﻤ ﺔ‬
‫اﻟﻤﻜ ﺪس ﻓ ﺈن اﻟﻘﯿﻤ ﺔ ﻓ ﻲ ﻣﺆﺷ ﺮ اﻟﻤﻜ ﺪس أوﻻً ﺗ ﻨﻘﺺ ﺑﻤﻘ ﺪار ‪ 2‬و ﻣ ﻦ ﺛ ﻢ ﺗُﻜﺘ ﺐ ﻣﺤﺘﻮﯾ ﺎت ذﻟ ﻚ اﻟﻤ ﺴﺠﻞ ﻓ ﻲ‬
‫ذاﻛﺮة اﻟﻤﻜﺪس‪ .‬ﺑﮭ ﺬه اﻟﻄﺮﯾﻘ ﺔ ﻓ ﺈن اﻟﻤﻜ ﺪس ﯾﻨﻤ ﻮ ﻧﺤ ﻮ اﻷﺳ ﻔﻞ ﻓ ﻲ اﻟ ﺬاﻛﺮة اﻧﻄﻼﻗ ﺎً ﻣ ﻦ ﻗﺎﻋ ﺪة اﻟﻤﻜ ﺪس اﻟﺘ ﻲ‬
‫ﺗﻄﺎﺑﻖ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ اﻟﻤﺸﺘﻖ ﻣﻦ ‪ SS‬و اﻟﻘﯿﻤﺔ ‪ FFFFh‬إﻟﻰ ﻧﮭﺎﯾﺔ )ﻗﻤ ﺔ( اﻟﻤﻜ ﺪس و اﻟﺘ ﻲ ﺗﻄ ﺎﺑﻖ اﻟﻌﻨ ﻮان‬
‫اﻟﻔﯿﺰﯾﺎﺋﻲ اﻟﻤ ﺸﺘﻖ ﻣ ﺖ ‪ SS‬و اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل ‪ 0000h‬و ﻋﻨ ﺪﻣﺎ ﺗ ﺴﺤﺐ اﻟﻘﯿﻤ ﺔ ﻣ ﻦ ﻗﻤ ﺔ اﻟﻤﻜ ﺪس ﻓ ﺈن اﻟﻌﻜ ﺲ‬
‫ﻟﮭ ﺬا اﻟﺘﺴﻠ ﺴﻞ ﯾﺤ ﺪث‪ .‬إن اﻟﻌﻨ ﻮان اﻟﻔﯿﺰﯾ ﺎﺋﻲ اﻟﻤﻌ ﺮف ﺑﻮاﺳ ﻄﺔ ‪ SS‬و ‪ SP‬داﺋﻤ ﺎً ﯾ ﺸﯿﺮ إﻟ ﻰ ﺣﺠ ﺮة اﻟﻘﯿﻤ ﺔ‬
‫اﻷﺧﯿ ﺮة اﻟﻤﺪﻓﻮﻋ ﺔ إﻟ ﻰ اﻟﻤﻜ ﺪس ﺣﯿ ﺚ أن ﻣﺤﺘﻮﯾﺎﺗﮭ ﺎ ﺗ ﺴﺤﺐ أوﻻً ﻣ ﻦ اﻟﻤﻜ ﺪس إﻟ ﻰ اﻟﻤ ﺴﺠﻞ اﻟﻤﻌﻨ ﻲ ﺿ ﻤﻦ‬
‫اﻟﻤﻌﺎﻟﺞ ﺛﻢ ﯾﺰداد ‪ SP‬ﺑﻤﻘﺪار ‪ . 2‬إن ﻗﻤﺔ اﻟﻤﻜﺪس اﻟﺠﺪﯾﺪة ﺗﻄﺎﺑﻖ اﻟﻘﯿﻤﺔ اﻟﺴﺎﺑﻘﺔ اﻟﻤﺪﻓﻮﻋﺔ إﻟﻰ اﻟﻤﻜﺪس‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 40 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻣﺜﺎل‪ :‬ﺗﺒﯿﻦ اﻷﺷﻜﺎل اﻟﺜﻼﺛﺔ اﻟﺘﺎﻟﯿﺔ ﺣﺎﻻت اﻟﻤﻜﺪس‪:‬‬


‫‪ Tos‬ﻗﻤﺔ اﻟﻤﻜﺪس‬
‫‪ Bos‬ﻗﺎﻋﺪة اﻟﻤﻜﺪس‬
‫ھﺬا ھﻮ ﻋﻨﻮان اﻟﺤﺠﺮة اﻟﯿﻤﻨﻰ اﻟﺘﻲ ﺗﺤﻮي ‪ 12h‬و ﻟﯿﺲ ﻋﻨﻮان اﻟﺤﺠﺮة‬
‫اﻟﯿﺴﺮى‬
‫‪AX‬‬ ‫‪12‬‬ ‫‪34‬‬

‫‪AX‬‬ ‫‪12‬‬ ‫‪34‬‬


‫ﻧﺤﻮ ﻗﺎﻋﺪة اﻟﻤﻜﺪس‬
‫‪BX‬‬ ‫‪BB‬‬ ‫‪AA‬‬

‫‪66‬‬ ‫‪77‬‬
‫‪0105C 66‬‬ ‫‪77‬‬
‫‪88 99‬‬ ‫‪66‬‬ ‫‪77‬‬
‫‪0105A 88‬‬ ‫‪99‬‬ ‫‪TOS‬‬
‫‪AA BB‬‬ ‫‪88 99‬‬
‫‪TOS‬‬
‫‪01058 AA BB‬‬ ‫‪34‬‬ ‫‪12‬‬ ‫‪AA BB‬‬
‫‪01056‬‬
‫‪01056‬‬ ‫‪01‬‬ ‫‪23‬‬
‫‪45‬‬ ‫‪67‬‬ ‫‪34‬‬ ‫‪12‬‬
‫‪01054‬‬ ‫‪45‬‬ ‫‪67‬‬
‫‪89 AB‬‬ ‫‪45‬‬ ‫‪67‬‬
‫‪01052‬‬ ‫‪89 AB‬‬
‫‪01050 CD EF‬‬ ‫‪89 AB‬‬
‫‪01050 CD EF‬‬ ‫‪CD EF‬‬
‫‪01‬‬ ‫‪05‬‬ ‫‪SS‬‬
‫‪01‬‬ ‫‪05‬‬ ‫‪SS‬‬
‫‪01‬‬ ‫‪05‬‬ ‫‪SS‬‬
‫‪01‬‬ ‫‪60‬‬ ‫‪SP‬‬
‫‪01‬‬ ‫‪08‬‬ ‫‪SP‬‬
‫‪01‬‬ ‫‪0A‬‬ ‫‪SP‬‬

‫)‪(1‬‬ ‫)‪(2‬‬ ‫)‪(3‬‬


‫ﻧﻼﺣ ﻆ أن ﻣ ﺴﺠﻞ ﻣﻘﻄ ﻊ اﻟﻤﻜ ﺪس ﯾﺤ ﻮي ﻋﻠ ﻰ ‪ 0105h‬و ﻛﻤ ﺎ أﺷ ﺮﻧﺎ ﺳ ﺎﺑﻘﺎً ﻓ ﺈن ﻗﺎﻋ ﺪة اﻟﻤﻜ ﺪس ﺗﻜﻤ ﻦ ﻓ ﻲ‬
‫اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ اﻟﻤﺸﺘﻖ ﻣﻦ ‪ SS‬ﻣﻊ اﻟﻌﻨﻮان اﻟﻔﻌﺎل ‪ FFFFh‬و ھﺬا ﯾﻌﻄﻲ ﻋﻨﻮان ﻗﺎﻋﺪة اﻟﻤﻜﺪس ‪: BOS‬‬
‫‪A (bos) = 0105h + FFFF = 1104Fh‬‬
‫ﺑﺎﻹﺿ ﺎﻓﺔ إﻟ ﻰ ذﻟ ﻚ ﻓ ﺈن ﻣﺆﺷ ﺮ اﻟﻤﻜ ﺪس اﻟ ﺬي ﯾﻤﺜ ﻞ اﻟﻌﻨ ﻮان اﻟﻔﻌ ﺎل ﻣ ﻦ ﻗﺎﻋ ﺪة اﻟﻤﻜ ﺪس إﻟ ﻰ ﻗﻤﺘ ﮫ ﯾ ﺴﺎوي‬
‫‪ 0008h‬ﻟﺬﻟﻚ ﻓﺎﻟﻘﻤﺔ اﻟﺤﺎﻟﯿﺔ ﻟﻠﻤﻜﺪس ھﻲ ﻓﻲ اﻟﻌﻨﻮان اﻟﻔﯿﺰﯾﺎﺋﻲ‪:‬‬
‫‪A (tos) = 01050 + 0008 = 01058h‬‬
‫إن اﻟﻌﻨ ﺎوﯾﻦ ذات اﻟﻘ ﯿﻢ اﻷﻋﻠ ﻰ ﻣ ﻦ ﻗﻤ ﺔ اﻟﻤﻜ ﺪس ‪ 01058h‬ﺗﺤﺘ ﻮي ﻋﻠ ﻰ ﻣﻌﻄﯿ ﺎت ﺣﻘﯿﻘﯿ ﺔ ﻟﻠﻤﻜ ﺪس ﺑﯿﻨﻤ ﺎ‬
‫اﻟﻤﻌﻄﯿﺎت ذات اﻟﻌﻨﺎوﯾﻦ اﻷدﻧﻰ ﻣﻦ ﻗﻤﺔ اﻟﻤﻜﺪس ﻟﯿﺴﺖ ﻣﻌﻄﯿ ﺎت ﺣﻘﯿﻘﯿ ﺔ ﻟﻠﻤﻜ ﺪس ) ﺑ ﺎﻟﺘﻌﺮﯾﻒ ‪ :‬اﻟﻤﻜ ﺪس ھ ﻮ‬
‫اﻟﻘﯿﻢ اﻟﻤﺤﺼﻮرة ﺑﯿﻦ اﻟﻘﺎﻋﺪة و اﻟﻘﻤﺔ ( ‪ .‬ﻧﻼﺣ ﻆ أن اﻟﻘﯿﻤ ﺔ اﻷﺧﯿ ﺮة اﻟﻤﺪﻓﻮﻋ ﺔ إﻟ ﻰ اﻟﻤﻜ ﺪس ﻓ ﻲ اﻟ ﺸﻜﻞ اﻷول‬
‫ﻣﻦ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ ھﻲ ‪ . BBAAh‬و ﯾﺒﯿﻦ اﻟﺸﻜﻞ اﻟﺜﺎﻧﻲ ﻣﺎ اﻟ ﺬي ﯾﺤ ﺪث ﻋﻨ ﺪ ﺗﻨﻔﯿ ﺬ ﺗﻌﻠﯿﻤ ﺔ ‪ . PUSH AX‬ھﻨ ﺎ‬
‫ﻧﺠ ﺪ أن ﻣﺤﺘﻮﯾ ﺎت ‪ AX‬ھ ﻲ ‪ 1234h‬و أن ﺗﻨﻔﯿ ﺬ ﺗﻌﻠﯿﻤ ﺔ ‪ PUSH‬ﯾ ﺴﺒﺐ إﻧﻘ ﺎص ﻣﺤﺘﻮﯾ ﺎت ‪ SP‬ﺑﻤﻘ ﺪار ‪ 2‬و‬
‫ﻟﻜﻨﮭﺎ ﻻ ﺗﺆﺛﺮ ﻋﻠﻰ ﻣﺤﺘﻮﯾﺎت ﻣﺴﺠﻞ ﻣﻘﻄﻊ اﻟﻤﻜﺪس ‪ SS‬ﻟﺬﻟﻚ ﻓﺈن اﻟﺤﺠﺮة اﻟﺘﺎﻟﯿﺔ اﻟﺘ ﻲ ﯾ ﺘﻢ اﻟﻮﺻ ﻮل إﻟﯿﮭ ﺎ ﻓ ﻲ‬
‫اﻟﻤﻜﺪس ﺗﻘﺎﺑﻞ اﻟﻌﻨﻮان ‪ . 01056h‬إﻟﻰ ھﺬه اﻟﺤﺠﺮة ﯾﺘﻢ دﻓﻊ اﻟﻘﯿﻤﺔ اﻟﻤﺨﺰﻧﺔ ﻓ ﻲ ‪ AX‬إﻟ ﻰ اﻟﻤﻜ ﺪس‪ .‬ﻧﻼﺣ ﻆ أن‬
‫اﻟﺒﺎﯾ ﺖ اﻟﻌﻠ ﻮي ﻣ ﻦ اﻟﻤ ﺴﺠﻞ ‪ ) AX‬و اﻟ ﺬي ﻗﯿﻤﺘ ﮫ ﺗ ﺴﺎوي ‪ ( 12h‬ﯾﻜﻤ ﻦ اﻵن ﻓ ﻲ اﻟﺒﺎﯾ ﺖ اﻟ ﺴﻔﻠﻲ ﻟﻠﻜﻠﻤ ﺔ ﻓ ﻲ‬
‫اﻟﻤﻜ ﺪس و ﻛ ﺬﻟﻚ ﻓﺎﻟﺒﺎﯾ ﺖ اﻟ ﺴﻔﻠﻲ ﻣ ﻦ اﻟﻤ ﺴﺠﻞ ‪ ) AX‬و اﻟ ﺬي ﻗﯿﻤﺘ ﮫ ﺗ ﺴﺎوي ‪ ( 34h‬ﯾﻜﻤ ﻦ اﻵن ﻓ ﻲ اﻟﺒﺎﯾ ﺖ‬
‫اﻟﻌﻠﻮي ﻟﻠﻜﻠﻤﺔ ﻓﻲ اﻟﻤﻜﺪس‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 41 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﯾﺒﯿﻦ اﻟﺸﻜﻞ اﻟﺜﺎﻟﺚ ﻣﺎ اﻟﺬي ﯾﺤﺪث ﻋﻨﺪﻣﺎ ﺗُﺴﺤﺐ اﻟﻤﻌﻄﯿﺎت ﻣﻦ اﻟﻤﻜ ﺪس إﻟ ﻰ اﻟﻤ ﺴﺠﻞ اﻟ ﺬي دُﻓﻌَ ﺖ اﻟﻤﻌﻄﯿ ﺎت‬
‫ﻣﻨﮫ إﻟﻰ اﻟﻤﻜﺪس و ذﻟﻚ ﺑﻌﺪ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ ‪ POP AX‬ﺛﻢ ‪ POP BX‬ﻋﻠﻰ اﻟﺘﺮﺗﯿﺐ‪ .‬ﻧﻔﺲ اﻟﻤﻨﺎﻗ ﺸﺔ ﺑﺎﻟﻨ ﺴﺒﺔ إﻟ ﻰ‬
‫دﻓﻊ ﻗﯿﻤﺔ ﻓﻮرﯾﺔ إﻟﻰ اﻟﻤﻜﺪس‪.‬‬
‫ﻋﺎﺷﺮاً ‪ -‬ﺗﻌﻠﯿﻤﺎت اﻟﺤﻠﻘﺎت‬
‫ھﻨﺎك ﺛﻼث ﺗﻌﻠﯿﻤﺎت ﻣﺼﻤﻤﺔ ﺑﺸﻜﻞ ﺧﺎص ﻟﺘﺤﻘﯿﻖ ﻋﻤﻠﯿﺔ اﻟﺤﻠﻘ ﺔ‪ .‬و ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺎت ﯾﻤﻜ ﻦ اﺳ ﺘﻌﻤﺎﻟﮭﺎ ﺑ ﺪﻻً ﻣ ﻦ‬
‫ﺗﻌﻠﯿﻤﺎت اﻟﻘﻔﺰ اﻟﺸﺮﻃﻲ‪ .‬و ھﻲ ﻣﺒﯿﻨﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫‪LOOP‬‬ ‫ﺣﻠﻘﺔ‬ ‫‪LOOP short_label‬‬ ‫ﻻ ﯾﻮﺟﺪ‬

‫إﻧﻘﺎص ‪ CX‬ﺑﻤﻘﺪار واﺣﺪ دون اﻟﺘﺄﺛﯿﺮ ﻋﻠﻰ اﻷﻋﻼم ﺛﻢ اﻟﻘﻔ ﺰ إﻟ ﻰ اﻟﺤﺠ ﺮة اﻟﻤﻌﺮﱠﻓ ﺔ ﺑﻮاﺳ ﻄﺔ‬
‫اﻟﻼﻓﺘﺔ اﻟﻘﺼﯿﺮة إذا ﻛﺎن ‪ CX‬ﻻ ﯾﺴﺎوي اﻟﺼﻔﺮ و إﻻ ﯾﺘﻢ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ ﻟﺘﻌﻠﯿﻤﺔ اﻟﺤﻠﻘﺔ‪ .‬و ھﻨ ﺎ ﯾﻜ ﻮن ‪IP‬‬
‫‪ = IP + disp‬ﺣﯿﺚ ‪ disp‬أﺧﺬﻧﺎھﺎ ﺑﻌﺪ ﺗﻤﺪﯾﺪ إﺷﺎرﺗﮭﺎ ) أي ﺟﻌﻠﮭﺎ ﺑـ ‪ 16‬ﺑﺖ (‪.‬‬
‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫ﺣﻠﻘﺔ ﻃﺎﻟﻤﺎ‬
‫‪LOOPE/‬‬ ‫‪LOOPE/‬‬
‫‪LOOPZ‬‬
‫ﯾﺴﺎوي‪ /‬أو ﻃﺎﻟﻤﺎ‬ ‫‪LOOPZ‬‬
‫ﻻ ﯾﻮﺟﺪ‬
‫ﺻﻔﺮ‬

‫إﻧﻘﺎص ‪ CX‬ﺑﻤﻘﺪار واﺣﺪ دون اﻟﺘﺄﺛﯿﺮ ﻋﻠﻰ اﻷﻋﻼم ﺛﻢ اﻟﻘﻔ ﺰ إﻟ ﻰ اﻟﺤﺠ ﺮة اﻟﻤﻌﺮﱠﻓ ﺔ ﺑﻮاﺳ ﻄﺔ‬
‫اﻟﻼﻓﺘﺔ اﻟﻘﺼﯿﺮة إذا ﻛﺎن ‪ CX‬ﻻ ﯾ ﺴﺎوي اﻟ ﺼﻔﺮ و ‪ ZF‬ﯾ ﺴﺎوي اﻟ ﺼﻔﺮ و إﻻ ﯾ ﺘﻢ ﺗﻨﻔﯿ ﺬ اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺘﺎﻟﯿ ﺔ ﻟﺘﻌﻠﯿﻤ ﺔ‬
‫اﻟﺤﻠﻘﺔ‪.‬‬
‫و ھﻨﺎ ﺟﺴﻢ اﻟﺤﻠﻘﺔ ﻓﻘﻂ ھﻮ اﻟﺬي ﯾﺆﺛﺮ ﻋﻠﻰ اﻷﻋﻼم‪.‬‬

‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫ﺣﻠﻘﺔ ﻃﺎﻟﻤﺎ ﻻ‬
‫‪LOOPNE/‬‬ ‫‪LOOPNE/‬‬
‫‪LOOPNZ‬‬
‫ﯾﺴﺎوي‪ /‬أو ﻃﺎﻟﻤﺎ‬ ‫‪LOOPNZ‬‬
‫ﻻ ﯾﻮﺟﺪ‬
‫ﻟﯿﺲ ﺻﻔﺮاً‬

‫إﻧﻘﺎص ‪ CX‬ﺑﻤﻘﺪار واﺣﺪ ﺛﻢ اﻟﻘﻔﺰ إﻟﻰ اﻟﺤﺠﺮة اﻟﻤﺤﺪدة ﺑﻮاﺳﻄﺔ اﻟﻼﻓﺘ ﺔ اﻟﻘ ﺼﯿﺮة إذا ﻛ ﺎن ‪CX‬‬
‫ﻻ ﯾﺴﺎوي اﻟﺼﻔﺮ و ‪ ZF‬ﯾﺴﺎوي اﻟﺼﻔﺮ و إﻻ ﯾﺘﻢ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ ﻟﺘﻌﻠﯿﻤﺔ اﻟﺤﻠﻘﺔ‪.‬‬
‫و ھﻨﺎ أﯾﻀﺎً ﺟﺴﻢ اﻟﺤﻠﻘﺔ ﻓﻘﻂ ھﻮ اﻟﺬي ﯾﺆﺛﺮ ﻋﻠﻰ اﻷﻋﻼم‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻧﺮﯾﺪ اﻟﺒﺤﺚ ﻋﻦ ﻋﻨﺼﺮ ﺿﻤﻦ ﻣﺘﺠﮭﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ) ﻣﺼﻔﻮﻓﺔ أﺣﺎدﯾ ﺔ اﻟﺒﻌ ﺪ ( ﻣ ﺜﻼً ‪ 8,9,4,5,7 :‬و اﻟﻌﻨ ﺼﺮ‬
‫اﻟﻤﺮاد إﯾﺠﺎده ھﻮ ‪ . 4‬ھﻨﺎ ‪ CX = 5‬و ھﻮ ﻋﺪد اﻟﻌﻨﺎﺻﺮ‪ .‬و ﯾﻜﻮن ﺟﺴﻢ اﻟﺤﻠﻘﺔ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪MOV CX, 5‬‬
‫‪Nxt:‬‬ ‫‪---------------‬‬
‫‪---------------‬‬ ‫ھﻨﺎ ﯾﺘﻢ اﻟﺨﺮوج ﻣﻦ اﻟﺤﻠﻘﺔ ﺑﺎﻟﺮﻏﻢ ﻣﻦ أن ‪ CX  0‬ﻷﻧﮫ‬
‫ﺟﺴﻢ اﻟﺤﻠﻘﺔ‬
‫‪---------------‬‬ ‫ﺣﺼﻞ ﺗﻄﺎﺑﻖ و أﺻﺒﺤﺖ ‪. ZF = 1‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 42 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫‪LOOPNE Nxt‬‬
‫ً‪ - 11‬ﺗﻌﻠﯿﻤﺎت اﻟﺴﻠﺴﻠﺔ‬
‫ﻧﻘﺼﺪ ﺑﻜﻠﻤﺔ اﻟﺴﻠﺴﻠﺔ أن ﺑﺎﯾﺘﺎت أو ﻛﻠﻤﺎت ﻣﻌﻄﯿﺎت ﺗﻜﻤﻦ ﻓ ﻲ ﺣﺠ ﺮات ﻣﺘﻌﺎﻗﺒ ﺔ ﻟﻠ ﺬاﻛﺮة‪ .‬إن ﺗﻌﻠﯿﻤ ﺎت اﻟﺴﻠ ﺴﻠﺔ‬
‫ﺗﺴﻤﺢ ﻟﻠﻤﺒﺮﻣﺞ ﺑﺘﻨﻔﯿﺬ ﻋﻤﻠﯿﺎت ﻣﺜﻞ ﻧﻘﻞ اﻟﻤﻌﻄﯿﺎت ﻣﻦ ﺑﻠﻮك ذاﻛﺮة إﻟﻰ ﺑﻠﻮك آﺧ ﺮ ﻓ ﻲ اﻟ ﺬاﻛﺮة‪ ،‬ﻣ ﺴﺢ أو ﻛ ﻨﺲ‬
‫‪ SCAN‬ﺳﻠ ﺴﻠﺔ ﻣ ﻦ ﻋﻨﺎﺻ ﺮ اﻟﻤﻌﻄﯿ ﺎت اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ اﻟ ﺬاﻛﺮة و اﻟﺒﺤ ﺚ ﻋ ﻦ ﻗﯿﻤ ﺔ ﻣﻌﯿﻨ ﺔ‪ ،‬ﻣﻘﺎرﻧ ﺔ ﻋﻨﺎﺻ ﺮ‬
‫ﺳﻠﺴﻠﺘﯿﻦ ﻟﺘﺤﺪﯾﺪ ﻓﯿﻤﺎ إذا ﻛﺎﻧﺎ ﻣﺘﻄﺎﺑﻘﺘﯿﻦ أو ﻣﺨﺘﻠﻔﺘﯿﻦ‪.‬‬
‫و ﺗﻌﻠﯿﻤﺎت اﻟﺴﻠﺴﻠﺔ اﻷﺳﺎﺳﯿﺔ ھﻲ‪:‬‬

‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫ﻧﻘﻞ ﻋﻨﺼﺮ ﻣﻦ‬
‫‪MOVS‬‬ ‫‪MOVS operand‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ﺳﻠﺴﻠﺔ‬
‫اﻟﻌﻤﻠﯿﺔ‪ :‬اﻟﻌﻨﺼﺮ اﻟﻤﺤﺪد ﺑﻮاﺳﻄﺔ ‪ DS:SI‬ﯾﺘﻢ ﻧﻘﻠﮫ إﻟﻰ اﻟﺤﺠﺮة اﻟﻤﺤﺪدة ﺑﻮاﺳﻄﺔ اﻟﻘﯿﻤﺔ ‪ ES:DI‬ﺛﻢ‪:‬‬
‫‪SI ± 1 or 2 → SI‬‬
‫‪DI ± 1 or 2 → DI‬‬

‫اﻟﻜﻠﻤﺔ‬ ‫اﻷﻋﻼم‬
‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﺘﺄﺛﺮة‬
‫ﻧﻔﺲ اﻟﻌﻤﻠﯿﺔ‬
‫ﻧﻘﻞ ﻋﻨﺼﺮ ﺑﺎﯾﺖ ﻣﻦ‬
‫‪MOVSB‬‬ ‫‪MOVSB‬‬ ‫اﻟﺴﺎﺑﻘﺔ و ﻣﻘﺪار‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ﺳﻠﺴﻠﺔ‬
‫اﻟﺘﺰاﯾﺪ ھﻮ‪1‬‬
‫ﻧﻔﺲ اﻟﻌﻤﻠﯿﺔ‬
‫ﻧﻘﻞ ﻋﻨﺼﺮ ﻛﻠﻤﺔ ﻣﻦ‬
‫‪MOVSW‬‬ ‫‪MOVSW‬‬ ‫اﻟﺴﺎﺑﻘﺔ و ﻣﻘﺪار‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫اﻟﺴﻠﺴﻠﺔ‬
‫اﻟﺘﺰاﯾﺪ ھﻮ‪2‬‬
‫‪CMPS‬‬
‫‪CMPS‬‬ ‫ﻣﻘﺎرﻧﺔ ﻋﻨﺼﺮ ﺳﻠﺴﻠﺔ‬ ‫‪operand‬‬
‫أﻋﻼم اﻟﺤﺎﻟﺔ‬

‫اﻟﻌﻤﻠﯿﺔ‪ :‬ﯾﺘﻢ ﻃﺮح ﻣﺘﺤﻮل اﻟﮭﺪف ﻣﻦ ﻣﺘﺤﻮل اﻟﻤﺼﺪر و ﻻ ﺗُﺨﺰن اﻟﻨﺘﯿﺠﺔ إﻧﻤﺎ ﺗُﻌﺪل أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫ﻓﻘﻂ‪ ،‬أي‪:‬‬
‫أﻋﻼم اﻟﺤﺎﻟﺔ → ) ‪( ( DS x 10h ) + SI ) – ( ( ES x 10h ) + DI‬‬
‫‪SI ± 1 or 2 → SI‬‬
‫‪DI ± 1 or 2 → DI‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 43 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬


‫ﻣﺴﺢ ﻋﻨﺼﺮ‬
‫)‪SCAS(B or W‬‬ ‫‪SCAS operand‬‬ ‫أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫ﺳﻠﺴﻠﺔ‬
‫اﻟﻌﻤﻠﯿﺔ ‪:‬‬
‫→ ) ‪( AL or AX ) – ( ( ES x 10h ) + DI‬أﻋﻼم اﻟﺤﺎﻟﺔ‬
‫‪DI ± 1 or 2 → DI‬‬

‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬ ‫اﻷﻋﻼم اﻟﻤﺘﺄﺛﺮة‬


‫ﺗﺤﻤﯿﻞ ﻋﻨﺼﺮ‬
‫)‪LODS (B or W‬‬ ‫‪LODS operand‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ﺳﻠﺴﻠﺔ‬

‫اﻟﻌﻤﻠﯿﺔ ‪:‬‬
‫) ‪( ( DS x 10h ) + SI ) → ( AL or AX‬‬
‫‪SI ± 1 or 2 → SI‬‬

‫اﻷﻋﻼم‬
‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺘﺄﺛﺮة‬
‫ﺗﺨﺰﯾﻦ ﻋﻨﺼﺮ‬
‫)‪STOS(B or W‬‬ ‫‪STOS operand‬‬ ‫ﻻ ﯾﻮﺟﺪ‬
‫ﺳﻠﺴﻠﺔ‬
‫اﻟﻌﻤﻠﯿﺔ ‪:‬‬
‫) ‪( AL or AX ) → ( ( ES x 10h ) + DI‬‬
‫‪DI ± 1 or 2 → DI‬‬

‫ً‪ - 12‬ﺗﻌﻠﯿﻤﺎت ﺗﻜﺮار اﻟﺴﻠﺴﻠﺔ‬


‫ﻓﻲ ﻣﻌﻈﻢ اﻟﺘﻄﺒﯿﻘﺎت ﯾﺠﺐ ﺗﻜﺮار اﻟﻌﻤﻠﯿﺎت اﻷﺳﺎﺳﯿﺔ ﻟﻠﺴﻠﺴﻠﺔ ﻣﻦ أﺟﻞ ﻣﻌﺎﻟﺠﺔ ﺟﻤﯿ ﻊ ﻋﻨﺎﺻ ﺮھﺎ‪ .‬و ﯾ ﺘﻢ إﻧﺠ ﺎز‬
‫ھﺬا اﻟﻌﻤﻞ ﺑﻮاﺳﻄﺔ إدﺧﺎل ﺗﻌﻠﯿﻤﺎت اﻟﺘﻜﺮار ﻗﺒﻞ اﻟﺘﻌﻠﯿﻤﺔ اﻷﺳﺎﺳﯿﺔ ﻟﻠﺴﻠﺴﻠﺔ اﻟﺘﻲ ﺳﻮف ﺗُﻜﺮر‪ .‬ھ ﺬا و إن أﻧ ﻮاع‬
‫ﺗﻌﻠﯿﻤﺎت اﻟﺘﻜﺮار ﻣﺒﯿﻨﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 44 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻻﺳﺘﺨﺪام‬


‫اﻟﺘﻜﺮار ﻃﺎﻟﻤﺎ ﻟﻢ ﻧﺼﻞ إﻟﻰ ﻧﮭﺎﯾﺔ اﻟﺴﻠﺴﻠﺔ‬
‫‪REP‬‬ ‫أي‬ ‫‪MOVS, STOS‬‬
‫‪CX ≠ 0‬‬
‫اﻟﺘﻜﺮار ﻃﺎﻟﻤﺎ ﻟﻢ ﻧﺼﻞ إﻟﻰ ﻧﮭﺎﯾﺔ اﻟﺴﻠﺴﻠﺔ‬
‫‪REPE/REPZ‬‬ ‫و اﻟﺴﻠﺴﻠﺘﺎن ﻣﺘﺴﺎوﯾﺘﺎن أي ‪ZF=1,‬‬ ‫‪CMPS, SCAS‬‬
‫‪CX≠0‬‬
‫اﻟﺘﻜﺮار ﻃﺎﻟﻤﺎ ﻟﻢ ﻧﺼﻞ إﻟﻰ ﻧﮭﺎﯾﺔ اﻟﺴﻠﺴﻠﺔ‬
‫‪REPNE/REPNZ‬‬ ‫و اﻟﺴﻠﺴﻠﺘﺎن ﻏﯿﺮ ﻣﺘﺴﺎوﯾﺘﺎن أي ‪ZF=0,‬‬ ‫‪CMPS, SCAS‬‬
‫‪CX≠0‬‬

‫ﻣﺜﺎل‪:‬‬
‫ﺑﻔﺮض أن ‪:‬‬
‫‪SI = 0100h‬‬ ‫‪DS = 0200h‬‬
‫‪DI = 0110h‬‬ ‫‪ES = 0400h‬‬
‫ﻓﺈن ﻧﺘﯿﺠﺔ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ ‪:‬‬
‫‪MOV CX,20h‬‬
‫‪REP MOVSB‬‬
‫ھﻲ أن اﻟﺘﻌﻠﯿﻤﺔ اﻷوﻟ ﻰ ﺗﻘ ﻮم ﺑﺘﺤﻤﯿ ﻞ اﻟﻤ ﺴﺠﻞ ‪ CX‬ﺑﺎﻟﻘﯿﻤ ﺔ ‪ 20h = 32d‬أﻣ ﺎ اﻟﺘﻌﻠﯿﻤ ﺔ اﻟﺜﺎﻧﯿ ﺔ ﻓﺘﻨﻘ ﻞ ‪ 32‬ﺑﺎﯾ ﺖ‬
‫ﻣﻦ ﺣﺠﺮات ذاﻛﺮة اﻟﻤﺼﺪر اﻟﻤﺤﺪدة ﺑﻮاﺳ ﻄﺔ ‪ DS‬و ‪ SI‬إﻟ ﻰ ﺑﻠ ﻮك ﺣﺠ ﺮات ذاﻛ ﺮة اﻟﮭ ﺪف اﻟﻤﺤ ﺪدة ﺑﻮاﺳ ﻄﺔ‬
‫‪ ES‬و ‪. DI‬‬

‫ً‪ - 13‬ﺗﻌﻠﯿﻤﺘﺎ ﻣﺴﺢ و ﺗﻮﺿﯿﻊ ﻋﻠﻢ اﻻﺗﺠﺎه‬


‫ذﻛﺮﻧﺎ أﻧﮫ ﯾﺘﻢ زﯾﺎدة أو إﻧﻘﺎص ﻗﯿﻢ ‪ SI‬و ‪ DI‬ﺑ ﺸﻜﻞ أوﺗﻮﻣ ﺎﺗﯿﻜﻲ أﺛﻨ ﺎء ﺗﻨﻔﯿ ﺬ ﺗﻌﻠﯿﻤ ﺎت اﻟﺴﻠ ﺴﻠﺔ و أﻧ ﮫ ﯾ ﺘﻢ ﺗﻘﺮﯾ ﺮ‬
‫اﻟﺰﯾﺎدة أو اﻹﻧﻘﺎص اﻋﺘﻤﺎداً ﻋﻠﻰ ﻗﯿﻤﺔ ﻋﻠﻢ اﻻﺗﺠﺎه ‪ DF‬ﺣﯿ ﺚ ﻋﻨ ﺪﻣﺎ ‪ DF = 0‬ﺗﺤ ﺪث اﻟﺰﯾ ﺎدة اﻷوﺗﻮﻣﺎﺗﯿﻜﯿ ﺔ و‬
‫اﻟﻌﻜﺲ ﺑﺎﻟﻌﻜﺲ‪ .‬و ﯾﺘﻢ اﻟﺘﺤﻜﻢ ﺑﻌﻠﻢ اﻻﺗﺠﺎه ﺑﻮاﺳﻄﺔ اﻟﺘﻌﻠﯿﻤﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ‪:‬‬
‫اﻷﻋﻼم‬
‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬
‫اﻟﻤﺘﺄﺛﺮة‬
‫‪CLD‬‬ ‫ﺗﻨﻈﯿﻒ ‪DF‬‬ ‫‪CLD‬‬ ‫‪0 → DF‬‬ ‫‪DF‬‬
‫‪STD‬‬ ‫ﺗﻮﺿﯿﻊ ‪DE‬‬ ‫‪STD‬‬ ‫‪1 → DF‬‬ ‫‪DF‬‬

‫ً‪ - 14‬ﺗﻌﻠﯿﻤﺘﺎ ‪ IN‬و ‪OUT‬‬

‫اﻟﻜﻠﻤﺔ اﻟﻤﺨﺘﺰﻟﺔ‬ ‫اﻟﻤﻌﻨﻰ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫اﻟﻌﻤﻠﯿﺔ‬


‫‪IN‬‬ ‫ﺗﻌﻠﯿﻤﺔ دﺧﻞ ﻣﺒﺎﺷﺮة‬ ‫‪IN Acc,port‬‬ ‫‪(port) → Acc‬‬
‫‪IN‬‬ ‫ﺗﻌﻠﯿﻤﺔ دﺧﻞ ﻏﯿﺮ ﻣﺒﺎﺷﺮة‬ ‫‪IN Acc,DX‬‬ ‫‪((DX)) → Acc‬‬
‫‪OUT‬‬ ‫ﺗﻌﻠﯿﻤﺔ ﺧﺮج ﻣﺒﺎﺷﺮة‬ ‫‪OUT port,Acc‬‬ ‫)‪Acc → (port‬‬
‫‪OUT‬‬ ‫ﺗﻌﻠﯿﻤﺔ ﺧﺮج ﻏﯿﺮ ﻣﺒﺎﺷﺮة‬ ‫‪OUT DX,Acc‬‬ ‫))‪Acc → ((DX‬‬
‫ﺣﯿﺚ ﻓﻲ اﻟﺘﻌﻠﯿﻤﺔ اﻟﻤﺒﺎﺷﺮة ﯾﻜﻮن ﻃﻮل اﻟـ ‪ port‬ﺑﺎﯾﺘﺎً واﺣ ﺪاً و ﻓ ﻲ اﻟﺘﻌﻠﯿﻤ ﺔ ﻏﯿ ﺮ اﻟﻤﺒﺎﺷ ﺮة ﯾﻜ ﻮن ‪ DX‬ﻣﺤﺘﻮﯾ ﺎً‬
‫ﻋﻠﻰ ﻋﻨﻮان ﻧﺎﻓﺬة‪.‬‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 45 -‬‬


‫إﻟﻰ ﻃﻼب اﻟﻤﺮﻛﺰ اﻟﻌﺎﻟﻲ ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب‬
‫ﺗﺠﻤﯿﻊ أﺣﻤﺪ اﻟﺮﻓﺎﻋﻲ‬ ‫ﺗﻢ ﺗﺠﻤﯿﻌﻪ ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬

‫ﻣﺜﺎل‪:‬‬

‫ﺑﻔ ﺮض أن ﻧﺎﻓ ﺬﺗﻲ دﺧ ﻞ ﺑﺤﺠ ﻢ ﺑﺎﯾ ﺖ ﻓ ﻲ اﻟﻌﻨ ﺎوﯾﻦ ‪ Ah, A9h‬ﻋﻠ ﻰ اﻟﺘﺮﺗﯿ ﺐ ﺳَ ﺘُﻘﺮأ و ﻣ ﻦ ﺛ ﻢ ﺳ ﯿﺘﻢ إﺧ ﺮاج‬
‫ﻣﺤﺘﻮﯾﺎﺗﮭﺎ إﻟﻰ ﻧﺎﻓ ﺬة ﺧ ﺮج ﺑﺤﺠ ﻢ ﻛﻠﻤ ﺔ ﻓ ﻲ اﻟﻌﻨ ﻮان ‪ B000h‬اﻟﻤﻄﻠ ﻮب ﻛﺘﺎﺑ ﺔ اﻟﺘﻌﻠﯿﻤ ﺎت اﻟﻼزﻣ ﺔ ﻹﻧﺠ ﺎز ھ ﺬا‬
‫اﻟﻌﻤﻞ‪.‬‬
‫اﻟﺤﻞ‪:‬‬
‫]‪IN AL,[0AAh‬‬
‫‪MOV AH,AL‬‬
‫]‪IN AL,[0A9h‬‬
‫‪MOV DX,0B000h‬‬
‫‪OUT DX,AX‬‬

‫ﺗﻤﺖ ﺑﺤﻤﺪ اﷲ‬


‫ﻻ ﺗﻨﺴﻮﻧﺎ ﻣﻦ ﺻﺎﻟﺢ دﻋﺎﺋﻜﻢ‬

‫‪Ahmed.ALrefaie@yahoo.com‬‬ ‫‪- 46 -‬‬

You might also like