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

‫اﻟﻤﻮﻗﻊ ‪Arabteam2000 :‬‬ ‫اﻟﻜﺎﺗﺐ ‪JAAS :‬‬

‫اﻟﻔﺮﯾﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬ ‫ﺟﻤﻌﺎن ﻋﺒﺪاﷲ اﻟﺒﺮﯾﻜﻲ‬


‫‪www.arabteam2000.com‬‬ ‫‪Jaas1001@hotmail.com‬‬

‫ﺑـﺮﻣﺠـﺔ اﻟــ ‪ BIOS‬وأﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ ‪ ١٦‬ﺑﺖ و ‪ ٣٢‬ﺑﺖ‬

‫اﻟﺴــﻼم ﻋﻠﯿـﻜﻢ ورﺣـﻤﺔ اﷲ ‪،،،‬‬

‫ﻧــﻈﺎم ﺗـﺸﻐﯿــﻞ اﻟﻜﻤـﺒﯿـﻮﺗـﺮ ‪:‬‬


‫ﻋﺒﺎرة ﻋﻦ ﺑﺮﻧﺎﻣﺞ ﺿﺨﻢ ﺷﻐﻠﺘﺔ اﻷﺳﺎﺳﯿﺔ اﻟﺮﺑﻂ ﺑﯿﻦ اﻟﻤﺴﺘﺨﺪم وﺑﯿﻦ أﺟﺰاء اﻟﻜﻤﺒﯿﻮﺗﺮ اﻷﺧﺮى )اﻟﻬﺎردوﯾﺮ(‬

‫ﻓـــﻲ ﻫــﺬا اﻟﻜﺘــﺎب ﺳﻨـﺤﺎول ﻣﻨـﺎﻗﺸـﺔ ﻫــﺬا اﻟﺘـﻌﺮﯾـﻒ ﺑـﺸﻜـﻞ ﺗـﻔـﺼـﯿﻠﻲ ‪ ،‬وﺳــﻨـﻘﻮم ﺑﺘـﻘﺴﯿـﻤــﺔ إﻟــﻰ ‪:‬‬

‫‪ - ١‬ﻣــﺎﻫـﻲ ﻣـﺮاﺣــﻞ ﺗـﻄـﻮر أﻧـﻈﻤـﺔ اﻟﺘـﺸﻐﯿـﻞ وﻣـﻦ أﯾـﻦ أﺗـﺖ اﻟﻔﻜﺮة )ﻧﻈﺎم ‪( BIOS‬‬
‫) ﻧـﻈـﺎم اﻟﺒـﯿـﻮس ‪ ،‬ﻣـﺎﻫــﻲ ﻃـﺮﯾﻘﺔ ﻋﻤـﻠﺔ وﻫـﻞ ﺗـﻢ ﻧـﻘﻞ ﺑـﻘﯿﺔ أﻓـﻜﺎر اﻷﻧﻈﻤﺔ ﻣﻨﺔ (‬

‫‪ - ٢‬ﻛﯿـﻒ ﺗـﻜﺘﺐ أﻧـﻈﻤـﺔ اﻟﺘـﺸﻐﯿــﻞ ‪ ١٦‬ﺑـﺖ وﻛﯿـﻒ ﺗـﻌﻤـﻞ ) ﻧـﻈﺎم دوس و ﯾﻮﻧﻜﺲ ‪(...‬‬
‫) ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ أﻣﺜﻠﺔ ﺗﻄﺒﯿﻘﯿﺔ ﻋﻠﻰ ﻋﻤﻠﯿﺔ إﻗﻼع اﻟﻨﻈﺎم وﻛﯿﻒ ﺗﻤﺖ ﻓﻲ ﺑﻘﯿﺔ اﻷﻧﻈﻤﺔ (‬

‫‪ - ٣‬ﻣﺎﻫــﻮ اﻟﺠـﺪﯾـﺪ ﻓـﻲ ﺑـﺮﻣـﺠﺔ اﻷﻧـﻈﻤﺔ ‪ ٣٢‬ﺑـﺖ ) ﻧـﻈﺎم وﻧـــﺪوز وﻧـﻈﺎم ﻟﯿـﻨﻜﺲ ‪(...‬‬
‫) ﻣـﻔـﻬﻮم اﻟﺠـﺪاول و اﻟﻨـﻤـﻂ اﻟﺤﻘـﯿـﻘﻲ و ﺗـﻌـﺪد اﻟـﻤـﻬﺎم واﻟﺒـﻮاﺑـﺎت واﻹﻣـﺘـﯿـﺎزات (‬

‫ﻗﺪ ﺗﺘﻄﻠﺐ ﻗﺮاﺋﺔ ﻫﺬا اﻟﻜﺘﺎب ﻓﻬﻢ ﺑﺴﯿﻂ ﻟﻠﻐﺔ اﻹﺳﻤﺒﻠﻲ ﺑﺎﻹﺿﺎﻓﺔ ﻟﺒﻌﺾ ﻗﻄﻊ اﻟﺠﻬﺎز اﻟﻬﺎردوﯾﺮ‬

‫) وﻋﻠــﻰ ﺑـﺮﻛــﺔ اﷲ ﻧﺒـــــــــــــــﺪأ (‬


‫أوﻻ ‪ :‬ﻋﻤﻠﯿﺔ اﻹﻗﻼع‬

‫اﻵن ﻋﻨـﺪك ﺟـﻬﺎز ﻛﻤﺒﯿﻮﺗـﺮ ﺑـﺠﺎﻧﺒـﻚ ‪ ...‬ﺑـﺸﺮط أن ﯾﻜﻮن ﻣﻐﻠﻖ ‪ .‬ﺑﻤﻌﻨﻰ أﻧﺔ ﻏﯿﺮ ﻣﻮﺻﻮل ﺑﺎﻟﻜﻬﺮﺑﺎء!‬

‫ﻗﻢ ﺑﺘﻮﺻﯿﻞ ﻛﻞ أﺟﺰاء اﻟﻜﻤﺒﯿﻮﺗﺮ ‪+‬ﺗﺄﻛﺪ ﻣﻦ ﺗﻮﺻﯿﻞ أﺳﻼك اﻟﻜﻬﺮﺑﺎء ‪ +‬ﺿﻊ أﺻﺒﻌﻚ ﻋﻠﻰ زر اﻟﺘﺸﻐﯿﻞ‬

‫ﻫﻞ أﻧﺖ ﻣﺴﺘﻌﺪ ﻟﺘﺸﻐﯿﻞ اﻟﻜﻤﺒﯿﻮﺗﺮ ؟!‬

‫ﺳﻨﻘﻮم اﻵن ﺑﻜﺘﺎﺑﺔ ﻛﻞ ﻋﻤﻠﯿﺔ ﺗﺤﺪث ﻣﻦ أول ﻣﺎ ﺗﻀﻐﻂ ﻋﻠﻰ زر اﻟﺘﺸﻐﯿﻞ ‪..‬إﻟﻰ أن ﺗﻈﻬﺮ ﻧﺎﻓﺬة ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ‬

‫واﻵن إﺿـﻐﻂ ﻋﻠـﻰ زر أو ﻣـﻔﺘﺎح اﻟﺘـﺸﻐﯿﻞ وإﻗـﺮأ ﻛـﻞ ﻛﻠـﻤﺔ ﻓـﻲ اﻟﻤـﻮﺿـﻮع ﺑـﺘﻔﻜﯿـﺮ ﻋﻤـﯿﻖ ‪ ...‬اﻟﺒــــﺪاﯾﺔ‬

‫ﯾﺒﺪأ ﻣﻮزع اﻟﻜﻬﺮﺑﺎء أو اﻟﺒﻮر ﺳﺒﻼي ﺑﺈﻣﺪاد اﻟﻠﻮﺣﺔ اﻷم ﺑﺎﻟﻄﺎﻗﺔ ‪ ..‬ﻣﺒﺎﺷﺮة ﺗﺼﻞ اﻟﻄﺎﻗﺔ إﻟﻰ اﻟﻤﻌﺎﻟﺞ‬

‫ﯾﺸﺘﻐﻞ اﻟﻤﻌﺎﻟﺞ أول ﻣﺎ ﯾﻘﻮم ﺑﺔ ﻫﻮ ﺗﺼﻔﯿﺮ ﻟﻜﻞ ﻣﺴﺠﻼت اﻟﻤﻌﺎﻟﺞ ﻣﺜﻞ ‪ ax‬و ‪ bx‬و ‪ ds‬و‪..‬و‪..‬‬

‫ﺑﻌﺪ ذﻟﻚ ﯾﻘﻮم ﺑﺸﻐﻠﺔ ﻣﻬﻤﺔ ﻟﺒﺪء اﻟﺘﺤﻜﻢ ‪ ..‬ﯾﻘﻮم اﻟﻤﻌﺎﻟﺞ ﺑﺈﻋﻄﺎء اﻟﻤﺴﺠﻞ ‪ cs‬وﻫﻮ ﻗﺴﻢ اﻟﺸﻔﺮة أو اﻟﺘﻨﻔﯿﺬ‬

‫اﻟﻘﯿﻤﺔ ‪ )F000‬ﻛﻞ اﻷرﻗﺎم ﺑﺎﻟﺮﻣﺰ اﻟﺴﺖ ﻋﺸﺮي أو اﻟﻬﻜﺲ ( وﺑﻬﺬا ﯾﻜﻮن اﻟﻤﻌﺎﻟﺞ ﻗﺪ ﺣﺪد ﻗﺴﻢ اﻟﺘﻨﻔﯿﺬ‬

‫وﺑﻌﺪ ذﻟﻚ ﯾﻘﻮم ﺑﺘﺤﺪﯾﺪ اﻹزاﺣﺔ ﻟﻠﻘﺴﻢ وأﻛﯿﺪ ﺑﻮاﺳﻄﺔ اﻟﻤﺴﺠﻞ ‪ ip‬ﻓﯿﻌﻄﯿﺔ اﻟﻘﯿﻤﺔ ‪FFF0‬‬

‫ﺗﻼﺣﻆ أن اﻟﻤﻌﺎﻟﺞ ﺑﺪأ اﻟﺘﻨﻔﯿﺬ ﻓﻲ اﻟﻨﻤﻂ اﻟﺤﻘﯿﻘﻲ أي ﻧﻤﻂ ‪ ١٦‬ﺑﺖ وﻗﺪ إﺳﺘﺨﺪم ﻣﺴﺠﻼت ﻫﺬا اﻟﻨﻤﻂ‬

‫واﻟﺴﺒﺐ ﻓﻲ ذﻟﻚ ﻫﻮ اﻟﺘﻮاﻓﻘﯿﺔ ﺑﯿﻦ اﻷﻧﻈﻤﺔ ‪ +‬إﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل إﻟﻰ أي ﻋﻨﻮان ﻓﻲ اﻟﺬاﻛﺮة‬

‫واﻵن اﻟﻤﻌﺎﻟﺞ ﺻﻔﺮ أو ﻫﯿﺄ ﻛﻞ اﻟﻤﺴﺠﻼت ‪ +‬ﺣﺪد ﺑﺪاﯾﺔ اﻟﺘﻨﻔﯿﺬ ﻓﻲ اﻟﺬاﻛﺮة‬

‫ﺑﻌﺪ ذﻟﻚ ﯾﻘﻮم ﺑﻨﻘﻞ اﻟﺘﻨﻔﯿﺬ ﻣﻦ اﻟﻌﻨﻮان اﻟﺬي ﺣﺪدة اﻟﻤﻌﺎﻟﺞ إﻟﻰ ﻧﻈﺎم اﻹدﺧﺎل واﻹﺧﺮاج اﻷﺳﺎﺳﻲ )اﻟﺒﯿﻮس (‬

‫ﻣﺎﻫﻮ اﻟﺒﯿﻮس ‪ :‬ﻋﺒﺎرة ﻋﻦ ﺑﺮﻧﺎﻣﺞ ﻣﺨﺰن ﻓﻲ ذاﻛﺮة ﻋﻠﻰ اﻟﻠﻮﺣﺔ اﻷم ﺗﺴﻤﻰ اﻟﺬاﻛﺮة‪ROM‬‬

‫وﻫﻲ ذاﻛﺮة ﻟﻠﻘﺮاﺋﺔ ﻓﻘﻂ ‪ +‬أﻧﻬﺎ ﻻﺗﻔﻘﺪ اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﺨﺰﻧﺔ ﺑﻬﺎ ﻋﻨﺪ إﻏﻼق اﻟﺠﻬﺎز‬

‫واﻷﻣﺜﻠﺔ ﻋﻠﻰ اﻟﺒﺮاﻣﺞ اﻟﻤﺨﺰﻧﺔ ﻓﻲ ذاﻛﺮة ‪ ROM‬ﻛﺜﯿﺮة‪ ..‬ﻫﻞ ﻻﺣﻈﺖ ﺷﻌﺎرات اﻟﺸﺮﻛﺎت ﻓﻲ ﺑﺪاﯾﺔ اﻟﺘﺸﻐﯿﻞ‬

‫ﻣﺜﻞ ﻛﺮت اﻟﺸﺎﺷﺔ ﯾﻈﻬﺮ ﻟﻚ ﻋﻼﻣﺔ ﺗﺠﺎرﯾﺔ ﻣﺜﻼ ‪ ..SIS‬ﻫﺬة اﻟﺒﺮاﻣﺞ ﻛﻠﻬﺎ ﻣﺨﺰﻧﺔ ﻓﻲ اﻟﺬاﻛﺮة ‪ROM‬‬

‫وﻟﻠﻤﻌﻠﻮﻣﺔ ‪ :‬ﯾﻤﻜﻦ ﻟﻠﻬﻜﺮ أو اﻟﻜﺮاﻛﺮ) اﻟﻤﺨﺘﺼﯿﻦ ﻓﻲ اﻟﺒﺮﻣﺠﺔ اﻟﻌﻜﺴﯿﺔ ( اﻟﻮﺻﻮل ﻟﻠﺒﺮاﻣﺞ اﻟﻤﺨﺰﻧﺔ ﻓﻲ ‪ROM‬‬
‫وﺗﻐﯿﯿﺮ ﻣﺤﺘﻮﻫﺎ ‪ ..‬ﺑﻞ وﻛﺴﺮ ﺣﻤﺎﯾﺘﻬﺎ ؟ أﻛﯿﺪ ﺗﺮﯾﺪ أﻣﺜﻠﺔ ‪ ..‬ﺗﻔﻀﻞ‬

‫‪http://hackingthexbox.com/‬‬

‫‪http://www.xenatera.com/bunnie/proj/anatak/xboxmod.html‬‬

‫واﻵن ﻛﯿﻒ ﺗﻌﻤﻞ ﻫﺬة اﻟﺒﺮاﻣﺞ ‪ ...‬إذا ﻓﻬﻤﺖ اﻟﺒﯿﻮس ﺳﺘﻌﺮف اﻟﻘﺼﺔ!‬
‫ﻛﯿﻒ ﯾﻌﻤﻞ اﻟﺒﯿﻮس ؟‬

‫ﺑﻌﺪ أن ﯾﺠﻬﺰ اﻟﻤﻌﺎﻟﺞ اﻟﻤﺴﺠﻼت ﯾﻘﻮم ﺑﺘﺴﻠﯿﻢ اﻟﻘﯿﺎدة أو اﻟﺘﺤﻜﻢ ﻟﻠﻨﻈﺎم ﺑﯿﻮس‬

‫ﯾﺒﺪأ اﻟﺘﻨﻔﯿﺬ ﻓﻲ اﻟﺒﯿﻮس ﻋﻨﺪ اﻟﺴﻄﺮ ‪ ) ٤٣٠‬ﻓﻲ ﻣﻌﺎﻟﺠﺎت إﻧﺘﻞ ( ﯾﻘﻮم اﻟﺒﯿﻮس ﺑﻌﺪد ﻣﻦ اﻟﻤﻬﺎم اﻷﺳﺎﺳﯿﺔ‬

‫أول ﻣﻬﻤﺔ ﻟﻠﺒﯿﻮس ﻫﻲ ﻓﺤﺺ ﻗﻄﻊ اﻟﺠﻬﺎز‪:‬‬

‫ﻻ ﺗﻌﺘﻘﺪ أن ﻃﺮﯾﻘﺔ ﻓﺤﺺ اﻷﺟﻬﺰة أﻣﺮ ﻣﻌﻘﺪ ‪ ...‬ﺑﻜﻞ ﺑﺴﺎﻃﺔ ﯾﻘﻮم اﻟﺒﯿﻮس ﺑﺈرﺳﺎل إﺷﺎرة ﻟﻤﻨﻔﺬ اﻟﺠﻬﺎز‬

‫ﻋﻦ ﻃﺮﯾﻖ اﻷﻣﺮ ‪ out‬وﺑﻌﺪ ذﻟﻚ ﯾﻘﻮم ﺑﺈﺳﺘﻘﺒﺎل أي إﺷﺎرة ﻣﻦ اﻟﺠﻬﺎز ﻋﻦ ﻃﺮﯾﻖ اﻷﻣﺮ‪IN‬‬

‫إذا وﺻﻠﺖ أي إﺷﺎرة ﻣﻦ اﻟﺠﻬﺎز ﻣﻌﻨﻰ ذﻟﻚ أﻧﺔ ﺷﻐﺎل ‪ ...‬وإذا ﻟﻢ ﺗﺼﻞ أي إﺷﺎرة ﻣﻌﻨﺎة ﺧﻄﺄ ﻓﻲ اﻟﺠﻬﺎز‬

‫وﻫﻜﺬا ﻣﻊ ﻛﻞ أﺟﻬﺰة اﻟﻜﻤﺒﯿﻮﺗﺮ‪.‬‬

‫ﻓﻲ ﻧﻘﻄﺔ ﻣﻬﻤﺔ ﻓﻲ اﻟﻔﺤﺺ ‪ ..‬أول ﻣﺎﯾﻘﻮم ﺑﺔ اﻟﺒﯿﻮس ﻓﺤﺺ ﻛﺮت اﻟﺸﺎﺷﺔ ‪ +‬ﻣﻨﻔﺬ اﻟﺸﺎﺷﺔ‬

‫إذا وﺟﺪ أي ﺧﻄﺄ ﻓﯿﺔ ) ﺑﻤﻌﻨﻰ أن اﻟﺸﺎﺷﺔ ﻻ ﺗﻌﻤﻞ وﻻﯾﻤﻜﻦ رؤﯾﺔ أي ﻣﻼﺣﻈﺔ ﯾﻜﺘﺒﻬﺎ اﻟﺒﯿﻮس ﻋﻠﻰ اﻟﺸﺎﺷﺔ(‬

‫ﯾﻘﻮم اﻟﺒﯿﻮس ﻓﻲ ﻫﺬة اﻟﺤﺎل ﺑﺈﺳﺘﺨﺪام ﻃﺮﯾﻘﺔ اﻷﺻﻮات أو اﻟﺼﺎﻓﺮة ﻟﻌﺮض أي ﺧﻄﺄ ﻓﻲ ﻋﻤﻠﯿﺔ اﻟﻔﺤﺺ‬

‫أﻣﺜﻠﺔ ﻷﻫﻞ اﻟﺼﯿﺎﻧﺔ‬

‫ﻗﻤﺖ ﺑﺘﺸﻐﯿﻞ اﻟﺠﻬﺎز ‪ ..‬ﻟﻢ ﯾﻌﻤﻞ اﻟﺠﻬﺎز ‪ ..‬ﻟﻢ ﯾﺼﺪر اﻟﺒﯿﻮس أي ﺻﻮت ) ﻋﻠﻰ ﻃﻮل اﻟﺨﻄﺄ ﻓﻲ اﻟﺒﻮر ﺳﺒﻼي(‬

‫ﻷﻧﺔ ﻛﻤﺎ ذﻛﺮﻧﺎ‪ .‬ﯾﻘﻮم اﻟﺒﯿﻮس ﺑﺈﺻﺪار ﺻﻮت إذا وﺟﺪ ﺧﻄﺄ‪ .‬وإذا ﻟﻢ ﯾﺼﺪر أي ﺻﻮت ﻣﻌﻨﻰ ذﻟﻚ أن اﻟﺘﻨﻔﯿﺬ‬

‫ﻟﻢ ﯾﺼﻞ إﻟﻰ اﻟﺒﯿﻮس ‪ ..‬ﻻﺣﻆ ﻣﻌﻨﻰ اﻷﺻﻮات ﻓﻲ اﻟﺒﯿﻮس‬

‫ﺻﺎﻓﺮة واﺣﺪة ﻗﺼﯿﺮة = ﻻ ﺗﻮﺟﺪ أﺧﻄﺎء ﻓﻲ ﻋﻤﻠﯿﺔ اﻟﻔﺤﺺ‬

‫ﺻﺎﻓﺮﺗﯿﻦ ﻗﺼﯿﺮة = ﺧﻄﺄ ﻓﻲ ﻛﺮت اﻟﺸﺎﺷﺔ أو ﻃﺮﯾﻘﺔ ﺗﻮﺻﯿﻞ اﻟﺸﺎﺷﺔ‬

‫وﻫﻜﺬا ﻣﻊ ﻛﻞ اﻷﺧﻄﺎء‬

‫واﻟﻨﻘﻄﺔ اﻟﺜﺎﻧﯿﺔ ‪ ...‬إذا ﻛﺎﻧﺖ اﻟﺸﺎﺷﺔ ﺷﻐﺎﻟﺔ ) ﯾﺘﻢ ﻋﺮض اﻷﺧﻄﺎء ﺑﻄﺮﯾﻘﺔ اﻷرﻗﺎم(‬

‫أﺧﻄﺎء اﻟﺒﯿﻮس ﻓﻲ ﻛﻠﻰ اﻟﺤﺎﻟﺘﯿﻦ ﺗﺠﺪﻫﺎ ﻫﻨﺎ‪:‬‬

‫‪http://www.pchell.com/hardware/beepcodes.shtml‬‬
‫‪-----------------------------------‬‬
‫ﺑﻌﺪ أن ﯾﻘﻮم اﻟﺒﯿﻮس ﺑﻔﺤﺺ اﻷﺟﻬﺰة ﯾﻘﻮم ﺑﺈﻧﺸﺎء ﺟﺪوﻟﯿﻦ‬

‫وﻫﻤﺎ ﺟﺪول ﻣﻘﺎﻃﻌﺎت اﻟﺒﯿﻮس – و ﺟﺪول ﻣﻌﻠﻮﻣﺎت اﻟﺒﯿﻮس‬


‫اﻷول ‪ :‬ﺟﺪول ﻣﻘﺎﻃﻌﺎت ‪: BIOS‬‬

‫ﻋﻨﺪ اﻟﻌﻨﻮان ‪ ) ٠٠٠٠:٠٠٠٠‬اﻟﻌﻨﻮان ﺻﻔﺮ ( ﯾﺒﺪأ ﺑﻜﺘﺎﺑﺔ ﻋﻨﻮاﯾﻦ اﻟﻤﻘﺎﻃﻌﺎت ‪.‬ﻛﻞ ﻣﻘﺎﻃﻌﺔ‬
‫ﺗﺄﺧﺬ ﻟﻬﺎ ‪ ٤‬ﺑﺎﯾﺖ ‪ ..‬ﻟﺘﺪل ﻋﻠﻰ ﻋﻨﻮان ﺑﺪاﯾﺔ ﺗﻨﻔﯿﺬ اﻟﻤﻘﺎﻃﻌﺔ ‪ ،‬ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫اﻟﻤﻘﺎﻃﻌﺔ ﺻﻔﺮ ‪ INT 0‬ﻋﻨﻮاﻧﻬﺎ ‪ ) ٠٠٠٠:٠٠٠٠‬ﻫﺬا اﻟﻌﻨﻮا ﯾﺤﺘﻮي ﻋﻠﻰ ﻋﻨﻮان اﻟﺘﻨﻔﯿﺬ (‬
‫اﻟﻤﻘﺎﻃﻌﺔ واﺣﺪ ‪ INT 1‬ﻋﻨﻮاﻧﻬﺎ ‪ ، ٠٠٠٠:٠٠٠٤‬اﻟﻤﻘﺎﻃﻌﺔ ‪ ٢‬ﻋﻨﻮاﻧﻬﺎ ‪0000:0008‬‬

‫ﻫﺬا اﻟﺠﺪول اﻷول ) ﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت (‬

‫ﻣﻼﺣﻈﺎت‬ ‫ﻣﺠﺎل اﻟﻌﻨﻮﻧﺔ )‪(Hex‬‬ ‫رﻗﻢ اﻟﻤﻘﺎﻃﻌﺔ )‪(Hex‬‬


‫ﻣﻘﺎﻃﻌﺔ ﻟﺮاﯾﺔ اﻟﻔﯿﺾ ﻓﻲ اﻟﻘﺴﻤﺔ‬ ‫‪0000:0000h‬‬ ‫‪INT 00 h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﻋﻤﻞ اﻟﻤﻌﺎﻟﺞ ﺧﻄﻮة ‪..‬ﺧﻄﻮة‬ ‫‪0000:0004h‬‬ ‫‪INT 01 h‬‬
‫ﻣﻘﺎﻃﻌﺔ اﻷﺟﻬﺰة اﻟﺨﺎرﺟﯿﺔ ﻟﻤﺎﯾﻌﺮف ﺑﺪﺑﻮس ‪NMI‬‬ ‫‪0000:0008h‬‬ ‫‪INT 02 h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﻟﻜﺘﺎﺑﺔ ﻧﻘﻄﺔ ﺗﻮﻗﻒ ﻟﻠﺒﺮﻧﺎﻣﺞ‬ ‫‪0000:000Ch‬‬ ‫‪INT 03 h‬‬
‫ﻣﻘﺎﻃﻌﺔ راﯾﺔ اﻟﻔﯿﺾ ﻓﻲ ﻣﺴﺠﻞ اﻟﺤﺎﻟﺔ‬ ‫‪0000:0010h‬‬ ‫‪INT 04 h‬‬
‫ﻃﺒﺎﻋﺔ اﻟﺸﺎﺷﺔ‬ ‫‪0000:0014h‬‬ ‫‪INT 05 h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﻹﺧﺘﺒﺎر ﺗﻨﻔﯿﺬ ﺗﻌﻠﯿﻤﺔ ﻏﯿﺮ ﻣﺼﺮح ﻟﻬﺎ‬ ‫‪0000:0018h‬‬ ‫‪INT 06 h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﺿﻐﻂ وﺗﺸﻔﯿﺮ اﻟﺘﻌﻠﯿﻤﺎت‬ ‫‪0000:001Ch‬‬ ‫‪INT 07 h‬‬
‫ﺧﺪﻣﺎت اﻟﻤﺆﻗﺖ‬ ‫‪0000:0020h‬‬ ‫‪INT 08 h‬‬
‫ﺧﺪﻣﺎت اﻟﺠﻬﺎز اﻟﻤﺸﻐﻞ ﻟﻠﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ‬ ‫‪0000:0024h‬‬ ‫‪INT 09 h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﺗﺴﺘﺨﺪم ﻓﻲ اﻟﺘﺒﺪﯾﻞ ﺑﯿﻦ اﻟﻤﻬﺎم‬ ‫‪0000:0028h‬‬ ‫‪INT 0A h‬‬
‫ﺧﺪﻣﺔ اﻟﻤﻨﻔﺬ اﻟﺘﺴﻠﺴﻠﻲ ‪com2‬‬ ‫‪0000:002Ch‬‬ ‫‪INT 0B h‬‬
‫ﺧﺪﻣﺔ اﻟﻤﻨﻔﺬ ‪com1‬‬ ‫‪0000:0030h‬‬ ‫‪INT 0C h‬‬
‫ﺧﺪﻣﺔ اﻟﻤﻨﻔﺬ اﻟﻤﺘﻮازي ‪LPT 2‬‬ ‫‪0000:0034h‬‬ ‫‪INT 0D h‬‬
‫ﺧﺪﻣﺎت اﻟﻘﺮص اﻟﻤﺮن ) اﻟﻔﻠﻮﺑﻲ(‬ ‫‪0000:0038h‬‬ ‫‪INT 0E h‬‬
‫ﺧﺪﻣﺔ اﻟﻤﻨﻔﺬ اﻟﻤﺘﻮازي ‪LPT1‬‬ ‫‪0000:003Ch‬‬ ‫‪INT 0F h‬‬
‫ﺧﺪﻣﺎت ﺷﺎﺷﺔ اﻟﻌﺮض‬ ‫‪0000:0040h‬‬ ‫‪INT 10 h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﺗﻌﯿﺪ اﻷﺟﻬﺰة اﻟﻤﺘﺼﻠﺔ ﺑﺎﻟﻜﻤﺒﯿﻮﺗﺮ‬ ‫‪0000:0044h‬‬ ‫‪INT 11 h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﺣﺠﻢ اﻟﺬاﻛﺮة‬ ‫‪0000:0048h‬‬ ‫‪INT 12 h‬‬
‫ﺧﺪﻣﺎت اﻟﻘﺮص اﻟﺼﻠﺐ‬ ‫‪0000:004Ch‬‬ ‫‪INT 13 h‬‬
‫ﺧﺪﻣﺎت ﻣﻨﺎﻓﺬ ﻹﺗﺼﺎﻻت‬ ‫‪0000:0050h‬‬ ‫‪INT 14 h‬‬
‫ﺧﺪﻣﺎت اﻟﻨﻈﺎم‬ ‫‪0000:0054h‬‬ ‫‪INT 15 h‬‬
‫ﺧﺪﻣﺎت ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ‬ ‫‪0000:0058h‬‬ ‫‪INT 16 h‬‬
‫ﺧﺪﻣﺎت اﻟﻄﺎﺑﻌﺔ‬ ‫‪0000:005Ch‬‬ ‫‪INT 17 h‬‬
‫ﺧﺪﻣﺎت ﻟﺘﺤﻤﯿﻞ‪ROM BASIC‬‬ ‫‪0000:0060h‬‬ ‫‪INT 18 h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﺗﺤﻔﯿﺰ ﻗﺮص اﻹﻗﻼع‬ ‫‪0000:0064h‬‬ ‫‪INT 19 h‬‬
‫ﺧﺪﻣﺎت اﻟﻮﻗﺖ اﻟﺤﻘﯿﻘﻲ ﻟﻠﺴﺎﻋﺔ‬ ‫‪0000:0068h‬‬ ‫‪INT 1A h‬‬
‫ﺗﺤﺪﯾﺪ ﻣﺪة اﻹﺳﺘﺠﺎﺑﺔ ﻟﻠﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ‬ ‫‪0000:006Ch‬‬ ‫‪INT 1B h‬‬
‫ﻣﻘﺎﻃﺔ اﻟﺘﻮﻗﯿﺖ ﻣﻘﺪر ﺑﺎﻟﻠﺤﻈﺔ‬ ‫‪0000:0070h‬‬ ‫‪INT 1C h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﺟﺪول وﺑﺎرﻣﺘﺮات ﺷﺎﺷﺔ اﻟﻌﺮض‬ ‫‪0000:0074h‬‬ ‫‪INT 1D h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﺟﺪول وﺑﺎرﻣﺘﺮات اﻟﻘﺮص اﻟﻤﺮن‬ ‫‪0000:0078h‬‬ ‫‪INT 1E h‬‬
‫ﻣﻘﺎﻃﻌﺔ ﺧﺼﺎﺋﺺ اﻟﺨﻂ واﻟﻤﺤﺎرف‬ ‫‪0000:007Ch‬‬ ‫‪INT 1F h‬‬
‫ﺟﺪول ﻣﻘﺎﻃﻌﺎت اﻟﺒﯿﻮس‬
‫ﺗﻼﺣﻆ أﻧﻨﺎ ﺗﻮﻗﻔﻨﺎ ﻋﻨﺪ اﻟﻌﻨﻮان ‪ address=1F ...‬أﯾﻦ ﺑﻘﯿﺔ اﻟﻤﻘﺎﻃﻌﺎت‬

‫ﺑﺎﻗﻲ اﻟﻤﻘﺎﻃﻌﺎت ﺳﻨﻜﺘﺒﻬﺎ ﻓﻲ وﻗﺘﻬﺎ‪ ..‬ﻷن ﻧﻈﺎم اﻟﺪوس ﯾﺘﻄﻔﻞ وﯾﺒﺪأ ﻓﻲ اﻟﻜﺘﺎﺑﺔ ﻋﻨﺪ اﻟﻌﻨﻮان اﻟﺬي ﺗﻮﻗﻔﻨﺎ ﻋﻨﺪة‬

‫اﻟﻤﻬﻢ ‪ :‬ﻣﺎاﻟﻔﺎﺋﺪة ﻣﻦ ﻫﺬا اﻟﺠﺪول ‪ +‬ﻣﺎ اﻟﻔﺎﺋﺪة ﻣﻦ اﻟﻤﻘﺎﻃﻌﺎت ؟ !‬

‫أوﻻ ‪ :‬اﻟﻔﺎﺋﺪة ﻣﻦ اﻟﺠﺪول ﻫﻲ ﻧﻘﻞ اﻟﺘﻨﻔﯿﺬ ‪ ..‬واﻟﻤﺜﺎل ﻋﻠﻰ ذﻟﻚ ﻓﻲ وﻧﺪوز ﻣﻜﺎﺗﺐ اﻟﺮﺑﻂ ذات اﻹﻣﺘﺪاد ‪dll‬‬

‫ﯾﻤﻜﻦ ﯾﻜﻮن اﻟﺸﺮح ﻏﯿﺮ ﻣﻔﻬﻮم ‪ :‬واﻟﺤﻞ ﺑﺎﻟﺘﻄﺒﯿﻖ اﻟﻌﻤﻠﻲ ‪:‬‬

‫ﻣﻦ ﻗﺎﺋﻤﺔ ‪ start‬ﺛﻢ ‪ run‬إﻛﺘﺐ ‪ debug‬وإﺿﻐﻂ أوﻛﻲ ) ﻟﺘﺸﻐﯿﻞ ﺑﺮﻧﺎﻣﺞ اﻟﺪﯾﺒﻐﺮ (‬

‫ﻣﺎ رأﯾﻜﻢ ﺑﻤﻘﺎﻃﻌﺔ ﺣﺠﻢ اﻟﺬاﻛﺮة وﻫﻲ اﻟﻤﻘﺎﻃﻌﺔ ‪ .. ١٢‬ﻋﻨﻮاﻧﻬﺎ ﻓﻲ اﻟﺬاﻛﺮة ‪٠٠٠٠:٠٠٤٨‬‬

‫ﻓﻲ ﺑﺮﻧﺎﻣﺞ اﻟﺪﯾﺒﻐﺮ أﻛﺘﺐ اﻷﻣﺮ ‪ D 0000:0048‬وﻫﻮ ﻋﻨﻮان اﻟﻤﻘﺎﻃﻌﺔ ‪ ،‬إﺣﻔﻆ أول ‪ ٤‬ﺑﺎﯾﺘﺎت‬

‫وﻟﺘﻜﻦ ﻣﺜﻼ ‪ : AA 09 0E 02‬ﻃﺒﻖ ﻋﻠﯿﻬﺎ ﻗﺎﻧﻮن اﻟﻌﻜﺲ ﻓﺘﺴﺎوي ‪020E:09AA‬‬

‫ﻫﻞ ﺗﻌﺮف ﻣﺎﯾﻤﺜﻠﺔ اﻟﻌﻨﻮان ‪ ،‬ﻫﻮ ﺑﺪاﯾﺔ اﻟﺘﻨﻔﯿﺬ ﻟﺸﻔﺮة اﻟﻤﻘﺎﻃﻌﺔ ‪ ...‬ﺟﺮب إذﻫﺐ ﻟﻠﻌﻨﻮان‬

‫ﺑﻮاﺳﻄﺔ أﻣﺮ ﻓﻚ اﻟﺘﺠﻤﯿﻊ ‪ u 020E:09AA‬وﻻﺣﻆ ﻛﯿﻒ ﺗﻨﻔﺬ اﻟﻤﻘﺎﻃﻌﺔ‬

‫اﻟﻔﺎﺋﺪة ﻣﻦ اﻟﻤﻘﺎﻃﻌﺔ‪:‬‬
‫أﻫﻢ ﻓﺎﺋﺪة ﻫﻲ ﺗﺒﺴﯿﻂ اﻷﻣﻮر وﻫﻮ ا ﺳﻠﻮب ﻣﺘﺒﻊ إﻟﻰ اﻵن ﻓﻲ اﻷﻧﻈﻤﺔ اﻟﺤﺪﯾﺜﺔ ﻣﺜﻞ وﻧﺪوز ‪xp‬‬

‫ﻣﺎ رأﯾﻜﻢ ﺑﺘﺸﺮﯾﺢ ﻣﻘﺎﻃﻌﺔ إﻇﻬﺎر ﺣﺠﻢ اﻟﺬاﻛﺮة ‪ ..‬ﻷﻧﻬﺎ أﺳﻬﻞ ﻣﻘﺎﻃﻌﺔ و أول ﻣﻘﺎﻃﻌﺔ ﯾﻨﻔﺬﻫﺎ اﻟﺒﯿﻮس‬

‫ﻛﻞ ﻣﺮة ﻋﻨﺪ ﺗﺸﻐﯿﻠﻚ ﻟﺠﻬﺎزك ﺗﺮى ﺑﺄن اﻟﻨﻈﺎم ﺑﯿﻮس ﺑﻌﺪ ﻓﺤﺺ اﻷﺟﻬﺰة ﯾﻌﺮض ﻟﻚ ﺣﺠﻢ اﻟﺬاﻛﺮة‬

‫ﻫﻞ ﺗﺮﯾﺪ أن ﺗﻌﺮف ﻛﯿﻒ ﯾﻨﻔﺬﻫﺎ ‪ ..‬ﻋﻦ ﻃﺮﯾﻖ ﺑﺮﻣﺠﺔ اﻟﻤﻨﺎﻓﺬ ‪ +‬اﻟﺒﺮﻣﺠﺔ اﻟﻤﺒﺎﺷﺮة ﻟﻠﺬاﻛﺮة‬

‫ﺑﻬﺬا اﻟﻜﻮد‪:‬‬
‫‪mov al,18h‬‬
‫‪out 70h,al‬‬
‫‪in al,71h‬‬
‫‪mov ah,al‬‬
‫‪mov al,17h‬‬
‫‪out 70h,al‬‬
‫‪in al,71h‬‬
‫ﺑﻌﺪ ﺗﻨﻔﯿﺬ ﻫﺬا اﻟﻜﻮد ﺳﯿﺼﺒﺢ ﻣﺴﺠﻞ = ‪ ax‬ﺣﺠﻢ اﻟﺬاﻛﺮة‬

‫ﻫﻞ ﻋﺮﻓﺖ ﻓﺎﺋﺪة اﻟﻤﻘﺎﻃﻌﺔ ‪ -‬ﻓﻘﻂ إﺳﺘﺒﺪل ﻛﻞ اﻟﻜﻮد ﺑﺘﻌﻠﯿﻤﺔ اﻟﻤﻘﺎﻃﻌﺔ ‪ INT 12‬وﺳﯿﺤﻤﻞ اﻟﻤﺴﺠﻞ ‪ ax‬ﺑﺤﺠﻢ اﻟﺬاﻛﺮة‬

‫ﻫﺬا ﻫﻮ ﻣﻔﻬﻮم اﻟﻤﻘﺎﻃﻌﺔ ‪ ،‬ﺑﻌﺪ ذﻟﻚ ﯾﺒﺪأ اﻟﺒﯿﻮس ﻓﻲ ﺑﻨﺎء اﻟﺠﺪول اﻟﺜﺎﻧﻲ‬
‫ﺟﺪول ﻣﻌﻠﻮﻣﺎت ‪: BIOS‬‬

‫وﻫﻮ ﺟﺪول ﯾﺨﺰن ﺑﺔ اﻟﺒﯿﻮﯾﺲ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻷﺟﻬﺰة ) اﻟﻬﺎردوﯾﺮ( اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺠﻬﺎز‬


‫ﯾﺒﺪأ ﻧﻈﺎم اﻟﺒﯿﻮس ﻓﻲ ﻛﺘﺎﺑﺔ ﻣﻌﻠﻮﻣﺎﺗﺔ ﻋﻨﺪ اﻟﻌﻨﻮان ‪٠٠٤٠:٠٠٠٠‬‬
‫وﻫﺬة اﻟﻤﻌﻠﻮﻣﺎت ﻫﻲ‪:‬‬

‫اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺳﺘﺨﺰن‬ ‫اﻟﻌﻨﻮان‬


‫ﻋﻨﻮان اﻟﻤﻨﻔﺬ ‪com1‬‬ ‫‪0040:0000h‬‬
‫ﻋﻨﻮان اﻟﻤﻨﻔﺬ ‪com2‬‬ ‫‪0040:0002h‬‬
‫ﻋﻨﻮان اﻟﻤﻨﻔﺬ ‪com3‬‬ ‫‪0040:0004h‬‬
‫ﻋﻨﻮان اﻟﻤﻨﻔﺬ ‪com4‬‬ ‫‪0040:0006h‬‬
‫ﻋﻨﻮان اﻟﻤﻨﻔﺬ ‪LPT1‬‬ ‫‪0040:0008h‬‬
‫ﻋﻨﻮان اﻟﻤﻨﻔﺬ ‪LPT2‬‬ ‫‪0040:000Ah‬‬
‫ﻋﻨﻮان اﻟﻤﻨﻔﺬ ‪LPT3‬‬ ‫‪0040:000Ch‬‬
‫ﻋﻨﻮان اﻟﻤﻨﻔﺬ ‪LPT4‬‬ ‫‪0040:000Eh‬‬
‫ﻣﺠﻤﻮﻋﺔ اﻷﺟﻬﺰة وﻫﻮ ﻋﺒﺎرة ﻋﻦ ‪ ١٦‬ﺑﺖ ﺗﻤﺜﻞ اﻷﺟﻬﺰة اﻟﻤﺜﺒﺘﺔ‬ ‫‪0040:0010h‬‬
‫راﯾﺎت اﻟﻤﻘﺎﻃﻌﺔ واﻟﺘﺤﻘﻖ ﻣﻦ اﻷﺧﻄﺎء‬ ‫‪0040:0012h‬‬
‫ﺣﺠﻢ اﻟﺬاﻛﺮة ﺑﺎﻟﺒﺎﯾﺖ‬ ‫‪0040:0013h‬‬
‫ﻣﻌﺮف أو ﻛﻮد اﻟﺨﻄﺄ‬ ‫‪0040:0015h‬‬
‫راﯾﺎت اﻟﺤﺎﻟﺔ واﻟﺘﻐﯿﺮ ﻓﻲ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ‬ ‫‪0040:0017h‬‬
‫ﻣﺆﺷﺮ إﻟﻰ اﻟﺤﺮف اﻟﺘﺎﻟﻲ ﻓﻲ ﻣﺨﺰن ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ‬ ‫‪0040:001Ah‬‬
‫ﻣﺆﺷﺮ إﻟﻰ اﻟﺤﺮف اﻷﺧﯿﺮ ﻓﻲ ﻣﺨﺰن ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ‬ ‫‪0040:001Ch‬‬
‫ﻣﺤﺘﻮى ﻣﺨﺰن ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ‬ ‫‪0040:001Eh‬‬
‫ﻣﻌﺮف اﻟﻘﺮص اﻟﻤﺮن‪A=0 - B=1 C=2 ..‬‬ ‫‪0040:003Eh‬‬
‫ﺣﺎﻟﺔ ﻣﺤﺮك اﻷﻗﺮاص اﻟﻤﺮن‬ ‫‪0040:003Fh‬‬
‫ﻣﺴﺠﻞ اﻟﺘﺤﻜﻢ ﻟﻠﻘﺮص اﻟﺼﻠﺐ واﻟﻤﺮن‬ ‫‪0040:0042h‬‬
‫إﻋﺪادات ﻧﻤﻂ ﺷﺎﺷﺔ اﻟﻌﺮض‬ ‫‪0040:0049h‬‬
‫ﻋﺪد اﻷﻋﻤﺪة ﻓﻲ ﻛﻞ ﺳﻄﺮ‬ ‫‪0040:004Ah‬‬
‫ﺣﺠﻢ اﻟﺼﻔﺤﺔ ﻓﻲ ﺷﺎﺷﺔ اﻟﻌﺮض‬ ‫‪0040:004Ch‬‬
‫ﻧﻘﻄﺔ ﻇﻬﻮر اﻟﻤﺆﺷﺮ ﻓﻲ ﺷﺎﺷﺔ اﻟﻌﺮض‬ ‫‪0040:0050h‬‬
‫ﯾﺤﺘﻮي ﻋﻠﻰ ﻋﻨﻮان ﻣﻨﻔﺬ اﻹدﺧﺎل واﻹﺧﺮاج ﻟﺸﺎﺷﺔ اﻟﻌﺮض‬ ‫‪0040:0063h‬‬
‫ﻟﻮﺣﺔ اﻷﻟﻮان ﻟﺸﺎﺷﺔ اﻟﻌﺮض‬ ‫‪0040:0066h‬‬
‫ﻋﺪد اﻷﻗﺮاص اﻟﺼﻠﺒﺔ ﻓﻲ اﻟﺠﻬﺎز‬ ‫‪0040:0075h‬‬
‫ﺑﺎﯾﺖ اﻟﺘﺤﻜﻢ ﻟﻠﻘﺮص اﻟﺼﻠﺐ‬ ‫‪0040:0076h‬‬
‫ﻋﻨﻮان ﻣﻨﻔﺬ اﻹدﺧﺎل واﻹﺧﺮاج ﻟﻠﻘﺮص اﻟﺼﻠﺐ‬ ‫‪0040:0077h‬‬
‫ﻣﺴﺠﻞ أﺧﻄﺎء اﻟﻘﺮص اﻟﺼﻠﺐ‬ ‫‪0040:008Dh‬‬
‫ﻣﻌﺮف ﻛﺮت اﻟﺸﺒﻜﺔ اﻟﻤﺤﻠﯿﺔ‬ ‫‪0040:00A1h‬‬
‫ﻣﻨﻄﻘﺔ ﻣﻌﻠﻮﻣﺎت اﻹﺗﺼﺎﻻت ﺑﯿﻦ اﻟﺘﻄﺒﯿﻘﺎت‬ ‫‪0040:00F0h‬‬

‫وﺑﻬﺬا ﯾﻜﻮن ﻧﻈﺎم اﻟﺒﯿﻮس ﻗﺪ ﺟﻬﺰ ﺧﺪﻣﺎﺗﺔ وﻫﻲ اﻟﻤﻘﺎﻃﻌﺎت وﺑﻌﺪ ذﻟﻚ ﺟﻬﺰ ﻣﻌﻠﻮﻣﺎﺗﺔ‬

‫وﻓﻲ اﻟﻨﻬﺎﯾﺔ ﯾﺒﺤﺚ ﻋﻦ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ﻟﺘﺤﻤﯿﻠﺔ إﻟﻰ اﻟﺬاﻛﺮة وﺗﺴﻠﯿﻤﺔ ﻣﻬﻤﺔ اﻟﻘﯿﺎدة واﻟﺘﺤﻜﻢ‬

‫ﻛﯿﻒ ‪ ...‬ﺗﺎﺑــــﻊ اﻟﻤﻮﺿﻮع‬

‫ﺗﺤﻤﯿﻞ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ إﻟﻰ اﻟﺬاﻛﺮة وﺑﺪاﯾﺔ ﻋﻤﻠﺔ‪:‬‬

‫ﯾﺒﺪأ اﻟﺒﯿﻮس ﻓﻲ اﻟﺒﺤﺚ ﻋﻦ ﻣﺸﻐﻞ اﻟﻨﻈﺎم وﻫﻮ ﻣﺎ ﯾﻌﺮف ﺑﻘﻄﺎع اﻹﻗﻼع ‪boot sector‬‬

‫ﻗﺪ ﯾﻜﻮن ﻓﻲ ﻗﺮص ﻣﺮن أو ﻗﺮص ﺻﻠﺐ أو ﺣﺘﻰ ﺳﯿﺪي ‪ ،‬اﻟﻤﻬﻢ أن اﻟﺒﯿﻮس ﯾﺒﺪأ اﻟﺒﺤﺚ‬
‫ﻓﻲ ﻛﻞ اﻷﻗﺮاص ‪ ..‬ﺣﺴﺐ اﻟﺘﺮﺗﯿﺐ اﻟﺬي ﺣﺪدﺗﺔ ﻓﻲ إﻋﺪادات اﻟﺒﯿﻮس‬

‫داﺋﻤﺎ ﯾﻜﻮن ﻗﻄﺎع اﻹﻗﻼع ﻫﻮ اﻟﻘﻄﺎع اﻷول ﻓﻲ اﻟﻘﺮص وﯾﺠﺐ أن ﯾﺤﻤﻞ ﻋﻼﻣﺔ ﺗﺪل ﻋﻠﻰ أﻧﺔ ﻗﻄﺎع إﻗﻼع‬

‫= ‪55 AA‬‬ ‫اﻟﻌﻼﻣﺔ ﻫﻲ أن ﯾﻜﻮن آﺧﺮ ﺑﺎﯾﺘﯿﻦ ﻓﻲ اﻟﻘﻄﺎع‬

‫ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ إﻗﻼع ﻓﻲ اﻟﻘﻄﺎع اﻷول ﺷﻐﻠﺔ ﺳﻬﻠﺔ ﻷن اﻟﻤﻮﺿﻮع ﯾﺘﻄﻠﺐ ﻓﻬﻢ أﻣﺮﯾﻦ ﻓﻘﻂ‬

‫اﻷول‪ :‬إﺳﺘﺨﺪام ﻣﻘﺎﻃﻌﺎت اﻟﺒﯿﻮ س‬

‫ﺑﺮﻧﺎﻣﺞ اﻹﻗﻼع اﻟﻘﯿﺎﺳﻲ ﯾﺴﺘﺨﺪم ﻣﻘﺎﻃﻌﺘﯿﻦ ﻓﻘﻂ وﻫﻲ اﻟﻤﻘﺎﻃﻌﺔ ‪ ١٣‬ﻟﺘﺤﻤﯿﻞ اﻟﻤﻠﻔﺎت ﻣﻦ اﻟﻘﺮص‬

‫واﻟﻤﻘﺎﻃﻌﺔ ‪ ١٩‬ﻟﺘﺤﻔﯿﺰ اﻟﻘﺮص ﻟﻺﻗﻼع )وﻫﺬة اﻟﻤﻘﺎﻃﻌﺔ ﻗﺪ ﻻ ﺗﺴﺘﺨﺪم داﺋﻤﺎ(‬

‫واﻷﻣﺮ اﻟﺜﺎﻧﻲ ‪ :‬ﻣﻌﺮﻓﺔ اﻟﻌﻨﺎوﯾﻦ اﻟﺬي ﺳﯿﻨﺘﻘﻞ ﻟﻬﺎ اﻟﺘﻨﻔﯿﺬ ‪ +‬ﻣﻌﺮﻓﺔ ﻣﺨﺰن اﻟﻘﺮاﺋﺔ ﻣﻦ اﻟﻘﺮص‬

‫ﺳﻨﺘﺎﺑﻊ ﻗﺼﺔ إﻗﻼع اﻟﻜﻤﺒﯿﻮﺗﺮ وﺳﺘﺘﻀﺢ اﻷﻣﻮر‪.‬‬

‫ﺗﻮﻗﻔﻨﺎ ﻋﻨﺪ اﻟﺒﯿﻮس وﻃﺮﯾﻘﺔ ﺗﺤﻤﻠﯿﺔ ﻟﻠﻨﻈﺎم اﻟﺘﺸﻐﯿﻞ ‪ ،‬وﻗﻠﻨﺎ أﻧﺔ ﺳﯿﺤﻤﻞ ﻗﻄﺎع واﺣﺪ ﻓﻘﻂ‬

‫ﺑﻌﺪ أن ﯾﺠﺪ ﻗﻄﺎع اﻹﻗﻼع ﺳﯿﻘﻮم ﺑﺘﺤﻤﯿﻠﺔ إﻟﻰ اﻟﻌﻨﻮان ‪address =7C00‬‬

‫ﻣﺎذا ﺗﺴﺘﻔﯿﺪ ﻣﻦ ﻣﻌﺮﻓﺔ ﻋﻨﻮان اﻟﺘﺤﻤﯿﻞ ‪ ..‬أول ﺷﻲء ﺗﻘﻮم ﺑﺔ إﻋﻄﺎء اﻟﻤﺴﺠﻞ ‪ cs‬ﻫﺬة اﻟﻘﯿﻤﺔ‬

‫ﻟﯿﻨﺘﻘﻞ اﻟﺘﻨﻔﯿﺬ ﻟﻬﺎ ‪ ،‬ﺑﻌﺪ ذﻟﻚ ﻣﺒﺎﺷﺮة ﺗﻘﻮم ﺑﺈﺳﺘﺨﺪام اﻟﻤﻘﺎﻃﻌﺔ ‪ 13‬ﻟﺘﺤﻤﯿﻞ ﻛﻞ ﻣﺤﺘﻮﯾﺎت اﻟﻘﺮص‬

‫أو ﺗﺤﻤﻞ ﺑﺮﻧﺎﻣﺞ ﻣﻌﯿﻦ ‪ ،‬ﻓﻲ أﻣﻮر ﻣﻬﻤﺔ ﻋﻨﺪ ﻫﺬة اﻟﻨﻘﻄﺔ ؟ ﻣﺎذا ﯾﻌﺮف اﻟﺒﯿﻮس ﻋﻦ اﻟﻘﺮص‬

‫ﻫﻞ ﻣﺮت ﻋﻠﯿﻚ أﻧﻈﻤﺔ اﻟﻤﻠﻔﺎت ﻣﺜﻞ ‪ FAT ,NFS ,ex2..3‬وﻏﯿﺮﻫﺎ ﻣﻦ أﻧﻈﻤﺔ ﻣﻠﻔﺎت وﻧﺪوز وﻟﯿﻨﻜﺲ‬

‫ﺑﺈﺧﺘﺼﺎر ﺑﺮﻧﺎﻣﺞ اﻟﺒﯿﻮس ﻻ ﯾﻌﺮف ﺷﻲء ﻋﻦ ﻫﺬة اﻟﺨﺮاﺑﯿﻂ وﻻ ﯾﻌﺮف ﺣﺘﻰ أﯾﻦ ﺗﺒﺪأ وأﯾﻦ ﺗﻨﺘﻬﻲ‬

‫ﻣﺎ ﯾﻌﺮﻓﺔ اﻟﺒﯿﻮس ﻫﻮ ﺗﺮﻛﯿﺐ اﻟﻘﺮص اﻟﻔﯿﺰﯾﺎﺋﻲ ﻣﺜﻞ اﻟﺮأس و اﻹﺳﻄﻮاﻧﺔ و اﻟﻘﻄﺎع واﻟﻤﺴﺎر‬

‫ﺳﺄﻋﻄﯿﻚ ﻣﺜﺎل ﺑﺎرﻣﺘﺮات ﻣﻘﺎﻃﻌﺔ ﻗﺮاﺋﺔ ﻣﺤﺘﻮى اﻟﻘﺮص‬


‫ﺧﺪﻣﺔ ﻗﺮاﺋﺔ اﻟﻘﺮص وﺗﺤﻤﯿﻞ اﻟﺒﺮاﻣﺞ إﻟﻰ اﻟﺬاﻛﺮة ‪AH=0x02 //‬‬

‫ﻋﺪد اﻟﻘﻄﺎﻋﺎت=‪AL‬‬

‫رﻗﻢ اﻟﻤﺴﺎر=‪CH‬‬

‫رﻗﻢ اﻟﻘﻄﺎع=‪CL‬‬

‫رﻗﻢ اﻟﺮأس=‪DH‬‬

‫رﻗﻢ اﻟﻘﺮص=‪DL‬‬

‫ﻣﺆﺷﺮ إﻟﻰ اﻟﻤﺨﺰن=‪ES:DX‬‬


‫ﻗﺪ ﺗﻌﺘﻘﺪ أن ﺗﺤﺪﯾﺪ ﻣﻠﻒ ﻣﻌﯿﻦ أﻣﺮ ﻣﻌﻘﺪ ‪ ،‬وﻟﻬﺬا اﻟﺴﺒﺐ ﻇﻬﺮت أﻧﻈﻤﺔ اﻟﻤﻠﻔﺎت ﻣﺜﻞ ‪ FAT‬و‪..‬و‬

‫وﻟﻜﻦ إذا ﻗﻤﺖ أﻧﺖ ﺑﻜﺘﺎﺑﺔ ﻣﻠﻒ ﻣﻌﯿﻦ ﻓﻲ ﻗﻄﺎﻋﺎت اﻟﻘﺮص ﺑﻜﻞ ﺑﺴﺎﻃﺔ ﺗﺴﺘﻄﯿﻊ أن ﺗﺤﺪد ﻣﻮﻗﻌﺔ ﺑﺎﻟﻀﺒﻂ‬

‫ﻣﻼﺣﻈﺔ‪ :‬ﻓﻲ آﺧﺮ ﺑﺎرﻣﺘﺮ وﻫﻮ ‪ ES:DX‬ﻫﺬا اﻟﺒﺎرﻣﺘﺮ ﻻ ﺗﻜﺘﺐ ﺑﺔ ﺷﻲء ﻷﻧﻚ ﻋﻨﺪﻣﺎ ﺗﻨﻔﺬ اﻟﻤﻘﺎﻃﻌﺔ‪int13‬‬

‫ﺳﯿﻘﻮم اﻟﺒﯿﻮس ﺑﻜﺘﺎﺑﺔ ﻋﻨﻮان ﺗﺤﻤﯿﻞ اﻟﺒﺮﻧﺎﻣﺞ إﻟﻰ اﻟﻤﻮﻗﻊ ‪ ES:DX ,‬وﺑﻬﺬا ﺗﻘﻮم ﺑﺤﻔﻆ ﻫﺬا اﻟﻌﻨﻮان‬

‫وﺗﻘﻮم ﺑﻨﻘﻞ اﻟﺘﻨﻔﯿﺬ ﻣﻦ ﻗﻄﺎع اﻹﻗﻼع إﻟﻰ اﻟﻌﻨﻮان اﻟﺬي ﯾﻤﺜﻞ اﻟﺒﺮﻧﺎﻣﺞ أو اﻟﻨﻈﺎم اﻟﺬي ﺣﻤﻠﺘﺔ و ﯾﺒﺪأ اﻟﺘﻨﻔﯿﺬ‬

‫ﻗﺪ ﻻ ﺗﺼﺪق أن ﺗﺤﻤﯿﻞ اﻟﻨﻈﺎم ﺑﻜﻞ ﻫﺬة اﻟﺒﺴﺎﻃﺔ ‪ ،،‬ﻣﺎرأﯾﻚ ﺑﻤﺜﺎل‬

‫ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ أﻣﺮ ﺑﺴﯿﻂ ﻓﻲ ﻗﻄﺎع اﻹﻗﻼع ‪ ،‬وﻫﻮ ﻣﺜﺎل ﻹﻇﻬﺎر ﻋﺪد ﻣﻦ اﻟﺤﺮوف ‪ ،‬وأﻛﯿﺪ اﻟﻤﺜﺎل ﺳﯿﻜﻮن ﻋﻠﻰ‬
‫ﻗﺮص ﻣﻀﻐﻮظ‬

‫وأول ﻣﺎ ﺗﺸﻐﻞ اﻟﻜﻤﺒﯿﻮﺗﺮ ‪ ،‬وﺑﻌﺪ ﻋﻤﻠﯿﺔ ﻓﺤﺺ اﻷﺟﻬﺰة ‪ ..‬ﺳﯿﻈﻬﺮ ﺑﺮﻧﺎﻣﺠﻨﺎ ﺑﻜﻞ ﺛﻘﺔ ؟!‬

‫ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ داﺧﻞ ﻗﻄﺎع اﻹﻗﻼع ﺑﺈﺳﺘﺨﺪام ﺑﺮﻧﺎﻣﺞ ‪ debug‬ﻓﻲ اﻟﻨﻈﺎم وﻧﺪوز‬

‫وإذا ﻛﻨﺖ ﻻ ﺗﻌﺮف اﻟﺪﯾﺒﻐﺮ ﯾﻤﻜﻨﻚ ﻣﺮاﺟﻌﺔ اﻟﺮاﺑﻂ‪:‬‬

‫‪http://www.arabteam2000-forum.com/index.php?showtopic=44877‬‬

‫اﻵن ﻗﻢ ﺑﺈدﺧﺎل اﻟﻘﺮص اﻟﻤﻀﻐﻮط) اﻟﻔﻠﻮﺑﻲ ( ﻻ ﯾﻬﻢ إذا ﻛﺎن ﻣﻔﺮﻣﺖ أو ﻻ ﻷن اﻟﺒﯿﻮس ﻻ ﯾﻌﺮف ﺷﻲء ﻣﻦ ﻫﺬا‬

‫وﻟﻜﻦ ﻟﻮﻛﺎن اﻟﻘﺮص ﻣﻔﺮﻣﺖ ﺳﯿﻮﻓﺮ ﻋﻠﯿﻨﺎ ﻛﺘﺎﺑﺔ ﺗﻮﻗﯿﻊ ﻗﻄﺎع اﻹﻗﻼع وﻫﻮ ‪ AA 55‬ﻓﻲ آﺧﺮ ﺑﺎﯾﺘﯿﻦ‬

‫ﺑﻌﺪ ذﻟﻚ ﻣﻦ ﻗﺎﺋﻤﺔ ‪ start‬ﺛﻢ ‪ run‬إﻛﺘﺐ ‪ debug‬ﻟﺘﺸﻐﯿﻞ ﺑﺮﻧﺎﻣﺞ اﻟﺪﯾﺒﻐﺮ وﺳﺘﻼﺣﻆ اﻟﻌﻼﻣﺔ " ‪ " -‬ﻇﻬﺮت‬

‫ﻋﻨﺪ اﻟﻌﻼﻣﺔ إﻛﺘﺐ اﻷﻣﺮ ‪L 100 0 0 1‬‬


‫اﻟﺤﺮف ‪ L‬ﻣﻌﻨﺎة ﺗﺤﻤﯿﻞ ﻗﻄﺎع ﻣﻦ اﻟﻘﺮص إﻟﻰ اﻟﺬاﻛﺮة ‪ ١٠٠‬ﺗﻌﻨﻲ إﻟﻰ اﻟﻌﻨﻮان ‪ ١٠٠‬ﻓﻲ ﻧﻔﺲ اﻟﻤﻘﻄﻊ‬
‫اﻟﺼﻔﺮ اﻷوﻟﻰ = ﻣﺤﺮك اﻷﻗﺮاص ‪ A‬و اﻟﺼﻔﺮ اﻟﺜﺎﻧﯿﺔ ﺗﻌﻨﻲ رﻗﻢ اﻟﻘﻄﺎع وﻫﻮ‪ ٠‬أي ﻗﻄﺎع اﻹﻗﻼع‬
‫اﻟﻮاﺣﺪ اﻷﺧﯿﺮ ﯾﻌﻨﻲ ﻋﺪد اﻟﻘﻄﺎﻋﺎت اﻟﺘﻲ ﺗﺮﯾﺪ ﺗﺤﻤﯿﻠﻬﺎ إﻟﻰ اﻟﺬاﻛﺮة ﻋﻨﺪ اﻟﻌﻨﻮان ‪١٠٠‬‬

‫ﺑﻬﺬا اﻷﻣﺮ ﻧﻜﻮن ﺣﻤﻠﻨﺎ ﻗﻄﺎع اﻹﻗﻼع إﻟﻰ اﻟﺬاﻛﺮة ‪ ،‬واﻵن ﻧﺮﯾﺪ أن ﻧﻜﺘﺐ ﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺻﻐﯿﺮ‬

‫أﻛﺘﺐ ﻋﻨﺪ ﻋﻼﻣﺔ ‪ -‬اﻟﺘﻌﻠﯿﻤﺔ ‪ a 100‬أي أﻧﻨﺎ ﻧﺮﯾﺪ ﻛﺘﺎﺑﺔ ﻛﻮد إﺳﻤﺒﻠﻲ ﻋﻨﺪ اﻟﻌﻨﻮان ‪١٠٠‬‬

‫ﺑﻌﺪ ذﻟﻚ إﻛﺘﺐ اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬


‫‪- a 100‬‬

‫‪-0B3A:0100‬‬ ‫‪mov ah,09‬‬


‫‪-0B3A:0102‬‬ ‫‪mov al,42‬‬
‫‪-0B3A:0104‬‬ ‫‪mov bh,0‬‬
‫‪-0B3A:0106‬‬ ‫‪mov bl,14‬‬
‫‪-0B3A:0108‬‬ ‫‪mov cx,10‬‬
‫‪-0B3A:010B int 10‬‬

‫اﻟﻌﻨﺎوﯾﻦ ﯾﻜﺘﺒﻬﺎ اﻟﺪﯾﺒﻐﺮ ﻧﻔﺴﺔ وﻗﺪ ﺗﺘﻐﯿﺮ ‪ ..‬ﻻ ﯾﻬﻢ ‪ .‬أﻫﻢ ﺷﻲء ﻫﻲ اﻟﺘﻌﻠﯿﻤﺎت‬

‫اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﻛﺘﺒﻨﺎة ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﻣﻘﺎﻃﻌﺔ إﻇﻬﺎر ﺣﺮف ﻋﻠﻰ اﻟﺸﺎﺷﺔ ‪ ,‬اﻟﺮﻗﻢ ‪ ٤٢‬ﯾﻤﺜﻞ اﻟﺤﺮف‪B‬‬

‫اﻟﺮﻗﻢ ‪ ١٤‬ﯾﻤﺜﻞ ﻟﻮن اﻟﺤﺮف وﻟﻮن اﻟﺨﻠﻔﯿﺔ اﻟﺮﻗﻢ ‪ ١٠‬ﯾﻤﺜﻞ ﻋﺪد ﺗﻜﺮار اﻟﺤﺮف ﻋﻠﻰ اﻟﺸﺎﺷﺔ‬

‫ﺑﻌﺪ ذﻟﻚ ﺳﻨﻘﻮم ﺑﺈدﺧﺎل ﺑﺮﻧﺎﻣﺠﻨﺎ إﻟﻰ اﻟﻌﻨﻮان ‪ ١٠٠‬وﺗﺨﺰﯾﻨﺔ ﻓﻲ اﻟﺬاﻛﺮة ‪ ،‬ﺑﺈﺳﺘﺨﺪام اﻟﺘﻌﻠﯿﻤﺔ ‪e 100‬‬

‫‪-e 100‬‬
‫‪0B3A:0100 B4.‬‬ ‫‪09.‬‬ ‫‪B0.‬‬ ‫‪42.‬‬ ‫‪B7.‬‬ ‫‪00.‬‬ ‫‪B3.‬‬ ‫‪14.‬‬
‫‪0B3A:0108 B9.‬‬ ‫‪10.‬‬ ‫‪00.‬‬ ‫‪CD.‬‬ ‫‪10.‬‬

‫ﻛﻤﺎ ﺷﺮﺣﺖ ﺳﺎﺑﻘﺎ ﯾﺘﻢ إدﺧﺎل ﻛﻞ ﺑﺎﯾﺖ ﺑﺈﺳﺘﺨﺪام ﻣﻔﺘﺎح اﻟﻤﺴﺎﻓﺔ ﻓﻲ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ‬

‫وﺑﻘﻲ اﻵن ﻛﺘﺎﺑﺔ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ إﻟﻰ ﻗﻄﺎع اﻹﻗﻼع ﻓﻲ اﻟﻘﺮص ‪ ,‬ﺑﺈﺳﺘﺨﺪام اﻷﻣﺮ‪W‬‬

‫ﺑﻬﺬة اﻟﻄﺮﯾﻘﺔ ‪: W 100 0 0 1‬‬


‫‪-: W 100 0 0 1‬‬

‫‪--------‬‬

‫وﻵن ﺗﺄﻛﺪ ﻣﻦ أن اﻟﻘﺮص اﻟﻤﻀﻐﻮط ﺑﺪاﺧﻞ اﻟﺴﻮاﻗﺔ‬

‫ﺗﺄﻛﺪ ﻣﻦ أن ﺗﺮﺗﯿﺐ اﻹﻗﻼع ﻓﻲ إ ﻋﺪادات اﻟﺒﯿﻮس ﯾﺒﺪأ ﻣﻦ اﻟﻘﺮص اﻟﻤﺮن‬

‫وأﻋﺪ ﺗﺸﻐﯿﻞ اﻟﺠﻬﺎز ‪ .......‬وﻻﺣﻆ ) ﺑﺮﻧﺎﻣﺠﻚ ﻋﻠﻰ اﻟﺸﺎﺷﺔ (‬

‫أﻟﻒ ﻣﺒﺮوك أﺻﺒﺤﺖ ﻣﺒﺮﻣﺞ أﻧﻈﻤﺔ ﻣﻌﺘﻤﺪ!!?‬

‫وﺑﻌﺪ ﻛﻞ ﻫﺬة اﻟﻤﻘﺪﻣﺔ ﺑﻘﯿﺔ ﻛﻠﻤﺔ واﺣﺪة وﻫﻲ‬

‫ﻟﻮ ﻛﺎﻧﺖ ﺑﺮﻣﺠﺔ اﻷﻧﻈﻤﺔ ﻓﻘﻂ إﻟﻰ ﻫﻨﺎ ‪ ..‬ﻟﻮﺟﺪت ‪ ١٠٠‬ﻧﻈﺎم ﺗﺸﻐﯿﻞ ﻋﺮﺑﻲ ؟!‬

‫ﺑﺎﻟﻔﻌﻞ ﻫﺬة اﻟﻄﺮﯾﻘﺔ ﻧﻔﺴﻬﺎ ﻣﻦ أول ﻣﺎﻇﻬﺮ دوس و إﻟﻰ اﻵن وﻧﺪوز ‪ ٢٠٠٣‬ﯾﺴﺘﺨﺪم ﻧﻔﺲ اﻟﻄﺮﯾﻘﺔ‬

‫وﻟﻜﻦ اﻟﺘﻌﻘﯿﺪ ﯾﻈﻬﺮ ﺑﻌﺪ ﺗﺤﻤﯿﻞ اﻟﻨﻈﺎم‪ ..‬أي ﺑﻌﺪ أن ﯾﺴﻠﻤﻚ اﻟﺒﯿﻮس ﻣﻬﻤﺔ اﻟﺘﺤﻜﻢ ﻓﻲ اﻟﺠﻬﺎز‬

‫ﻣﺎذا ﺗﻔﻌﻞ وﻛﯿﻒ ؟!‬

‫ﺳﺄﺣﺎول اﻹﺟﺎﺑﺔ ﻋﻠﻰ ﻫﺬا اﻟﺴﺆال ﺑﻌﺪ ﺗﻘﺴﯿﻤﺔ إﻟﻰ ﻗﺴﻤﯿﻦ‪:‬‬

‫‪ - ١‬ﻛﯿﻒ ﺗﻌﻤﻞ اﻷﻧﻈﻤﺔ ﺗﺤﺖ ﺑﯿﺌﺔ ‪ ١٦‬ﺑﺖ ) ﻣﺜﻞ اﻟﻨﻈﺎم دوس و اﻟﻨﻈﺎم ﯾﻮﻧﻜﺲ ‪ ١٦‬ﺑﺖ (‬

‫‪ - ٢‬ﻛﯿﻒ ﺗﻌﻤﻞ اﻷﻧﻈﻤﺔ ﺗﺤﺖ ﺑﯿﺌﺔ ‪ ٣٢‬ﺑﺖ ) ﻣﺜﻞ اﻟﻮﻧﺪوز و اﻟﻠﯿﻨﻜﺲ (‬


‫وﺻﻠﻨﺎ ﻓﻲ اﻟﻤﻮﺿﻮع اﻟﺴﺎﺑﻖ إﻟﻰ ﻃﺮﯾﻘﺔ ﺗﺤﻤﯿﻞ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ‪ ..‬وﺳﻨﺒﺪأ ﻣﻦ ﻫﺬة اﻟﻨﻘﻄﺔ‪.‬‬

‫ﻗﺒﻞ اﻟﺒﺪء ‪ :‬أﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ اﻟﻤﻮﺟﻮدة ﺣﺎﻟﯿﺎ ﺗﻨﻘﺴﻢ إﻟﻰ ﻗﺴﻤﯿﻦ ﻫﻲ أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ وأﻧﻈﻤﺔ ‪ ٣٢‬ﺑﺖ‬

‫واﻹﺧﺘﻼف ﺑﯿﻦ ﻣﻨﺼﺔ ‪ ١٦‬ﺑﺖ و ‪ ٣٢‬ﺑﺖ إﺧﺘﻼف ﻛﺒﯿﺮ ﺟﺪا وﻟﺬﻟﻚ ﺳﯿﻨﻘﺴﻢ اﻟﻤﻮﺿﻮع إﻟﻰ ﻗﺴﻤﯿﻦ‬

‫‪ -١‬ﺑﻨﯿﺔ و ﻋﻤﻞ أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ‪:‬‬

‫ﺑﺈﺧﺘﺼﺎر أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ ﻫﻲ اﻷﻧﻈﻤﺔ اﻟﻘﺪﯾﻤﺔ وﻫﻲ ﻋﺒﺎرة ﻋﻦ ﺷﺎﺷﺔ ﺳﻮداء ﺗﺴﺘﻘﺒﻞ اﻷواﻣﺮ‬

‫ﻇﻬﺮت ﻫﺬة اﻷﻧﻈﻤﺔ ﻟﻠﻌﺎﻟﻢ ﺑﻌﺪ ﻇﻬﻮر اﻟﻤﻌﺎﻟﺞ ‪ ٨٠٨٦‬إﺧﺘﺼﺎرة ) ‪ (x86‬ﻣﻦ ﻗﺒﻞ ﺷﺮﻛﺔ إﻧﺘﻞ‬

‫وﻣﻦ ﻫﺬة اﻷﻧﻈﻤﺔ اﻟﺪوس و اﻟﯿﻮﻧﻜﺲ و ‪ OS2‬و ﺑﻌﺾ اﻟﺒﺮاﻣﺞ اﻟﻤﺴﺘﻘﻠﺔ وﻏﯿﺮﻫﺎ!‬

‫ﻫﺬة اﻷﻧﻈﻤﺔ ﺗﻌﻤﻞ ﻓﻲ اﻟﻨﻤﻂ اﻟﺤﻘﯿﻘﻲ ) ﺑﻤﻌﻨﻰ أﻧﺔ ﻻﺗﻮﺟﺪ ﻗﻮاﻋﺪ وﺷﺮوط وإﻣﺘﯿﺎزات ﻟﻠﺒﺮاﻣﺞ واﻟﻨﻈﺎم(‬

‫أﻫﻢ ﻧﻘﻄﺔ ﻓﻲ ﻫﺬة اﻷﻧﻈﻤﺔ ‪ :‬أﻧﻬﺎ ﻻ ﺗﺴﺘﻄﯿﻊ ﺗﺸﻐﯿﻞ أﻛﺜﺮ ﻣﻦ ﻣﻬﻤﺔ أو ﺑﺮﻧﺎﻣﺞ ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ‬

‫ﻣﻌﻠﻮﻣﺔ ‪ :‬ﻗﺪ ﺗﻼﺣﻆ أﻧﺔ ﻓﻲ ﻧﻈﺎم اﻟﺪوس ﻣﺜﻼ أﻛﺜﺮ ﻣﻦ ﺑﺮﻧﺎﻣﺞ ﻣﻘﯿﻢ ﻓﻲ اﻟﺬاﻛﺮة وﻛﻠﻬﺎ ﺷﻐﺎﻟﺔ‬

‫وﻣﻊ ذﻟﻚ ﻻ ﯾﻌﺘﺒﺮ اﻟﻨﻈﺎم ﻣﺘﻌﺪد اﻟﻤﻬﺎم ‪ ،‬ﻷن ﻛﻞ اﻟﺒﺮاﻣﺞ اﻟﻤﻘﯿﻤﺔ ﻓﻲ اﻟﺬاﻛﺮة ﻻﺗﻌﻤﻞ ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ‬

‫وإﻧﻤﺎ ﯾﻨﺘﻘﻞ اﻟﺘﻨﻔﯿﺬ ﻣﻦ ﺑﺮﻧﺎﻣﺞ ﻵﺧﺮ ﺑﺎﻟﺘﺮﺗﺒﯿﺐ ) وﺳﺘﺘﻀﺢ ﻓﻜﺮة ﺗﻌﺪد اﻟﻤﻬﺎم ﻓﻲ اﻟﻘﺴﻢ اﻟﺜﺎﻧﻲ ﻣﻦ اﻟﻤﻮﺿﻮع(‬

‫اﻟﻤﺴﺠﻼت اﻟﻤﺘﻮﻓﺮة ﻟﻬﺬة اﻷﻧﻈﻤﺔ ﻫﻲ‪:‬‬

‫اﻟﻤﺴﺠﻼت اﻟﻌﺎﻣﺔ ‪: AX,BX,CX,DX,SI,DI,BP,SP‬‬

‫ﻣﺴﺠﻼت اﻷﻗﺴﺎم‪: ES,SS,CS,DS‬‬

‫وﻛﻞ ﻫﺬة اﻟﻤﺴﺠﻼت ﺣﺠﻤﻬﺎ ‪ ١٦‬ﺑﺖ ) وﻟﺬﻟﻚ ﺳﻤﯿﺖ أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ(‬

‫‪-------------‬‬

‫ﻫﺬة اﻟﻨﻘﺎط ﺗﻜﻔﻲ ﻟﻠﺪﺧﻮل ﻓﻲ اﻟﻤﻮﺿﻮع ‪ ،،،‬ﺳﯿﺘﻢ إﺧﺘﯿﺎر اﻟﻨﻈﺎم دوس ﻣﻦ ﺑﯿﻦ أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ‬

‫ﻷﻧﺔ ﻣﺘﻮﻓﺮ ﻋﻨﺪ اﻷﻏﻠﺒﯿﺔ ﻟﺘﻄﺒﯿﻖ أﻣﺜﻠﺔ اﻟﺪرس واﻟﻨﻘﻄﺔ اﻟﺜﺎﻧﯿﺔ أن ﻛﻞ اﻷﻧﻈﻤﺔ ﻣﺘﺸﺎﺑﻬﺔ ﻓﻲ ﻃﺮﯾﻘﺔ ﻋﻤﻠﻬﺎ‬

‫ذﻛﺮﻧﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ أن آﺧﺮ ﻋﻤﻠﯿﺔ ﯾﻘﻮم ﺑﻬﺎ اﻟﺒﯿﻮس ﻫﻲ ﺗﺤﻤﯿﻞ ﻗﻄﺎع اﻹﻗﻼع وﻧﻘﻞ اﻟﺘﺤﻜﻢ ﻟﻠﻨﻈﺎم‬

‫ﻣﺎذا ﯾﻜﺘﺐ ﻧﻈﺎم اﻟﺪوس ﻓﻲ ﻗﻄﺎع اﻹﻗﻼع ؟‬

‫ﻛﯿﻒ ﯾﻘﻮم ﻧﻈﺎم اﻟﺪوس ﺑﺒﻨﺎء ﺑﯿﺌﺔ ﻟﻨﻈﺎم اﻟﺘﺸﻐﯿﻞ ؟‬


‫ﯾﺒﺪأ اﻟﺒﯿﻮس ﺑﺘﺤﻤﯿﻞ ﻗﻄﺎع اﻹﻗﻼع إﻟﻰ اﻟﻌﻨﻮان ‪ hex =0000:7C00‬ﺑﻤﻌﻨﻰ أن ﻫﺬا اﻟﻌﻨﻮان ﻫﻮ ﺑﺪاﯾﺔ ﺑﺮﻧﺎﻣﺞ‬
‫اﻹﻗﻼع‬

‫ﻓﻲ اﻟﻨﻈﺎم دوس ﯾﺒﺪأ ﺑﺮﻧﺎﻣﺞ اﻹﻗﻼع ﺑﺘﻌﻠﯿﻤﺔ ﻗﻔﺰ إﻟﻰ اﻹزاﺣﺔ ‪ hex =3E‬واﻟﺘﻌﻠﯿﻤﺔ ﻫﻲ‪JMP 3E‬‬

‫وﻟﺬﻟﻚ ﻓﺈن ﺑﺪاﯾﺔ اﻟﺘﻨﻔﯿﺬ اﻟﻔﻌﻠﻲ ﻟﺒﺮﻧﺎﻣﺞ اﻹﻗﻼع ﯾﺒﺪأ ﻋﻨﺪ اﻟﻌﻨﻮان‪hex =0000:7C3E‬‬

‫ﻟﻤﺎذا ﯾﺘﺠﺎوز اﻟﻨﻈﺎم دوس ‪ ٦٢‬ﺑﺎﯾﺖ ﺗﻘﺮﯾﺒﺎ ﻣﻦ ﺑﺪاﯾﺔ اﻟﻘﺮص ؟!‬

‫اﻟﺴﺒﺐ ﻷن ﻣﻘﺪﻣﺔ اﻟﻘﺮص ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﻘﺮص ﯾﺨﺰﻧﻬﺎ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ) ﻋﻨﺪ ﻋﻤﻠﯿﺔ اﻟﻔﻮرﻣﺎت(‬

‫وﻫﺬة اﻟﻤﻌﻠﻮﻣﺎت ﻫﻲ ﻋﺪد اﻟﻘﻄﺎﻋﺎت ﻓﻲ ﻛﻞ ﺗﺠﻤﻊ وﻋﺪد اﻟﺘﺠﻤﻌﺎت وﻋﺪد اﻟﺒﺎﯾﺘﺎت ﻓﻲ ﻛﻞ ﻗﻄﺎع ‪ ...‬وﻫﻜﺬا‬

‫وﻫﻲ ﻣﺎ ﺗﻌﺮف ﺑﻤﻘﺪﻣﺔ اﻟﻘﺮص ‪ ,‬وﺗﺠﺪ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ ﻛﻞ ﺑﺎﯾﺖ ﻓﻲ ﻫﺬة اﻟﻤﻘﺪﻣﺔ ﻫﻨﺎ‪:‬‬

‫‪http://www.arabteam2000-forum.com/index.php?showtopic=44877‬‬

‫ﯾﺒﺪأ اﻟﺘﻨﻔﯿﺬ اﻟﻔﻌﻠﻲ ﻟﺒﺮﻧﺎﻣﺞ اﻹﻗﻼع ﻋﻨﺪ اﻟﻌﻨﻮان ‪hex =0000:7C3E‬‬

‫ﺑﺪاﯾﺔ ﺑﺮﻧﺎﻣﺞ اﻹﻗﻼع ‪ :‬اﻟﺨﻄﻮة اﻷوﻟﻰ‬

‫‪0000:7C3E‬‬ ‫‪CLI‬‬
‫‪0000:7C3F‬‬ ‫‪XOR‬‬ ‫‪AX,AX‬‬
‫‪0000:7C41‬‬ ‫‪MOV‬‬ ‫‪SS,AX‬‬
‫‪0000:7C43‬‬ ‫‪MOV‬‬ ‫‪SP,7C00‬‬
‫‪0000:7C46‬‬ ‫‪PUSH‬‬ ‫‪SS‬‬
‫‪0000:7C47‬‬ ‫‪POP‬‬ ‫‪ES‬‬

‫ﯾﺒﺪأ ﺑﺮﻧﺎﻣﺞ اﻹﻗﻼع ﺑﺘﺼﻔﯿﺮ أﻋﻼم أو راﯾﺎت اﻟﻤﻘﺎﻃﻌﺎت ﻋﻦ ﻃﺮﯾﻖ اﻟﺘﻌﻠﯿﻤﺔ اﻷوﻟﻰ‬

‫وﻫﺬة اﻟﻄﺮﯾﻘﺔ ﻻ ﺗﻌﺘﺒﺮ ﺷﺮط ﻟﺒﺪاﯾﺔ اﻹﻗﻼع ﻷن ﺑﺮاﻣﺞ اﻹﻗﻼع ﻷﻧﻈﻤﺔ ‪ IBM‬ﻻ ﺗﺴﺘﺨﺪم ﻫﺬة اﻟﺘﻌﻠﯿﻤﺔ‬

‫اﻟﻤﻬﻢ ﺑﻌﺪ ذﻟﻚ ﯾﺼﻔﺮ اﻟﻤﺴﺠﻞ ‪ ax‬وﻣﻦ ﺧﻼﻟﺔ ﯾﺼﻔﺮ ﻗﺴﻢ اﻟﻤﻜﺪس وﻫﻮ‪ss‬‬

‫وﯾﻌﻄﺎ اﻟﻤﺴﺠﻞ ‪ sp‬ﻗﯿﻤﺔ ﺗﻤﺜﻞ ﺑﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ اﻟﺬاﻛﺮة وﯾﺘﻢ دﻓﻊ اﻟﻘﯿﻤﺔ ﻟﻠﻤﻜﺪس‬

‫ﻟﻤﺎذا ؟ ﻷن اﻟﻤﺴﺠﻞ ‪ sp‬ﻣﺮﺗﺒﻂ ﺑﺎﻟﻤﻘﻄﻊ ‪ ss‬وﯾﻤﺜﻼن ﻣﻜﺪس اﻟﺒﺮﻧﺎﻣﺞ وﻫﻮ ‪ ss:sp‬وﯾﺴﺎوي ‪7C00:0000‬‬

‫وﺑﻬﺬا ﯾﻜﻮن ﻗﺪ ﻋﺮف ﻣﻜﺪس اﻟﺒﺮﻧﺎﻣﺞ ﻟﺘﺨﺰﯾﻦ اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﺆﻗﺘﺔ أو اﻟﻤﺘﻐﯿﺮات ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ‬

‫اﻟﺨﻄﻮة اﻟﺜﺎﻧﯿﺔ‪:‬‬

‫‪0000:7C48‬‬ ‫‪MOV BX,0078‬‬


‫‪0000:7C4B‬‬ ‫‪SS:‬‬
‫‪0000:7C4C‬‬ ‫‪LDS‬‬ ‫]‪SI,[BX‬‬ ‫]‪// DS:SI = [0000:0078‬‬
‫‪0000:7C4E‬‬ ‫‪PUSH DS‬‬
‫‪0000:7C4F‬‬ ‫‪PUSH SI‬‬
‫‪0000:7C50‬‬ ‫‪PUSH SS‬‬
‫‪0000:7C51‬‬ ‫‪PUSH‬‬ ‫‪BX‬‬

