You are on page 1of 8

‫‪ 1.

1‬ﺗﻌﻠﻢ اﻷﺳﻤﺒﻠﻲ ﺑﺎﻟﻠﻐﻪ اﻟﻌﺮﺑﯿﻪ ‪ -‬اﻟﺪﺮ ﺳ‬


‫اﻟﺮﺋﯿﺴﺔ | اﻟﺪﺮ ﺳ اﻟﺘﺎﻟﻲ | ﻣﻨﺘﺪى اﻷﺳﻤﺒﻠﻲ | اﻟﻌﻮدة اﻟﻰ اﻟﻮﺣﺪة اﻷوﻟﻰ‬

‫| آﺧﺮ ﺗﺤﺪﻳﺚ ‪ | 2001/7/19 :‬ﻋﺪد اﻟﺰوار‬

‫ﻣﺎھﻲ اﻷﺳﻤﺒﻠﻲ ‪:‬‬


‫ﻓﻲ ﻗﺪﻳﻢ اﻟﺰﻣﺎن أﻳﺎم ﺑﺪاﻳﺎت اﻟﻜﻤﺒﯿﻮﺗﺮ ﻛﺎﻧﺖ ﺑﺮﻣﺠﺔ اﻟﻜﻤﺒﯿﻮﺗﺮ ﺗﺘﻢ ﺑﻮاﺳﻄﺔ ﻟﻐﺔ اﻷﻟﻪ‬
‫‪ Machine Language‬أﺧﺘﺼﺎرًا ‪ ) ML‬ﻟﻐﺔ اﻵﻟﻪ ھﻲ اﻟﻠﻐﻪ اﻟﺘﻲ ﺗﻔﮫﻤﮫﺎ اﻵﻟﻪ ﻣﺒﺎﺷﺮة‬
‫دﻮ ﻧ اﻟﺤﺎﺟﺔ اﻟﻰ ﺗﻔﺴﯿﺮ ﻮھﻲ ﺗﺨﺰن ﺑﺼﻮرة ﺛﻨﺎﺋﺒﺔ ] ﺗﺮﻛﯿﺒﺔ ﻣﻦ اﻷﺻﻔﺎر واﻟﻮﺣﺎﻳﺪ[ ﻓﻲ‬
‫اﻟﺬاﻛﺮة ﻋﻠﻰ ﺷﻜﻞ ﺗﻌﻠﯿﻤﺎت ووﺳﺎﺋﻂ ﺗﺄﺧﺬ ﻛﻞ واﺣﺪ ﻣﻨﮫﺎ ﻋﺎدة ﻣﻘﺪار ‪8‬ﺑﺖ=ا ﺑﺎﻳﺖ (‬
‫وﻛﺎن ھﺬا اﻟﻨﻮع ﻣﻦ اﻟﺒﺮﻣﺠﺔ ﺻﻌﺐ ﺟﺪًا ﻋﻨﺪھﺎ ﻃﻮر اﻟﻤﺒﺮﻣﺠﻮن أﻮ ﻟ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻮھﺬه‬
‫اﻟﻠﻐﻪ ﻓﻜﺮﺗﮫﺎ ﺑﺴﯿﻄﺔ ﺟﺪًا ﺣﯿﺚ أﻧﻪ ﺑﺪل ﺄ ﻧ ﺗﻜﺘﺐ رﻣﻮز اﻵﻟﻪ ﻳﺘﻢ ﻛﺘﺎﺑﺔ ﻛﻠﻤﺎت ﻣﺨﺘﺼﺮه‬
‫ﺗﺪل ﻋﻠﻰ ﻧﻮع اﻟﻌﻤﻠﯿﻪ ﻣﺜﺎل ) ‪ ( MOV,ADD,CMP‬ﺛﻢ ﺑﺒﺮﻧﺎﻣﺞ ﺑﺴﯿﻂ ﻳﺘﻢ ﺗﺤﻮﻳﻞ ھﺬه‬
‫اﻟﺸﻔﺮة اﻟﻰ ﻟﻐﺔ اﻵﻟﻪ ﺑﺄﺳﺘﺨﺪﺎ ﻣ ﺗﺨﻄﯿﻂ واﺣﺪ‪-‬اﻟﻰ‪-‬واﺣﺪ ﺄ ﻳ ﺄ ﻧ ﻛﻞ ﺳﻄﺮ أو ﻋﺒﺎرة ﻓﻲ‬
‫اﻷﺳﻤﺒﻠﻲ ﺗﺤﻮل اﻟﻰ ﺗﻌﻠﯿﻤﺔ واﺣﺪة ﻣﻘﺎﺑﻠﻪ ﻓﻲ ﻟﻐﺔ اﻵﻟﻪ )ﻣﺜﺎل ﺑﺪل ﻛﺘﺎﺑﺔ‬
‫‪ 011000000000101‬ﻳﺘﻢ ﻛﺘﺎﺑﺔ ‪ ( mov al,5‬ﻳﻌﺮف اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﻳﻘﻮم ﺑﻌﻤﻠﯿﺔ اﻟﺘﺤﻮﻳﻞ‬
‫ﺑﺎﻷﺳﻤﺒﻠﺮ ‪ ، Assembler‬ﻋﻠﻤًﺎ ﺑﺄن ھﻨﺎك ﻋﺪة أﻧﻮﺎﻋ ﻣﻦ اﻷﺳﻤﺒﻠﺮ ﻛﻞ ﻧﻮع ﻳﺨﺘﺺ‬
‫ﺑﺘﻘﻨﯿﺔ ﻣﻌﯿﻨﺔ وﺑﻌﺎﺋﻠﺔ ﻣﻌﯿﻨﻪ ﻣﻦ اﻟﻤﻌﺎﻟﺠﺎت‬
‫وﻧﺤﻦ ھﻨﺎ ﺑﺼﺪد ﺗﻌﻠﻢ اﻟﺒﺮﻣﺠﺔ ﺑﺎﻷﺳﻤﺒﻠﻲ ﻟﻠﻤﻌﺎﻟﺠﺎت اﻟﻤﺒﻨﯿﺔ ﻋﻠﻰ ﺗﻘﻨﯿﺔ ‪IBM-PC‬‬
‫واﻟﻤﻨﺘﺠﺔ ﻣﻦ ﺷﺮﻛﺔ أﻧﺘﻞ ﻮھﻲ اﻟﻌﺎﺋﻠﺔ ‪ 80×86‬وﻳﺮﻣﺰ ﻟﮫﺎ أﺧﺘﺼﺎرًا ‪ X86‬ﻮھﻲ ﺗﻀﻢ ‪:‬‬
‫ﻤﺎﻟﺠﺎتﻻ ‪ 16‬ﺑﺖ و ) ‪/ 80486 / 80386‬‬ ‫) ‪ ( 80286 / 80186 / 8088 / 8086‬ﻟ ﻌ‬
‫‪=80586‬ﺑﻨﺘﻨﯿﻮم‪=80686 / 1‬ﺑﻨﺘﻨﯿﻮم‪=80786 / 2‬ﺑﻨﺘﻨﯿﻮم‪=80886 / 3‬ﺑﻨﺘﻨﯿﻮم‪( 4‬‬
‫ﻤﻟﻌﺎﻟﺠﺎتﻻ ‪ 32‬ﺑﺖ وﺳﻮف أﺗﻄﺮق ﻓﻲ درﻮ ﺳ ﻣﺘﻘﺪﻣﺔ اﻟﻰ اﻟﻤﻌﺎﻟﺞ أﺗﻨﯿﻮم ‪ 64‬ﺑﺖ‬
‫اﻟﻤﺒﻨﻲ ﺑﺘﻘﻨﯿﺔ ﺟﺪﻳﺪه ﻛﻠﯿًﺎ ﻟﻤﻦ ﻳﺮﻏﺐ ﺑﻤﻌﺮﻓﺔ ﻣﺴﺒﻘﺔ ﻟﮫﺬا اﻟﻤﻌﺎﻟﺞ اﻟﺠﺪﻳﺪ ﻛﺬﻟﻚ ﺳﻮف‬
‫أﺗﻄﺮق ﺑﺄﺬ ﻧ اﷲ اﻟﻰ اﻟﻜﺮﻮ ﺳ أﺳﻤﺒﻠﺮ ﻮھﻲ ﻣﺠﻤﻮﻋﺔ ﺑﺮاﻣﺞ ﺧﺎﺻﺔ ﻣﺼﻤﻤﻪ ﻟﻠﺘﺤﻮﻳﻞ‬
‫ﻣﻦ ﻟﻐﺔ أﺳﻤﺒﻠﻲ ﻟﻌﺎﺋﻠﺔ ﻣﻌﺎﻟﺠﺎت ﻣﻌﯿﻨﺔ اﻟﻰ ﻋﺎﺋﻠﻪ أﺧﺮى ‪.‬‬

‫ﺗﻌﺮﻳﻒ ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ‬


‫اﻷﺳﻤﺒﻠﻲ ھﻲ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺗﺘﻜﻮن ﻣﻦ ﺳﻠﺴﻠﺔ ﻣﻦ اﻟﺘﻌﻠﯿﻤﺎت اﻟﻤﺘﺘﺎﺑﻌﺔ ﻛﻞ ﺗﻌﻠﯿﻤﺔ ﻓﯿﮫﺎ ﺗﺤﻮل اﻟﻰ ﺗﻌﻠﯿﻤﺔ‬
‫ﻣﻘﺎﺑﻠﺔ ﺑﻠﻐﺔ اﻵﻟﻪ ‪.‬‬

‫ﺗﻌﺮﻳﻒ اﻷﺳﻤﺒﻠﺮ‬
‫اﻷﺳﻤﺒﻠﺮ ھﻮ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺘﺤﻮﻳﻞ اﻟﺘﻌﻠﯿﻤﺎت اﻟﻤﻜﺘﻮﺑﺔ ﺑﻸﺳﻤﺒﻠﻲ اﻟﻰ ﻟﻐﺔ اﻵﻟﻪ ‪.‬‬

‫ﻟﻤﺎذا أرﻳﺪ أﺳﺘﺨﺪﺎ ﻣ اﻷﺳﻤﺒﻠﻲ ‪:‬‬


‫ﺑﺘﻌﻠﻤﻚ ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ ﻓﺄﻧﻚ ﺗﻜﺸﻒ اﻟﻨﻘﺎب ﻋﻦ اﻷﺳﺮار اﻟﻤﺨﺘﻔﯿﻪ وراء اﻟﻜﻤﺒﯿﻮﺗﺮ وﺗﺼﺒﺢ‬
‫ﻗﺎدرًا ﻋﻠﻰ اﻟﻔﮫﻢ ﺗﻤﺎﻣًﺎ ﻛﯿﻒ ﻳﻌﻤﻞ اﻟﻤﻌﺎﻟﺞ وﻛﯿﻒ ﻳﻌﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ وﺑﺬﻟﻚ ﺗﺰﻳﺪ ﺧﺒﺮﺗﻚ‬
‫ﻛﻤﺒﺮﻣﺞ وﺑﺎﻟﻄﺒﻊ ﻓﺄن اﻷﺳﻤﺒﻠﻲ أﻗﻮى ﻣﻦ اﻟﻠﻐﺎت اﻟﻌﺎﻟﯿﺔ اﻟﻤﺴﺘﻮى ﻓﻲ اﻟﺘﻌﺎﻣﻞ ﻣﻊ‬
‫اﻟﻌﺘﺎد وﺗﻌﻄﯿﻚ ﻣﺮوﻧﺔ ﻋﺎﻟﯿﺔ وﻗﺪرة وﺻﻮل اﻟﻰ أﺷﯿﺎء ﻟﻢ ﺗﻜﻦ ﺗﺴﺘﻄﯿﻊ اﻟﻮﺻﻮل اﻟﯿﮫﺎ ﻣﻦ‬
‫ﻗﺒﻞ ‪ ،‬ﻛﺬﻟﻚ ھﻨﺎك ﻧﻮﻋﯿﺎت ﻣﻦ اﻟﺒﺮاﻣﺞ ﻻﻳﻤﻜﻦ اﻻ ﺑﺮﻣﺠﺘﮫﺎ ﺑﺎﻷﺳﻤﺒﻠﻲ ﻣﺜﻞ‬
‫اﻟﺪراﻳﻔﺎت)ﺳﻮاﻗﺎت( اﻷﺟﮫﺰه ‪ ،‬ﻛﺬﻟﻚ ﻓﺄن اﻷﺳﻤﺒﻠﻲ ﻳﻌﻄﯿﻂ ﺑﺮاﻣﺞ ﺳﺮﻳﻌﺔ ﺟﺪًا ‪ ،‬وﺑﺎﻟﻄﺒﻊ‬
‫ﻓﺄن ﺑﻨﺎء ﺑﺮﻧﺎﻣﺞ ﻣﺘﻄﻮر ﺑﺎﻷﺳﻤﺒﻠﻲ أﺷﺒﻪ ﺑﺤﻔﺮ ﺣﻔﺮة ﺑﻮاﺳﻄﺔ اﻟﻤﻠﻌﻘﻪ ﻓﺎﻟﺒﺮﻏﻢ أﻧﻚ ﺗﺤﻔﺮ‬
‫اﻻ أ ﻧﻚ أ ﻧﺘ ﺎﺟﯿ ﺘﻚ ﻗﻠﯿ ﻠﻪوﻟﻜﻦ ﻣﻦ اﻟﻤﺤﺒﺬ ﺟﺪًا ﺑﺮﻣﺠﺔ ﺑﻌﺾ اﻟﺪوﻻ و اﻷﺣ ﺰ اء ﻣﻦ اﻟﺒﺮ اﻣﺞ‬
‫ﺑﺎﻷﺳﻤﺒﻠﻲ وﺑﻘﯿﺔ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻮاﺳﻄﺔ ﻟﻐﺔ ﻋﺎﻟﯿﺔ اﻟﻤﺴﺘﻮى ﻣﺜﻞ اﻟﺴﻲ‪.++‬‬
‫اﻟﻌﻼﻗﺔ ﺑﯿﻦ اﻷﺳﻤﺒﻠﻲ واﻟﻠﻐﺎت اﻷﺧﺮى ‪:‬‬
‫ﺗﻌﺘﺒﺮ ﻛﻞ ﻣﻦ ﻟﻐﺔ اﻵﻟﻪ و اﻷﺳﻤﺒﻠﻲ ﻟﻐﺘﯿﻦ ﻣﻨﺨﻔﻀﺘﻲ اﻟﻤﺴﺘﻮى ‪Low-Level‬‬
‫‪ Language‬أﺧﺘﺼﺎرًا ‪ LLL‬ﻷﻧﮫﺎ ﺗﻜﺘﺐ ﺗﻌﻠﯿﻤﻪ ﺗﻌﻠﯿﻤﻪ ) ﺑﻌﺾ اﻟﻨﺎس ﻳﻌﺘﺒﺮ ﻟﻐﺔ اﻟﺴﻲ ﻟﻐﺔ‬
‫ﻣﻨﺨﻔﻀﺔ اﻟﻤﺴﺘﻮى ‪ ،‬ﻮھﺬا اﻟﻜﻼم أرﺟﺢ اﻟﻰ اﻟﺨﻄﺄ ﻣﻨﻪ اﻟﻰ اﻟﺼﻮﺎ ﺑ ( ﺑﯿﻨﻤﺎ ﺗﻌﺘﺒﺮ ﺑﺎﻗﻲ‬
‫اﻟﻠﻐﺎت ‪ High-Level Language‬أﺧﺘﺼﺎرًا ‪ HLL‬وﻓﻲ ھﺬه اﻟﻠﻐﺎت ﺗﺨﺘﻔﻲ ﺗﻘﻨﯿﺔ ﺗﺨﻄﯿﻂ‬
‫واﺣﺪ‪-‬اﻟﻰ‪-‬واﺣﺪ وﺗﻔﺴﺮ اﻟﺘﻌﻠﯿﻤﺔ اﻟﻮاﺣﺪة اﻟﻰ ﻋﺪد ﻛﺒﯿﺮ ﻣﻦ ﺗﻌﯿﻠﻤﺎت ﻟﻐﺔ اﻵﻟﻪ‬

‫ﻣﺨﻄﻂ ﻳﻮﺿﺢ اﻟﻌﻼﻗﺔ ﺑﯿﻦ ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ وﻟﻐﺔ اﻵﻟﻪ وﻟﻐﺔ ﻋﺎﻟﯿﺔ اﻟﻤﺴﺘﻮى وﻟﻐﺔ اﻵﻟﻪ‬

‫ﺗﻄﺒﯿﻘﺎت ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ ‪:‬‬

‫ﺗﺘﻄﻠﺐ ﻛﺘﺎﺑﺔ اﻟﺒﺮاﻣﺞ ﺑﻠﻐﺔ اﻷﺳﻤﺒﻠﻲ ﻣﻌﺮﻓﺔ ﺑﺎﻟﻌﺘﺎد وﻋﻨﺎﻳﺔ ﺧﺎﺻﺔ ﻣﻊ اﻷھﺘﻤﺎم ﺑﺄﺪ ﻗ‬
‫وأﻗﻞ اﻟﺘﻔﺎﺻﯿﻞ ‪ ،‬ﻓﻲ أﻳﺎم اﻟﺒﺮﻣﺠﺔ اﻟﻘﺪﻳﻤﺔ ﻛﺎن اﻟﻤﺒﺮﻣﺠﻮن ﻳﻜﺘﺒﻮن ﺑﺮاﻣﺠﮫﻢ ﺑﻠﻐﺔ‬
‫اﻷﺳﻤﺒﻠﻲ ﻷن ذاﻛﺮة اﻟﺮﺎ ﻣ وﻗﺘﮫﺎ ﻛﺎﻧﺖ ﺻﻐﯿﺮة )أﻗﻞ ﻣﻦ ‪64‬ﻛﯿﻠﻮﺑﺎﻳﺖ( ﻮھﻢ ﺑﺤﺎﺟﺔ اﻟﻰ‬
‫ﺑﺮاﻣﺞ أﺻﻐﺮ وأﺳﺮع ﺧﺼﻮﺻًﺎ ﺄ ﻧ ﻣﻌﺎﻟﺠﺘﮫﻢ أﻳﻀًﺎ ﻛﺎﻧﺖ ﺑﻄﯿﺌﺔ ‪ ،‬ﻣﻊ ﺗﻄﻮر اﻟﺤﺎﺳﻮب وﺗﻮﺳﻊ‬
‫ﻻ وﺗﻌﻘﯿﺪًا ‪ ،‬ھﺬا اﻟﺘﻌﻘﯿﺪ أﺪى‬
‫ﺳﻌﺔ ذاﻛﺮة اﻟﺮﺎ ﻣ وزﻳﺎدة ﺳﺮﻋﺘﻪ أﺻﺒﺤﺖ اﻟﺒﺮاﻣﺞ أﻛﺜﺮ ﻃﻮ ً‬
‫اﻟﻰ أﺳﺘﺨﺪﺎ ﻣ اﻟﻠﻐﺎت اﻟﺒﺮﻣﺠﯿﺔ ﻋﺎﻟﯿﺔ اﻟﻤﺴﺘﻮى ‪ HLL‬ﻣﺜﻞ اﻟﺴﻲ واﻟﻜﻮﺑﻮل واﻟﺒﯿﺴﻚ‬
‫واﻟﺒﺎﺳﻜﺎل واﻟﻔﻮرﺗﺮن ‪ ،‬ﻣﺮة أﺧﺮى ﺗﻄﻮر اﻟﺤﺎﺳﻮب ﻓﺄﺪى اﻟﻰ أﺳﺘﺨﺪﺎ ﻣ اﻟﻠﻐﺎت اﻟﻌﻠﯿﺎ‬
‫اﻟﻤﻮﺟﮫﺔ اﻟﮫﺪف ‪ OOP‬ﻣﺜﻞ اﻟﺴﻲ‪ ++‬واﻟﺠﺎﻓﺎ واﻟﺘﻲ ﻣﻜﻨﺖ ﻣﻦ ﻛﺘﺎﺑﺔ ﺑﺮاﻣﺞ ﻗﻮاﻣﮫﺎ آﻻف‬
‫اﻷﺳﻄﺮ واﻟﺘﻌﻠﯿﻤﺎت اﻟﻤﻌﻘﺪه واﻟﻤﺘﺪاﺧﻠﻪ ‪.‬‬

‫ﻣﻦ اﻟﺼﻌﺐ ﺄ ﻧ ﺗﻼﻗﻲ ﺑﺮاﻣﺞ ﻛﺒﯿﺮة ﻣﻜﺘﻮﺑﺔ ﻛﺎﻣﻠﺔ ﺑﻠﻐﺔ اﻷﺳﻤﺒﻠﻲ ﻷن ﻛﺘﺎﺑﺘﮫﺎ ﺻﻌﺐ‬
‫واﻷھﻢ ﻣﻦ ذﻟﻚ ﺗﻄﻮﻳﺮھﺎ وﺻﯿﺎﻧﺘﮫﺎ أﺻﻌﺐ ﺑﻜﺜﯿﺮ ‪ ،‬ﺑﺪل ذﻟﻚ ﻳﻘﻮم اﻟﻤﺒﺮﻣﺠﯿﻦ ﺑﺒﺮﻣﺠﺔ‬
‫ﻣﻘﺎﻃﻊ ﻣﺒﺮﻣﺠﺔ ﺑﺮﻣﺠﺔ ﻣﺜﻠﻰ ﺑﻠﻐﺔ اﻷﺳﻤﺒﻠﻲ ﻷﺳﺘﺨﺪﻣﮫﺎ ﻓﻲ ﺗﻨﻔﯿﺬ أﺳﺮع أو اﻟﻮﺻﻮل‬
‫اﻟﻰ اﻟﻌﺘﺎد ﻋﻦ ﻃﺮﻳﻘﮫﺎ وﺑﺎﻗﻲ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻮاﺳﻄﺔ ﻟﻐﺔ ﻋﺎﻟﯿﺔ اﻟﻤﺴﺘﻮى ‪.‬‬

‫ﻳﻔﺾ اﻟﻤﺒﺮﻣﺠﯿﻦ ﻟﻐﺔ اﻟﺴﻲ‪ ++‬ﻛﻠﻐﺔ ﻗﯿﺎﺳﯿﺔ ﻟﻠﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ ﻋﻠﯿﺎ ﻷن ﻟﮫﺎ ﻗﺪرة ﻋﺎﻟﯿﺔ‬
‫وﻗﻮﻳﺔ ﺟﺪًا وﻣﻮﺟﮫﺔ اﻟﮫﺪف ﻣﻊ اﻟﻘﺪرة ﻋﻠﻰ ﻛﺘﺎﺑﺔ ﻣﻘﺎﻃﻊ اﻟﺴﻲ ﻓﯿﮫﺎ ﻮھﻲ ﻟﻐﺔ أﻗﻞ‬
‫أﻧﺨﻔﺎﺿًﺎ وأﻛﺜﺮ ﻣﺮوﻧﺔ ﻣﻊ أﺳﺘﺨﺪﺎ ﻣ اﻷﺳﻤﺒﻠﻲ ﻛﻌﻨﺼﺮ ﻣﮫﻢ ﻓﻲ اﻟﻮﺻﻮل اﻟﻰ اﻟﻌﺘﺎد‬
‫وﺑﺮﻣﺠﺔ اﻟﺠﺰﺋﯿﺎت اﻟﻤﺤﺘﺎﺟﺔ ﻟﻠﺴﺮﻋﺔ ‪.‬‬

‫ﻻ ﻳﺴﺘﺨﺪم اﻟﻤﺒﺮﻣﺠﻮن ﺷﻔﺮة اﻷﺳﻤﺒﻠﻲ وﺳﻂ ﺷﻔﺮة ﻟﻐﺔ ﻋﺎﻟﯿﺔ اﻟﻤﺴﺘﻮى ﻋﺎدة وأﻧﻤﺎ‬
‫ﻳﺴﺘﺨﺪﻣﻮﻧﮫﺎ ﻋﻦ ﻃﺮﻳﻖ واﺟﻪ ﻋﻠﻰ ﺷﻜﻞ داﻟﺔ أو ﻛﺎﺋﻦ وﺗﺤﺘﻮي ھﺬه اﻟﺪاﻟﺔ أو ھﺬا اﻟﻜﺎﺋﻦ‬
‫ﻋﻠﻰ ﺷﻔﺮة اﻷﺳﻤﺒﻠﻲ اﻟﻤﻄﻠﻮﺑﺔ ‪ ،‬وﻗﺪ ﺗﺴﺘﺨﺪم روﺗﯿﻨًﺎ ﻓﺮﻋﯿًﺎ أو داﻟﺔ ﻓﻲ ﻟﻐﺔ ﻋﺎﻟﯿﺔ‬
‫اﻟﻤﺴﺘﻮى وأﻧﺖ ﻻﺗﻌﻠﻢ ﺑﺄﻧﻚ ﺑﺎﺳﺘﺪﻋﺎء ھﺬه اﻟﺪاﻟﺔ أو اﻟﺮوﺗﯿﻦ اﻟﻔﺮﻋﻲ ﻗﺪ أﺳﺘﺪﻋﯿﺖ‬
‫ﺷﻔﺮة ﻣﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ اﻷﺳﻤﺒﻠﻲ ‪.‬‬

‫ﻟﻐﺔ اﻵﻟﻪ ‪:‬‬

‫ﻟﻐﺔ اﻵﻟﻪ ﻛﻤﺎ ذﻛﺮﻧﺎ ﺳﺎﺑﻘًﺎ ھﻲ اﻟﻠﻐﺔ اﻟﺘﻲ ﺗﺴﻄﯿﻊ اﻵﻟﻪ أو اﻟﻤﻌﺎﻟﺞ اﻟﺘﻌﺎﻣﻞ ﻣﻌﮫﺎ ﻣﺒﺎﺷﺮة‬
‫‪ ،‬ﻓﻲ اﻟﻌﺎﺋﻠﺔ ‪ X86‬ﻛﻞ ﻣﻌﺎﻟﺞ ﻳﺤﺘﻮي ﻳﺴﺘﻄﯿﻊ ﺗﻨﻔﯿﺬ ﺗﻌﻠﯿﻤﺎت اﻟﻤﻌﺎﻟﺞ اﻟﺬي ﻗﺒﻠﻪ وﻳﻤﻠﻚ‬
‫ﻣﺠﻤﻮﻋﺔ ﺗﻌﻠﯿﻤﺎت ﻣﻮﺳﻌﺔ وأ ﺿﺎﻓﯿﺔ ﻻ ﺗﺴﺘﻄﯿﻊ اﻟﻤﻌﺎﻟﺠﺎت اﻟﺘﻲ ﻗﺒﻠﻪ ﺗﻨﻔﯿﺬھﺎ وأﻣﺎ‬
‫اﻟﻤﻌﺎﻟﺞ اﻟﺬي ﻳﺄﺗﻲ ﺑﻌﺪ ھﺬا اﻟﻤﻌﺎﻟﺞ ﻓﺄﻧﻪ ﻳﺪﻋﻢ اﻟﺘﻌﻠﯿﻤﺎت اﻟﻤﻮﺳﻌﺔ ﻟﻠﻤﻌﺎﻟﺞ اﻟﺬي ﻗﺒﻠﻪ‬
‫ﺑﯿﻨﻤﺎ ﻳﺤﺘﻮي ھﻮ أﻳﻀًﺎ ﻋﻠﻰ ﺗﻌﻠﯿﻤﺎت ﺟﺪﻳﺪة وﻣﻮﺳﻌﺔ ‪ ،‬ﺑﺄﺧﺘﺼﺎر اذا ﺻﻤﻤﺖ ﺑﺮﻧﺎﻣﺞ‬
‫ﻟﻤﻌﺎﻟﺢ ﻣﺎ ﻓﺄن اﻟﻤﻌﺎﻟﺠﺎت ﻣﺎﻗﺒﻞ ھﺬا اﻟﻤﻌﺎﻟﺢ ﻟﻦ ﺗﺴﺘﻄﯿﻊ ﺗﺸﻐﯿﻠﻪ ﺑﯿﻨﻤﺎ اﻟﻤﻌﺎﻟﺞ ﻧﻔﺴﺔ‬
‫واﻟﻤﻌﺎﻟﺠﺎت اﻟﺘﻲ ﺑﻌﺪه )ﻣﻦ ﻧﻔﺲ اﻟﻌﺎﺋﻠﺔ( ﺗﺴﺘﻄﯿﻊ ﺗﺸﻐﯿﻞ اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫ﻟﻔﺪ ﺣﺎﻓﻈﺖ ﺷﺮﻛﺔ أﻧﺘﻞ ﻋﻠﻰ اﻟﺘﻮاﻓﻘﯿﺔ ﻓﻲ اﻟﻌﺎﺋﻠﺔ ‪ X86‬أﺑﺘﺪاء ﻣﻦ اﻟﻤﻌﺎﻟﺞ ‪ 8086‬وﺻﻮ ً‬
‫ﻻ‬
‫اﻟﻰ ﺑﺎﻧﺘﻨﯿﻮم ‪ 80886=4‬وﻟﻜﻦ اﻟﺤﻔﺎظ ﻋﻠﻰ اﻟﺘﻮاﻓﻘﯿﺔ ﻳﻔﺮض ﻗﯿﻮد ﻋﻠﻰ ﺗﺼﻤﯿﻢ اﻟﻤﻌﺎﻟﺞ‬
‫وأﺳﺘﺨﺪﺎ ﻣ ﺗﻘﻨﯿﺎت ﻗﺪﻳﻤﺔ ‪ ،‬وﻣﺆﺧﺮًا ﻗﺮﺮ ﺗ ﺷﺮﻛﺔ أﻧﺘﻞ اﻳﻘﺎف ﻋﺎﺋﻠﺔ اﻟﻤﻌﺎﻟﺢ ‪ X86‬ﻋﻨﺪ‬
‫ﺑﺎﻧﺘﻨﯿﻮم‪ 4‬وﻗﺎﻣﺖ ﺑﺄﻧﺸﺎء ﻣﻌﺎﻟﺞ ﺟﺪﻳﺪ )ﻏﯿﺮ ﻣﺘﻮاﻓﻖ ﻣﻊ اﻟﻌﺎﺋﻠﺔ ‪ ( X86‬ﻣﺒﻨﻲ ﻋﻠﻰ ﺗﻘﻨﯿﺔ‬
‫ﻻ‪ 64‬ﺑﺖ ﻮھﻮ اﻟﻤﻌﺎﻟﺞ اﺗﺎﻧﯿﻮم اﻟﺠﺪﻳﺪ ‪.‬‬

‫ﻣﺜﺎل ﻋﻠﻰ ﻟﻐﺔ اﻵﻟﻪ ‪:‬‬

‫اﻟﺘﻌﻠﯿﻤﯿﺔ ‪ 1011000000000101‬ھﻲ ﺗﻌﻠﯿﻤﺔ ﺑﻠﻐﺔ اﻵﻟﻪ وﻣﻌﻨﺎھﺎ أﻧﻘﻞ اﻟﺮﻗﻢ ‪ 5‬اﻟﻰ‬


‫اﻟﻤﺴﺠﻞ ‪ ah‬ﻳﻘﺎﺑﻠﮫﺎ ﺑﻠﻐﺔ اﻷﺳﻤﺒﻠﻲ ‪ mov ah,5‬ﻻ ‪ 8‬ﺑﺖ اﻷوﻟﻰ ﻣﻦ اﻟﺘﻌﻠﯿﻤﺔ ﺗﺸﻜﻞ‬
‫ﺷﻔﺮة اﻟﺘﻌﻠﯿﻤﺔ ‪ OP-code=operation code‬ﻮھﻲ ﺗﻌﻨﻲ ﻧﻘﻞ ﻗﯿﻤﺔ ﺑﻄﻮل ‪ 8‬ﺑﺖ اﻟﻰ‬
‫اﻟﻤﺴﺠﻞ ‪، AL‬ﻟاﺠﺰء اﻟﺜﺎﻧﻲ ﻣﻦﻻ ‪ 16‬ﺖﺑﻻ ‪8‬ﺑﺖ اﻷﺧﺮى ﺗﺸﻜﻞ اﻟﺮﻗﻢ ‪ 5‬ﺛﻨﺎﺋﯿًﺎ‬

‫إﺿﻐﻂ ھﻨﺎ ﻟﻸﻧﺘﻘﺎل اﻟﻰ اﻟﺪﺮ ﺳ اﻟﺘﺎﻟﻲ‬

‫إﻋﺪاد ‪ :‬أﺣﻤﺪ اﻟﺰﻳﺎﻧﻲ‬


‫ﺗﻌﻠﻢ اﻷﺳﻤﺒﻠﻲ ﺑﺎﻟﻠﻐﻪ اﻟﻌﺮﺑﯿﻪ ‪ -‬اﻟﺪﺮ ﺳ ‪1.2‬‬
‫اﻟﺮﺋﯿﺴﺔ | اﻟﺪﺮ ﺳ اﻟﺘﺎﻟﻲ | ﻣﻨﺘﺪى اﻷﺳﻤﺒﻠﻲ | اﻟﻌﻮدة اﻟﻰ اﻟﻮﺣﺪة اﻷوﻟﻰ‬

‫| آﺧﺮ ﺗﺤﺪﻳﺚ ‪ | 2001/7/19 :‬ﻋﺪد اﻟﺰوار‬

‫ﻗﺪ ﺗﺘﺴﺎﺋﻞ ﻣﺎ ﻋﻼﻗﺔ ﺗﻤﺜﯿﻞ اﻟﺒﯿﺎﻧﺎت واﻟﻌﺪ اﻟﺜﻨﺎﺋﻲ ﺑﺎﻷﺳﻤﺒﻠﻲ ؟ ﺣﺴﻨًﺎ ﻛﻤﺎ وﺿﺤﺖ ﻣﻦ‬
‫ﻗﺒﻞ ﻓﺄن اﻷﺳﻤﺒﻠﻲ ھﻲ ﻟﻐﺔ ﻗﺮﻳﺒﺔ ﺟﺪًا ﻣﻦ ﻟﻐﺔ اﻵﻟﻪ ﻮھﻲ ﻟﻐﻪ ﻣﻨﺨﻔﻀﺔ اﻟﻤﺴﺘﻮى‬
‫ﺗﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻌﺘﺎد واﻟﻤﻌﺎﻟﺢ ﺑﺼﻮرة ﻣﺒﺎﺷﺮة وﻟﻜﻲ ﻧﺤﻘﻖ ﻓﮫﻤًﺎ أوﺳﻊ ﻟﮫﺬه اﻟﻠﻐﻪ ﻳﺠﺐ ﺄ ﻧ‬
‫ﻧﻔﮫﻢ ﺑﻌﺾ اﻷﺷﯿﺎء اﻟﻤﮫﻤﺔ ﺟﺪًا ﻓﻲ ﺑﻨﯿﺔ اﻟﻤﻌﺎﻟﺞ ‪.‬‬

‫اﻟﻌﺪ اﻟﺜﻨﺎﺋﻲ ‪:‬‬


‫ﻳﺘﻢ ﺗﻤﺜﯿﻞ اﻟﺸﻔﺮﺎ ﺗ واﻟﺒﯿﺎﻧﺎت ﻓﻲ ذاﻛﺮة اﻟﻜﻤﺒﯿﻮﺗﺮ ﻛﺘﻮاﻟﯿﻒ ﻣﻦ اﻟﺸﺤﻨﺎت اﻟﻜﮫﺮﺑﺎﺋﯿﺔ ﺗﺄﺧﺬ‬
‫ﻗﯿﻤﺘﯿﻦ اﻷوﻟﻰ ﻮھﻲ وﺟﻮد اﻟﺸﺤﻨﺔ وﻳﺮﻣﺰ ﻟﮫﺎ ب ‪ ON‬أو ﺻﺤﯿﺢ ‪ TRUE‬أو ‘‪ ’1‬واﻷﺧﺮى‬
‫ﻮھﻲ ﻏﯿﺎب اﻟﺸﺤﻨﻪ وﻳﺮﻛﺰ ﻟﮫﺎ ب ‪ OFF‬أو ﺧﻄﺄ ‪ FALSE‬أو ‘‪ ، ’0‬ووﺟﻮد اﻟﺸﺤﻨﺔ ﻳﻜﻮن ﻋﺎدة‬
‫ﺑﯿﻦ ‪ 4.5‬اﻟﻰ ‪ 5.5‬ﻓﻮﻟﺖ ) اﻟﻤﻌﺎﻟﺠﺎت اﻟﺤﺪﻳﺜﻪ ﺑﯿﻦ ‪ 2.5‬اﻟﻰ ‪ 3.5‬ﻓﻮﻟﺖ ( وﻏﯿﺎب اﻟﺸﺤﻨﺔ‬
‫ﻳﻜﻮن ﺑﯿﻦ ‪ 0.5+‬ﻓﻮﻟﺖ و ‪0.5-‬ﻓﻮﻟﺖ ‪.‬‬

‫وﺣﺪﺎ ﺗ اﻟﺬاﻛﺮه اﻷﺳﺎﺳﯿﻪ ﻓﻲ اﻟﺬاﻛﺮه واﻟﻮﺣﺪﺎ ﺗ اﻟﺘﻲ ﺳﻨﺘﻌﺎﻣﻞ ﻣﻌﮫﺎ ﻛﺜﯿﺮًا ھﻲ ‪:‬‬

‫ﻣﺎﻳﻌﺎدﻟﮫﺎ‬ ‫اﻷﺣﺘﻤﺎﻻت‬ ‫أﺳﻢ اﻟﻮﺣﺪة‬


‫‪1‬ﺑﺖ‬ ‫أﺣﺘﻤﺎﻟﯿﻦ ‪ 0‬و ‪1‬‬ ‫‪Bit‬‬ ‫اﻟﺒﺖ‬
‫‪8‬ﺑﺖ‬ ‫‪ 256‬أﺣﺘﻤﺎل‬ ‫‪Byte‬‬ ‫اﻟﺒﺎﻳﺖ‬
‫‪16‬ﺑﺖ=‪2‬ﺑﺎﻳﺖ‬ ‫‪ 65536‬أﺣﺘﻤﺎل‬ ‫‪Word‬‬ ‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻜﻠﻤﺔ‬
‫‪32‬ﺑﺖ=‪4‬ﺑﺎﻳﺖ=‪2‬ﻛﻠﻤﺔ‬ ‫‪ 4,294,967,296‬أﺣﺘﻤﺎل‬ ‫‪DoubleWord=Dword‬‬
‫اﻟﻤﻀﺎﻋﻔﺔ‬
‫‪64‬ﺑﺖ=‪8‬ﺑﺎﻳﺖ=‪4‬ﻛﻠﻤﺎت=‪2‬ﻛﻠﻤﺔ‬ ‫‪18,446,744,073,709,551,616‬‬ ‫اﻟﻜﻠﻤﺔ‬
‫‪Quafword=Qword‬‬
‫ﻣﻀﺎﻋﻔﺔ‬ ‫أﺣﺘﻤﺎل‬ ‫اﻟﺮاﺑﻌﯿﺔ‬

‫ﺑﺎﻟﻄﺒﻊ ھﺬه اﻟﻮﺣﺪﺎ ﺗ اﻷﺳﺎﺳﯿﺔ واﻟﺼﻐﯿﺮه أﻣﺎ ﻣﻀﺎﻋﻔﺎﺗﮫﺎ ﻓﮫﻲ ‪:‬‬

‫ﻣﺎﻳﻌﺎدﻟﮫﺎ‬ ‫اﻟﺮﻣﺰ‬ ‫اﻟﻮﺣﺪه‬


‫‪ 1024‬ﺑﺎﻳﺖ‬ ‫‪KB‬‬ ‫اﻟﻜﯿﻠﻮﺑﺎﻳﺖ‬
‫‪ 1024‬ﻛﯿﻠﻮﺑﺎﻳﺖ‬ ‫‪MB‬‬ ‫اﻟﻤﯿﺠﺎﺑﺎﻳﺖ‬
‫‪ 1024‬ﻣﯿﺠﺎﺑﺎﻳﺖ‬ ‫‪GB‬‬ ‫اﻟﺠﯿﺠﺎﺑﺎﻳﺖ‬
‫‪ 1024‬ﺟﯿﺠﺎﺑﺎﻳﺖ‬ ‫‪TB‬‬ ‫اﻟﺘﯿﺮاﺑﺎﻳﺖ‬
‫‪ 1024‬ﺗﯿﺮاﺑﺎﻳﺖ‬ ‫‪PB‬‬ ‫اﻟﺒﯿﺘﺎﺑﺎﻳﺖ‬
‫‪ 1024‬ﺑﯿﺘﺎﺑﺎﻳﺖ‬ ‫‪EB‬‬ ‫اﻷﻛﺴﺎﺑﺎﻳﺖ‬
‫‪ 1024‬أﻛﺴﺎﺑﺎﻳﺖ‬ ‫‪ZB‬‬ ‫اﻟﺰﻳﺘﺎﺑﺎﻳﺖ‬
‫‪ 1024‬ﻳﻮﺗﺎﺑﺎﻳﺖ‬ ‫‪YB‬‬ ‫اﻟﯿﻮﺗﺎﺑﺎﻳﺖ‬

‫ﺗﺨﺰﻳﻦ اﻷرﻗﺎم ﺑﺪﻮ ﻧ أﺷﺎرة ﻳﺄﺧﺬ اﻟﻨﻄﺎق اﻵﺗﻲ ﻟﻜﻞ وﺣﺪه ﻣﻦ اﻟﻮﺣﺪﺎ ﺗ اﻷﺳﺎﺳﯿﺔ‬
‫ﺑﺄﺳﺘﺨﺪﺎ ﻣ ﻃﺮﻳﻘﺔ ﺑﺪﻮ ﻧ اﻷﺷﺎرة ‪unsigned:‬‬

‫اﻟﻤﺠﺎل‬ ‫أﺳﻢ‬
‫اﻟ ﻰ‬ ‫ﻣﻦ‬ ‫اﻟﻮﺣﺪة‬
‫‪256‬‬ ‫‪0‬‬ ‫اﻟﺒﺎﻳﺖ‬
‫‪65536‬‬ ‫‪0‬‬ ‫اﻟﻜﻠﻤﺔ‬
‫‪4,294,967,296‬‬ ‫‪0‬‬ ‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻤﻀﺎﻋﻔﺔ‬
‫اﻟﻜﻠﻤﺔ‬
‫‪18,446,744,073,709,551,616‬‬ ‫‪0‬‬
‫اﻟﺮﺑﺎﻋﯿﺔ‬

‫اﻷﺳﻜﻲ ﻛﻮد ‪:ASCII‬‬

‫ﻳﺘﻢ ﻓﻲ اﻟﺤﺎﺳﻮب وﺑﻘﯿﺔ ﺗﻮﺣﯿﺪ أﺳﺘﺨﺪﺎ ﻣ اﻟﺮﻣﻮز أﺳﺘﺨﺪﺎ ﻣ ﺷﻔﺮة اﻵﺳﻜﻲ ﻛﻮد )ﺣﺎﻟﯿﺎً‬
‫ﻌﻳﻤﻞ ﻋﻠﻰ ﺗﺒﻨﻲ ﺷﻔﺮةﻻ ‪ unicode‬ﻮھﻲ ﺗﺴﻤﺢ ﺑﺘﻌﺪد اﻟﻠﻐﺎت ﻓﻲ ﻣﺴﺘﻨﺪ واﺣﺪ ﺣﯿﺚ‬
‫ﻳﺘﻢ ﺗﻤﺜﯿﻞ ﻛﻞ ﺣﺮف ﺑﺄﺳﺘﺨﺪﺎ ﻣ ﻛﻠﻤﺔ واﺣﺪه=‪2‬ﺑﺎﻳﺖ( ﻛﻠﻤﺔ ‪ ASCII‬ھﻲ أﺧﺘﺼﺎر ل ‪:‬‬
‫‪Interchange Information Code For Standard American National‬‬
‫وﻳﺘﻢ أﺳﺘﺨﺪﺎ ﻣ ھﺬا اﻟﻜﻮد اﻟﻤﻮﺣﺪ ﻟﺘﺴﮫﯿﻞ ﺗﻨﺎﻗﻞ اﻟﺒﯿﺎﻧﺎت وﻳﻤﺜﻞ ﻛﻞ رﻣﺰ ﻓﯿﻪ ﺑﻌﺪد ﺛﻨﺎﺋﻲ‬
‫ﺑﻄﻮل ‪1‬ﺑﺎﻳﺖ=‪8‬ﺑﺖ=‪256‬أﺣﺘﻤﺎل ‪.‬‬

‫ﻃﺮﻳﻘﺔ ﻛﺘﺎﺑﺔ اﻷرﻗﺎم ﻓﻲ اﻷﺳﻤﺒﻠﺮ ‪:‬‬

‫ﻟﻜﺘﺎﺑﺔ ﻋﺪد ﺛﻨﺎﺋﻲ ﻳﻮﺿﻊ ﻓﻲ آﺧﺮ اﻟﺮﻣﺰ )‪ (b‬ﻟﺪﻻﻟﺔ ﻋﻠﻰ أﻧﻪ ﺑﺎﻳﻨﺮي ﻣﺜﺎل ‪:‬‬
‫‪ Binary=11010010B‬أﻣﺎ اﻟﻌﺪد اﻟﻌﺸﺮي ﻓﻼﻳﺤﺘﺎج اﻟﻰ أﺿﺎﻓﺔ وأﻣﺎ اﻟﻌﺪد ﻷﺳﺎس ‪8‬‬
‫ﻓﯿﻜﺘﺐ ﻣﻊ اﻟﻤﺮﻣﺰ )‪ (Q‬ﻓﻲ ﻧﮫﺎﻳﺘﻪ ‪ Octal=1276Q‬أو اﻟﺮﻣﺰ ))‪ O‬ﻓﻲ ﻧﮫﺎﻳﺘﻪ ‪Octal=1276O‬‬
‫أﻣﺎ اﻟﻌﺪد اﻟﺴﺪاﺳﻲ ﻋﺸﺮ ﻓﯿﻜﺘﺐ ﺑﻮﺿﻊ ‪ H‬ﻓﻲ ﻧﮫﺎﻳﺘﻪ ‪ hexadecimal=0AB9CDH‬ﻣﻊ‬
‫ﻣﺮاﻋﺎة وﺿﻊ ‪ 0‬اذا ﻛﺎن اﻟﻌﺪد ﻳﺒﺪأ ﺑﺤﺮف ﻛﻤﺎ اﻟﻤﺜﺎل ‪.‬‬