‫ﻫﺬة اﻟﺨﻄﻮة ﻟﻠﺘﻐﯿﯿﺮ ﻓﻲ ﺑﻌﺾ ﺧﺼﺎﺋﺺ اﻟﻘﺮص )ﺑﻤﻌﻨﻰ أن اﻟﻨﻈﺎم دوس ﺳﯿﻐﯿﺮ ﻓﻲ ﺧﺼﺎﺋﺺ اﻟﻘﺮص ﻟﻠﺒﯿﻮس(‬
‫؟؟‬

‫ﻻﺣﻆ اﻟﺘﻌﻠﯿﻤﺔ اﻷوﻟﻰ اﻟﻤﺴﺠﻞ ‪ bx = 0078‬ﺑﻌﺪ ﻫﺬة اﻟﺘﻌﻠﯿﻤﺔ ﺗﻼﺣﻆ أن ﺑﺎﻗﻲ اﻟﺘﻌﻠﯿﻤﺎت ﺗﻨﻔﺬ داﺧﻞ اﻟﻤﻘﻄﻊ ‪ss‬‬

‫وﻗﯿﻤﺔ ‪ ss = 0000‬واﻟﺘﻌﻠﯿﻤﺔ ‪ lds‬ﺗﺤﻤﻞ ﻣﻘﻄﻊ اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﻘﯿﻤﺔ ﺻﻔﺮ واﻟﻤﺴﺠﻞ‪si = 0078‬‬

‫واﻟﻌﻼﻗﺔ ﻫﻲ ‪ DS:SI‬أي أن اﻟﻤﺴﺠﻞ واﻟﻤﻘﻄﻊ ﻣﺮﺗﺒﻄﯿﻦ ﻣﻊ ﺑﻌﺾ ﻣﺜﻞ اﻟﺨﻄﻮة اﻷوﻟﻰ ) وﻫﺬة ﻗﻮاﻧﯿﻦ ﻓﻲ ﻟﻐﺔ‬
‫اﻹﺳﻤﺒﻠﻲ(‬

‫اﻟﻤﻬﻢ ﻛﻞ ﻫﺬة اﻟﺸﻐﻠﺔ ﻫﻲ ﻟﺠﻌﻞ ﻣﻘﻄﻊ اﻟﺒﯿﺎﻧﺎت ﯾﻤﺜﻞ اﻟﻌﻨﻮان ‪ ٠٠٠٠:٠٠٧٨‬ﺑﻌﺪ إرﺗﺒﺎﻃﺔ ﺑﻬﺬة اﻟﻄﺮﯾﻘﺔ‪DS:SI‬‬

‫ﻣﺎذا ﯾﻤﺜﻞ اﻟﻌﻨﻮان وﻟﻤﺎذا ﻫﺬة اﻟﺸﻐﻠﺔ ؟! ﻣﻌﺮﻓﺔ ﻫﺬا اﻟﻌﻨﻮان ﺳﯿﺤﻞ اﻟﻠﻐﺰ اﻷول ؟ ﻻﺣﻆ‬

‫ﻫﻞ ﻗﺮأت ﻣﻮﺿﻮع ﺑﺮﻣﺠﺔ اﻟﺒﯿﻮس ؟ راﺟﻊ اﻟﺠﺪول اﻷول وﻫﻮ ﻟﻌﻨﺎوﯾﻦ اﻟﻤﻘﺎﻃﻌﺎت وﺧﺎﺻﺔ اﻟﻤﻘﺎﻃﻌﺔ‪INT 1E‬‬

‫ﺳﺘﺠﺪ ﻋﻨﻮاﻧﻬﺎ ﺑﻬﺬة اﻟﻄﺮﯾﻘﺔ ‪ INT 1E =0000:0078‬وﻫﻲ ﺧﺎﺻﺔ ﻟﺠﺪول وﺑﺎرﻣﺘﺮات اﻟﻘﺮص ؟! أي ﺧﺼﺎﺋﺺ‬
‫اﻟﻘﺮص اﻟﻤﺮن‬

‫ﻓﻲ ﻫﺬا اﻟﺠﺪول ﯾﺨﺰن اﻟﺒﯿﻮس ﻣﻌﻠﻮﻣﺎت اﻟﻘﺮص اﻟﺬي ﺣﻤﻞ ﻣﻨﺔ ﻗﻄﺎع اﻹﻗﻼع ؟ ﻓﯿﻘﻮم اﻟﺪوس ﺑﻘﺮاﺋﺘﻬﺎ واﻟﺘﻐﯿﯿﺮ‬
‫ﺣﺴﺐ ﻃﻠﺒﺔ‬

‫ﻛﯿﻒ ؟ ﺑﻬﺬة اﻟﻄﺮﯾﻘﺔ‪:‬‬


‫‪0000:7C52‬‬ ‫‪MOV‬‬ ‫‪DI,7C3E‬‬
‫‪0000:7C55‬‬ ‫‪MOV‬‬ ‫‪CX,000B‬‬
‫‪0000:7C58 CLD‬‬
‫‪0000:7C59 REPZ‬‬
‫‪0000:7C5A MOVSB‬‬
‫‪0000:7C5B PUSH‬‬ ‫‪ES‬‬
‫‪0000:7C5C POP‬‬ ‫‪DS‬‬

‫ﺗﻼﺣﻆ أن اﻟﺪوس ﻧﻘﻞ ﺑﯿﺎﻧﺎت اﻟﻘﺮص إﻟﻰ ﻧﻔﺲ ﻣﻘﻄﻊ اﻟﺒﺮﻧﺎﻣﺞ وﻗﺪ ﯾﻜﻮن أي ﻋﻨﻮان ﻓﻲ ﻣﻘﻄﻊ اﻟﺒﺮﻧﺎﻣﺞ‬

‫واﻟﻤﻼﺣﻈﺔ اﻟﺜﺎﻧﯿﺔ أن ﺣﺠﻢ اﻟﺒﯿﺎﻧﺎت ﺗﺴﺎوي ‪ B‬أي ‪ ١١‬ﺑﺎﯾﺖ‬

‫ﺑﻌﺪ ذﻟﻚ ﯾﻐﯿﺮ اﻟﺪوس ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ ﺑﻬﺬة اﻟﻄﺮﯾﻘﺔ‬


‫‪0000:7C5D‬‬ ‫‪MOV‬‬ ‫‪BYTE PTR [DI-02],0F‬‬
‫‪0000:7C61‬‬ ‫‪MOV‬‬ ‫]‪CX,[7C18‬‬
‫‪0000:7C65‬‬ ‫‪MOV‬‬ ‫‪[DI-07],CL‬‬
‫‪0000:7C68‬‬ ‫‪MOV‬‬ ‫‪[BX+02],AX‬‬
‫‪0000:7C6B‬‬ ‫‪MOV‬‬ ‫‪WORD PTR [BX],7C3E‬‬

‫‪0000:7C6F STI‬‬
‫‪0000:7C70 INT‬‬ ‫‪13‬‬

‫أول ﺗﻌﻠﯿﻤﺔ ﯾﻘﻮم ﻧﻈﺎم اﻟﺪوس ﺑﺘﻐﯿﯿﺮ ﺧﺎﺻﯿﺔ ﺗﺴﻤﻰ ﻣﺪة اﻹﻧﺘﻈﺎر ﻟﺮأس اﻟﻘﺮاﺋﺔ واﻟﻜﺘﺎﺑﺔ ﻓﻲ اﻟﻘﺮص‬

‫وﻫﻲ إﺣﺪى ﺧﺼﺎﺋﺺ اﻟﻘﺮص وﯾﺤﺪد اﻟﻤﺪة ﺑﺎﻟﻘﯿﻤﺔ ‪ ) F‬أﻋﺘﻘﺪ أﻧﻬﺎ ﻟﺘﺴﺮﯾﻊ اﻟﻘﺮاﺋﺔ (‬
‫اﻟﺘﻌﻠﯿﻤﺔ اﻟﺜﺎﻧﯿﺔ واﻟﺜﺎﻟﺜﺔ ‪ :‬ﯾﻘﻮم ﻧﻈﺎم اﻟﺪوس ﺑﺘﻐﯿﯿﺮ ﻋﺪد اﻟﻘﻄﺎﻋﺎت ﻓﻲ ﻛﻞ ﻣﺴﺎر ) ﻟﻜﻲ ﯾﺤﺪد ﻗﻄﺎﻋﺎت ﻣﻠﻒ ﻣﺤﺪد(‬

‫وﻟﻮ ﺗﻼﺣﻆ أﻧﺔ ﻗﺮأ اﻟﻘﯿﻤﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ ﻣﻘﺪﻣﺔ اﻟﻘﺮص واﻹزاﺣﺔ ﻫﻲ ‪ ١٨‬وﺗﻤﺜﻞ ﻋﺪد اﻟﻘﻄﺎﻋﺎت ﻓﻲ اﻟﻤﺴﺎر‬

‫ﺑﻌﺪ ذﻟﻚ ﯾﻘﻮم ﺑﻨﻘﻞ اﻟﺨﺼﺎﺋﺺ ﺑﻌﺪ ﺗﻌﺪﯾﻠﻬﺎ ‪ ،‬واﻟﺘﻌﻠﯿﻤﺔ ‪ sti‬ﻫﻲ ﻹﻋﺎدة ﺗﻔﻌﯿﻞ اﻟﻤﻘﺎﻃﻌﺎت‬

‫وآﺧﺮ ﺷﻲء ﯾﻘﻮم ﺑﺘﻨﻔﯿﺬ ﻣﻘﺎﻃﻌﺔ إﻋﺎدة ﺗﻬﺌﯿﺔ اﻟﻘﺮص ‪ ،،‬وﯾﺼﺒﺢ اﻟﻘﺮص ﺟﺎﻫﺰ ﺑﻌﺪ اﻟﺘﻐﯿﯿﺮ‬

‫واﻵن ﯾﺒﺪأ اﻟﻨﻈﺎم ﺑﯿﻮس ﺑﺘﺤﻤﯿﻞ اﻟﻤﻠﻔﺎت وﺗﺸﻐﯿﻞ اﻟﻨﻈﺎم ‪ ،،‬ﻛﯿﻒ ؟‬

‫ﯾﻘﻮم ﺑﻘﺮاﺋﺔ ﻣﻘﺪﻣﺔ اﻟﻘﺮص وﯾﺴﺘﺨﺮج ﻛﻞ اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﻮﺟﻮدة ‪ .‬ﺑﻬﺬة اﻟﻄﺮﯾﻘﺔ‬


‫‪0000:7C84‬‬ ‫‪MOV‬‬ ‫]‪AL,[7C10‬‬
‫‪0000:7C87‬‬ ‫‪MUL‬‬ ‫]‪WORD PTR [7C16‬‬
‫‪0000:7C8B‬‬ ‫‪ADD‬‬ ‫]‪AX,[7C1C‬‬
‫‪0000:7C8F‬‬ ‫‪ADC‬‬ ‫]‪DX,[7C1E‬‬
‫‪0000:7C93‬‬ ‫‪ADD‬‬ ‫]‪AX,[7C0E‬‬
‫‪0000:7C97‬‬ ‫‪ADC‬‬ ‫‪DX,+00‬‬
‫‪0000:7C9A‬‬ ‫‪MOV‬‬ ‫‪[7C50],AX‬‬
‫‪0000:7C9D‬‬ ‫‪MOV‬‬ ‫‪[7C52],DX‬‬
‫‪0000:7CA1‬‬ ‫‪MOV‬‬ ‫‪[7C49],AX‬‬
‫‪0000:7CA4‬‬ ‫‪MOV‬‬ ‫‪[7C4B],DX‬‬

‫اﻟﺘﻌﻠﯿﻤﺔ اﻷوﻟﻰ ﯾﺘﻌﺮف ﻋﻠﻰ ﻋﺪد ﺟﺪاول ﻧﻈﺎم اﻟﻤﻠﻔﺎت ‪ FAT‬وﻫﻲ اﻹزاﺣﺔ ‪10‬‬

‫واﻟﺘﻌﻠﯿﻤﺔ اﻟﺜﺎﻧﯿﺔ ﻋﺪد ﻗﻄﺎﻋﺎت اﻟﺠﺪول ﻓﺎت اﻹزاﺣﺔ ‪ ،، ١٦‬ﺛﻢ ﻋﺪد اﻟﻘﻄﺎﻋﺎت اﻟﻤﺨﻔﯿﺔ وﻫﻜﺬا‬

‫راﺟﻊ ﻣﻘﺪﻣﺔ اﻟﻘﺮص ﻟﺘﻌﺮف ﻛﻞ ﻗﯿﻤﺔ ﻣﺎذا ﺗﻤﺜﻞ ‪ ،‬وﻛﯿﻔﯿﺔ اﻹﺳﺘﻔﺎدة ﻣﻨﻬﺎ‬

‫اﻟﻤﻬﻢ أﻧﺔ ﺑﻌﺪ اﻟﺤﺴﺎﺑﺎت ﯾﺤﺪد ﻗﻄﺎﻋﺎت ﻣﻠﻒ ﻣﻌﯿﻦ ﻟﺒﺪاﯾﺔ ﺗﺸﻐﯿﻞ اﻟﻨﻈﺎم‬

‫وﻓﻲ ﻣﺜﺎﻟﻨﺎ ﻓﺈن اﻟﻨﻈﺎم دوس ﯾﺒﺤﺚ ﻋﻦ ﻗﻄﺎﻋﺎت اﻟﻤﻠﻒ ‪ IO.sys‬ﯾﻘﻮم ﺑﺘﺤﻤﯿﻠﺔ إﻟﻰ اﻟﻌﻨﻮان‪hex 0070:0000‬‬

‫ﻣﻼﺣﻈﺔ ‪ :‬ﯾﺘﻢ ﻗﺮاﺋﺔ أول ‪ ٣‬ﻗﻄﺎﻋﺎت ﻣﻦ اﻟﻤﻠﻒ ﻓﻘﻂ وﺑﻌﺪ ذﻟﻚ ﺗﻨﻘﻞ ﻟﻠﺬاﻛﺮة‬

‫وأﻛﯿﺪ ﺑﺈﺳﺘﺨﺪام اﻟﺨﺪﻣﺔ ‪ ٢‬ﻣﻦ اﻟﻤﻘﺎﻃﻌﺔ ‪) INT 13‬ﺑﻨﻔﺲ اﻟﻄﺮﯾﻘﺔ اﻟﺘﻲ ﻗﻤﻨﺎ ﺑﺘﻄﺒﯿﻘﻬﺎ ﻓﻲ ﻣﻮﺿﻮع اﻟﺒﯿﻮس(‬

‫وآﺧﺮ ﺧﻄﻮة ﻓﻲ ﺑﺮﻧﺎﻣﺞ اﻹﻗﻼع ﻫﻲ ﺗﻌﻠﻤﯿﺔ ﻗﻔﺰ إﻟﻰ اﻟﻌﻨﻮان ‪ )٧٠٠‬وﻫﻲ أول‪ ٣‬ﻗﻄﺎﻋﺎت ﻣﻦ اﻟﻤﻠﻒ( ‪io.sys‬‬
‫ﻫﻞ ﻻﺣﻈﺖ اﻟﺪورة اﻟﻐﯿﺮ ﻣﻨﺘﻬﯿﺔ ؟! وأﻫﻢ ﺷﻲء ﻫﻞ ﻻﺣﻈﺖ ﺗﺸﺎﺑﺔ اﻷﻓﻜﺎر ؟!‬

‫اﻟﻤﻌﺎﻟﺞ ﯾﺒﺪأ ﺑﻘﻔﺰة إﻟﻰ اﻟﺒﯿﻮس ﺛﻢ ﯾﻘﻮم اﻟﺒﯿﻮس ﺑﺘﺤﻤﯿﻞ ﻗﻄﺎع اﻹﻗﻼع إﻟﻰ اﻟﻌﻨﻮان‪hex 0000:7C00‬‬

‫ﺛﻢ ﯾﻨﺘﻬﻲ اﻟﺒﯿﻮس ﺑﻘﻔﺰة إﻟﻰ ﻗﻄﺎع اﻹﻗﻼع‬

‫ﺛﻢ ﯾﺒﺪأ ﻗﻄﺎع اﻹﻗﻼع ﺑﻘﻔﺰة وﯾﺒﺪأ اﻟﺘﻨﻔﯿﺬ ﺛﻢ ﯾﺤﻤﻞ ﺑﺮﻧﺎﻣﺞ اﻹﻗﻼع ﻧﻮاة اﻟﻨﻈﺎم إﻟﻰ اﻟﻌﻨﻮان‪hex 0070:0000‬‬

‫ﺛﻢ ﯾﻨﺘﻬﻲ ﺑﺮﻧﺎﻣﺞ اﻹﻗﻼع ﺑﻘﻔﺰة إﻟﻰ ﻧﻮاة اﻟﻨﻈﺎم‬

‫وﺑﻌﺪ ذﻟﻚ ﺗﺒﺪأ ﺻﻨﺎﻋﺔ ﺑﯿﺌﺔ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ؟!‬

‫ﻓﻲ اﻟﺤﻘﯿﻘﺔ ﻫﺬة اﻟﻤﻌﻠﻮﻣﺎت ﻟﻘﻄﺎع اﻹﻗﻼع ﻣﺘﺸﺎﺑﺔ ﻓﻲ ﻛﻞ أﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ ﺑﻤﺎ ﻓﯿﻬﺎ ‪ ١٦‬و ‪ ٣٢‬ﺑﺖ‬

‫وﻵن ﻣﺎﻫﻲ ﺧﻄﻮات ﺻﻨﺎﻋﺔ ﺑﯿﺌﺔ ﻟﻨﻈﺎم اﻟﺘﺸﻐﯿﻞ ﻟﻤﻨﺼﺔ ‪ ١٦‬ﺑﺖ ؟‬

‫ﻗﺒﻞ اﻟﺒﺪء ﻓﻲ ﻫﺬة اﻟﻨﻘﻄﺔ ‪ ،‬ﻟﺪي ﻣﻼﺣﻈﺔ ﻣﻬﻤﺔ وﻫﻲ‪:‬‬

‫ﻻ ﺗﻌﺘﻘﺪ أن ﺗﺤﻤﯿﻞ ﻧﻮاة اﻟﻨﻈﺎم إﻟﻰ اﻟﺬاﻛﺮة ﻫﻲ ﻋﺒﺎرة ﻋﻦ ﺗﺤﻤﯿﻞ ﻣﻠﻒ ﻣﻌﯿﻦ ﻣﻦ اﻟﻘﺮص‬

‫واﻟﻨﻘﻄﺔ اﻟﺜﺎﻧﯿﺔ وﻫﻲ اﻷﻫﻢ ‪ :‬ﻻ ﺗﻌﺘﻘﺪ أن ﻣﺤﺘﻮﯾﺎت اﻟﻘﺮص ﻫﻲ اﻟﻤﻠﻔﺎت اﻟﻤﻮﺟﻮدة ﺑﺔ ﻓﻘﻂ ؟!!‬

‫ﺳﺆﺣﺎول ﺗﻮﺿﯿﺢ اﻟﻔﻜﺮة ‪ ،،‬ﻫﻞ ﻻﺣﻈﺖ ﺑﺮﻧﺎﻣﺞ اﻹﻗﻼع اﻟﺬي ﻋﺮﺿﻨﺎ ﺑﻌﺾ ﺷﻔﺮﺗﺔ وﻫﻮ ﻣﻮﺟﻮد ﻓﻲ اﻟﻘﻄﺎع اﻷول‬

‫ﻫﻞ ﯾﻮﺟﺪ ﻣﻠﻒ ﻓﻲ اﻟﻘﺮص ﯾﺪل ﻋﻠﻰ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ ؟؟ أﻛﯿﺪ ﻻ رﻏﻢ أﻧﺔ ﻣﻮﺟﻮد ﻓﻌﻼ ﻓﻲ اﻟﻘﺮص‬

‫وﺗﺴﺘﻄﯿﻊ أن ﺗﻜﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻓﻲ ﻣﺤﺘﻮى اﻟﻘﺮص ﻟﺘﺤﻤﯿﻞ اﻟﻨﻈﺎم ‪ ..‬دون وﺟﻮد أي ﻣﻠﻒ ﻣﺮﺋﻲ ﻓﻲ اﻟﻘﺮص‬

‫وﺳﺘﻜﻮن ﻃﺮﯾﻘﺔ ﺗﺤﻤﻠﯿﺔ ﻟﻠﺬاﻛﺮة أﺳﻬﻞ وأﻓﻀﻞ ﻷن ﻣﺤﺘﻮﯾﺎﺗﺔ ﺳﺘﻜﻮن ﻓﻲ ﻗﻄﺎﻋﺎت ﻣﺘﺘﺎﻟﯿﺔ‬
‫وﻟﻜﻨﺔ ﺳﯿﻜﻮن ﻏﺎﻣﺾ ﻟﻠﻤﺴﺘﺨﺪم‬

‫ﺑﺈﺧﺘﺼﺎر أرﯾﺪ أن أﺻﻞ ﻟﻨﻘﻄﺔ ‪ ،‬وﻫﻲ أن اﻟﻨﻈﺎم دوس ﯾﺤﻤﻞ ﺑﺮاﻣﺞ ﻟﺼﻨﺎﻋﺔ ﺑﯿﺌﺔ ﻟﻠﻨﻈﺎم ﻣﻦ أﻣﺎﻛﻦ ﻣﺘﻔﺮﻗﺔ‬

‫ﻓﻲ اﻟﻘﺮص ﻗﺪ ﺗﻜﻮن ﻣﻦ ﺑﻌﺾ اﻟﻤﻠﻔﺎت اﻟﻤﺮﺋﯿﺔ أو ﻣﻦ ﻗﻄﺎﻋﺎت ﻣﺨﻔﯿﺔ ﻻ ﺗﻮﺟﺪ ﻟﻬﺎ ﻣﻠﻔﺎت ﻓﻲ اﻟﻘﺮص!‬

‫اﻟﻤﻬﻢ ‪ :‬ﺗﺒﺪأ ﻧﻮاة اﻟﻨﻈﺎم ﻓﻲ اﻟﻌﻤﻞ ‪ ..‬ﺧﻄﻮات ﺑﻨﺎء ﺑﯿﺌﺔ ﻟﻠﻨﻈﺎم‪:‬‬

‫اﻟﺨﻄﻮة اﻷوﻟﻰ ‪ :‬ﯾﺘﻢ ﺑﻨﺎء ﺟﺪول ﻣﻘﺎﻃﻌﺎت اﻟﺪوس وﺟﺪول ﻣﻌﻠﻮﻣﺎت اﻟﺪوس ؟ أﻛﯿﺪ ﻣﺮت ﻋﻠﯿﻚ ﻫﺬة اﻟﺠﺪاول؟!‬
‫ﻫﻞ راﺟﻌﺖ اﻟﻤﻮﺿﻮع اﻟﺴﺎﺑﻖ ) ﺑﺮﻣﺠﺔ اﻟﺒﯿﻮس ( ﺗﻘﺼﺪت ﺷﺮح ﺟﺪوﻟﯿﻦ ﺑﺎﻟﺘﻔﺼﯿﻞ وﻫﻤﺎ ﺟﺪول ﻣﻘﺎﻃﻌﺎت اﻟﺒﯿﻮ س‬

‫وﺟﺪول ﻣﻌﻠﻮﻣﺎت اﻟﺒﯿﻮس ؟! ﻓﺎﻟﻨﻈﺎم دوس ﺳﺮق اﻟﻔﻜﺮة ﻣﻦ اﻟﺒﯿﻮس وﺑﻨﻔﺲ اﻟﺘﺨﻄﯿﻂ ﻣﺌﺔ ﺑﺎﻟﻤﺌﺔ‬

‫واﻵن دﻋﻨﺎ ﻧﺮاﺟﻊ‪:‬‬

‫ذﻛﺮﻧﺎ أن أول ﺟﺪول ﻫﻮ ﺟﺪول ﻣﻘﺎﻃﻌﺎت اﻟﺒﯿﻮس ﻋﻨﺪ اﻟﻌﻨﻮان ‪٠٠٠٠:٠٠٠٠‬‬

‫ﺑﻌﺪ ذﻟﻚ ﺟﺪول ﻣﻌﻠﻮﻣﺎت اﻟﺒﯿﻮس ﻋﻨﺪ اﻟﻌﻨﻮان ‪٠٠٤٠:٠٠٠٠‬‬

‫ﺑﻌﺪ ذﻟﻚ ﯾﺒﺪأ اﻟﺪوس ﻓﻲ ﻛﺘﺎﺑﺔ ﺟﺪول ﻟﻠﻤﻘﺎﻃﻌﺎت ﻋﻨﺪ اﻟﻌﻨﻮان اﻟﺬي ﺗﻮﻗﻔﻨﺎ ﻋﻨﺪة ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ‬

‫ﺛﻢ ﺗﺘﻢ ﻛﺘﺎﺑﺔ ﺟﺪول ﺑﯿﺎﻧﺎت اﻟﺪوس ﻋﻨﺪ اﻟﻌﻨﻮان ‪ ٠٠٥٠:٠٠٠٠‬ﺣﺠﻢ ﻫﺬا اﻟﺠﺪول ‪ ٢٠٠‬ﺑﺎﻟﻌﻨﻮﻧﺔ =‪٠٠٢٠:٠٠٠٠‬‬

‫ﻟﻮﺟﻤﻌﺖ اﻟﻌﻨﻮان ‪ ٠٠٥٠:٠٠٠٠‬و ‪ ٠٠٢٠:٠٠٠٠‬ﻓﺎﻟﻨﺘﯿﺠﺔ ﻫﻲ ‪ ٠٠٧٠:٠٠٠٠‬ﻣﺎذا ﯾﻤﺜﻞ اﻟﻌﻨﻮان‬

‫ﺑﺪاﯾﺔ ﺑﺮﻧﺎﻣﺞ ﻧﻮاة ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ اﻟﺬي إﻧﺘﻘﻞ ﻟﺔ اﻟﺘﻨﻔﯿﺬ ﻣﻦ ﻗﻄﺎع اﻹﻗﻼع ‪ ،،‬ﻻﺣﻆ اﻟﺘﺮﺗﯿﺐ اﻟﺪﻗﯿﻖ ﺟﺪا‬

‫وﻻ ﺑﺎﯾﺖ ﻓﺎرغ ﻣﻦ ﺑﺪاﯾﺔ اﻟﺬاﻛﺮة إﻟﻰ ﻫﻨﺎ ؟‬

‫إذ ﺗﻌﻤﺪ اﻟﻨﻈﺎم ﻣﻦ ﺟﻌﻞ ﻣﺴﺎﺣﺔ ﻓﺎرﻏﺔ ﺗﺴﺒﻖ ﻋﻨﻮان ﻧﻮاة اﻟﻨﻈﺎم ﻟﯿﺘﻢ ﻛﺘﺎﺑﺔ اﻟﺠﺪاول ﺑﻬﺎ‪,‬‬

‫واﻟﺴﺆال ‪ :‬ﻣﺎﻫﻮ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﻛﺘﺐ اﻟﺠﺪوﻟﯿﻦ ﻟﻠﺪوس وﻛﯿﻒ ؟‬

‫أوﻻ ‪ :‬اﻟﺠﺪوﻟﯿﻦ ﻋﺒﺎرة ﻋﻦ أرﻗﺎم وﺑﯿﺎﻧﺎت ﻟﺘﺮﺗﯿﺐ وﻧﻘﻞ اﻟﺘﻨﻔﯿﺬ ﻣﺜﻼ ﻣﻘﺎﻃﻌﺔ اﻟﺪوس‪int 21‬‬

‫ﺗﺘﺼﻞ ﺑﺠﺪول اﻟﻤﻘﺎﻃﻌﺎت ‪ ،‬ﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت ﯾﻨﻘﻞ اﻟﺘﻨﻔﯿﺬ إﻟﻰ ﺑﺮﻧﺎﻣﺞ آﺧﺮ ﻓﻲ اﻟﺬاﻛﺮة ﻟﺘﻨﻔﯿﺬ اﻟﻤﻘﺎﻃﻌﺔ‬

‫ﺑﻤﻌﻨﻰ أﻧﺔ ﻹﻧﺸﺎء ﺟﺪاول ﺗﺨﻄﯿﻂ ﻓﻲ اﻟﺬاﻛﺮة ﻻ ﻧﺤﺘﺎج ﻷي ﺗﻌﻠﯿﻤﺔ ﻟﻠﻌﺘﺎد أو اﻟﻤﻨﺎﻓﺬ أو ﻣﻘﺎﻃﻌﺔ ﻟﻠﺒﯿﻮ س‬

‫ﻓﻘﻂ ﻧﺤﺘﺎج ﻟﺘﻌﻠﯿﻤﺎت ﻧﻘﻞ اﻟﻤﻌﻠﻮﻣﺎت ﻣﺜﻞ ‪ mov‬وﻟﺬﻟﻚ ﺗﺠﺪ اﻟﺒﺮﻧﺎﻣﺞ ‪ io.sys‬ﻻ ﯾﺤﺘﻮي ﻋﻠﻰ أي ﻣﻘﺎﻃﻌﺔ‬

‫ﺧﺎرﺟﯿﺔ ‪ ،‬ﻓﻘﻂ ﯾﺤﺘﻮي ﻋﻠﻰ ﺑﻌﺾ ﺗﻌﻠﯿﻤﺎت اﻟﻔﺤﺺ واﻟﻤﻨﺎﻓﺬ‬

‫واﻟﻨﺘﯿﺠﺔ ‪ :‬أن اﻟﻤﺴﺆل ﻋﻦ ﺑﻨﺎء اﻟﺠﺪوﻟﯿﻦ ﻫﻮ اﻟﺒﺮﻧﺎﻣﺞ ‪ io.sys‬وﻗﺪ ﺗﺘﺪﺧﻞ ﺑﻌﺾ ﻗﻄﺎﻋﺎت اﻟﻘﺮص اﻟﻤﺨﻔﯿﺔ‬

‫واﻵن أﻧﺸﺄ ﻧﻈﺎم اﻟﺪوس اﻟﺠﺪوﻟﯿﻦ وﻟﻜﻦ ﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت ﯾﻨﻘﻞ ﻛﻞ ﻣﻘﺎﻃﻌﺔ إﻟﻰ ﻋﻨﻮان ﻟﺘﻨﻔﯿﺬ اﻟﻤﻘﺎﻃﻌﺔ‬

‫أﯾﻦ ﻫﺬة اﻟﻌﻨﺎوﯾﻦ وﻛﯿﻔﯿﺔ إﻧﺸﺎﺋﻬﺎ ؟‬

‫ﯾﺒﺪأ ﺑﺮﻧﺎﻣﺞ ‪ io.sys‬ﺑﺘﺤﻤﯿﻞ ﺟﺰء ﻣﻦ اﻟﻤﻠﻒ ‪ msdos.sys‬وﻫﺬا اﻟﻤﻠﻒ ﻻ ﯾﺤﺘﻮي ﻋﻠﻰ أي ﺗﻌﻠﯿﻤﺔ‬

‫ﻓﻘﻂ ﯾﺤﺘﻔﻆ ﺑﺈﻋﺪادات ﺗﺨﺺ اﻟﻤﻠﻒ ‪io.sys‬‬

‫وﺑﻌﺪ ذﻟﻚ ﯾﺒﺪأ ﺑﺘﺤﻤﯿﻞ ﺑﺎﻗﻲ ﻣﻠﻔﺎت اﻟﻘﺮص ﺑﻌﺪ ﺗﺠﺰﺋﺘﻬﺎ ﺣﺴﺐ اﻟﻌﻨﻮان اﻟﺘﻲ ﺳﺘﺘﺼﻞ ﺑﺔ ﻣﻘﺎﻃﻌﺔ اﻟﺪوس‬

‫ﻛﯿﻒ ؟‬
‫ﻣﺜﻼ اﻟﻤﻠﻒ ‪ command.com‬ﯾﻘﺮأ ﻣﻨﺔ ‪ ٥‬ﻗﻄﺎﻋﺎت ﻣﺜﻼ وﯾﻨﻘﻠﻬﺎ ﻟﻌﻨﻮان اﻟﺘﻨﻔﯿﺬ ﻟﻤﻘﺎﻃﻌﺔ ﻣﺤﺪدة‬

‫وﻋﻨﺪﻣﺎ ﺗﻨﻔﺬ اﻟﻤﻘﺎﻃﻌﺔ ﯾﻨﺘﻘﻞ اﻟﺘﻨﻔﯿﺬ ﻟﺠﺪول اﻟﻤﻘﺎﻃﻌﺎت ﺑﻌﺪ ذﻟﻚ ﯾﻨﻘﻞ ﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت اﻟﺘﻨﻔﯿﺬ ﻟﻌﻨﻮان اﻟﺨﻤﺲ‬
‫ﻗﻄﺎﻋﺎت‬

‫وﻫﻜﺬا ﻣﻊ ﺑﻘﯿﺔ اﻟﻤﻠﻔﺎت واﻟﻘﻄﺎﻋﺎت اﻟﺘﻲ ﻻ ﯾﻮﺟﺪ ﻟﻬﺎ ﻣﻠﻔﺎت ﺗﻌﺒﺮ ﻋﻨﻬﺎ ﻓﻲ اﻟﻘﺮص‬

‫واﻵن ﻣﺜﺎل ﻟﺘﻮﺿﯿﺢ اﻟﻔﻜﺮة ؟!‬

‫ﻣﻦ ﻗﺎﺋﻤﺔ ‪ start‬ﺛﻢ ‪ run‬إﻛﺘﺐ ‪ command‬ﻟﺘﺸﻐﯿﻞ ﺑﺮﻧﺎﻣﺞ اﻟﺪوس‬

‫أﻛﺘﺐ اﻷﻣﺮ اﻟﺘﺎﻟﻲ ‪ : mem /p‬ﻹﺳﺘﻌﺮاض ﻣﺤﺘﻮى اﻟﺬاﻛﺮة‬

‫وﻻﺣﻆ اﻟﺘﺮﺗﯿﺐ اﻟﺬي ﺳﯿﻈﻬﺮ ‪ ،‬أول ﺳﻄﺮ ﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت وﻋﻨﻮاة ‪ ٠‬ﺛﻢ ﺟﺪول ﺑﯿﺎﻧﺎت اﻟﺒﯿﻮس وﻋﻨﻮاﻧﺔ ‪40‬‬

‫ﺛﻢ ﺟﺪول ﺑﯿﺎﻧﺎت اﻟﺪوس وﻋﻨﻮاﻧﺔ ‪ ٥٠‬وﺑﻌﺪ ذﻟﻚ ﻻﺣﻆ ﺗﻘﺴﯿﻢ اﻟﺒﺮاﻣﺞ ﻣﺜﻼ ‪ io.sys‬ﺳﺘﺠﺪة أﻛﺜﺮ ﻣﻦ ﻗﺴﻢ‬

‫وﻛﺬﻟﻚ ﺑﺎﻗﻲ اﻟﻤﻠﻔﺎت ﻣﺜﻞ ‪ msdos‬و ‪ command ...,‬ﺑﺈﺧﺘﺼﺎر ﻫﺬة ﻫﻲ ﻓﻜﺮة أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ‬

‫واﻹﺧﺘﻼف ﺑﺴﯿﻂ ﺑﯿﻦ اﻟﺪوس واﻟﯿﻮﻧﻜﺲ ‪ ١٦‬ﺑﺖ وﻫﻮ ﻋﺒﺎرة ﻋﻦ ﺗﺮﺗﯿﺐ ﻟﻠﻤﻘﺎﻃﻊ اﻟﺘﻲ ﺗﻢ ذﻛﺮﻫﺎ‬
‫ﻓﻤﺜﻼ اﻟﯿﻮﻧﻜﺲ ﯾﻜﺘﺐ ﻣﻌﻠﻮﻣﺎﺗﺔ ﺑﻌﺪ ﺟﺪول ﻣﻌﻠﻮﻣﺎت اﻟﺒﯿﻮس ﺑﻬﺬا اﻟﺘﺮﺗﯿﺐ‬
‫‪-‬ﻧﻮاة اﻟﻨﻈﺎم‪-‬‬
‫‪-‬ذاﻛﺮة ﻣﺆﻗﺘﺔ ﻟﺘﺤﻤﯿﻞ اﻟﺒﺮاﻣﺞ‪-‬‬
‫‪-‬وﻫﻨﺎ ﯾﻜﺘﺐ ﺟﺪاول اﻟﻤﻌﻠﻮﻣﺎت‪-‬‬
‫‪-‬ﻫﻨﺎ ﯾﺨﺼﺺ ﻗﺴﻢ ﻛﺒﯿﺮ ﯾﺴﺘﺨﺪم ﻣﻜﺪس ﻟﻜﻞ اﻟﺒﺮاﻣﺞ‪-‬‬

‫‪---------‬‬

‫وﻓﻲ اﻟﻨﻬﺎﯾﺔ ﻫﺬة اﻷﺳﺎﻟﯿﺐ ﻟﺒﺮﻣﺠﺔ أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ ﻟﻢ ﺗﻌﺪ ﻣﻮﺟﻮدة أو ﻧﺎدرة اﻹﺳﺘﺨﺪام‬

‫وﻟﻜﻦ اﻟﻬﺪف ﻣﻦ ذﻛﺮﻫﺎ ﻟﺘﻜﻮن ﻣﺪﺧﻞ ﻷﻧﻈﻤﺔ ‪ ٣٢‬ﺑﺖ ﻣﺜﻞ وﻧﺪوز وﻟﯿﻨﻜﺲ‬

‫ﻟﺘﻜﺘﺸﻒ اﻟﻔﺮق اﻟﻜﺒﯿﺮ ‪ ،،،‬واﻟﺘﺤﻮل ﻣﻦ اﻟﻤﻘﺎﻃﻌﺎت إﻟﻰ اﻟﺪوال ‪ API‬واﻟﺒﻮاﺑﺎت واﻹﻣﺘﯿﺎزات واﻟﻤﻬﺎم‬

‫وأﻓﻀﻞ ﻃﺮﯾﻘﺔ ﻟﻜﺸﻒ أﺳﺮار ﺑﻨﺎء اﻷﻧﻈﻤﺔ ﻫﻲ ﺑﺮاﻣﺞ اﻟﻤﺘﺎﺑﻌﺔ واﻟﺘﺼﺤﯿﺢ وﻫﻲ ﻣﺘﻮﻓﺮة‬

‫ﻣﺜﻞ ﺑﺮﻧﺎﻣﺞ ‪ debug‬ﻓﻲ دوس واﻟﺒﺮاﻣﺞ اﻟﺘﺠﺎرﯾﺔ ﻣﺜﻞ اﻟﺴﻮﻓﺖ آﯾﺲ وﺑﺮﻧﺎﻣﺞ ‪ TD‬ﻣﻦ ﺑﻮرﻟﻨﺪ وﻏﯿﺮﻫﺎ اﻟﻜﺜﯿﺮ‬

‫وﻋﻨﺪ ﻣﺘﺎﺑﻌﺔ أي ﻧﻈﺎم ﯾﺠﺐ أن ﺗﻌﺮف أن ﺳﯿﺎﺳﺔ اﻷﻧﻈﻤﺔ ﻫﻲ ‪ :‬اﻟﺘﺮﺗﯿﺐ واﻟﻐﻤﻮض ؟‬

‫اﻟﺘﺮﺗﯿﺐ ‪ :‬وﻫﻮ ﻋﻤﻞ اﻟﻨﻈﺎم وأﻓﻜﺎرة داﺋﻤﺎ ﺗﺄﺗﻲ ﺗﺤﺖ ﺗﺮﺗﯿﺐ أو ﻗﺎﻧﻮن ﻣﺤﺪد إﻣﺎ أن ﯾﻜﻮن ﻣﺄﺧﻮذ ﻣﻦ اﻟﺒﯿﻮس‬

‫ﻛﻤﺎ ﺷﺎﻫﺪﻧﺎ أﻓﻜﺎر ﻧﻈﺎم اﻟﺪوس أو ﺗﻜﻮن ﻓﻜﺮة ﺟﺪﯾﺪة ﺑﺘﺮﺗﯿﺐ ﻣﻌﯿﻦ‬
‫واﻟﺘﺮﺗﯿﺐ ﻫﻮ أﺳﺎس ﻓﻲ ﺻﻨﺎﻋﺔ اﻷﻧﻈﻤﺔ‬

‫اﻟﻐﻤﻮض ‪ :‬وﻫﻮ أن اﻟﻨﻈﺎم ﯾﺤﺎول ﺑﻜﻞ اﻟﻄﺮق أن ﯾﻈﻬﺮ ﻣﺌﺔ ﻋﻼﻣﺔ ﺗﻌﺠﺐ ﻓﻮق رأﺳﻚ ؟ ﻛﯿﻒ ﻗﺎم ﺑﻬﺬا اﻟﻌﻤﻞ‬

‫ﻷن ﺷﺮﻛﺎت اﻷﻧﻈﻤﺔ ﺗﺴﺮق ﻣﻦ ﺑﻌﻀﻬﺎ اﻷﻓﻜﺎر ﻟﻤﺤﺎوﻟﺔ ﺗﻄﻮﯾﺮ أﻧﻈﻤﺘﻬﺎ ‪ ،،‬وداﺋﻤﺎ ﺗﺠﺪ ﺑﻌﺾ اﻟﻄﺮق ﻓﻲ اﻷﻧﻈﻤﺔ‬
‫ﺗﻠﻒ وﺗﺪور ﻟﻠﻮﺻﻮل ﻟﻬﺪف ﯾﻤﻜﻦ اﻟﻮﺻﻮل ﻟﺔ ﺑﺨﻄﻮة واﺣﺪة ﺑﺒﺴﺎﻃﺔ ووﺿﻮح ؟ ﻓﻼ ﺗﺴﺘﻐﺮب ﻣﻦ ﻫﺬة اﻟﺪورة‬

‫أﻧﻈﻤﺔ ‪ ٣٢‬ﺑﺖ )وﻧﺪوز && ﻟﯿﻨﻜﺲ ‪( ..‬‬

‫إﻧﺘﺸﺮ اﻟﻤﻌﺎﻟﺞ ) ‪ x86‬أول ﻣﻌﺎﻟﺞ ‪ ١٦‬ﺑﺖ ( ﺑﺸﻜﻞ رﻫﯿﺐ وﺣﻘﻖ ﺗﺤﻮل ﻛﺒﯿﺮ ﻓﻲ ﺻﻨﺎﻋﺔ اﻷﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ‬

‫وﻇﻬﺮت ﻟﻬﺬا اﻟﻤﻌﺎﻟﺞ أﻧﻈﻤﺔ ﻣﺜﻞ دوس وﯾﻨﻜﺲ وﻏﯿﺮﻫﺎ ‪ ،‬وﺑﺎﻟﺘﺄﻛﯿﺪ ﺣﻘﻘﺖ اﻟﺸﺮﻛﺎت أرﺑﺎح ﺷﺒﺔ ﺧﯿﺎﻟﯿﺔ‬

‫ﻣﻤﺎ ﺟﻌﻞ ﺷﺮﻛﺔ إﻧﺘﻞ ﺗﺴﺘﻤﺮ ﻓﻲ اﻟﺒﺤﺚ ﻹﻧﺘﺎج ﻣﻌﺎﻟﺞ ﻣﻄﻮر ﯾﺤﺪث ﻧﻘﻠﺔ أﺧﺮى وأرﺑﺎح أﻛﺜﺮ ؟؟‬

‫وﻓﻲ ﺳﻨﺔ ‪ ١٩٨٩ - ١٩٨٨‬ﺗﻘﺮﯾﺒﺎ ﻃﺮﺣﺖ ﺷﺮﻛﺔ إﻧﺘﻞ ﻣﻌﺎﻟﺞ اﻷﺣﻼم وﻫﻮ اﻟﻤﻌﺎﻟﺞ ‪ ٨٠٣٨٦‬إﺧﺘﺼﺎرة‪x386‬‬

‫وﻫﻮ اﻟﻤﻌﺎﻟﺞ ‪ ٣٢‬ﺑﺖ اﻟﺬي ﯾﻤﻠﻚ ﻛﻞ اﻟﺨﺪﻣﺎت ﻣﺜﻞ اﻹﻣﺘﯿﺎزات وﺗﻌﺪد اﻟﻤﻬﺎم وﻣﺴﺠﻼت ‪ ٣٢‬ﺑﺖ واﻷﻧﻤﺎط اﻟﺮﺳﻮﻣﯿﺔ‬

‫وﻟﻜﻦ ﺷﺮﻛﺔ إﻧﺘﻞ ﻻ ﺗﺮﯾﺪ أن ﺗﺨﺴﺮ أﻧﻈﻤﺔ اﻟﻤﻌﺎﻟﺞ ‪ ١٦‬ﺑﺖ ‪ ،‬ﻓﺠﻌﻠﺖ اﻟﻤﻌﺎﻟﺞ ﯾﻌﻤﻞ ﻓﻲ اﻟﻤﻨﺼﺘﯿﻦ ‪ ١٦‬ﺑﺖ و‪ ٣٢‬ﺑﺖ‬

‫اﻵن ﻋﺮﻓﻨﺎ أن اﻟﻤﻌﺎﻟﺞ ‪ ٣٢‬ﺑﺖ ﻇﻬﺮ ﺗﻘﺮﯾﺒﺎ ﻓﻲ ﺳﻨﺔ ‪ ٨٩‬وﻟﻜﻦ ﺷﺮﻛﺎت اﻷﻧﻈﻤﺔ ﺗﺤﺘﺎج وﻗﺖ ﻟﻔﻬﻢ ﻋﻤﻞ‬
‫اﻟﻤﻌﺎﻟﺞ‪ ٣٢‬ﺑﺖ وﺑﻨﺎء أﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ ﻟﻪ ‪ ,,‬ﺑﻌﺪ ‪ ٦‬ﺳﻨﻮات ﺗﻘﺮﯾﺒﺎً ﻇﻬﺮ اﻟﻨﻈﺎم وﻧﺪوز ‪ ٩٥‬وﻫﻮ ﻧﻈﺎم ‪ ٣٢‬ﺑﺖ ؟!!‬

‫ﻧﻈﺎم اﻟﻮﻧﺪوز‪ ٩٥‬أول ﻧﻈﺎم ﯾﺴﺘﺨﺪم ﻛﻞ ﺧﺪﻣﺎت اﻟﻤﻌﺎﻟﺞ ‪ ٣٢‬ﺑﺖ وﻫﻮ ﺑﺪاﯾﺔ ﻓﻲ ﻋﺼﺮ اﻷﻧﻈﻤﺔ اﻟﺮﺳﻮﻣﯿﺔ‬

‫وﺑﻬﺬا ﻫﯿﻤﺖ ﺷﺮﻛﺔ ﻣﺎﯾﻜﺮوﺳﻔﺖ ﻋﻠﻰ ﺳﻮق اﻟﺒﺮﻣﺠﯿﺎت واﻷﻧﻈﻤﺔ وأﺻﺒﺢ ﺻﺎﻧﻌﻬﺎ اﻷﻏﻨﻰ ﻓﻲ اﻟﻌﺎﻟﻢ!‬

‫ﻣﺎﻫﻮ اﻟﺠﺪﯾﺪ ﻓﻲ أﻧﻈﻤﺔ ‪ ٣٢‬ﺑﺖ ؟‬

‫ذﻛﺮﻧﺎ ﻓﻲ اﻟﺪرﺳﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ أﺳﺎﺳﯿﺎت ﻓﻲ ﺑﺮﻣﺠﺔ أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ ووﺟﺪﻧﺎ أن اﻟﻨﻈﺎم ﯾﺴﺘﺨﺪم ﻣﺴﺠﻼت اﻟﻤﻌﺎﻟﺞ‬

‫ﻓﻲ اﻟﺒﺮﻣﺠﺔ وﻫﻲ ﻧﻔﺴﻬﺎ اﻟﻤﺴﺠﻼت اﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ اﻟﺒﺮاﻣﺞ ‪ ،‬وإﻛﺘﺸﻔﻨﺎ أن أﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ ﺗﺴﺘﺨﺪم ﻧﻔﺲ أﻓﻜﺎر ﻧﻈﺎم‬
‫اﻟﺒﯿﻮس‬

‫ﺑﻤﻌﻨﻰ أن أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ ﻣﻌﻈﻢ أﻓﻜﺎرﻫﺎ ﻣﺴﺘﻬﻠﻜﺔ ‪ ...‬وﻃﺮق ﺑﺮﻣﺠﺘﻬﺎ واﺿﺤﺔ ‪ ،،،‬وﻟﻜﻦ ﻓﻲ أﻧﻈﻤﺔ ‪ ٣٢‬ﺑﺖ اﻷﻣﺮ‬
‫ﯾﺨﺘﻠﻒ!‬

‫اﻟﻤﺴﺠﻼت اﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ أﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ ‪ ٣٢‬ﺑﺖ‪:‬‬

‫اﻟﻤﺴﺠﻼت اﻟﻌﺎﻣﺔ ﺗﻐﯿﺮت ﻟﺘﺼﺒﺢ ‪: EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP‬‬

‫ﻣﺴﺠﻼت اﻷﻗﺴﺎم ‪ : ES,SS,CS,DS‬وأﺿﯿﻒ ﻟﻬﺎ‪GS,FS‬‬

‫ﻫﺬة اﻟﻤﺴﺠﻼت ﻛﺎﻧﺖ ﻓﻲ أﻧﻈﻤﺔ ‪ ١٦‬ﺑﺖ وﺗﻢ ﺗﻄﻮﯾﺮﻫﺎ ﻟﺘﺘﺴﻊ إﻟﻰ ‪ ٣٢‬ﺑﺖ أي ‪ ٤‬ﺑﺎﯾﺖ وﻟﻬﺬا ﺳﻤﯿﺖ أﻧﻈﻤﺔ ‪ ٣٢‬ﺑﺖ‬

‫ﻟﻮ ﻛﺎن اﻟﺘﻄﻮﯾﺮ ﻓﻘﻂ ﻟﻬﺬة اﻟﻤﺴﺠﻼت ﻟﻤﺎ ﺗﻄﻮر اﻟﻨﻈﺎم ‪ ،،،‬ﻓﻤﺜﻼ اﻟﺨﺪﻣﺎت اﻟﺠﺪﯾﺪة ﻣﺜﻞ‪:‬‬

‫اﻟﺬاﻛﺮة اﻟﻮﻫﻤﯿﺔ وﺻﻔﺤﺎت اﻟﺬاﻛﺮة ‪ ,‬اﻟﻨﻤﻂ اﻟﻤﺤﻤﻲ واﻟﺒﻮاﺑﺎت ‪ ،‬ﺗﻌﺪد اﻟﻤﻬﺎم ‪ ،‬ﻣﺮاﻗﺒﺔ أﺧﻄﺎء اﻟﻬﺎردوﯾﺮ‪..‬‬

‫ﻛﻞ ﻫﺬة اﻟﺨﺪﻣﺎت ﺗﺤﺘﺎج ﻟﻤﺴﺠﻼت ﺟﺪﯾﺪة ﻟﯿﺴﺘﺨﺪﻣﻬﺎ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ‪ ،،‬وﺳﻨﺒﺪأ ﺑﺸﺮح ﻣﺴﺠﻼت ‪ ٣٢‬ﺑﺖ اﻟﺠﺪﯾﺪة‬

‫ﻣﺴﺠﻼت ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ) اﻟﺠﺪاول ( وﻫﻲ‪:‬‬

‫‪: IDTR -IDT‬ﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت ) ﻣﻼﺣﻈﺔ ‪ :‬اﻟﻤﺴﺠﻞ ‪ idtr‬ﯾﻤﺜﻞ اﻟﺠﺪول ‪ ،‬واﻟﻤﺴﺠﻞ ‪ idt‬ﯾﻤﺜﻞ دﻟﯿﻞ ﻟﻠﺠﺪول(‬
‫‪ : GDTR-GDT‬ﻣﺴﺠﻼت ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ‬
‫‪ : LDTR -LDT‬ﻣﺴﺠﻼت ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﻤﺤﻠﻲ‬
‫ﻣﺴﺠﻼت ﺗﻌﺪد اﻟﻤﻬﺎم‬ ‫‪: TSS -TR‬‬

‫ﻣﺴﺠﻼت اﻟﺘﺤﻜﻢ ﻟﻠﻤﻌﺎﻟﺞ واﻟﺬاﻛﺮة وﻫﻲ ‪:‬‬

‫‪ CR0‬و ‪ CR1‬و ‪ CR 2‬و ‪ CR3‬و‪CR4‬‬

‫ﻣﺴﺠﻼت اﻹﺧﺘﺒﺎر واﻟﺘﻨﻘﯿﺢ ﻟﻠﺒﺮاﻣﺞ واﻟﻬﺎردوﯾﺮ‪:‬‬

‫‪TR0,TR1,TR2,TR3,TR4,TR5,TR6,TR7‬‬

‫ﺗﻌﻠﯿﻤﺎت ﺑﻌﺾ اﻟﻤﺴﺠﻼت اﻟﺴﺎﺑﻘﺔ‪:‬‬


‫‪LGDT, LIDT, LLDT, LMSW, LTR,‬‬
‫‪SGDT, SIDT, SLDT, SMSW, STR,‬‬
‫‪RDMSR, WRMSR, RDTSC‬‬

‫وﺑﻘﯿﺔ اﻟﻤﺴﺠﻼت ﺗﺴﺘﺨﺪم اﻟﺘﻌﻠﯿﻤﺔ ‪ MOV‬وﺳﯿﺘﻢ ﻋﺮض اﻷﻣﺜﻠﺔ ﻓﻲ ﻧﻬﺎﯾﺔ اﻟﻤﻮﺿﻮع‬

‫ﻧﺒﺪأ ﺑﺸﺮح اﻟﺠﺪاول‪,,,‬‬

‫ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ واﻟﻤﺤﻠﻲ‪:‬‬

‫ﻣﺎﻫﻲ اﻟﺠﺪاول ؟ ﻓﻲ أﻧﻈﻤﺔ ‪ ٣٢‬ﺑﺖ‬


‫ﺗﻢ ﺣﺠﺰ ﻣﺴﺎﺣﺎت ﻓﺎرﻏﺔ ﻓﻲ اﻟﺬاﻛﺮة ﯾﺴﺘﺨﺪﻣﻬﺎ اﻟﻨﻈﺎم ﻛﺠﺪاول‬

‫ﻣﺜﻞ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ واﻟﻤﺤﻠﻲ و ﺟﺪاول اﻟﺬاﻛﺮة وﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت ‪ ،‬وﺗﺴﺘﻄﯿﻊ إﺳﺘﺨﺮاج‬

‫أي ﻗﯿﻤﺔ ﻓﻲ أي ﺟﺪول ﻣﻦ ﺧﻼل ﻣﻌﻠﻮﻣﺘﯿﻦ ﻫﻤﺎ ‪ :‬اﻷﺳﺎس وﻫﻮ ﯾﻤﺜﻞ ﻋﻨﻮان اﻟﺠﺪول‬

‫واﻟﺤﺪ وﻫﻮ ﯾﻤﺜﻞ دﻟﯿﻞ ﻟﻠﺠﺪول ‪ ،‬وﺳﻨﻘﻮم ﺑﻌﺮض ﻫﺬة اﻟﺠﺪاول واﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ ﺗﺤﺘﻮﯾﻬﺎ‬

‫ﺟﺪاول اﻟﻮاﺻﻔﺎت ﻣﻦ إﺳﻤﻬﺎ ﺗﻌﻨﻲ ‪ :‬وﺻﻒ ﻋﻨﺎوﯾﻦ اﻟﻤﻘﺎﻃﻊ ووﺻﻒ ﻟﺨﺼﺎﺋﺺ اﻟﻤﻘﺎﻃﻊ وأﻧﻮاﻋﻬﺎ ‪ ،،‬ﻣﺎﻫﻮ‬
‫اﻟﻤﻘﻄﻊ ؟!‬

‫ﻧﻌﺮف ﺑﺄن ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ﻋﺒﺎرة ﻋﻦ ﺑﺮاﻣﺞ )ﻋﻤﻠﯿﺎت ( اﻟﺒﺮاﻣﺞ ﻋﺒﺎرة ﻋﻦ ﻣﻘﺎﻃﻊ ‪ ،‬ﻣﺜﻞ ﻣﻘﻄﻊ اﻟﻜﻮد وﻣﻘﻄﻊ‬
‫اﻟﺒﯿﺎﻧﺎت‬

‫وﻣﻘﻄﻊ اﻟﻜﻮد ﯾﻤﺜﻠﺔ اﻟﻤﺴﺠﻞ ‪ CS‬واﻟﺒﯿﺎﻧﺎت اﻟﻤﺴﺠﻞ ‪ DS ,‬ﻣﺎذا ﻟﻮ ﻓﺘﺤﺖ أي ﺑﺮﻧﺎﻣﺞ ﺑﻮاﺳﻄﺔ اﻟﺪﯾﺒﻐﺮ وأردت أن‬
‫ﺗﻌﺮف‬

‫ﻋﻨﻮان ﻣﻘﻄﻊ اﻟﻜﻮد ﻣﺜﻼً ‪ ،‬أﻧﺎ ﺟﺮﺑﺖ ﺑﻮاﺳﻄﺔ ﺑﺮﻧﺎﻣﺞ ‪ olly‬وﻇﻬﺮ ﻟﻲ ﻓﻲ اﻟﻨﺎﻓﺬة اﻟﯿﻤﻨﻰ أن ﻣﻘﻄﻊ اﻟﻜﻮد ﯾﺴﺎوي‬
‫‪ CS =21‬؟؟‬

‫وﻣﻘﻄﻊ اﻟﺒﯿﺎﻧﺎت ﻣﺜﻼ ‪ DS =1B ,‬ﻫﻞ ﻣﻦ اﻟﻤﻌﻘﻮل أن ﻫﺬا اﻟﻌﻨﻮان ﻓﻲ اﻟﺬاﻛﺮة ﯾﻤﺜﻞ ﻋﻨﻮان ﻛﻮد اﻟﺒﺮﻧﺎﻣﺞ ؟! أﻛﯿﺪ ﻻ‬

‫ﺟﺮب ﺷﻐﻞ أي ﺑﺮﻧﺎﻣﺞ آﺧﺮ ﺑﻮاﺳﻄﺔ اﻟﺪﯾﺒﻐﺮ ‪ ,,‬ﺳﺘﺠﺪ أن ﻋﻨﺎوﯾﻦ اﻟﻤﻘﺎﻃﻊ ﻧﻔﺴﻬﺎ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ﻟﻢ ﺗﺘﻐﯿﺮ ؟‬

‫ﻫﻞ ﻛﻞ اﻟﺒﺮاﻣﺞ ﻟﻬﺎ ﻋﻨﻮان واﺣﺪ ﻓﻲ اﻟﺬاﻛﺮة ؟ ﺑﺈﺧﺘﺼﺎر ﻫﻞ اﻟﻌﻨﻮاﯾﻦ اﻟﺘﻲ ﻧﺮاﻫﺎ ﺣﻘﯿﻘﯿﺔ أم أن اﻟﻨﻈﺎم ﯾﺨﺪﻋﻨﺎ ؟!!‬

‫اﻟﺠﻮاب ﻫﻮ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ‪ ،،،‬ﻣﺎﻫﻮ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ؟‬

‫ﯾﺘﻜﻮن اﻟﺠﺪول ﻣﻦ ﻣﺴﺠﻠﯿﻦ اﻷول ‪ GDTR‬وﯾﻤﺜﻞ اﻟﺠﺪول)اﻷﺳﺎس( ‪ ،‬واﻟﻤﺴﺠﻞ ‪ GDT‬ﯾﻤﺜﻞ اﻟﺪﻟﯿﻞ )اﻟﺤﺪ(‬

‫ﻣﺜﻼ ﻟﻮ ﻛﺎن ‪ GDT =10‬ﯾﻌﻨﻲ اﻟﺴﻄﺮ ‪ ١٠‬ﻓﻲ اﻟﺠﺪول ‪GDTR‬‬

‫واﻟﻤﻌﻠﻮﻣﺔ اﻟﺜﺎﻧﯿﺔ أن اﻟﻤﺴﺠﻞ ‪ GDTR‬ﺣﺠﻤﺔ ‪ ٦٤‬ﺑﺖ )ﯾﺤﺘﻮي ﻋﻠﻰ اﻟﻌﻨﻮان اﻟﺬاﻛﺮي ﻟﻠﻘﺴﻢ وﺧﺼﺎﺋﺼﺔ(‬

‫وﺑﻬﺬا ﺳﻨﻔﻬﻢ اﻟﻔﻜﺮة ‪ ،‬ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ﯾﻌﻄﻲ أي ﻋﻤﻠﯿﺔ ﻓﻲ اﻟﺬاﻛﺮة )ﻣﺜﻼ ﻣﻘﻄﻊ ﻛﻮد ( ﯾﻌﻄﯿﺔ رﻗﻢ ﻣﺜﻼ ‪٢٠‬‬

‫ﻫﺬا اﻟﺮﻗﻢ ﯾﻤﺜﻞ رﻗﻢ اﻟﺴﻄﺮ ﻓﻲ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ‪ ،،‬ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫اﻟﻤﻼﺣﻈﺔ اﻷوﻟﻰ ‪ :‬اﻟﺠﺪاول ﻓﻲ اﻟﺬاﻛﺮة ﺗﺒﺪأ اﻟﺘﺮﺗﯿﺐ ﻣﻦ اﻷﺳﻔﻞ إﻟﻰ اﻷﻋﻠﻰ‪ ،‬ﻣﺜﻞ ﻣﻘﻄﻊ اﻟﻤﻜﺪس ﻓﻲ اﻟﺒﺮاﻣﺞ‬

‫اﻟﻤﻼﺣﻈﺔ‪ : ٢‬ﺟﺪول اﻟﻮاﺻﻔﺎت ﻻ ﯾﺤﺘﻮي ﻋﻠﻰ ﻣﻘﺎﻃﻊ ﻟﻠﺒﯿﺎﻧﺎت واﻟﻜﻮد ﻓﻘﻂ ‪ ،‬وإﻧﻤﺎ ﯾﺤﺘﻮي ﻋﻠﻰ أﻛﺜﺮ ﻣﻦ ﻧﻮع‬

‫ﻟﻠﻌﻤﻠﯿﺎت ﻣﺜﻞ ‪ TSS‬ﻣﺴﺠﻞ ﺣﺎﻟﺔ ﻟﻌﻤﻠﯿﺔ ﻣﻌﯿﻨﺔ ! و ﻗﺪ ﯾﺤﺘﻮي ‪ LDT‬وﻫﻮ ﯾﻤﺜﻞ إزاﺣﺔ ﻓﻲ ﺟﺪول آﺧﺮ‬

‫وﻗﺪ ﯾﺤﺘﻮي ﻋﻠﻰ إﺗﺼﺎل ﻟﺒﻮاﺑﺔ أو ﻣﻘﺎﻃﻌﺔ ﻟﺒﻮاﺑﺔ أو ﻣﺼﯿﺪة ﻟﺒﻮاﺑﺔ ‪ ،‬اﻟﻤﻬﻢ أن اﻟﻘﺎﻋﺪة ﻫﻲ‬

‫ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ﻫﻮ اﻟﻤﺴﺆل ﻋﻦ ﻧﻘﻞ اﻟﺘﺤﻜﻢ ؟إﻣﺎ إﻟﻰ ﺟﺪول آﺧﺮ ﻣﺜﻞ ﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت أو اﻟﺠﺪول‬
‫اﻟﻤﺤﻠﻲ‬

‫أو إﻟﻰ ﺟﺪول ﻋﻨﺎوﯾﻦ اﻟﺬاﻛﺮة أو إﻟﻰ ﻋﻤﻠﯿﺔ ﻓﻲ اﻟﺬاﻛﺮة ‪ ،‬وﺳﺘﺘﻀﺢ اﻟﻔﻜﺮة ﺑﻌﺪ ﻗﻠﯿﻞ!‬

‫وﻵن ﻟﻮ أﺧﺬﻧﺎ أي ﻗﯿﻤﺔ ﻣﻦ اﻟﺠﺪول ﻣﺜﻞ اﻟﻘﯿﻤﺔ ‪ ١‬ﻗﺴﻢ ﺑﯿﺎﻧﺎت ‪ ,‬ﺣﺠﻤﻬﺎ ﺳﯿﻜﻮن ‪ ٦٤‬ﺑﺖ ‪ ،‬ﻣﺎذا ﺗﻤﺜﻞ ﻫﺬة ‪ ٦٤‬ﺑﺖ‬

‫ﯾﻘﻮم ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ﺑﻜﺘﺎﺑﺔ ﻛﻞ ﻣﻌﻠﻮﻣﺎت اﻟﻌﻤﻠﯿﺔ أو اﻟﻘﺴﻢ ﻓﻲ ﻫﺬة اﻟﺨﺎﻧﺔ ‪ ،‬ﻣﺜﻞ اﻟﻌﻨﻮان اﻟﺬاﻛﺮي اﻟﺬي ﺳﯿﺘﺠﺔ ﻟﺔ‬
‫اﻟﺘﻨﻔﯿﺬ‬

‫ﻧﻮع اﻟﻘﺴﻢ ﻣﺜﻞ ﻛﻮد أو ﺑﯿﺎﻧﺎت أو ﻣﻌﺮف ﻟﺠﺪول أو ﺑﻮاﺑﺔ ‪ ،‬وﯾﻜﺘﺐ إﻣﺘﯿﺎزات اﻟﻘﺴﻢ ﻣﺜﻼ ﻗﺴﻢ ﻟﻠﻨﻈﺎم أو ﻟﻠﻤﺴﺘﺨﺪم‬

‫وﻣﻌﻠﻮﻣﺎت أﺧﺮى ﻛﺜﯿﺮة ‪ ،،‬ﯾﺴﺘﻔﯿﺪ ﻣﻨﻬﺎ اﻟﻨﻈﺎم ﻓﻲ ﺗﻨﻈﯿﻢ اﻟﻘﯿﻢ وﺗﺤﺪﯾﺪ ﻣﺴﺘﻮﯾﺎت اﻟﺘﻨﻔﯿﺬ ‪ ،‬دﻋﻨﺎ ﻧﺸﺮح ﻛﻞ ﺑﺖ‬
‫ﺑﺎﻟﺘﻔﺼﯿﻞ!‬

‫اﻟﺘﻘﺴﯿﻢ اﻟﻌﺎم ﻟﻘﯿﻢ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ‪ GDTR ,‬ﺣﺠﻤﺔ ‪ ٦٤‬ﺑﺖ‪:‬‬

‫اﻟﺒﺘﺎت ﻣﻦ ‪ ٠‬إﻟﻰ ‪ + ١٥‬اﻟﺒﺘﺎت ﻣﻦ ‪ ٤٨‬إﻟﻰ ‪ : ٥١‬ﯾﻤﺜﻞ اﻟﺤﺪ )ﻟﻺﻧﺘﻘﺎل ﻟﺠﺪول آﺧﺮ(‬

‫اﻟﺒﺘﺎت ﻣﻦ ‪ ١٦‬إﻟﻰ ‪ + ٣٩‬اﻟﺒﺘﺎت ﻣﻦ ‪ ٥٦‬إﻟﻰ ‪ : ٦٣‬ﯾﻤﺜﻞ اﻷﺳﺎس ) وﻫﻮ ﻋﻨﻮان اﻟﺠﺪول(‬

‫وﻫﺬة اﻟﻘﯿﻢ ﺗﻤﺜﻞ ﻋﻨﻮان اﻹﻧﺘﻘﺎل ﻟﻠﺘﻨﻔﯿﺬ إﻣﺎ ﻟﺠﺪول واﺻﻔﺎت آﺧﺮ أو إﻟﻰ ﺟﺪول ﻋﻨﺎوﯾﻦ وﺻﻔﺤﺎت اﻟﺬاﻛﺮة‬
‫وﺑﻌﺪ ذﻟﻚ ﯾﺘﻢ اﻹﻧﺘﻘﺎل اﻟﻔﻌﻠﻲ ﻟﻠﻜﻮد اﻟﺘﻨﻔﯿﺬي ‪ ،‬ﻧﺮﺟﻊ ﻟﺘﻘﺴﯿﻢ ‪ ٦٤‬ﺑﺖ ‪ ،‬ﺑﻘﯿﺔ اﻟﺒﺘﺎت ﺗﻤﺜﻞ ﺧﺼﺎﺋﺺ اﻟﻤﻘﻄﻊ‪:‬‬

‫اﻟﺒﺖ ﻣﻦ ‪ ٤٠‬إﻟﻰ ‪ : ٤٣‬وﻋﺪدﻫﺎ ‪ ٤‬ﺑﺘﺎت واﻟﻘﯿﻤﺔ اﻟﺘﻲ ﺗﺤﺘﻮﯾﻬﺎ ﻫﺬة ‪ ٤‬اﻟﺒﺘﺎت ﺗﻤﺜﻞ ﺧﺼﺎﺋﺺ اﻟﻘﺴﻢ‪,‬‬

‫ﺗﻨﻘﺴﻢ ﺧﺼﺎﺋﺺ اﻟﻘﺴﻢ إﻟﻰ ﻧﻮﻋﯿﻦ ‪ ،‬اﻷول ﺧﺼﺎﺋﺺ اﻟﻘﺴﻢ ﻟﻌﻤﻠﯿﺔ اﻟﻨﻈﺎم ‪ ،‬وﺧﺼﺎﺋﺺ اﻟﻘﺴﻢ ﻟﻌﻤﻠﯿﺎت اﻟﻤﺴﺘﺨﺪم‬

‫واﻟﺬي ﯾﺤﺪد ﻧﻮع اﻟﻌﻤﻠﯿﺔ ﻫﻮ اﻟﺒﺖ ‪ ٤٤‬اﻟﺬي ﯾﻠﻲ ﻫﺬة ‪ ٤‬اﻟﺒﺘﺎت ‪ ،‬إذا ﻛﺎن ﺑﺖ ﻧﻮع اﻟﻌﻤﻠﯿﺔ ‪ ٠‬ﻓﺈن اﻟﻌﻤﻠﯿﺔ‬

‫ﺗﻜﻮن ﻟﻠﻨﻈﺎم ‪ ،‬وﺑﺬﻟﻚ ﻓﺈن ﺧﺼﺎﺋﺺ أﻗﺴﺎم ﻋﻤﻠﯿﺎت اﻟﻨﻈﺎم اﻟﻤﻜﻮﻧﺔ ﻣﻦ ‪ ٤‬ﺑﺖ ﺗﻜﻮن ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬

‫اﻟﻘﯿﻤﺔ ‪ : ٠‬ﻣﺤﺠﻮزة ﻟﻠﻤﺴﺘﻘﺒﻞ ) ﻻﯾﻮﺟﺪ(‬


‫اﻟﻘﯿﻤﺔ ‪ : ١‬ﻧﻮع اﻟﻘﺴﻢ ﻋﻤﻠﯿﺔ ‪ TSS‬ﻣﻦ ﻧﻮع ‪ ١٦‬ﺑﺖ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٢‬ﻧﻮع اﻟﻘﺴﻢ دﻟﯿﻞ ﻟﺠﺪول ‪ LDT‬وﻫﻮ ﯾﻤﺜﻞ دﻟﯿﻞ ﻟﺠﺪول اﻟﻮاﺻﻔﺎت اﻟﻤﺤﻠﻲ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٣‬ﻋﻤﻠﯿﺔ ‪ TSS‬ﻣﻦ ﻧﻮع ‪ ١٦‬ﺑﺖ وﻫﻲ ﻓﻲ ﺣﺎﻟﺔ اﻟﺘﻨﻔﯿﺬ ﺑﻤﻌﻨﻰ ﻋﻤﻠﯿﺔ ﻣﺸﻐﻮﻟﺔ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٤‬ﻧﻮع اﻟﻌﻤﻠﯿﺔ إﺗﺼﺎل ﻟﺒﻮاﺑﺔ ﻣﻦ ﻧﻮع ‪ ١٦‬ﺑﺖ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٥‬ﻧﻮع اﻟﻌﻤﻠﯿﺔ ﺑﻮاﺑﺔ ﻟﻠﺘﻨﻔﯿﺬ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٦‬ﻣﻘﺎﻃﻌﺔ ﻟﺒﻮاﺑﺔ ﻣﻦ ﻧﻮع ‪ ١٦‬ﺑﺖ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٧‬ﻣﺼﯿﺪة ﻟﺒﻮاﺑﺔ ﻣﻦ ﻧﻮع ‪ ١٦‬ﺑﺖ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٨‬ﻗﯿﻤﺔ ﻣﺤﺠﻮزة ﻟﻠﻤﺴﺘﻘﺒﻞ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٩‬ﻋﻤﻠﯿﺔ ‪ TSS‬ﻣﻦ ﻧﻮع ‪ ٣٢‬ﺑﺖ‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٠‬ﻣﺤﺠﻮز ﻟﻠﻤﺴﺘﻘﺒﻞ‬
‫اﻟﻘﯿﻤﺔ ‪ : ١١‬ﻋﻤﻠﯿﺔ ‪ TSS‬ﻣﻦ ﻧﻮع ‪ 32‬ﺑﺖ ‪ ،‬ﻣﺸﻐﻮﻟﺔ‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٢‬إﺗﺼﺎل ﻟﺒﻮاﺑﺔ ‪ ٣٢‬ﺑﺖ‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٣‬ﻣﺤﺠﻮز‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٤‬ﻣﻘﺎﻃﻌﺔ ﻟﺒﻮاﺑﺔ ‪ ٣٢‬ﺑﺖ‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٥‬ﻣﺼﯿﺪة ﻟﺒﻮاﺑﺔ ‪ ٣٢‬ﺑﺖ‬

‫‪----------------------------------------‬‬
‫أﻣﺎ إذا ﻛﺎن ﻧﻮع اﻟﻌﻤﻠﯿﺔ ) ﻋﻤﻠﯿﺔ ﻣﺴﺘﺨﺪم ( ﺑﻤﻌﻨﻰ أن اﻟﺒﺖ ‪ ٤٤‬ﯾﺴﺎوي ‪١‬‬

‫ﺗﻜﻮن ﺧﺼﺎﺋﺺ اﻟﻘﺴﻢ ﻟﻞ ‪ ٤‬ﺑﺖ ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫اﻟﻘﯿﻤﺔ ‪ : ٠‬ﻗﺴﻢ ﺑﯿﺎﻧﺎت ﻟﻠﻘﺮاﺋﺔ ﻓﻘﻂ‬


‫اﻟﻘﯿﻤﺔ ‪ : ١‬ﻗﺴﻢ ﺑﯿﺎﻧﺎت ﻟﻠﻘﺮاﺋﺔ ‪ +‬إﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل‬
‫اﻟﻘﯿﻤﺔ ‪ : ٢‬ﻗﺴﻢ ﺑﯿﺎﻧﺎت ﻟﻠﻘﺮاﺋﺔ واﻟﻜﺘﺎﺑﺔ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٣‬ﻗﺴﻢ ﺑﯿﺎﻧﺎت ﻟﻠﻘﺮاﺋﺔ واﻟﻜﺘﺎﺑﺔ ‪ +‬إﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل‬
‫اﻟﻘﯿﻤﺔ ‪ : ٤‬ﻗﺴﻢ ﺑﯿﺎﻧﺎت ﻟﻠﻘﺮاﺋﺔ ﻓﻘﻂ ‪ +‬ﻗﺴﻢ ﻣﻮﺳﻊ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٥‬ﻗﺴﻢ ﺑﯿﺎﻧﺎت ﻟﻠﻘﺮاﺋﺔ ﻓﻘﻂ ‪ +‬ﻗﺴﻢ ﻣﻮﺳﻊ ‪ +‬إﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل‬
‫اﻟﻘﯿﻤﺔ ‪ : ٦‬ﻗﺴﻢ ﺑﯿﺎﻧﺎت ﻟﻠﻘﺮاﺋﺔ واﻟﻜﺘﺎﺑﺔ ‪ +‬ﻗﺴﻢ ﻣﻮﺳﻊ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٧‬ﻗﺴﻢ ﺑﯿﺎﻧﺎت ﻟﻠﻘﺮاﺋﺔ واﻟﻜﺘﺎﺑﺔ ‪ +‬ﻗﺴﻢ ﻣﻮﺳﻊ ‪ +‬إﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل‬
‫اﻟﻘﯿﻤﺔ ‪ : ٨‬ﻗﺴﻢ ﺷﻔﺮة ﻗﺎﺑﻞ ﻟﻠﺘﻨﻔﯿﺬ ﻓﻘﻂ‬
‫اﻟﻘﯿﻤﺔ ‪ : ٩‬ﻗﺴﻢ ﺷﻔﺮة ﺗﻨﻔﯿﺬي ‪ +‬إﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٠‬ﻗﺴﻢ ﺷﻔﺮة ﺗﻨﻔﯿﺬي ‪ +‬ﻟﻠﻘﺮاﺋﺔ‬
‫اﻟﻘﯿﻤﺔ ‪ : ١١‬ﻗﺴﻢ ﺷﻔﺮة ﺗﻨﻔﯿﺬي ‪ +‬ﻟﻠﻘﺮاﺋﺔ ‪ +‬إﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٢‬ﻗﺴﻢ ﺷﻔﺮة ﺗﻨﻔﯿﺬي ﻣﺘﻮاﻓﻖ‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٣‬ﻗﺴﻢ ﺷﻔﺮة ﺗﻨﻔﯿﺬي‪ +‬ﻣﺘﻮاﻓﻖ ‪ +‬إﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٤‬ﻗﺴﻢ ﺷﻔﺮة ﺗﻨﻔﯿﺬي ‪ +‬ﻟﻠﻘﺮاﺋﺔ ‪ +‬ﻣﺘﻮاﻓﻖ‬
‫اﻟﻘﯿﻤﺔ ‪ : ١٥‬ﻗﺴﻢ ﺷﻔﺮة ﺗﻨﻔﯿﺬي ‪ +‬ﻟﻠﻘﺮاﺋﺔ ‪ +‬ﻣﺘﻮاﻓﻖ ‪ +‬إﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل‬
‫ﻫﺬة ﻫﻲ ﻧﻔﺴﻬﺎ ﺧﺼﺎﺋﺺ أﻗﺴﺎم اﻟﺒﺮاﻣﺞ ﻓﻲ ﻧﻈﺎم وﻧﺪوز ‪ ،‬وﻫﻲ ﻧﻔﺴﻬﺎ ﺧﺼﺎﺋﺺ أﻗﺴﺎم ﺟﺪاول اﻟﻮاﺻﻔﺎت‬
‫‪-‬‬
‫ﺑﻌﺪ ذﻟﻚ ﯾﺄﺗﻲ اﻟﺒﺖ ‪ ٤٤‬ﻓﻲ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ‪ ،‬ﻧﻜﻤﻞ ﺑﺎﻗﻲ ‪ ٦٤‬ﺑﺖ‬

‫اﻟﺒﺖ ‪ : ٤٤‬ﻫﺬا اﻟﺒﺖ ﯾﺤﺪد إذا ﻛﺎﻧﺖ اﻟﻌﻤﻠﯿﺔ ﻟﻠﻨﻈﺎم أو ﻟﻠﻤﺴﺘﺨﺪم ‪ ،‬وﻫﻮ اﻟﺒﺖ اﻟﻤﺴﺆل ﻋﻦ ﻛﯿﻔﯿﺔ اﻟﺘﻘﺴﯿﻢ‬

‫ﻟﺨﺼﺎﺋﺺ اﻷﻗﺴﺎم ﻛﻤﺎ ذﻛﺮﻧﺎة ﺳﺎﺑﻘﺎً ‪ ،‬إذا ﻛﺎن ‪ ٠‬ﻋﻤﻠﯿﺔ ﻧﻈﺎم وإذا ﻛﺎن ‪ 1‬ﻋﻤﻠﯿﺔ ﻣﺴﺘﺨﺪم‬

‫اﻟﺒﺖ ‪ ٤٥‬و ‪ : ٤٦‬ﯾﻤﺜﻞ رﻗﻢ اﻹﻣﺘﯿﺎز أو اﻟﺤﻠﻘﺔ اﻟﺘﻲ ﺳﺘﻌﻤﻞ ﺑﻬﺎ ﻫﺬة اﻟﻌﻤﻠﯿﺔ ‪ ،‬واﻟﺤﻠﻘﺎت ﻣﻦ ‪ ٠‬إﻟﻰ ‪٣‬‬

‫اﻟﺒﺖ ‪ : ٤٧‬ﯾﻤﺜﻞ ﻫﺬا اﻟﺒﺖ وﺟﻮد اﻟﻘﺴﻢ اﻟﺤﺎﻟﻲ ﻓﻲ اﻟﺬاﻛﺮة أو ﻋﺪم وﺟﻮدة ؟!‬
‫ﯾﺴﺘﻔﯿﺪ اﻟﻨﻈﺎم ﻣﻦ ﻫﺬا اﻟﺒﺖ ﻓﻲ أﻣﻮر ﻛﺜﯿﺮة ﻣﻨﻬﺎ ﻣﺜﻼ ﻣﻌﺮﻓﺔ اﻷﻗﺴﺎم اﻟﻨﺸﻄﺔ واﻟﻐﯿﺮ ﻧﺸﻄﺔ ﻟﻨﻘﻞ ﻣﺤﺘﻮاﻫﺎ ﻣﻦ‬
‫اﻟﻘﺮص إﻟﻰ اﻟﺬاﻛﺮة واﻟﻌﻜﺲ ‪ ،‬ﻛﻤﺎ أن اﻟﺒﺖ ﯾﺴﺘﺨﺪم ﻟﻠﺘﺒﺪﯾﻞ ﺑﯿﻦ اﻷﻗﺴﺎم‬

‫اﻟﺒﺖ ‪ : ٥٢‬ﻫﺬا اﻟﺒﺖ إﺣﺘﯿﺎﻃﻲ ؟! إﻟﻰ أن ﯾﺘﻢ اﻟﺘﺒﺪﯾﻞ ﺑﯿﻦ اﻷﻗﺴﺎم ﻓﯿﺼﺒﺢ اﻟﺒﺖ ﻣﻜﻤﻞ ﻟﻘﯿﻢ اﻟﺤﺪ ﺑﻤﻌﻨﻰ أن اﻟﺒﺖ ﻻ‬
‫ﯾﺴﺘﺨﺪم ﻓﻲ ﻫﺬا اﻟﺘﻘﺴﯿﻢ وﺳﯿﺘﻢ إﺳﺘﺨﺪاﻣﺔ ﻓﻲ ﺗﻘﺎﺳﯿﻢ أﺧﺮى ‪,‬‬

‫اﻟﺒﺖ ‪ : ٥٣‬ﻫﺬا اﻟﺒﺖ ﻏﯿﺮ ﻣﺴﺘﺨﺪم داﺋﻤﺎ ‪ ٠‬ﻣﺤﺠﻮز ﻟﻠﻤﺴﺘﻘﺒﻞ‬

‫اﻟﺒﺖ ‪ : ٥٤‬إذا ﻛﺎن ﻗﯿﻤﺔ اﻟﺒﺖ ‪ ٠‬ﻓﺈن اﻟﻤﻘﺎﻃﻊ ﺗﻜﻮن ‪ ١٦‬ﺑﺖ وإذا ﻛﺎن ‪ ١‬ﺗﺼﺒﺢ اﻟﻤﻘﺎﻃﻊ ‪ ٣٢‬ﺑﺖ‬

‫اﻟﺒﺖ ‪ : ٥٥‬ﻫﺬا اﻟﺒﺖ ﯾﺘﺴﺨﺪم ﻓﻲ ﻃﺮﯾﻘﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﯿﻤﺔ اﻟﺤﺪ ﻟﻠﻌﻤﻠﯿﺔ ‪ ،‬إذا ﻛﺎن ‪ ٠‬ﻓﺈن اﻟﻤﻌﺎﻟﺞ ﯾﺤﺴﺐ ﻗﯿﻤﺔ اﻟﺤﺪ‬
‫ﻛﻤﺎﻫﻲ ‪ ،‬وإذا ﻛﺎﻧﺖ ﻗﯿﻤﺔ اﻟﺒﺖ ‪ ١‬ﯾﺴﺘﺨﺪم اﻟﻤﻌﺎﻟﺞ ﻗﺎﻧﻮن ﺟﺪﯾﺪ ‪ ،‬وﻫﻮ ﺣﺴﺎب ﻛﻞ ﻗﯿﻤﺔ ﻟﻠﺤﺪ ‪ ٤‬ﻛﯿﻠﻮﺑﺎﯾﺖ‬

‫‪-‬‬

‫وﺑﻬﺬا ﻧﻜﻮن أﻛﻤﻠﻨﺎ ﻛﻞ ‪ ٦٤‬ﺑﺖ ﻟﻌﻤﻠﯿﺔ ﻧﻈﺎم داﺧﻞ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ‪,‬‬

‫ﺑﻘﯿﺔ ﻣﻌﻠﻮﻣﺔ وﻫﻲ ‪ :‬ﯾﻮﺟﺪ ﺗﻘﺴﯿﻢ آﺧﺮ ﻟﺠﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ‪ ,‬إذا ﻛﺎﻧﺖ اﻟﻌﻤﻠﯿﺔ ﺗﺨﺺ اﻟﺒﻮاﺑﺎت‬

‫ﻓﺈن ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ ﻓﻲ ‪ ٦٤‬ﺑﺖ ﺗﺨﺘﻠﻒ ‪ -‬واﻹﺧﺘﻼف ﺑﺴﯿﻂ ﺑﻬﺬا اﻟﺸﻜﻞ‪,,‬‬

‫ﺗﻘﺴﯿﻢ ﺟﺪول اﻟﻮاﺻﻔﺎت ﻟﻌﻤﻠﯿﺔ ﻧﻮﻋﻬﺎ ) إﺗﺼﺎل ﻟﺒﻮاﺑﺔ(‬

‫ﻋﻤﻠﯿﺔ اﻹﺗﺼﺎل ﻟﺒﻮاﺑﺔ ﺗﺴﺘﺨﺪم ﺗﻘﺴﯿﻢ آﺧﺮ ﻏﯿﺮ اﻟﺘﻘﺴﯿﻢ اﻟﻌﺎم وﻟﻜﻦ ﻣﺸﺎﺑﺔ ﺑﺸﻜﻞ ﻛﺒﯿﺮ ﻟﻠﺘﻘﺴﯿﻢ اﻟﻌﺎم‬

‫ﻓﻤﺜﻼ اﻟﺒﺘﺎت ﻣﻦ ‪ ٥٢‬إﻟﻰ ‪ : ٥٥‬ﻻ ﺗﺴﺘﺨﺪﻣﻬﺎ اﻟﺒﻮاﺑﺔ ‪ ،‬وﺗﻀﺎف ﺑﺘﺎت ﺟﺪﯾﺪة وﻫﻲ‬

‫اﻟﺒﺖ ﻣﻦ ‪ ٣٢‬إﻟﻰ ‪ : ٣٦‬وﺗﺴﺘﺨﺪﻣﻬﺎ اﻟﺒﻮاﺑﺔ ﻟﺘﻤﺮﯾﺮ ﻣﺠﻤﻮع اﻟﺒﺎرﻣﺘﺮات اﻟﺘﻲ ﺳﺘﻤﺮر ﻋﺒﺮ اﻟﺒﻮاﺑﺔ‬

‫أﻣﺎ ﺑﻘﯿﺔ اﻟﺒﺘﺎت ‪ :‬اﻟﺨﺼﺎﺋﺺ وﻣﺴﺘﻮى اﻹﻣﺘﯿﺎزات و‪.‬و‪ ، .‬ﺗﺒﻘﻰ ﻛﻤﺎ ﻫﻲ‬

‫ﻧﺴﺘﻨﺘﺞ ‪ :‬أن أي ﻋﻤﻠﯿﺔ ﺗﺨﺺ اﻟﺒﻮاﺑﺎت ﻣﺜﻞ ﻣﻘﺎﻃﻌﺔ ﻟﺒﻮاﺑﺔ أو ﻣﺼﯿﺪة ﻟﺒﻮاﺑﺔ ﻓﺈﻧﻬﺎ ﻻ ﺗﺴﺘﺨﺪم‬

‫اﻟﺒﺘﺎت ﻣﻦ ‪ ٥٢‬إﻟﻰ ‪ ٥٥‬وﺑﻘﯿﺔ اﻟﺨﺼﺎﺋﺺ ﺗﺒﻘﻰ ﻛﻤﺎ ﻫﻲ‬

‫‪-‬‬
‫اﻟﺘﺒﺪﯾﻞ ﺑﯿﻦ اﻟﻤﻬﺎم وﺗﻘﺴﯿﻢ اﻟﻤﺴﺠﻞ ‪ TSS‬ﺗﻘﺴﯿﻢ‪:‬‬

‫ﻣﻦ أﻋﻘﺪ اﻟﻌﻤﻠﯿﺎت ﻓﻲ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ‪ ٣٢‬ﺑﺖ ﻫﻲ ﻋﻤﻠﯿﺔ اﻟﺘﺒﺪﯾﻞ ﺑﯿﻦ اﻟﻤﻬﺎم ‪ ،‬وﻟﻜﻦ اﻟﻤﻌﺎﻟﺞ ﯾﺘﻜﻠﻒ ﺑﺄﻏﻠﺐ‬

‫اﻟﺸﻐﻠﺔ ‪ ،‬ﺗﺴﺘﻄﯿﻊ أن ﺗﻘﻮل أن ﻛﻞ ﻋﻤﻠﯿﺔ ﻓﻲ اﻟﺬاﻛﺮة ﻋﺒﺎرة ﺟﺪول ﻣﻌﻠﻮﻣﺎت ﯾﻤﺜﻠﺔ اﻟﻤﺴﺠﻞ‪TSS‬‬

‫ﺑﻬﺬة اﻟﺼﻮرة‪:‬‬

‫ﺗﻼﺣﻆ اﻟﻘﯿﻢ اﻟﺘﻲ ﺑﺎﻟﻠﻮن اﻷزرق ‪ :‬اﻟﻤﺴﺠﻞ ‪ TR‬ﯾﻤﺜﻞ رﻗﻢ اﻟﻌﻤﻠﯿﺔ اﻟﺴﺎﺑﻘﺔ اﻟﺘﻲ إﻧﺘﻘﻞ ﻣﻨﻬﺎ اﻟﺘﻨﻔﯿﺬ ﻟﻠﻌﻤﻠﯿﺔ اﻟﺤﺎﻟﯿﺔ‬

‫ﻣﺜﻼ ﻛﻨﺖ ﺗﻌﻤﻞ ﻋﻠﻰ ﺑﺮﻧﺎﻣﺞ وﻣﻦ ﺧﻼﻟﺔ ﺷﻐﻠﺖ ﺑﺮﻧﺎﻣﺞ آﺧﺮ ‪ ،‬ﯾﺘﻢ ﺗﺴﺠﯿﻞ رﻗﻢ اﻟﺒﺮﻧﺎﻣﺞ اﻷول ﻓﻲ ﻫﺬا اﻟﻤﺴﺠﻞ‬

‫ﻟﯿﺲ ﺑﺎﻟﺘﺤﺪﯾﺪ رﻗﻢ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﻛﻨﺖ ﻋﻠﯿﺔ ؟!! وﻟﻜﻦ ﻟﺘﻘﺮﯾﺐ اﻟﻔﻜﺮة ‪ ،‬ﯾﻤﻜﻦ ﺗﻜﻮن ﻋﻤﻠﯿﺔ ﻧﻈﺎم ﺳﺒﻘﺖ اﻟﺘﻨﻔﯿﺬ‬

‫وﺑﻬﺬا ﯾﺼﺒﺢ ﺗﺮاﺑﻂ ﺑﯿﻦ اﻟﻌﻤﻠﯿﺎت ﻓﻲ اﻟﺬاﻛﺮة ‪ ،‬ﻣﺜﺎل ‪ :‬ﯾﺒﺪأ اﻟﻨﻈﺎم ﺑﺄول ﻋﻤﻠﯿﺔ ) أﻛﯿﺪ ﻣﺎﻓﻲ ﺷﻲء ﻗﺒﻠﻬﺎ ﺗﻜﻮن ﻫﺬة‬
‫اﻟﻘﯿﻤﺔ ‪(٠‬‬

‫ﺑﻌﺪ ذﻟﻚ ﺗﺸﺘﻐﻞ ﻋﻤﻠﯿﺔ أﺧﺮى ﺗﺮﺗﺒﻂ ﻣﻊ اﻟﻌﻤﻠﯿﺔ اﻟﺘﻲ ﻗﺒﻠﻬﺎ ﺑﻬﺬا اﻟﻤﺴﺠﻞ وﻫﻜﺬا ﻣﻊ ﺛﺎﻟﺚ ﻋﻤﻠﯿﺔ ‪ ،‬وﺗﺼﺒﺢ ﻛﻞ‬
‫اﻟﻌﻤﻠﯿﺎت ﻣﺘﺮاﺑﻄﺔ‬
‫ﻟﯿﻘﻮم اﻟﻤﻌﺎﻟﺞ ﺑﺴﺮﻋﺔ ﻛﺒﯿﺮة ﺑﺎﻟﺘﺒﺪﯾﻞ ﺑﯿﻦ ﻫﺬة اﻟﻤﻬﺎم ﻣﻦ اﻷﺣﺪث إﻟﻰ اﻷﻗﺪم ‪ ،‬وﺑﻬﺬا ﺗﻌﺘﻘﺪ أن ﻟﻜﻞ ﻋﻤﻠﯿﺔ ﻣﻌﺎﻟﺞ‬
‫ﺧﺎص ؟!!‬

‫وﺗﻼﺣﻆ ﻣﺴﺠﻼت اﻟﻤﻜﺪس ‪ ss0‬و ‪ ss1 ..‬ودﻟﯿﻞ اﻟﻤﻜﺪس ‪ esp1‬و‪) esp2‬ﻫﺬة اﻟﻤﺴﺠﻼت آﺧﺮ ‪ ٣‬ﻋﻤﻠﯿﺎت(‬

‫ﺳﺒﻘﺖ ﻫﺬة اﻟﻌﻤﻠﯿﺔ ‪ ،‬واﻟﺴﺆال ﻟﻤﺎذا إﺧﺘﺎر اﻟﻤﻌﺎﻟﺞ ﻣﺴﺠﻞ اﻟﻤﻜﺪس ﻟﺜﻼث ﻋﻤﻠﯿﺎت ‪ ،‬ﻟﻤﺎذا ﻟﻢ ﯾﺨﺘﺮ ﻣﺴﺠﻞ اﻟﻜﻮد ﻣﺜﻼً‬

‫ﻷن أي ﻋﻤﻠﯿﺔ إﺗﺼﺎل ﺗﺨﺮج اﻟﺘﻨﻔﯿﺬ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ إﻟﻰ ﻛﻮد ﺧﺎرج اﻟﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓﺈﻧﺔ ﯾﺘﻢ ﺗﺴﺠﯿﻞ ﻣﻌﻠﻮﻣﺎﺗﻬﺎ ﻓﻲ اﻟﻤﻜﺪس‬

‫ﻣﺜﻞ ﻋﻨﻮان اﻹﺗﺼﺎل و ﻋﻨﻮان اﻟﻌﻮدة ﻟﻠﺒﺮﻧﺎﻣﺞ ‪ ،‬ﺳﺄﻋﻄﯿﻚ ﻣﺜﺎل ﻋﻠﻰ ﻫﺬة اﻟﻨﻘﻄﺔ ؟!! ﺗﺨﯿﻞ‬

‫أﻧﻚ ﺗﻌﻤﻞ ﻋﻠﻰ اﻟﻜﻤﺒﯿﻮﺗﺮ وﻓﺠﺄة ﻇﻬﺮت رﺳﺎﻟﺔ ﺧﻄﺄ ﻓﻲ اﻟﻨﻈﺎم ﺛﻢ ﯾﻐﻠﻖ اﻟﻨﻈﺎم ؟ ﻛﯿﻒ ﺗﻌﺮف ﻣﺼﺪر اﻟﺨﻄﺄ‬

‫ﻋﻦ ﻃﺮﯾﻖ ﻋﺮض اﻟﻌﻤﻠﯿﺎت اﻟﻤﻘﯿﻤﺔ ﻓﻲ اﻟﺬاﻛﺮة ‪ ,‬وإﻟﻘﺎء ﻧﻈﺮة ﻋﻠﻰ ﻣﻜﺪس اﻟﺒﺮﻧﺎﻣﺞ ﻟﺘﺠﺪ آﺧﺮ ﻋﻤﻠﯿﺔ ﺧﺮوج ﻣﻦ‬
‫اﻟﺒﺮﻧﺎﻣﺞ‬

‫وﺳﺘﺠﺪ ﻋﻨﻮان اﻟﻌﻮدة ‪ ،‬إذﻫﺐ إﻟﯿﺔ وﻻﺣﻆ اﻟﻜﻮد اﻟﺬي ﺗﺴﺒﺐ ﻓﻲ اﻟﺨﻄﺄ ‪ ،‬ﻫﺬة اﻟﻨﻘﻄﺔ ﺳﻨﺘﻔﯿﺪ ﻣﻨﻬﺎ ﻛﺜﯿﺮ ﻓﻲ اﻟﺒﺮﻣﺠﺔ‬
‫اﻟﻌﻜﺴﯿﺔ‬

‫اﻟﻤﻬﻢ ‪ :‬وﻣﺎ ﻏﺮض اﻟﻤﻌﺎﻟﺞ ﻣﻦ ﻣﻌﺮﻓﺔ اﻟﻤﻜﺪس ﻵﺧﺮ ﺛﻼث ﻋﻤﻠﯿﺎت ؟! ﻟﻜﻲ ﯾﻌﺮف ﻣﻜﺎن اﻟﺘﻨﻔﯿﺬ ﻗﺒﻞ اﻹﻧﺘﻘﺎل‬
‫ﻟﻠﻌﻤﻠﯿﺔ‬

‫إذا ﻛﺎن اﻟﺘﻨﻔﯿﺬ ﺧﺎرج اﻟﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻣﺎﻓﺎﺋﺪت اﻹﻧﺘﻘﺎل ﻟﻠﻌﻤﻠﯿﺔ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ؟! وﻟﺬﻟﻚ ﻓﺈﻧﺔ ﯾﺘﻢ اﻟﺘﺒﺪﯾﻞ ﺑﯿﻦ اﻟﻤﻬﺎم‬

‫ﺑﺴﺮﻋﺔ أﻛﺒﺮ ‪ ،‬ﺑﻌﺪ ذﻟﻚ ﯾﺄﺗﻲ اﻟﻤﺴﺠﻞ ‪ CR3‬ﻫﺬا اﻟﻤﺴﺠﻞ ﺧﺎص ﻟﻠﺼﻔﺤﺎت اﻟﺬاﻛﺮﯾﺔ ﻟﻠﻌﻤﻠﯿﺔ‬

‫وﺳﯿﺘﻢ ﻣﻨﺎﻗﺸﺘﺔ ﻓﻲ اﻟﻘﺴﻢ اﻟﺜﺎﻧﻲ ﻣﻦ اﻟﻤﻮﺿﻮع ) ﻣﺴﺠﻼت اﻟﺘﺤﻜﻢ ﻟﻠﻤﻌﺎﻟﺞ واﻟﻨﻈﺎم(‬

‫وﺑﻌﺪ ذﻟﻚ اﻟﻤﺴﺠﻼت اﻟﺘﻲ ﺑﺎﻟﻠﻮن اﻷﺣﻤﺮ ‪ :‬وﻫﻲ ﺑﺎﻟﻄﺒﻊ اﻟﻤﺴﺠﻼت اﻟﻌﺎﻣﺔ وﻣﺴﺠﻼت اﻷﻗﺴﺎم اﻟﺘﻲ ﺗﺨﺺ اﻟﻌﻤﻠﯿﺔ‬

‫اﻟﺤﺎﻟﯿﺔ ‪ ،‬ﯾﺤﺘﻔﻆ ﺑﻬﺎ اﻟﻤﻌﺎﻟﺞ ﻋﻨﺪﻣﺎ ﯾﺒﺪل ﺑﯿﻦ اﻟﻌﻤﻠﯿﺔ وﻋﻨﺪﻣﺎ ﯾﺮﺟﻊ إﻟﯿﻬﺎ ﯾﻌﯿﺪ اﻟﻘﯿﻢ ﻟﻠﻤﺴﺠﻼت‬

‫اﻟﻤﺴﺠﻞ ‪ LDT‬وﻫﻮ دﻟﯿﻞ ﻟﻬﺬة اﻟﻌﻤﻠﯿﺔ ﻓﻲ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﻤﺤﻠﻲ ‪ ،‬وﺗﺴﺘﺨﺪم ﻟﻤﻌﺎﻟﺠﺔ اﻹﺳﺘﺜﻨﺎﺋﺎت ﻓﻲ اﻟﻌﻤﻠﯿﺔ‬

‫وﻫﺬة اﻟﻘﯿﻤﺔ ﻻﺗﺴﺘﺨﺪم ﻓﻲ اﻟﻨﻈﺎم ‪ ،‬داﺋﻤﺎ ﺻﻔﺮ‬

‫ﺑﻘﻲ آﺧﺮ ﻗﯿﻤﺔ ‪ :‬ﺗﺨﻄﯿﻂ اﻟﺬاﻛﺮة ﻟﻌﻨﺎوﯾﻦ اﻹدﺧﺎل واﻹﺧﺮاج ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ‪ ,‬وﻫﺬا اﻟﻤﻮﺿﻮع ﺳﯿﻜﻮن ﻟﺔ ﺷﺮح‬

‫أﻛﺜﺮ ﻋﻨﺪﻣﺎ ﻧﺪﺧﻞ ﻓﻲ ﻃﺮق اﻟﺒﺮﻣﺠﺔ و اﻟﻤﻘﺎﻃﻌﺎت ﻟﻠﻬﺎردوﯾﺮ ‪ +‬ﻣﻘﺎﻃﻌﺎت اﻟﺒﺮاﻣﺞ‬

‫‪----------------------------------------------‬‬

‫واﻵن ﺳﻨﻘﻮم ﺑﻤﺮاﺟﻌﺔ ﺳﺮﯾﻌﺔ ﻟﻠﺠﺪاول ﻟﺘﻮﺿﯿﺢ ﻃﺮق اﻟﺘﺮاﺑﻂ ﺑﯿﻨﻬﺎ ‪ ،‬وأﻣﺎﻛﻦ ﺗﻮاﺟﺪﻫﺎ‬

‫ﻋﻠﻤﻨﺎ أن أي ﻋﻤﻠﯿﺔ ﻓﻲ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ﯾﻤﻜﻦ أن ﺗﻜﻮن‪:‬‬

‫ﻗﺴﻢ ﺑﯿﺎﻧﺎت ‪ -‬ﻗﺴﻢ ﻛﻮد ‪ -‬ﻋﻤﻠﯿﺔ أو ﻣﻌﺮف ﻟﻠﻤﺴﺠﻞ ‪ TSS -‬دﻟﯿﻞ ﻟﺠﺪول آﺧﺮ ﻣﺜﻞ‪LDT‬‬

‫أو إﺗﺼﺎل ﻟﺒﻮاﺑﺔ ‪ -‬ﻣﻘﺎﻃﻌﺔ ﻟﺒﻮاﺑﺔ ‪ -‬ﻋﻤﻠﯿﺔ ﻟﺒﻮاﺑﺔ ‪ -‬ﻣﺼﯿﺪة ﻟﺒﻮاﺑﺔ‬


‫وأي ﻋﻤﻠﯿﺔ ﻣﻦ ﻫﺬة اﻟﻌﻤﻠﯿﺎت ﯾﻤﺜﻠﻬﺎ ‪ ٦٤‬ﺑﺖ)ﺟﺪاول اﻟﻮاﺻﻔﺎت( ﻫﺬة ال ‪ ٦٤‬ﺑﺖ ﺗﻤﺜﻞ ﻋﻨﻮان اﻹﻧﺘﻘﺎل ‪+‬‬
‫اﻟﺨﺼﺎﺋﺺ‬

‫واﻟﺴﺆال أﯾﻦ اﻟﻤﻜﺎن اﻟﻤﻨﺎﺳﺐ ﻟﻜﻞ ﻋﻤﻠﯿﺔ ﻓﻲ أي ﺟﺪول ‪ ،‬اﻟﺠﺪاول ﻫﻲ‬

‫ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ‪ GDTR :‬اﻟﻌﻤﻠﯿﺎت اﻟﺘﻲ ﯾﻤﻜﻦ أن ﯾﺤﺘﻮﯾﻬﺎ ‪ ٥‬وﻫﻲ‪:‬‬

‫إﻣﺎ أن ﺗﻜﻮن ﻗﺴﻢ ﻛﻮد ‪ -‬أو ﻗﺴﻢ ﺑﯿﺎﻧﺎت ‪ -‬أو ﻣﻌﺮف ‪ TSS -‬أو دﻟﯿﻞ ﻟﺠﺪول ‪ LDT -‬أو إﺗﺼﺎل ﻟﺒﻮاﺑﺔ‬

‫ﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت ‪ IDTR ,‬ﯾﻤﻜﻦ أن ﯾﺤﺘﻮي ﻋﻠﻰ ‪ ٣‬وﻫﻲ ‪ :‬ﻋﻤﻠﯿﺔ ﻟﺒﻮاﺑﺔ ‪ -‬أو ﻣﻘﺎﻃﻌﺔ ﻟﺒﻮاﺑﺔ ‪ -‬أو ﻣﺼﯿﺪة ﻟﺒﻮاﺑﺔ‬

‫ﻣﺎذا ﻋﻦ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﻤﺤﻠﻲ ‪ LDTR ,‬ﻫﺬا اﻟﺠﺪول ﻣﺸﺎﺑﺔ ﻟﺠﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ‪GDTR‬‬

‫واﻟﻔﺮق أن اﻷول ﻣﺤﻠﻲ واﻟﺜﺎﻧﻲ ﻋﺎم ‪ ،‬وﺗﺴﺘﻄﯿﻊ أن ﺗﺴﺘﺨﺪم اﻟﺠﺪول اﻟﻌﺎم ﺑﺪل اﻟﻤﺤﻠﻲ‬

‫وﯾﺴﺘﺨﺪم اﻟﻤﺤﻠﻲ ﻋﺎدة ﻟﻤﻌﺎﻟﺠﺔ اﻹﺳﺘﺜﻨﺎءات واﻷﺧﻄﺎء وﺑﻌﺾ اﻹﺟﺮاﺋﺎت ‪ ،‬وﺑﻌﺪ ﻗﻠﯿﻞ ﺳﻨﺮى‬

‫ﻓﻲ ﺑﻌﺾ اﻷﻣﺜﻠﺔ ﻋﻠﻰ ﻧﻈﺎم وﻧﺪوز أﻧﺔ ﻻ ﯾﺴﺘﺨﺪم ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﻤﺤﻠﻲ ؟!!‬

‫اﻟﻤﻬﻢ ﻓﻲ اﻟﻨﻬﺎﯾﺔ ﺳﯿﺼﺒﺢ اﻟﺘﺨﻄﯿﻂ ﻟﻬﺬة اﻟﺠﺪاول ﺑﻬﺬا اﻟﺸﻜﻞ‪:‬‬


‫وﺑﻌﺪ اﻟﺪراﺳﺔ اﻟﻨﻈﺮﯾﺔ ﺑﻘﻲ اﻟﺘﻄﺒﯿﻖ اﻟﻌﻤﻠﻲ ﻋﻠﻰ اﻟﺜﻼث ﺟﺪاول ‪ ،،‬ﻟﺘﺜﺒﯿﺖ اﻟﻤﻌﻠﻮﻣﺎت‬

‫أﻋﺘﻘﺪ أﻧﺔ ﻻﯾﻮﺟﺪ ﺑﺮﻧﺎﻣﺞ ﯾﺴﺘﻄﯿﻊ اﻟﻮﺻﻮل إﻟﻰ ﻫﺬة اﻟﻤﻨﺎﻃﻖ ﻓﻲ اﻟﻨﻈﺎم ﻋﺪى اﻟﺒﺮﻧﺎﻣﺞ اﻹﺣﺘﺮاﻓﻲ ‪ -‬اﻟﺴﻮﻓﺖ آﯾﺲ‪-‬‬

‫ﻧﺒﺪأ ‪ :‬ﺷﻐﻞ اﻟﺴﻮﻓﺖ آﯾﺲ ﻋﻦ ﻃﺮﯾﻖ اﻟﻤﻔﺘﺎح ‪ Ctrl+D‬ﻟﺘﻈﻬﺮ ﻟﻚ ﻧﺎﻓﺬة اﻷواﻣﺮ‪,‬‬

‫اﻷﻣﺮ اﻷول ‪ GDT‬وﻫﻮ ﻟﻌﺮض ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ وﻣﺤﺘﻮاة ﻓﻲ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ اﻟﺬي ﺗﺴﺘﺨﺪﻣﺔ‬

‫ﻻﺣﻆ اﻟﻌﻤﻠﯿﺎت وﻛﯿﻒ ﺗﺮﺗﯿﺒﻬﺎ ‪ ،‬ﺳﺘﻼﺣﻆ ﻧﻔﺲ اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ ذﻛﺮﻧﺎﻫﺎ وﻫﻲ‬

‫اﻟﺤﺪ ‪ -‬اﻷﺳﺎس ‪ -‬ﺣﻠﻘﺔ اﻟﺒﺮﻧﺎﻣﺞ أو إﻣﺘﯿﺎزاﺗﺔ ‪ -‬وﺧﺼﺎﺋﺼﺔ‬

‫وﻵن ﺳﻨﺤﺎول اﻟﻮﺻﻮل ﻟﻜﻮد ﺑﺮﻧﺎﻣﺞ ﻣﻌﺮف ﻓﻲ ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﺸﺎﻣﻞ ‪ ،‬ﻧﺒﺪأ‬

‫ﺷﻐﻞ اي ﺑﺮﻧﺎﻣﺞ دﯾﺒﻐﺮ ﺗﺴﺘﻄﯿﻊ ﻣﻦ ﺧﻼﻟﺔ ﻋﺮض ﻗﯿﻢ ﻣﺴﺠﻼت اﻷﻗﺴﺎم ﻟﻠﺒﺮﻧﺎﻣﺞ ‪ ،‬أﻧﺎ ﺳﺄﺳﺘﺨﺪم‪olly‬‬

‫ﺑﻌﺪ ﺗﺸﻐﯿﻞ ‪ olly‬ﺗﺠﻮل ﻓﻲ ﺟﻬﺎزك وإﺧﺘﺮ أي ﻣﻠﻒ ﺗﻨﻔﯿﺬي ‪ ،‬وﺑﻌﺪ ﻓﻚ اﻟﺘﺠﻤﯿﻊ ﻻﺣﻆ ﻗﯿﻢ اﻟﻤﺴﺠﻼت‬
‫وأﻫﻢ ﺷﻲء ﻣﺴﺠﻞ ﻗﺴﻢ اﻟﻜﻮد ‪ CS ,‬وﻟﯿﻜﻦ ﻣﺜﻼ ﯾﺴﺎوي ‪ CS = 1B ,‬واﻵن ﺷﻐﻞ اﻟﺴﻮﻓﺖ آﯾﺲ‬

‫ﺛﻢ أﻛﺘﺐ ﻓﻲ ﺳﻄﺮ اﻷواﻣﺮ ‪ GDT‬وإﺿﻐﻂ إﻧﺘﺮ ‪ ،‬ﺑﻌﺪ ذﻟﻚ إﺑﺤﺚ ﻋﻦ اﻹزاﺣﺔ ‪ x 1B ,‬ﻻﺣﻆ اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ‬

‫ﺑﺠﺎﻧﺒﺔ ‪ ،‬أوﻻً‪ :‬اﻟﻘﺴﻢ ﻫﻮ ﻗﺴﻢ ﻛﻮد ‪ ٣٢‬ﺑﺖ ﺑﻬﺬا اﻟﺸﻜﻞ ‪ code32‬ﻣﺴﺘﻮى اﻹﻣﺘﯿﺎز أو اﻟﺤﻠﻘﺔ ﯾﺴﺎوي ‪٣‬‬

‫أي أﻧﺔ ﺑﺮﻧﺎﻣﺞ ﻓﻲ ﻣﺴﺘﻮى اﻟﻤﺴﺘﺨﺪم ‪ ،‬أﻣﺎ ﻋﻦ اﻟﻌﻨﻮﻧﺔ ‪ ،‬ﺳﻨﻔﻬﻤﻬﺎ ﻓﻲ اﻟﻘﺴﻢ اﻟﺜﺎﻧﻲ ﻣﻦ اﻟﺪرس ﻷﻧﻬﺎ ﺗﺘﻄﻠﺐ ﻓﻬﻢ‬

‫ﻟﻤﺠﺎل اﻟﻌﻨﻮﻧﺔ وﺗﺮﻗﯿﻢ اﻟﺼﻔﺤﺎت واﻟﺠﺪاول‪,,,‬‬

‫واﻵن ﺟﺪول اﻟﻮاﺻﻔﺎت اﻟﻤﺤﻠﻲ ‪ ،‬أﻧﺎ ذﻛﺮت أن اﻟﻮﻧﺪوز ﻻﯾﺴﺘﺨﺪﻣﺔ ﻷﻧﻲ أﺳﺘﻨﺪ إﻟﻰ ﻫﺬة اﻟﻤﻌﻠﻮﻣﺎت‬

‫ﺷﻐﻞ اﻟﺴﻮﻓﺖ آﯾﺲ وﻓﻲ ﺳﻄﺮ اﻷواﻣﺮ أﻛﺘﺐ ‪ LDT ,‬ﻟﺘﻈﻬﺮ ﻟﻚ رﺳﺎﻟﺔ ‪NO LDT‬‬

‫واﻟﺠﺰء اﻷﺧﯿﺮ اﻟﺒﻮاﺑﺎت واﻟﻤﻘﺎﻃﻌﺎت ‪ ،‬ﺟﺪول اﻟﻤﻘﺎﻃﻌﺎت‬

‫ﻣﻦ ﺧﻼل اﻟﺪرس ﻗﺪ ﺗﺴﺘﻐﺮب ﻣﺎﻫﻲ اﻟﺒﻮاﺑﺔ ؟ !ﺳﺄدﻋﻚ ﺗﺠﺎوب ﺑﻨﻔﺴﻚ‬

‫ﺷﻐﻞ اﻟﺴﻮﻓﺖ آﯾﺲ وأﻛﺘﺐ اﻷﻣﺮ ‪ idt‬وﺳﺘﺮى اﻟﺒﻮاﺑﺔ ! وﻫﻲ ﻋﺒﺎرة ﻋﻦ إﺟﺮاﺋﺎت ﻣﻌﺮﻓﺔ ﻓﻲ اﻟﺬاﻛﺮة‬

‫وﯾﻌﺮض ﻟﻚ اﻟﺴﻮﻓﺖ آﯾﺲ إﺳﻢ اﻟﺘﻌﺮﯾﻒ وﻣﻠﻒ اﻟﻨﻈﺎم اﻟﺬي ﯾﺤﺘﻮﯾﻬﺎ ‪,,,‬‬

‫وﻓﻲ ﻣﺜﺎﻟﻨﺎ ﻋﻠﻰ وﻧﺪوز إﻛﺲ ﺑﻲ ‪ ،‬ﻫﺬة ﺑﻌﺾ ﻣﻠﻔﺎت اﻟﻨﻈﺎم اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﺒﻮاﺑﺎت‪:‬‬

‫‪HAL.dll , ntoskrnl.exe ,dbgmsg.sys,..‬‬

‫ﺑﻘﻲ ﻣﺴﺠﻞ اﻟﺤﺎﻟﺔ ‪ TSS ,‬ﺑﺎﻟﺘﺄﻛﯿﺪ ﻟﻌﺮض ﻣﻌﻠﻮﻣﺎﺗﺔ ﺗﺴﺘﺨﺪم اﻷﻣﺮ‪TSS‬‬

‫‪----‬‬

‫وﺑﻬﺬا ﻧﻜﻮن ﻗﺪ أﺧﺬﻧﺎ ﻣﻘﺪﻣﺔ ﻓﻲ ﺑﺮﻣﺠﺔ اﻷﻧﻈﻤﺔ‪ ٣٢‬ﺑﺖ ‪ ،‬وﺑﻘﯿﺖ ﺑﻌﺾ اﻟﻤﺴﺠﻼت ﻟﻠﺘﺤﻜﻢ و ﺑﻌﺾ اﻟﺠﺪاول‬

‫اﻟﺨﺎﺻﺔ ﺑﺎﻟﺬاﻛﺮة وﺻﻔﺤﺎت اﻟﺬاﻛﺮة ‪ ،‬وﺑﻘﻲ أﻫﻢ ﺟﺰء وﻫﻲ اﻷﺳﺎﻟﯿﺐ اﻟﺠﺪﯾﺪة ﻓﻲ ﺑﺮﻣﺠﺔ أﻧﻈﻤﺔ ‪ ٣٢‬ﺑﺖ‬

‫ﺑﺈذن اﷲ ﺗﻜﻮن ﻫﺬة اﻟﻤﻮاﺿﯿﻊ اﻟﺠﺰء اﻟﺜﺎﻧﻲ ﻟﺒﺮﻣﺠﺔ أﻧﻈﻤﺔ ‪ ٣٢‬ﺑﺖ ‪.‬‬

‫وﺑﺎﻟﺘﻮﻓﯿﻖ‪,,,,‬‬

‫‪JAAS - 2004‬‬

‫‪+971 50 7110994 @ SMS .com‬‬

You might also like