‫ﻳﺠﺐ ﺄ ﻧ ﺗﻌﺮف اﻟﻔﺮق ﺑﯿﻦ ﺗﺨﺰﻳﻦ اﻟﺮﻗﻢ ﻛﺮﻗﻢ أو ﺗﺨﺰﻳﻨﻪ ﻛﻨﺺ ﻓﺘﺨﺰﻳﻦ اﻟﺮﻗﻢ ‪ 201‬ﻣﺜ ً‬
‫ﻼ‬
‫ﻛﺮﻗﻢ ﺳﺴﯿﺄﺧﺬ ﺑﺎﻳﺖ واﺣﺪ ﻮھﻮ ﺟﺎھﺰ ﻟﻠﻘﯿﺎم ﺑﻌﻤﻠﯿﺎت رﻳﺎﺿﯿﺔ وﻣﻨﻄﻘﯿﻪ ﻋﻠﯿﻪ أﻣﺎ ﺗﺨﺰﻳﻨﻪ‬
‫ﻛﻨﺺ ﻓﺴﯿﺄﺧﺬ ﺛﻼﺛﺔ ﺑﺎﻳﺖ ﻓﻲ اﻟﺒﺎﻳﺖ اﻷﻮ ﻟ ﺳﯿﺨﺰن اﻟﺮﻗﻢ اﻟﺨﺎص ﺑﺎﻷﺳﻜﻲ ﻛﻮد ﻟﻠﺮﻣﺰ '‪'2‬‬
‫وﻛﻤﺎ ﻗﻠﺖ ﻳﺨﺰن ﻛﺮﻗﻢ ﻳﺪل ﻋﻠﻰ اﻟﺮﻣﺰ أﻣﺎ اﻟﺒﺎﻳﺖ اﻟﺜﺎﻧﻲ ﻓﺴﯿﺨﺰن رﻗﻢ اﻵﺳﻜﻲ ﻛﻮد‬
‫ﻟﻠﺮﻣﺰ '‪ '0‬أﻣﺎ اﻟﺒﺎﻳﺖ اﻟﺜﺎﻟﺚ ﻓﯿﺄﺧﺬ اﻟﻘﯿﻤﻪ اﻟﺨﺎﺻﺔ ﺑﺎﻟﺮﻣﺰ '‪ '1‬ﻓﻲ اﻵﺳﻜﻲ ﻛﻮد ﺄ ﻳ ﺄ ﻧ اﻟﺮﻗﻢ‬
‫ﺧﺰن ﺑﻄﺮﻳﻘﺔ "‪ "102‬وﻟﯿﺲ ‪ 102‬ﻮھﺬه اﻟﻄﺮﻳﻘﺔ ﻟﯿﺴﺖ ﺟﺎھﺰ ﻟﻠﺠﻤﻊ أو اﻟﻄﺮح وﻟﻜﻨﮫﺎ‬
‫ﻣﻤﺘﺎز ﻟﻠﻄﺒﺎﻋﻪ ﻋﻠﻰ اﻟﺸﺎﺷﻪ وﻳﻤﻜﻦ ﺗﺤﻮﻳﻞ اﻟﻨﺺ اﻟﻰ رﻗﻢ واﻟﻌﻜﺲ ‪.‬‬
‫اﻷﻋﺪاد ﺬ ﻳ اﻷﺷﺎﺮھ ‪:‬‬
‫ﻳﺘﻢ ﺗﺨﺰﻳﻦ اﻷﻋﺪاد ﺬ ﻳ اﻷﺷﺎﺮھ ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬
‫اﻟﻌﺪد ﻣﻮﺟﺐ أذا ﻛﺎﻧﺖ اﻟﺒﺖ اﻷﺧﯿﺮه ﺻﻔﺮ وﻗﯿﻤﺔ اﻟﺮﻗﻢ ھﻲ ﺑﺎﻗﻲ اﻟﺒﺘﺎت ﺄ ﻳ ﻟﻮ أﺧﺬﻧﺎ رﻗﻤًﺎ‬
‫ﻣﻦ ﺑﺎﻳﺖ واﺣﺪ ﻓﺄن اﻟﺒﺖ رﻗﻢ ‪) 7‬اﻟﺜﺎﻣﻨﻪ ‪ -‬اﻟﺘﺮﻗﯿﻢ ﻳﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ ( ﻳﺠﺐ ﺄ ﻧ ﺗﻜﻮن ﺻﻔﺮًا‬
‫ﻟﯿﻜﻮن اﻟﻌﺪد ﻣﻮﺟﺐ أﻣﺎ اﻟﺒﺘﺎت ﻣﻦ ‪ 0‬اﻟﻰ ‪ ) 6‬اﻟﺴﺒﻌﻪ اﻷوﻟﻰ ( ﻓﺘﺸﻜﻞ ﻗﯿﻤﺔ اﻟﺮﻗﻢ‬
‫أﻣﺎ أذا ﻛﺎن اﻟﻌﺪد ﺳﺎﻟﺐ ﻓﺄن اﻟﺒﺖ اﻷﺧﯿﺮة ﺗﺴﺎﻮ ﻳ واﺣﺪ أﻣﺎ ﻗﯿﻤﺔ اﻟﺮﻗﻢ ﻓﺘﺴﺎﻮ ﻳ ﺳﺎﻟﺐ‬
‫اﻟﻤﻜﻤﻞ اﻟﺜﻨﺎﺋﻲ ﻟﻠﻌﺪد ﺄ ﻳ ﻟﻮ أﺧﺬﻧﺎ رﻗﻢ ﻣﺨﺰن ﻓﻲ واﺣﺪ ﺑﺎﻳﺖ ﻣﺜﺎل = ‪ 11110110‬ﺑﻤﺎ ﺄ ﻧ‬
‫اﻟﺒﺖ اﻟﺴﺎﺑﻌﻪ=‪ 1‬ﻓﺄن اﻟﺮﻗﻢ ﺳﺎﻟﺐ ‪ /‬ﻧﺄﺧﺬ اﻵن اﻟﻤﻜﻤﻞ اﻟﺜﻨﺎﺋﻲ ﻟﻠﻌﺪد ﻮھﻮ ‪/ 00001010‬‬
‫اﻟﻘﯿﻤﺔ ﺗﺴﺎﻮ ﻳ ‪ 00001010-‬ﺄ ﻳ ﺳﺎﻟﺐ ﻋﺸﺮة ‪.‬‬

‫وﺑﺘﺨﺰﻳﻦ اﻟﺮﻗﻢ ﺑﺎﻷﺷﺎرة ﻳﺨﺘﻠﻒ اﻟﻨﻄﺎق اﻟﺬي ﺗﺄﺧﺬ ﻛﻞ وﺣﺪه ‪:‬‬

‫اﻟﻤﺠﺎل‬ ‫أﺳﻢ‬
‫اﻟ ﻰ‬ ‫ﻣﻦ‬ ‫اﻟﻮﺣﺪة‬
‫‪127+‬‬ ‫‪128-‬‬ ‫اﻟﺒﺎﻳﺖ‬
‫‪32,767+‬‬ ‫‪32,768-‬‬ ‫اﻟﻜﻠﻤﺔ‬
‫اﻟﻜﻠﻤﺔ‬
‫‪2,147,483,647+‬‬ ‫‪2,147,483,648-‬‬
‫اﻟﻤﻀﺎﻋﻔﺔ‬
‫اﻟﻜﻠﻤﺔ‬
‫‪9,223,372,036,854,775,807+‬‬ ‫‪9,223,372,036,854,775,808-‬‬
‫اﻟﺮﺑﺎﻋﯿﺔ‬
‫ﺗﻌﻠﻢ اﻷﺳﻤﺒﻠﻲ ﺑﺎﻟﻠﻐﻪ اﻟﻌﺮﺑﯿﻪ ‪ -‬اﻟﺪﺮ ﺳ ‪1.3‬‬
‫اﻟﺮﺋﯿﺴﺔ | أﺳﺌﻠﺔ اﻟﻮﺣﺪة اﻷوﻟﻰ | ﻣﻨﺘﺪى اﻷﺳﻤﺒﻠﻲ | اﻟﻌﻮدة اﻟﻰ اﻟﻮﺣﺪة اﻷوﻟﻰ‬

‫| آﺧﺮ ﺗﺤﺪﻳﺚ ‪ | 2001/7/19 :‬ﻋﺪد اﻟﺰوار‬

‫ﺗﻌﻠﯿﻤﺎت وأواﻣﺮ اﻷﺳﻤﺒﻠﻲ ‪:‬‬


‫ﺗﺘﻜﻮن اﻟﺘﻌﻠﯿﻤﻪ اﻟﻮاﺣﺪة ﻓﻲ اﻷﺳﻤﺒﻠﻲ ﻣﻦ ﺗﻤﺜﯿﻞ ﺑﺴﯿﻂ ﺑﺎﻷﺣﺮف اﻷﻧﺠﻠﯿﺰﻳﻪ ﻳﻘﺎﺑﻠﻪ‬
‫ﻻ ﺟﺰء اﻷﻣﺮ ﻮھﻮ أﻣﺮ ﻳﺪل‬
‫ﺑﺎﻷرﻗﺎم ﺗﻌﻠﯿﻤﺔ ﻟﻐﺔ آﻟﻪ ‪ ،‬ﺗﺘﻜﻮن ﻛﻞ ﺗﻌﻠﯿﻤﺔ ﻣﻦ ﻣﻤﺎﻳﻠﻲ ‪ :‬أو ُ‬
‫ﻋﻠﻰ ﻧﻮع اﻟﻌﻤﻠﯿﺔ اﻟﻤﻄﻠﻮﺑﺔ ﻣﺜﻞ ‪) ADD‬ﻟﻠﺠﻤﻊ( ‪ ،‬اﻟﺠﺰء اﻟﺜﺎﻧﻲ ھﻮ اﻟﻮﺳﺎﺋﻂ ﻋﻠﻤًﺎ ﺑﺄن‬
‫ﺑﻌﺾ اﻟﺘﻌﻠﯿﻤﺎت ﻻﻳﺄﺧﺬ وﺳﺎﺋﻂ واﻟﺠﺰء اﻵﺧﺮ وﺳﯿﻄﺔ واﺣﺪة ﻓﻘﻂ واﻟﺒﻌﺾ اﻵﺧﺮ أﻛﺜﺮ ﻣﻦ‬
‫ذﻟﻚ ‪ ،‬ﺗﺤﺪد ھﺬه اﻟﻮﺳﺎﺋﻂ اﻟﺸﺊ اﻟﺬي ﺳﯿﻌﻤﻞ ﻋﻠﯿﻪ اﻷﻣﺮ ‪،‬‬
‫ﻓﺎﻷﻣﺮ ‪ ADD‬ﻟﻮﺣﺪه ﻋﻘﯿﻢ ﻻﻳﺪل ﻋﻠﻰ ﺷﺊ ﻟﻜﻦ اﻷﻣﺮ ‪ ADD AX,5‬ﻳﺪل ﻋﻠﻰ ﺟﻤﻊ اﻟﺮﻗﻢ ‪5‬‬
‫ﻣﻊ اﻟﻘﯿﻤﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﺴﺠﻞ ‪ AX‬وﻳﻮﺿﺢ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺑﻌﺾ اﻷواﻣﺮ‬

‫‪clc‬‬ ‫وﺳﺎﺋﻂ ﻓﻘﻂ أﻣﺮ ﺑﺪﻮ ﻧ ;‬


‫‪dec ax‬‬ ‫وﺳﯿﻄﺔ واﺣﺪة ﻓﻘﻂ ;‬
‫وﺳﯿﻄﺘﯿﻦ ; ‪mov cx,dx‬‬

‫ﻻﺣﻆ ﺄ ﻧ ﺄ ﻳ ﻧﺺ ﻓﻲ ﺷﻔﺮة اﻷﺳﻤﺒﻠﻲ ﻳﺄﺗﻲ ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ ھﻮ ﻣﺠﺮد ﺗﻌﻠﯿﻖ‬

‫اﻟﻮﺳﺎﺋﻂ ﻣﻤﻜﻦ ﺗﻜﻮن ﻋﺪة أﻧﻮﺎﻋ ‪:‬‬


‫‪ .1‬ﻣﻌﻠﻮﻣﺔ ﻓﻮرﻳﺔ )ﻣﺒﺎﺷﺮة( )ﺄ ﻳ ﺛﺎﺑﺘﻪ( ﻣﺜﺎل ‪a'' / 30 / 10 :‬‬
‫‪ .2‬ﻣﺴﺠﻞ )ﺳﻮف ﻳﺘﻢ ﺷﺮح اﻟﻤﺴﺠﻼت ﺑﺎﻟﺘﻔﺼﯿﻞ ﻓﻲ اﻟﺪرﻮ ﺳ اﻟﻘﺎدﻣﻪ ( ﻣﺜﺎل ‪AX / :‬‬
‫‪EAX / BL‬‬
‫‪ .3‬ﻣﻮﻗﻊ ذاﻛﺮه )ﻳﺘﻢ ﺗﺤﺪﻳﺪه ﻋﻦ ﻃﺮﻳﻖ اﻟﻌﻨﻮﺎ ﻧ( ﻣﺜﺎل ‪bx] / [100]] / [200] :‬‬
‫‪.4‬ﻣﺘﻐﯿﺮ )ﻮھﻮ ﻧﻔﺲ اﻟﺴﺎﺑﻖ ﻟﻜﻦ ﺑﺪل ﺄ ﻧ ﺗﺤﻔﻆ أو ﺗﺤﺴﺐ اﻟﻌﻨﻮﺎ ﻧ ﻳﺪوﻳًﺎ ﻳﻘﻮم اﻷﺳﻤﺒﻠﺮ‬
‫ﺳﺘ ﺒﺪ ﻻ اﻟﻤﺘﻐﯿﺮ ﺑﺮﻗﻢ ﻳﺪل ﻋﻠﻰﻋ ﻨﻮ اﻧﻪ ( ﻣﺜﺎل ‪count / VAR1 / INTVAL / STR1 :‬‬ ‫ﺑ ﺄ‬

‫ﻣﺪﺧﻞ اﻟﻰ اﻟﺪﻳﺒﻐﺮ ‪: Debugge‬‬


‫ھﺎ ﻗﺪ وﺻﻠﻨﺎ اﻟﻰ واﺣﺪ ﻣﻦ أﻗﻮى اﻟﺒﺮاﻣﺞ اﻟﻤﺒﯿﺘﻪ ﻓﻲ اﻟﻨﻈﺎم ﻓﺒﻮاﺳﻄﺔ اﻟﯿﺒﻎ ﺗﺴﺘﻄﯿﻊ‬
‫ﻋﻤﻞ أﺷﯿﺎء ﻋﺠﯿﺒﻪ وﻏﺮﻳﺒﻪ ‪ ،‬ﺣﺴﻨًﺎ ﺷﻐﻞ اﻟﺪﻮ ﺳ وﻋﻨﺪ ﻣﺤﺚ اﻷواﻣﺮ أﻃﺒﻊ ‪ debug‬ﺛﻢ‬
‫أﻧﺘﺮ وﺳﺘﻈﮫﺮ ﻟﻚ ﻋﻼﻣﻪ '‪ '-‬ﻟﯿﻞ ﻋﻠﻰ أﺳﺘﻌﺪاد اﻟﺪﻳﺒﻐﺮ ﻋﻠﻰ أﺳﺘﻘﺒﺎل أواﻣﺮك ‪.‬‬

‫اﻷن دﻋﻨﺎ ﻧﻜﺘﺐ ھﺬا اﻟﺒﺮﻧﺎﻣﺞ اﻟﺼﻐﯿﺮ‬

‫ﻣﺒﺎﺷﺮة اﻟﻰ اﻟﻤﺴﺠﻞ ﺄ ﻳ‪-‬أﻛﺲ ﻧﻘﻞ اﻟﻌﺪد ‪ 2‬ﻛﻤﻌﻠﻮﻣﺔ ; ‪mov ax,2‬‬


‫اﻟﻤﺴﺠﻞ ﺑﻲ‪-‬اﻛﺲ ﻧﻘﻞ اﻟﻌﺪد ‪ 3‬ﻛﻤﻌﻠﻮﻣﺔ ﻣﺒﺎﺷﺮة اﻟﻰ ; ‪mov bx,3‬‬
‫ﺄ ﻳ‪-‬اﻛﺲ ‪ /‬ﺄ ﻳ‪-‬اﻛﺲ=ﺄ ﻳ‪-‬أﻛﺲ ‪ +‬ﺑﻲ‪ -‬ﺟﻤﻊ ﺄ ﻳ‪-‬اﻛﻲ ﻣﻊ ﺑﻲ‪-‬اﻛﺲ ﻣﻊ وﺿﻊ اﻟﺠﻮﺎ ﺑ ﻓﻲ ; ‪add ax,bx‬‬
‫أﻛﺲ‬
‫ﻛﯿﻒ ﺗﻘﻮم ﺑﺄذﺧﺎل ھﺬا اﻟﻜﻮد ‪:‬‬
‫‪ .1‬ﻋﻨﺪ اﻟﻤﺤﺚ '‪ '-‬أدﺧﻞ ‪ a100‬ﺄ ﻳ أﻧﻨﺎ ﺳﻨﺒﺪأ ﻧﻜﺘﺐ اﻟﻜﻮد ﻣﻦ اﻟﻌﻨﻮﺎ ﻧ ‪ 100‬ﺛﻢ أﺿﻐﻂ أﻧﺘﺮ‬
‫ﺑﺎﻟﻄﺒﻊ‬
‫‪ .2‬اﻵن أدﺧﻞ ﻛﻞ ﺗﻌﻠﯿﻤﯿﻪ ﺛﻢ أﺿﻐﻂ أﻧﺘﺮ وﻣﻊ ﻧﮫﺎﻳﺔ اﻟﺘﻌﻠﯿﻤﯿﺔ اﻷﺧﯿﺮة أﺿﻐﻂ أﻧﺘﺮ ﻣﺮﺗﯿﻦ‬

‫اﻷن ﻗﻢ ﺑﺄدﺧﺎل اﻟﺮﻣﺰ ‪ R‬ﺛﻢ أﻧﺘﺮ ﻟﺘﺮى ﺣﺎﻟﺔ اﻟﻤﺴﺠﻼت‬


‫ﻻﺣﻆ ﺄ ﻧ اﻟﻤﺴﺠﻞ ‪ AX‬ﻳﺴﺎﻮ ﻳ ﺻﻔﺮ وﺳﺘﺮى أﻳﻀَﺎ ﻇﮫﻮر اﻟﺘﻌﻠﯿﻤﯿﻪ ‪ MOV ax,0002‬ﻮھﻲ‬
‫اﻟﺘﻌﻠﯿﻤﯿﻪ اﻟﺘﻲ ﻋﻠﯿﮫﺎ اﻟﺪور ﻓﻲ اﻟﺘﻨﻔﯿﺬ وﻟﯿﺲ اﻟﻤﻌﻠﻮﻣﺔ اﻟﻤﻨﻔﺬه ‪ ،‬اﻵن ﻗﻢ ﺑﻄﺒﺎﻋﺔ اﻟﺮﻣﺰ‬
‫‪ T‬ﺛﻢ أﻧﺘﺮ ﻟﺘﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﯿﻪ اﻟﺘﻲ ﻋﻠﯿﮫﺎ اﻟﺪور ھﻨﺎ ھﻲ ‪ MOV AX,0002‬ﺳﺘﺮى اﻵن ﺄ ﻧ‬
‫اﻟﻤﺴﺠﻞ ‪ AX‬أﺻﺒﺢ ﻳﺴﺎﻮ ﻳ ‪ 2‬ﻮھﺬا ﻣﺎﻧﺘﻮﻗﻌﻪ ﺑﺎﻟﻀﺒﻂ وﺳﺘﺮى أﻳﻀًﺎ اﻟﺘﻌﻠﯿﻤﯿﻊ اﻟﺘﻲ ﻋﻠﯿﮫﺎ‬
‫دور اﻟﺘﻨﻔﯿﺬ ﻮھﻲ ‪ MOV BX,0003‬أدﺧﻞ اﻟﺮﻣﺰ ‪ T‬ﺛﻢ أﻧﺘﺮ ﻟﺘﻨﻔﯿﺬھﺎ ﻟﺘﺮى ﺄ ﻧ اﻟﻤﺴﺠﻞ ‪BX‬‬
‫أﺻﺒﺢ ﻳﺴﺎﻮ ﻳ ‪ 3‬وﺳﺘﺮى أﻳﻀًﺎ اﻟﺘﻌﻠﯿﻤﯿﻪ اﻟﺘﻲ ﻋﻠﯿﮫﺎ اﻟﺪور ﻓﻲ اﻟﺘﻨﻔﯿﺬ ﻮھﻲ ‪ADD AX,BX‬‬
‫ﻗﻢ ﺑﺄدﺧﺎل اﻟﺮﻣﺰ ‪ T‬ﻟﺘﻨﻔﯿﺬھﺎ وﻻﺣﻆ ﻛﯿﻒ ﺄ ﻧ اﻟﻤﺴﺠﻞ ‪ AX‬أﺻﺒﺤﺖ ﻗﯿﻤﺘﻪ ﻣﺠﻤﻮع اﻟﻌﺪدﻳﻦ‬
‫‪ 3+2‬ﻮھﻮ ﺧﻤﺴﺔ ﺑﯿﻨﻤﺎ ﺑﻘﻰ اﻟﻤﺴﺠﻞ ‪ BX‬ﻳﺴﺎﻮ ﻳ ‪. 3‬‬

‫اﻵن ﺑﻌﺪﻣﺎ ﻋﺮﻓﺖ ﻛﯿﻒ ﺗﻜﺘﺐ ﻛﻮد ﺑﺴﯿﻂ أﺧﺮج ﻣﻦ اﻟﺪﻳﺒﻐﺮ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ Q‬ﺛﻢ أدﺧﻞ ﻣﺮة‬
‫أﺧﺮى ﺑﻜﺘﺎﺑﺔ اﻷﻣﺮ ‪ Debug‬ﺣﺘﻰ ﺗﺼﻔﺮ اﻟﻤﺴﺠﻼت ﻣﺮة أﺧﺮى أدﺧﻞ اﻟﺘﻌﻠﯿﻤﯿﻪ ‪ A100‬ﺛﻢ‬
‫ﺟﺮب ﺗﻜﺘﺐ ﻛﻮد ﻣﻦ ﻋﻨﺪك وﻣﻊ ﻛﻞ ﻧﮫﺎﻳﺔ ﺗﻌﻠﯿﻤﯿﻪ أﺿﻐﻂ أﻧﺘﺮ وﻓﻲ ﻧﮫﺎﻳﺔ اﻟﺘﻌﻠﯿﻤﯿﻪ اﻷﺧﯿﺮة‬
‫أﺿﻐﻂ أﻧﺘﺮ ﻣﺮﺗﯿﻦ‬
‫) ﻣﻼﺣﻈﺔ ﻟﺘﺮى ﺷﻔﺮﺗﻚ ﺑﻠﻐﺔ اﻵﻟﻪ واﻷﺳﻤﺒﻠﻲ أدﺧﻞ اﻟﺮﻣﺰ ‪ U‬ﺛﻢ أﻧﺘﺮ ﻣﺒﺎﺷﺮة ﺑﻌﺪ إدﺧﺎل‬
‫اﻟﻜﻮد وﻗﺒﻞ إدﺧﺎل اﻟﺮﻣﺰ ) ‪R‬‬
‫أﺿﻐﻂ ‪ R‬ﺛﻢ أﻧﺘﺮ ﻟﺘﺮى اﻟﻤﺴﺠﻼت ﻗﺒﻞ ﺗﻨﻔﯿﺬ ﺄ ﻳ ﻋﻤﻠﯿﺔ وﻟﺘﺮى اﻟﺘﻌﻠﯿﻤﯿﻪ اﻟﺘﻲ ﻋﻠﯿﮫﺎ‬
‫اﻟﺪور ﻓﻲ اﻟﺘﻨﻔﯿﺬ أﺿﻐﻂ ‪ T‬ﺛﻢ أﻧﺘﺮ ﻟﺘﻨﻔﺬ اﻟﺘﻌﻠﯿﻤﯿﻪ وﺗﺮى اﻟﻨﺘﺎﺋﺞ واﻟﺘﻌﻠﯿﻤﯿﻪ اﻟﺘﻲ ﺑﻌﺪھﺎ‬
‫ﻮھﻜﺬا وﻻﺗﻨﺴﻰ أذا أرﺪ ﺗ ﺄ ﻧ ﺗﺪﺧﻞ ﻛﻮد ﺟﺪﻳﺪ اﻟﺨﺮﻮﺟ واﻟﻌﻮدة ﻣﺮة أﺧﺮى اﻟﻰ اﻟﺪﻳﺒﻐﺮ‬
‫ﻟﺘﺼﻔﺮ اﻟﻤﺴﺠﻼت واﻟﺬاﻛﺮه‬

You might also like