Escolar Documentos
Profissional Documentos
Cultura Documentos
اﻷهﺪاف اﻟﺘﻌﻠﻴﻤﻴﺔ:
ﺳﻨﺘﻌﻠﻢ ﻓﻲ هﺬا اﻟﻔﺼﻞ:
ﻟﻤﺎذا ﻳﻤﺘﻠﻚ اﻟﺤﺎﺳﻮب اﻟﻌﺪﻳﺪ ﻣﻦ أﻧﻤﺎط اﻟﻌﻨﻮﻧﺔ. .1
ﺗﻄﺒﻴﻘﺎت اﻟﻌﻨﻮﻧﺔ اﻟﻔﻮرﻳﺔ. .2
اﻟﻌﻨﻮﻧﺔ ﻏﻴﺮ اﻟﻤﺒﺎﺷﺮة وﺗﻄﺒﻴﻘﺎﺗﻬﺎ. .3
اﻟﻌﻨﻮﻧﺔ اﻟﻨﺴﺒﻴﺔ ﻟﻠﺤﺎﺳﻮب واﻟﻤﺴﺘﺨﺪﻣﺔ ﻣﻦ أﺟﻞ اﻟﻘﻔﺰ إﻟﻰ اﻟﺘﻌﻠﻴﻤﺎت اﻟﻘﺮﻳﺒﺔ. .4
اﻟﻌﻨﻮﻧﺔ اﻟﺪﻟﻴﻠﻴﺔ واﻟﻘﺎﻋﺪﻳﺔ وآﻴﻔﻴﺔ اﺳﺘﺨﺪاﻣﻬﻤﺎ ﻓﻲ ﻋﻨﻮﻧﺔ ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﺎت ﻣﺘﻌﺪدة اﻷﺑﻌﺎد. .5
اﺳﺘﺨﺪام اﻟﻌﻨﻮﻧﺔ اﻟﻘﺎﻋﺪﻳﺔ ﻓﻲ ﻋﻤﻠﻴﺔ إﻋﺎدة ﺗﻮﺿﻴﻊ اﻟﺒﺮﻧﺎﻣﺞ. .6
ﻫﻨﺎﻙ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺃﳕﺎﻁ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﱵ ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻋﻨﺪ ﺗﺼﻤﻴﻢ ﺍﳌﻌﺎﰿ .ﺳﻨﺪﺭﺱ ﰲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ
ﺃﺭﺑﻌﺔ ﺃﳕﺎﻁ ﻣﺸﻬﻮﺭﺓ ﻟﻠﻌﻨﻮﻧﺔ ﻭﻣﺴﺘﺨﺪﻣﺔ ﰲ ﺣﻮﺍﺳﺐ ﺷﺮﻛﺔ .IBMﳚﺐ ﻋﻠﻰ ﻣﺼﻤﻢ ﻭﺣﺪﺓ
ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ ﺃﻥ ﻳﻀﻴﻒ ﻣﺴﺠﻼﺕ ﺧﺎﺻﺔ ﻭﺗﻌﻠﻴﻤﺎﺕ ﺁﻟﺔ ﺟﺪﻳﺪﺓ ﻟﺘﺪﻋﻢ ﺃﳕﺎﻁ ﺍﻟﻌﻨﻮﻧﺔ ﻫﺬﻩ.
RAM ﻳﺆﺛﺮ ﻃﻮﻝ ﺍﻟﻌﻨﻮﺍﻥ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﻋﻠﻰ ﻃﻮﻝ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﱵ ﺗﺆﺛﺮ ﺑﺪﻭﺭﻫﺎ ﻋﻠﻰ ﺣﺠﻢ ﺍﻟﺬﺍﻛﺮﺓ
ﺍﳌﻄﻠﻮﺏ ﻟﺘﺨﺰﻳﻦ ﺍﻟﱪﻧﺎﻣﺞ.
ﺇﻥ ﺃﺑﺴﻂ ﳕﻂ ﻟﻠﻌﻨﻮﻧﺔ ﻳﻌﺮﻑ ﺑﺎﻟﻌﻨﻮﻧﺔ ﺍﳌﺒﺎﺷﺮﺓ ) ،(direct addressingﻭﰲ ﻫﺬﺍ ﺍﻟﻨﻤﻂ ﳓﺘﺎﺝ ﺇﱃ
ﻋﻨﻮﺍﻥ ﺑﻄﻮﻝ nﺑﺖ ﻟﻌﻨﻮﻧﺔ 2ﻣﻮﻗﻌﹰﺎ ﰲ ﺍﻟﺬﺍﻛﺮﺓ .RAMﻭﻣﻊ ﺯﻳﺎﺩﺓ ﺗﻌﻘﻴﺪ ﺍﳊﻮﺍﺳﺐ ﻭﺍﺗﺴﺎﻉ
n
ﳎﺎﻻﺕ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﺍﺯﺩﺍﺩ ﺍﻟﻄﻠﺐ ﻋﻠﻰ ﺳﻌﺎﺕ ﺃﻛﱪ ﻟﻠﺬﺍﻛﺮﺓ ،ﻓﻜﻲ ﻧﻘﻮﻡ ﺑﻌﻨﻮﻧﺔ ﻣﺒﺎﺷﺮﺓ ﻟﺬﺍﻛﺮﺓ
RAMﺑﺴﻌﺔ 64MBﳓﻦ ﲝﺎﺟﺔ ﻟﻌﻨﻮﺍﻥ ﺑﻄﻮﻝ 26ﺑﺘﹰﺎ ) .(2 =64Mﺇﻥ ﺍﺳﺘﺨﺪﺍﻡ ﻃﺮﻳﻘﺔ ﺗﺸﻔﲑ
26
ﻭﺃﳕﺎﻁ ﻋﻨﻮﻧﺔ ﺫﻛﻴﺔ ﺳﻴﺆﺩﻱ ﺇﱃ ﲣﻔﻴﺾ ﻃﻮﻝ ﻫﺬﺍ ﺍﻟﻌﻨﻮﺍﻥ ﺑﺸﻜﻞ ﻣﻠﺤﻮﻅ .ﺇﻥ ﺇﻧﻘﺎﺹ ﻃﻮﻝ
ﺍﻟﻌﻨﻮﺍﻥ ﺳﻴﻜﻮﻥ ﻋﻠﻰ ﺣﺴﺎﺏ ﺯﻣﻦ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺍﳌﻌﻄﻴﺎﺕ ﰲ ﺍﻟﺬﺍﻛﺮﺓ ﻛﻤﺎ ﺳﻨﺮﻯ ﻻﺣﻘﹰﺎ.
ﰿ ﺑﺸﻜﻞ ﻋﺎﻡ ﻗﻠﻴﻞ ﻭﻫﻮ ﻣﻦ ﺭﺗﺒﺔ 64 ،32 ،16 ،8ﻭﻫﺬﻩ ﺍﳌﺴﺠﻼﺕ ﺇﻥ ﻋﺪﺩ ﺍﳌﺴﺠﻼﺕ ﰲ ﺍﳌﻌﺎ ِ
ﻻ ﺛﺎﺑﺘﹰﺎ ﻣﻦ ﺭﺗﺒﺔ 6, 5, 4, 3
ﻗﺎﺑﻠﺔ ﻟﻠﻌﻨﻮﻧﺔ ﺍﳌﺒﺎﺷﺮﺓ ،ﻛﻤﺎ ﺇﻥ ﺣﻘﻞ ﺍﻟﻌﻨﻮﺍﻥ ﻟﻠﻤﺴﺠﻞ ﺑﺎﻟﺘﻌﻠﻴﻤﺔ ﻳﺸﻜﻞ ﻃﻮ ﹰ
ﺑﺖ ﻭﻟﻄﺎﳌﺎ ﺃﻥ ﺍﳌﺴﺠﻼﺕ ﻣﻮﺟﻮﺩﺓ ﺿﻤﻦ ﺍﳌﻌﺎﰿ ﻓﺈﻧﻪ ﻳﺘﻢ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻬﺎ ﺑﺸﻜﻞ ﺃﺳﺮﻉ ﻣﻦ
ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻣﻮﺍﻗﻊ ﰲ ﺍﻟﺬﺍﻛﺮﺓ ،ﻭﻻﺑﺪ ﳌﱪﻣﺞ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳌﺴﺠﻼﺕ ﻗﺪﺭ ﺍﳌﺴﺘﻄﺎﻉ
ﻟﻴﻘﻠﻞ ﻣﻦ ﺯﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﱪﻧﺎﻣﺞ.
ﻻ ﺗﻔﻴﺪ ﺃﳕﺎﻁ ﺍﻟﻌﻨﻮﻧﺔ ﰲ ﺗﻘﻠﻴﻞ ﻛﻤﻴﺔ ﺍﻟﺘﺨﺰﻳﻦ ﻟﻠﱪﺍﻣﺞ ﻓﺤﺴﺐ ﻭﺇﳕﺎ ﺗﻔﻴﺪ ﺃﻳﻀﹰﺎ ﰲ ﺗﻘﻠﻴﻞ ﺯﻣﻦ ﺗﻨﻔﻴﺬ
ﺍﻟﱪﺍﻣﺞ ﻭﻫﺬﺍ ﻣﺎ ﺳﻨﺮﺍﻩ ﰲ ﺍﻟﻔﻘﺮﺓ ﺍﻟﺘﺎﻟﻴﺔ .ﻓﺒﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺍﻟﻔﻌﺎﻟﻴﺔ ﰲ ﺍﻟﺘﺨﺰﻳﻦ ﻭﰲ ﺯﻣﻦ ﺗﻨﻔﻴﺬ
ﺍﻟﱪﻧﺎﻣﺞ ﻓﺈﻥ ﻫﻨﺎﻙ ﻣﻔﻬﻮﻣﲔ ﻧﻮﻋﻴﲔ ﻣﺮﻏﻮﺑﲔ ﺧﺎﺻﲔ ﺑﺎﻟﱪﻧﺎﻣﺞ ﻭﳘﺎ ﺍﳌﺮﻭﻧﺔ ﻭﻗﺎﺑﻠﻴﺔ ﺍﻟﻘﺮﺍﺀﺓ
ﻭﺍﻟﻠﺬﺍﻥ ﻳﺴﺎﻋﺪﺍﻥ ﰲ ﺻﻴﺎﻧﺔ ﺍﻟﱪﺍﻣﺞ ،ﻻﺣﻆ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ:
)ADD AX, BX (instruction-1
)ﺍﳌﺼﺪﺭ ﻭﺍﻟﻮﺟﻬﺔ( ،ﻭﻫﺬﺍﻥ ADD ﻫﺬﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺗﺴﺘﺨﺪﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺒﺎﺷﺮﺓ ﳌﻌﺎﻣﻠﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ
ﺍﳌﻌﺎﻣﻼﻥ ﻳﺸﲑﺍﻥ ﺇﱃ ﺍﳌﺴﺠﻼﺕ .ﻣﻦ ﺟﻬﺔ ﺃﺧﺮﻯ ﺇﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ:
)ADD A, B (instruction-2
ﺗﺴﺘﺨﺪﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺒﺎﺷﺮﺓ ﻭﻛﻼ ﺍﳌﻌﺎﻣﻠﲔ ﻣﻮﺟﻮﺩﺍﻥ ﰲ ﺍﻟﺬﺍﻛﺮﺓ .RAMﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺑﺄﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ
) (instruction-2ﺳﺘﻜﻮﻥ ﺃﻛﱪ ﻃﻮ ﹰﻻ ﻣﻦ ﺍﻟﺘﻌﻠﻴﻤﺔ ) .(instruction-1ﻓﺈﺫﺍ ﻛﺎﻥ ﻻﺑﺪ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ
26ﺑﺘﹰﺎ ﻟﻌﻨﻮﻧﺔ ﺫﺍﻛﺮﺓ RAMﺑﺴﻌﺔ 64MBﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﻓﺈﻧﻪ ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺑﺄﻥ ﺣﻘﻞ ﺍﳌﻌﺎﻣﻞ ﻟﻠﺘﻌﻠﻴﻤﺔ
ﻼ ﺟﺪﹰﺍ ﻭﺫﻟﻚ ﻋﻨﺪﻣﺎ ﻧﺮﻏﺐ ﰲ ) (instruction-2ﺳﻴﺤﺘﺎﺝ ﺇﱃ 52ﺑﺘﹰﺎ ﻟﻮﺣﺪﻩ ،ﻭﻫﺬﺍ ﻳﻌﺘﱪ ﻃﻮﻳ ﹰ
ﲡﻤﻴﻊ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺑﻄﻮﻝ 32ﺃﻭ 48ﺑﺘﹰﺎ .ﺍﳊﻞ ﺍﻟﺒﺪﻳﻞ ﻫﻮ ﺃﻥ ﻧﺴﺘﺨﺪﻡ ﻣﺴﺠﻞ ﻣﻦ ﺃﺟﻞ ﺇﺣﺪﻯ
ﺍﳌﻌﺎﻣﻼﺕ ﻭﻧﺴﺘﺨﺪﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺒﺎﺷﺮﺓ ﳌﻮﺍﻗﻊ ﺍﻟﺬﺍﻛﺮﺓ RAMﻣﻦ ﺃﺟﻞ ﺍﳌﻌﺎﻣﻞ ﺍﻵﺧﺮ:
ADD AX, Y
ﻭﻫﻨﺎﻙ ﻃﺮﻕ ﻋﻨﻮﻧﺔ ﺃﺧﺮﻯ ﺗﺴﺘﺨﺪﻡ ﻟﺘﻘﻠﻴﻞ ﻃﻮﻝ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻭﻫﺬﺍ ﻣﺎ ﺳﻨﻨﺎﻗﺸﻪ ﰲ ﺍﳌﻘﻄﻊ 4.4ﻭﺍﳌﻘﻄﻊ .4.5
71 : 4أﻧﻤﺎط اﻟﻌﻨﻮﻧﺔ اﻷرﺑﻌﺔ
4.2اﻟﻌﻨﻮﻧﺔ اﻟﻔﻮرﻳﺔ
ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻄﻠﻮﺏ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻣﻦ ﻗﺒﻞ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺗﺸﻜﻞ ﺟﺰﺀﹰﺍ ﻣﻦ ﻫﺬﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻓﺈﻧﻪ ﰲ
ﺯﻣﻦ ﺍﻟﺘﻨﻔﻴﺬ ،ﻋﻨﺪ ﺟﻠﺐ ﻫﺬﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻣﻦ ﺍﻟﺬﺍﻛﺮﺓ ،ﺳﻴﺘﻢ ﺟﻠﺐ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻄﻠﻮﺑﺔ ﻣﻌﻬﺎ ،ﻭﻫﻜﺬﺍ
ﻻ ﺗﻮﺟﺪ ﺣﺎﺟﺔ ﻷﻱ ﺯﻣﻦ ﺇﺿﺎﰲ ﳉﻠﺐ ﻫﺬﻩ ﺍﳌﻌﻄﻴﺎﺕ .ﻫﺬﺍ ﺍﻟﻨﻤﻂ ﻣﻦ ﻋﻨﻮﻧﺔ ﺍﳌﻌﻄﻴﺎﺕ ﻳﺪﻋﻰ
ﺑﺎﻟﻌﻨﻮﻧﺔ ﺍﻟﻔﻮﺭﻳﺔ ) ،(immediate addressingﺍﻧﻈﺮ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ:
MOV CX, 7
ﺇﻥ ﺍﳌﻌﻄﻴﺎﺕ ﰲ ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﻫﻲ ﺛﺎﺑﺖ ﺑﺪﻭﻥ ﺇﺷﺎﺭﺓ ﻣﺴﺎ ٍﻭ ﻟﻠﻘﻴﻤﺔ 7ﻭﻫﻮ ﻳﺸﻜﻞ ﺟﺰﺀﹰﺍ ﻣﻦ ﺍﻟﺘﻌﻠﻴﻤﺔ.
ﻓﺈﺫﺍ ﻛﺎﻥ ﻃﻮﻝ ﺍﻟﺘﻌﻠﻴﻤﺔ 16ﺑﺘﹰﺎ ﻣﻨﻬﺎ 8ﺑﺘﺎﺕ ﳐﺼﺼﺔ ﻟﺸﻴﻔﺮﺓ ﺍﻟﻌﻤﻠﻴﺔ ) (MOV CXﻓﺈﻥ ﺍﻟﺜﻤﺎﻥ ﺑﺘﺎﺕ
ﺍﻟﺒﺎﻗﻴﺔ ﺳﺘﺨﺼﺺ ﻟﻠﻤﻌﻄﻴﺎﺕ .ﻭﻫﻜﺬﺍ ﺑﺜﻤﺎﻥ ﺑﺘﺎﺕ ﳓﺼﻞ ﻋﻠﻰ 256ﺗﺮﻛﻴﺒﺔ ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﺘﻤﺜﻴﻞ
ﺍﻷﺭﻗﺎﻡ ﺍﻟﺼﺤﻴﺤﺔ ﺑﺪﻭﻥ ﺇﺷﺎﺭﺓ ﻣﻦ ﺻﻔﺮ ﻭﺣﱴ .255ﳝﻜﻦ ﺑﺸﻜﻞ ﺑﺪﻳﻞ ﺃﻥ ﺗﻌﺎﻣﻞ ﻫﺬﻩ ﺍﻟﺜﻤﺎﻥ
ﺑﺘﺎﺕ ﻋﻠﻰ ﺃﺎ ﺃﻋﺪﺍﺩ ﺑﺈﺷﺎﺭﺓ ﻋﻦ ﻃﺮﻳﻖ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳌﺘﻤﻢ ﺍﻟﺜﻨﺎﺋﻲ ﻭﰲ ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﺳﻴﻜﻮﻥ ﺍﺎﻝ ﻣﻦ
-128ﻭﺣﱴ .+127
8 ﺇﺫﺍﹰ ،ﻓﺄﺣﺪ ﳏﺪﺩﺍﺕ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻔﻮﺭﻳﺔ ﻫﻮ ﺃﻥ ﺣﺠﻢ ﺍﳌﻌﺎﻣﻞ ﺻﻐﲑ ،ﻭﺑﺸﻜﻞ ﻃﺒﻴﻌﻲ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻣﻦ
ﺣﱴ 12ﺑﺘﹰﺎ ﻟﺘﻤﺜﻴﻞ ﻣﻌﺎﻣﻼﺕ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻔﻮﺭﻳﺔ.
ﺗﻨﻔﺬ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﱵ ﺗﺴﺘﺨﺪﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻔﻮﺭﻳﺔ ﺑﺸﻜﻞ ﺳﺮﻳﻊ ﻭﻫﺬﺍ ﻋﺎﺋﺪ ﻟﻜﻮﻥ ﺍﳌﻌﻄﻴﺎﺕ ﲡﻠﺐ ﻣﻊ
ﺍﻟﺘﻌﻠﻴﻤﺔ .ﻭﺑﺼﺮﻑ ﺍﻟﻨﻈﺮ ﻋﻦ ﻛﻮﻥ ﺣﺠﻢ ﺍﳌﻌﻄﻴﺎﺕ ﳏﺪﻭﺩ ﻓﺈﻧﻪ ﺗﻮﺟﺪ ﺳﻠﺒﻴﺔ ﺃﺧﺮﻯ ﰲ ﺍﺳﺘﺨﺪﺍﻡ
ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻔﻮﺭﻳﺔ .ﻟﻨﻔﺘﺮﺽ ﺑﺄﻧﻨﺎ ﻧﻘﻮﻡ ﺑﺘﺠﻤﻴﻊ ﺑﺮﻧﺎﻣﺞ ﳛﻮﻱ ﺍﻟﺘﻌﻠﻴﻤﺔ MOv CX, 7ﻣﻦ ﺃﺟﻞ ﺗﻄﺒﻴﻖ
ﻣﻌﲔ ﻭﺑﻌﺪ ﻓﺘﺮﺓ ﻣﺎ ﺃﺭﺩﻧﺎ ﺃﻥ ﻧﻐﲑ ﺍﻟﻘﻴﻤﺔ 7ﻟﺘﺼﺒﺢ ،3ﻫﺬﺍ ﻳﻌﲏ ﺃﻧﻪ ﳚﺐ ﺃﻥ ﻧﻐﲑ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻟﺘﺼﺒﺢ
MOV CX, 3ﻭﻧﻌﻴﺪ ﲡﻤﻴﻊ ﺍﻟﱪﻧﺎﻣﺞ .ﻭﻫﺬﺍ ﻟﻦ ﻳﻜﻮﻥ ﻗﻀﻴﺔ ﺃﺳﺎﺳﻴﺔ ﻋﻨﺪ ﺍﻟﻌﻤﻞ ﻣﻊ ﺑﺮﺍﻣﺞ ﺻﻐﲑﺓ،
ﻭﻟﻜﻦ ﻣﺮﻭﻧﺔ ﺍﻟﱪﻧﺎﻣﺞ ﺗﺼﺒﺢ ﻣﻔﻘﻮﺩﺓ ﻫﻨﺎ.
ﺍﻹﳚﺎﺑﻴﺔ ﺍﻷﺧﺮﻯ ﻟﻠﻌﻨﻮﻧﺔ ﺍﻟﻔﻮﺭﻳﺔ ﺃﺎ ﲢﺴﻦ ﻣﻦ ﺇﻣﻜﺎﻧﻴﺔ ﻗﺮﺍﺀﺓ ﺍﻟﱪﻧﺎﻣﺞ ،ﻓﻔﻲ ﺳﻠﺴﻠﺔ ﺍﳌﻌﺎﳉﺎﺕ
80×86ﳜﺼﺺ ﺍﳌﺴﺠﻞ CXﻛﻌﺪﺍﺩ ﳐﺼﺺ ﻟﺘﻌﻠﻴﻤﺎﺕ ،LOOPﻓﻌﻨﺪﻣﺎ ﻳﺮﻯ ﺍﻟﻘﺎﺭﺉ ﺍﻟﺘﻌﻠﻴﻤﺔ
MOV CX, 7ﻣﺘﺒﻮﻋﺔ ﺑﺘﻌﻠﻴﻤﺔ LOOPﺳﻴﻔﻬﻢ ﺍﻟﻘﺎﺭﺉ ﺑﺴﻬﻮﻟﺔ ﺑﺄﻥ ﺍﳊﻠﻘﺔ ﺳﺘﺘﻜﺮﺭ ﺳﺒﻊ ﻣﺮﺍﺕ.
X ﻋﻨﺪ ﺗﻨﻔﻴﺬ ﺍﻟﻌﺒﺎﺭﺓ SUM = SUM+Xﺑﺸﻜﻞ ﻣﺘﻜﺮﺭ ﰲ ﺣﻠﻘﺔ ﳊﺴﺎﺏ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺘﺮﺍﻛﻤﻴﺔ ﻟﻠﻤﺘﻐﲑ
ﻓﻤﻦ ﺍﻷﺳﺎﺳﻴﺎﺕ ﺃﻥ ﺗﺆﺳﺲ ﻗﻴﻤﺔ ﺍﳌﺘﻐﲑ SUMﺇﱃ ﺍﻟﺼﻔﺮ ﻗﺒﻞ ﺑﺪﺀ ﺗﻨﻔﻴﺬ ﺍﳊﻠﻘﺔ ،ﺣﻴﺚ ﺇﻥ ﳕﻂ
ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻔﻮﺭﻳﺔ ﻣﻨﺎﺳﺐ ﺟﺪﹰﺍ ﳍﺬﺍ ﺍﻟﺘﺄﺳﻴﺲ .ﲤﺘﻠﻚ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﳌﻴﺰﺍﺕ ﺍﳌﺘﻘﺪﻣﺔ
ﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻔﻮﺭﻳﺔ ﺑﺸﻜﻞ ﻓﻌﺎﻝ ،ﻭﺇﺣﺪﻯ ﻫﺬﻩ ﺍﳋﺼﺎﺋﺺ ﻣﻌﻄﺎﺓ ﻣﻦ ﺧﻼﻝ ﺍﻟﺘﻮﺟﻴﻪ ﺍﳌﺴﻤﻰ
.EQUﺗﺴﻤﺢ ﻫﺬﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻟﻠﻤﱪﻣﺞ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﺳﻢ ﺭﻣﺰﻱ ﻟﺜﺎﺑﺖ ﻭﻣﻦ ﰒ ﳚﺮﻱ ﺍﺳﺘﺨﺪﺍﻣﻪ ﰲ
اﻟﻔﺼﻞ اﻟﺮاﺑﻊ 72
ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﳌﻮﺍﻗﻊ ﰲ ﺍﻟﱪﻧﺎﻣﺞ ،ﻭﺳﻴﻘﻮﻡ ﺍﻤﻊ ﺑﺎﻟﺘﺴﻮﻳﺔ ﻣﺎ ﺑﲔ ﺍﻻﺳﻢ ﺍﻟﺮﻣﺰﻱ ﻭﺍﻟﺜﺎﺑﺖ ﺍﳌﻘﺎﺑﻞ
ﻭﻳﺴﺘﺒﺪﻝ ﺍﻻﺳﻢ ﺑﺎﻟﺜﺎﺑﺖ ﺧﻼﻝ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺠﻤﻴﻊ ،ﻛﻤﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ:
Maxint EQU ; 32767
.
.
.
MOV BX, maxint ;
.
.
.
MOV DI, maxint ;
.
.
.
ﻳﺘﻢ ﺗﻌﻴﲔ ﺍﻟﻘﻴﻤﺔ 32767ﰲ ﻛﻞ ﻣﻦ ﺍﳌﺴﺠﻠﲔ BXﻭ .DIﻋﻨﺪ ﺗﻐﻴﲑ ﺍﻟﻘﻴﻤﺔ ﰲ Maxintﻓﺈﻥ ﺍﳌﱪﻣﺞ
ﲝﺎﺟﺔ ﻓﻘﻂ ﻟﺘﻐﻴﲑﻫﺎ ﰲ ﻣﻜﺎﻥ ﻭﺍﺣﺪ ﻓﻘﻂ ﻭﺫﻟﻚ ﰲ ﻋﺒﺎﺭﺓ .EQU
ﳝﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻔﻮﺭﻳﺔ ﻗﻴﻤﺔ ﺻﺤﻴﺤﺔ ﺃﻭ ﳏﺮﻑ ﺁﺳﻜﻲ ،ﺣﻴﺚ ﻳﺘﻢ ﻭﺿﻊ ﺍﶈﺮﻑ ﺿﻤﻦ
ﻋﻼﻣﱵ ﺍﻗﺘﺒﺎﺱ ﻣﻔﺮﺩﺗﲔ ﻛﻤﺎ ﻫﻮ ﻣﺒﲔ:
'MOV AX, 'a
ﺑﻌﺪ ﺗﻨﻔﻴﺬ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺜﻼﺙ ﺍﻟﺴﺎﺑﻘﺔ ﺳﻴﺤﺘﻮﻱ ﺍﳌﺴﺠﻞ DLﻋﻠﻰ ﳏﺘﻮﻳﺎﺕ ﺍﳌﻮﻗﻊ ﺍﻟﺬﺍﻛﺮﻱ ﺫﻱ
ﺍﻟﻌﻨﻮﺍﻥ 206ﻭﺍﳊﺎﻭﻱ ﻋﻠﻰ ﺍﳊﺮﻑ ،Aﺇﻥ ﺍﻷﻗﻮﺍﺱ ﺍﳌﺮﺑﻌﺔ ] [ ﺍﶈﻴﻄﺔ ﺑﺎﻟﺮﻣﺰ BXﺗﺴﺘﺨﺪﻡ ﻹﻋﻼﻡ
ﺍﻤﻊ ﺑﺄﻥ ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺴﺘﺨﺪﻣﺔ ﻫﻲ ﻋﻨﻮﻧﺔ ﻣﺴﺠﻴﻠﺔ ﻏﲑ ﻣﺒﺎﺷﺮﺓ .ﻓﺈﺫﺍ ﰎ ﻛﺘﺎﺑﺔ MOV DL, BXﺑﺪ ﹰﻻ
ﻣﻦ ] MOV DL, [BXﻓﺈﻧﻪ ﺳﻴﺘﻢ ﲣﺰﻳﻦ ﺍﻟﺮﻗﻢ 206ﰲ ﺍﳌﺴﺠﻞ .DLﺇﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ MOV DL, BXﻏﲑ
ﺻﺤﻴﺤﺔ ﻗﻮﺍﻋﺪﻳﹰﺎ ﺣﻴﺚ ﺃﻥ BXﻣﺴﺠﻞ ﺑﻄﻮﻝ 16ﺑﺘﹰﺎ ﻭ DLﻣﺴﺠﻞ ﺑﻄﻮﻝ 8ﺑﺘﺎﺕ.
ﻳﺘﻜﻮﻥ ﺍﳌﺴﺠﻞ BXﰲ ﺍﻟﻌﺎﺋﻠﺔ 80×86ﻣﻦ 16ﺑﺘﹰﺎ ﻭﺑﺈﻣﻜﺎﻧﻪ ﻋﻨﻮﻧﺔ (64K) 2ﻣﻮﻗﻌﹰﺎ ﰲ ﺍﻟﺬﺍﻛﺮﺓ.RAM
16
ﻭﺍﻋﺘﻤﺎﺩﹰﺍ ﻋﻠﻰ ﺍﻟﻮﺟﻬﺔ ﻟﺘﻌﻠﻴﻤﺔ ) MOVﻭﺍﻟﱵ ﳝﻜﻦ ﺃﻥ ﺗﻜﻮﻥ 8ﺑﺘﺎﺕ ﺃﻭ 16ﺑﺘﹰﺎ ﺃﻭ 32ﺑﺘﹰﺎ ﰲ
ﺍﳌﻌﺎﳉﺎﺕ ﺑﻴﻨﺘﻴﻮﻡ( ﻓﺈﻧﻪ ﺑﺎﻹﻣﻜﺎﻥ ﺍﺳﺘﺨﺪﺍﻡ ﻣﻌﻄﻴﺎﺕ ﺑﻄﻮﻝ ﺃﻛﱪ ﻣﻦ 8ﺑﺘﺎﺕ .ﻭﻫﻜﺬﺍ ﻓﺈﻥ ﺣﺠﻢ
ﺍﳌﻌﻄﻴﺎﺕ ﻭﳎﺎﻝ ﺍﻟﻌﻨﻮﻧﺔ ﳝﻜﻦ ﺯﻳﺎﺩﻤﺎ ﻣﻦ ﺧﻼﻝ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺴﺠﻠﻴﺔ ﻏﲑ ﺍﳌﺒﺎﺷﺮﺓ .ﺧﻼﻝ
ﺗﻨﻔﻴﺬ ﺍﻟﺘﻌﻠﻴﻤﺔ ] ،MOV DL, [BXﻳﺘﻢ ﺍﻟﺪﺧﻮﻝ ﺇﱃ ﺍﻟﺬﺍﻛﺮﺓ ﳉﻠﺐ ﺍﳌﻌﺎﻣﻞ ﺍﻟﺬﻱ ﺳﻴﺘﻢ ﻧﻘﻠﻪ ﻭﺑﺎﻟﺘﺎﱄ
ﺳﺘﻜﻮﻥ ﻫﺬﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺃﺑﻄﺄ ﻣﻦ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﱵ ﺗﺴﺘﺨﺪﻡ ﻣﺴﺠﻠﲔ ﻭﻋﻨﻮﻧﺔ ﻓﻮﺭﻳﺔ.
ﺇﻥ ﺍﻟﻌﻨﻮﻧﺔ ﻏﲑ ﺍﳌﺒﺎﺷﺮﺓ ﻏﲑ ﻣﻘﻴﺪﺓ ﰲ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳌﺴﺠﻼﺕ ﻓﻘﻂ ،ﺇﺫ ﻳﻮﺟﺪ ﺃﻳﻀﹰﺎ ﻋﻨﻮﻧﺔ ﻏﲑ ﻣﺒﺎﺷﺮﺓ
ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﺍﻟﺬﺍﻛﺮﺓ ،ﻭﰲ ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﻳﺘﻢ ﺍﻟﺮﺟﻮﻉ ﺇﱃ ﺍﳌﻮﻗﻊ ﺍﻟﺬﺍﻛﺮﻱ ﺍﻟﺬﻱ ﺳﻴﺤﺘﻮﻱ ﻋﻠﻰ ﻋﻨﻮﺍﻥ
ﺍﳌﻌﻄﻴﺎﺕ ﻭﻟﻴﺲ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻄﻠﻮﺑﺔ .ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻌﻨﻮﻧﺔ ﺳﻴﺰﺩﺍﺩ ﺯﻣﻦ ﺍﻟﺘﻨﻔﻴﺬ ﻷﻧﻪ
ﻣﻦ ﺍﻟﻮﺍﺟﺐ ﺍﻟﺪﺧﻮﻝ ﻟﻠﺬﺍﻛﺮﺓ RAMﻣﺮﺗﲔ ،ﻣﺮﺓ ﳉﻠﺐ ﻋﻨﻮﺍﻥ ﺍﳌﻌﺎﻣﻞ ﻭﺍﳌﺮﺓ ﺍﻷﺧﺮﻯ ﳉﻠﺐ
ﺍﳌﻌﻄﻴﺎﺕ ﻣﻦ ﻫﺬﺍ ﺍﻟﻌﻨﻮﺍﻥ.
ﺳﻨﻮﺿﺢ ﻛﻴﻔﻴﺔ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻨﻮﻧﺔ ﻏﲑ ﺍﳌﺒﺎﺷﺮﺓ ﻣﻦ ﺧﻼﻝ ﺍﳌﺜﺎﻝ ﺍﳌﺒﲔ ﰲ ﺍﻟﺸﻜﻞ ) (4-2ﻭﺍﻟﺬﻱ ﻳﺒﲔ
ﻭﺿﻌﻴﺔ ﺍﻟﺬﺍﻛﺮﺓ ﺧﻼﻝ ﺛﻼﺙ ﻓﺘﺮﺍﺕ ﺯﻣﻨﻴﺔ ﻣﺘﻼﺣﻘﺔ .t ،t ،tﻻﺣﻆ ﺑﺄﻥ ﺍﻟﱪﻧﺎﻣﺞ ) +ﺍﳌﻌﻄﻴﺎﺕ(
3 2 1
Pﺃﻋﻴﺪ ﺗﻮﺿﻴﻌﻬﺎ ﺩﻳﻨﺎﻣﻴﻜﻴﹰﺎ ﺑﺪﺀﹰﺍ ﻣﻦ ﺍﻟﻌﻨﺎﻭﻳﻦ 1500 ،9000 ،1000ﻋﻠﻰ ﺍﻟﺘﺘﺎﱄ ﻭﻫﺬﺍ ﳝﻜﻦ ﺃﻥ
ﳛﺪﺙ ﻛﻨﺘﻴﺠﺔ ﻟﻠﻌﺪﻳﺪ ﻣﻦ ﺍﻷﺳﺒﺎﺏ .ﻋﻨﺪ ﺇﻋﺎﺩﺓ ﲢﻤﻴﻞ Pﻓﺈﻥ ﻋﻨﻮﺍﻥ ﺍﻟﻘﺎﻋﺪﺓ ﺳﻮﻑ ﳛﻔﻆ
ﺍﻟﺘﻐﻴﲑﺍﺕ .ﻭﰲ ﺍﻟﺸﻜﻞ ﺍﻟﺴﺎﺑﻖ ﰎ ﺍﺧﺘﻴﺎﺭ ﺍﻟﻌﻨﻮﺍﻥ 2000ﲝﻴﺚ ﺃﻥ ﻋﻨﻮﺍﻥ ﺍﻟﻘﺎﻋﺪﺓ ﺍﳌﺘﻐﲑ ﺩﻳﻨﺎﻣﻴﻜﻴﹰﺎ
ﳝﻜﻦ ﲢﻤﻴﻠﻪ ﻣﻦ ﻗﺒﻞ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ .ﻳﺴﺘﻄﻴﻊ ﺍﳌﱪﻣﺞ ﻣﻦ ﺧﻼﻝ ﺍﻟﻌﻨﻮﻧﺔ ﻏﲑ ﺍﳌﺒﺎﺷﺮﺓ ﲢﻤﻴﻞ ﻋﻨﻮﺍﻥ
ﺍﻟﻘﺎﻋﺪﺓ ﺍﳊﺎﱄ ﰲ ﺍﳌﺴﺠﻞ BXﻣﻦ ﺧﻼﻝ ﺍﻟﺘﻌﻠﻴﻤﺔ ] .MOV BX, [2000ﻻﺣﻆ ﺑﺄﻧﻪ ﻻ ﺗﻮﺟﺪ
ﻣﺸﻜﻠﺔ ﻋﻨﺪ ﻣﻜﺎﻥ ﻭﺟﻮﺩ Pﺣﻴﺚ ﺃﻧﻪ ﺳﻴﺘﻢ ﲢﻤﻴﻞ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﻘﺎﻋﺪﻱ ﰲ ﺍﳌﺴﺠﻞ BXﻣﻦ ﺧﻼﻝ
ﻫﺬﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻭﻳﻜﻮﻥ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻗﺎﺩﺭﹰﺍ ﻋﻠﻰ ﺍﺳﺘﺒﺪﺍﻝ ﺍﻟﻌﻨﻮﺍﻥ 2000ﺑﺎﻟﻌﻨﻮﺍﻥ ﺍﻟﻘﺎﻋﺪﻱ ﺍﳊﺎﱄ.
ﺇﻥ ﻋﻤﻠﻴﺔ ﺇﻋﺎﺩﺓ ﺍﻟﺘﻮﺿﻴﻊ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ﻟﻠﱪﻧﺎﻣﺞ Pﻻ ﺗﻐﲑ ﺍﻟﺘﻌﻠﻴﻤﺔ ،MOVﻭﳍﺬﺍ ﺍﻟﺴﺒﺐ ﺣﺎﳌﺎ ﻳﺘﻢ
ﲡﻤﻴﻊ ﺍﻟﱪﻧﺎﻣﺞ ﺍﻟﺬﻱ ﳛﺘﻮﻱ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻓﺈﻧﻪ ﻣﻦ ﻏﲑ ﺍﳌﻄﻠﻮﺏ ﺇﻋﺎﺩﺓ ﲡﻤﻴﻌﻪ .ﻟﻘﺪ ﰎ ﰲ ﻫﺬﺍ
ﺍﳌﺜﺎﻝ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﺬﺍﻛﺮﻳﺔ ﻏﲑ ﺍﳌﺒﺎﺷﺮﺓ .ﺳﻴﻜﻮﻥ ﻣﻦ ﺍﳌﺴﺘﺤﺴﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺴﺠﻠﻴﺔ
ﻏﲑ ﺍﳌﺒﺎﺷﺮﺓ ﻭﺫﻟﻚ ﻋﻨﺪ ﺗﻮﻓﺮ ﻋﺪﺩ ﻛﺎﻑ ﻣﻦ ﺍﳌﺴﺠﻼﺕ ﰲ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ.
اﻟﻔﺼﻞ اﻟﺮاﺑﻊ 74
ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺮﻣﺰ * ﻫﻮ ﻋﻨﻮﺍﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ) JE Equalﺍﻟﺴﻄﺮ (8ﻓﺈﻥ +10) *+10ﺇﺫﺍ ﺍﻓﺘﺮﺿﻨﺎ ﺃﻥ ﻛﻞ ﻣﻦ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﳋﻤﺲ ﺍﻟﺘﺎﻟﻴﺔ ﺑﻄﻮﻝ 2ﺑﺎﻳﺖ( ﺳﻴﻌﻄﻲ ﻋﻨﻮﺍﻥ ﺍﻟﻼﻓﺘﺔ Equalﰲ ﺍﻟﺴﻄﺮ ﺭﻗﻢ .13ﺇﻥ
ﺍﻟﻘﻴﻤﺔ ﺍﻟﺮﻗﻤﻴﺔ ﻟﻠﺮﻣﺰ * ﻫﻲ ﻧﻔﺴﻬﺎ ﳏﺘﻮﻳﺎﺕ ﻋﺪﺍﺩ ﺍﻟﱪﻧﺎﻣﺞ PCﻋﻨﺪ ﺍﻟﻮﺻﻮﻝ ﳍﺬﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ.
ﻭﺑﺸﻜﻞ ﻣﺸﺎﺑﻪ ﻟﻜﻲ ﳓﺼﻞ ﻋﻠﻰ ﻋﻨﻮﺍﻥ ﺍﻟﻼﻓﺘﺔ ) nextﰲ ﺍﻟﺴﻄﺮ ﺭﻗﻢ (16ﻣﻦ ﺗﻌﻠﻴﻤﺔ JMP Next
)ﰲ ﺍﻟﺴﻄﺮ (12ﻓﻨﺤﻦ ﲝﺎﺟﺔ ﺇﱃ *+8ﻭﺫﻟﻚ ﺑﻔﺮﺽ ﺃﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻷﺭﺑﻊ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﱵ ﺗﺘﺒﻊ ﺍﻟﺴﻄﺮ 12
ﺑﻄﻮﻝ 2ﺑﺎﻳﺖ .ﻫﻨﺎﻙ ﺗﻌﻠﻴﻤﺎﺕ ﳏﺪﺩﺓ ﰲ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻟﻠﻤﻌﺎﳉﺎﺕ 80×86ﻭﻫﻲ ﻟﻴﺴﺖ ﺑﻄﻮﻝ 2
ﺑﺎﻳﺖ .ﺳﻮﻑ ﻳﺴﺘﺨﺪﻡ ﺍﻤﻊ ﺍﻟﻄﻮﻝ ﺍﻟﺼﺤﻴﺢ ﻟﻜﻞ ﺗﻌﻠﻴﻤﺔ ﻭﺫﻟﻚ ﳊﺴﺎﺏ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﻨﺴﱯ .ﳝﻜﻦ
ﻟﻠﻌﻨﻮﻧﺔ ﺍﻟﻨﺴﺒﻴﺔ ﺃﻥ ﺗﻜﻮﻥ ﺗﻔﺮﻳﻌﹰﺎ ﻟﻸﻣﺎﻡ ) + (positiveﻭﻗﺪ ﺗﻜﻮﻥ ﺗﻔﺮﻳﻌﹰﺎ ﻟﻠﺨﻠﻒ ) .- (negativeﺇﻥ
ﻻﻓﺘﺔ ﺍﻟﻌﻨﻮﻧﺔ firstcharﺍﳌﺸﺎﺭ ﺇﻟﻴﻬﺎ ﰲ ﺗﻌﻠﻴﻤﺔ loopﰲ ﺍﻟﺴﻄﺮ 16ﺗﻮﺟﺪ ﰲ ﺍﻟﺴﻄﺮ ﺭﻗﻢ 2ﻭﰲ
ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﺳﻴﻜﻮﻥ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﻨﺴﱯ .-28ﻭﻫﻜﺬﺍ ﻓﺈﻥ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻨﺴﺒﻴﺔ ﺍﻟﻼﺯﻣﺔ ﻟﻠﻮﺻﻮﻝ ﺇﱃ ﻫﺬﻩ
ﺍﻟﻼﻓﺘﺔ ﻻﺑﺪ ﺃﻥ ﺗﻜﻮﻥ ﻋﺪﺩﹰﺍ ﺻﺤﻴﺤﹰﺎ ﳝﻜﻦ ﺃﻥ ﻳﺄﺧﺬ ﻗﻴﻤﺔ ﻣﻮﺟﺒﺔ ﺃﻭ ﺳﺎﻟﺒﺔ ،ﻭﻫﺬﺍ ﺍﻟﺜﺎﺑﺖ ﳜﺰﻥ
ﻛﺠﺰﺀ ﻣﻦ ﺗﻌﻠﻴﻤﺔ ﺍﻟﺘﻔﺮﻳﻊ.
ﻳﺴﺘﺨﺪﻡ ﰲ ﻋﺎﺋﻠﺔ ﺍﳌﻌﺎﳉﺎﺕ 80×86ﲦﺎﻧﻴﺔ ﺑﺘﺎﺕ ﻟﺘﺨﺰﻳﻦ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﻨﺴﱯ ،ﻓﻌﻨﺪ ﻣﻌﺎﻣﻠﺘﻬﺎ ﻋﻠﻰ ﺃﺎ
ﻻ ﻣﻦ -128 ﻋﺪﺩ ﺑﺈﺷﺎﺭﺓ ﻣﻦ ﺧﻼﻝ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳌﺘﻤﻢ ﺍﻟﺜﻨﺎﺋﻲ ﻓﺈﻥ ﻫﺬﻩ ﺍﻟﺒﺘﺎﺕ ﺍﻟﺜﻤﺎﻥ ﺳﺘﻀﻢ ﳎﺎ ﹰ
ﻭ .+127ﻭﻧﺆﻛﺪ ﻫﻨﺎ ﺃﻥ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺮﻗﻤﻴﺔ ﻟﻠﻌﻨﻮﺍﻥ ﺍﻟﻨﺴﱯ ﻻ ﲢﺴﺐ ﻣﻦ ﻗﺒﻞ ﺍﳌﱪﻣﺞ ﻭﺇﳕﺎ ﻣﻦ ﻗﺒﻞ
ﺑﺮﻧﺎﻣﺞ ﺍﻤﻊ ﺣﻴﺚ ﻳﻨﺒﻐﻲ ﻋﻠﻰ ﺍﳌﱪﻣﺞ ﺃﻥ ﻳﺸﲑ ﻓﻘﻂ ﺇﱃ ﻣﺪﻯ ﺑﻌﺪ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﱵ ﺳﻴﺘﻢ ﺍﻟﻘﻔﺰ ﺇﻟﻴﻬﺎ
ﻋﻦ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﳊﺎﻟﻴﺔ .ﻓﻌﻨﺪﻣﺎ ﺗﻘﻊ ﺍﻟﻌﻨﺎﻭﻳﻦ ﺍﻟﻔﺮﻋﻴﺔ ﺿﻤﻦ ﺍﺎﻝ ) (PC-value-128ﺇﱃ )(PC-value+127
ﻓﺈﺎ ﺗﺴﻤﻰ ﻻﻓﺘﺔ ﻗﺼﲑﺓ ،SHORTﻭﺍﻟﺘﻘﻠﻴﺪ ﺍﳌﺴﺘﺨﺪﻡ ﻣﻦ ﻗﺒﻞ ﳎﻤﻌﺎﺕ ﺷﺮﻛﺔ ﻣﺎﻳﻜﺮﻭﺳﻮﻓﺖ
ﻟﻠﺪﻻﻟﺔ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﺘﻔﺮﻳﻎ ﻳﺄﺧﺬ ﺍﻟﺸﻜﻞ ﺍﻟﺘﺎﱄ:
;JMP SHORT label
ﻋﻨﺪﻣﺎ ﻻ ﺗﺬﻛﺮ SHORTﻓﺈﻧﻪ ﻳﺘﻢ ﺍﻋﺘﺒﺎﺭ ﺍﻟﻼﻓﺘﺔ labelﻗﺼﲑﺓ .ﺃﻣﺎ ﺍﻟﺼﻔﺎﺕ ﺍﻷﺧﺮﻯ ﺍﳌﻤﻜﻨﺔ
ﻟﻼﻓﺘﺔ ﻫﻲ NEAR PTRﻭ FAR PTRﻭﺍﻟﱵ ﺳﺘﺘﻢ ﻣﻨﺎﻗﺸﺘﻬﺎ ﻻﺣﻘﹰﺎ ﰲ ﻫﺬﺍ ﺍﻟﻜﺘﺎﺏ.
.data
temp DB ' '
eql DB ''Equal', '$ ;
noteql DB ''Not-Equal', '$ ;
.code
1 MOV CX 3h ; To DO 3 times
2 firstchar: MOV AH, 01h ; code for Read
3 INT 21h ; First Byte
4 MOV temp, AL ; save in temp
5 MOV AH, 01h ;
6 INT 21h ; For second byte
اﻟﻔﺼﻞ اﻟﺮاﺑﻊ 76
ﻼ ﺑﺸﻜﻞ ﺩﺍﺋﻢ ﻣﻦ ﻻ ﻳﻮﺟﺪ ﰲ ﺍﳊﻮﺍﺳﺐ 80×86ﻋﺪﺩ ﻛﺎﻑ ﻣﻦ ﺍﳌﺴﺠﻼﺕ ﻟﻜﻲ ﳔﺼﺺ ﻣﺴﺠ ﹰ
ﺃﺟﻞ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻘﺎﻋﺪﻳﺔ ،ﻭﻋﻠﻰ ﻛﻞ ﺣﺎﻝ ،ﻓﺈﻥ ﻃﻮﻝ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﰲ ﺍﳌﻌﺎﳉﺎﺕ 80×86ﺳﻴﺒﻘﻰ ﺻﻐﲑﹰﺍ
ﻃﺎﳌﺎ ﺃﺎ ﱂ ﺗﺴﺘﺨﺪﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻘﺎﻋﺪﻳﺔ ﻣﻊ ﻛﻞ ﺗﻌﻠﻴﻤﺔ .ﻓﺨﻼﻝ ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻣﺼﻔﻮﻓﺔ ﺑﺒﻌﺪﻳﻦ ﻳﺘﻢ
ﺍﺳﺘﺨﺪﺍﻡ ﻣﺴﺠﻞ ﺍﻟﻘﺎﻋﺪﺓ ﻣﻦ ﺃﺟﻞ ﻋﻤﻠﻴﺔ ﺍﻟﻔﻬﺮﺳﺔ ،ﻭﻫﺬﺍ ﻣﺒﲔ ﰲ ﺍﻟﺸﻜﻞ ) (4-4ﺣﻴﺚ ﰎ ﺗﻌﺮﻳﻒ
ﻣﺼﻔﻮﻓﺔ ﺑﺜﻼﺛﺔ ﺃﺳﻄﺮ ﻭﺃﺭﺑﻌﺔ ﺃﻋﻤﺪﺓ ﻭﺍﲰﻴﻨﺎﻫﺎ .milesﻭﻟﻠﺘﻮﺿﻴﺢ ﻓﻘﻂ ﺍﻓﺘﺮﺿﻨﺎ ﺃﻥ ﺍﻟﻌﻨﻮﺍﻥ
ﺍﻟﻘﺎﻋﺪﻱ ﻟﻠﻤﺼﻔﻮﻓﺔ milesﻫﻮ 200ﻭﺃﻥ ﻛﻞ ﻋﻨﺼﺮ ﰲ ﺍﳌﺼﻔﻮﻓﺔ ﻳﺸﻐﻞ ﺑﺎﻳﺘﹰﺎ ﻭﺍﺣﺪﹰﺍ ﰲ ﺍﻟﺬﺍﻛﺮﺓ .RAM
Address 200 201 202 203 204 205 206 207 208 209 210 211
miles 18 28 38 48 16 26 36 46 14 14 34 44
ﺍﻧﻈﺮ ﺇﱃ ﺍﻟﺴﻄﺮ ﺭﻗﻢ 4ﰲ ﺍﻟﺸﻜﻞ ) ،(4-5ﻓﻤﻦ ﺧﻼﻝ ﻭﺿﻊ ﺍﻟﻘﻴﻤﺔ ) 4ﻋﺪﺩ ﺃﻋﻤﺪﺓ ﺍﳌﺼﻔﻮﻓﺔ( ﰲ
ﺍﳌﺴﺠﻞ BXﳓﺼﻞ ﻋﻠﻰ ﻋﻨﻮﺍﻥ ﻓﻌﺎﻝ ﻣﻦ ﺧﻼﻝ ﺍﻟﺘﻌﺒﲑ ] miles [2*BXﻣﺸﲑﹰﺍ ﺇﱃ ﺍﻟﻌﻨﺼﺮ ﺍﻷﻭﻝ ﻣﻦ
ﺍﻟﺴﻄﺮ ﺍﻟﺜﺎﻟﺚ ﻟﻠﻤﺼﻔﻮﻓﺔ milesﻭﺍﳌﺴﺎﻭﻱ ﺇﱃ .208ﳛﺘﻮﻱ ﻣﺴﺠﻞ ﺍﻟﺪﻟﻴﻞ ﻋﻠﻰ ﺍﻟﻘﻴﻤﺔ 3ﻛﻤﺎ ﻫﻮ
ﻣﺒﲔ ﰲ ﺍﻟﺴﻄﺮ .5
1 miles DB 18, 28, 38, 48 ; row -1
2 DB 16, 26, 36, 46 ; row -2
3 DB 14, 24, 34, 44 ; row -3
.
.
.
MOV ;
4 MOV BX, 4 ;
5 MOV SI, 3 ;
6 MOV AL, miles ;][2*BX+SI
.
.
.
ﻳﺘﻢ ﰲ ﺍﻟﺴﻄﺮ ﺭﻗﻢ 6ﺩﻣﺞ ﻛﻞ ﻣﻦ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﺪﻟﻴﻠﻴﺔ ﻭﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻘﺎﻋﺪﻳﺔ ﻣﻊ ﺑﻌﻀﻬﺎ ﻛﻘﻴﻤﺔ ﺇﺯﺍﺣﺔ
ﺍﻋﺘﺒﺎﺭﹰﺍ ﻣﻦ ﺍﻟﻌﻨﻮﺍﻥ ،200ﻟﻴﺼﺒﺢ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﻔﻌﺎﻝ 208+3ﻭﺍﳌﺴﺎﻭﻱ ﺇﱃ .211ﺗﺬﻛﺮ ﺃﻥ ﺍﻟﺮﻣﺰ miles
ﻳﻘﺎﺑﻞ ﺍﻟﻘﻴﻤﺔ 200ﺍﻟﱵ ﻫﻲ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﻘﺎﻋﺪﻱ ﻟﻠﻤﺼﻔﻮﻓﺔ.
اﻟﻔﺼﻞ اﻟﺮاﺑﻊ 78
ﻟﻠﻮﺻﻮﻝ ﺇﱃ ﺍﻟﻌﻨﺼﺮ ) (i, jﰲ ﻫﺬﻩ ﺍﳌﺼﻔﻮﻓﺔ ،ﺃﻱ ﺍﻟﻌﻨﺼﺮ ﺍﳌﻮﺟﻮﺩ ﰲ ﺍﻟﺴﻄﺮ ﺭﻗﻢ iﻭﺍﻟﻌﻤﻮﺩ ﺭﻗﻢ ،j
ﻧﺴﺘﺨﺪﻡ ﺍﻟﻌﺒﺎﺭﺓ ])miles [200+(i-1)*4+(j-1
211 ﻳﺸﲑ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﻔﻌﺎﻝ ﻟﻠﻤﺜﺎﻝ ﺍﳌﺬﻛﻮﺭ ﺳﺎﺑﻘﹰﺎ ﺇﱃ ﺍﻟﻌﻨﺼﺮ ﺍﻟﺮﺍﺑﻊ ﰲ ﺍﻟﺴﻄﺮ ﺍﻟﺜﺎﻟﺚ ،ﺃﻱ ﺍﳌﻮﻗﻊ
ﻣﻦ ﺍﻟﺬﺍﻛﺮﺓ ﻭﺍﳊﺎﻭﻱ ﻋﻠﻰ ﺍﻟﻘﻴﻤﺔ .44ﻓﻤﻦ ﺧﻼﻝ ﺯﻳﺎﺩﺓ BXﺑﺄﺭﺑﻌﺔ 4ﰲ ﻛﻞ ﻣﺮﺓ ﻧﺴﺘﻄﻴﻊ ﺍﺧﺘﻴﺎﺭ
ﺃﺳﻄﺮ ﳐﺘﻠﻔﺔ ،ﻭﻣﻦ ﺧﻼﻝ ﺯﻳﺎﺩﺓ SIﺑﻮﺍﺣﺪ 1ﻧﺴﺘﻄﻴﻊ ﺍﺧﺘﻴﺎﺭ ﻋﻤﻮﺩ ﰲ ﺍﻟﺴﻄﺮ ﺍﳌﺨﺘﺎﺭ .ﻭﻫﻜﺬﺍ
ﻓﺈﻥ ﺍﻟﻌﻨﻮﻧﺔ ﺫﺍﺕ ﺍﻟﺒﻌﺪﻳﻦ ﻷﺳﻄﺮ ﻭﺃﻋﻤﺪﺓ ﺍﳌﺼﻔﻮﻓﺔ milesﻗﺪ ﺣﻮﻟﺘﻬﺎ ﺇﱃ ﳎﺎﻝ ﻋﻨﺎﻭﻳﻦ ﺧﻄﻲ ﰲ
ﺍﻟﺬﺍﻛﺮﺓ .RAM
ﺳﻨﻮﺿﺢ ﺍﻵﻥ ﻣﻦ ﺧﻼﻝ ﺑﺮﻧﺎﻣﺞ ﺁﺧﺮ ﻋﻤﻠﻴﺔ ﺍﻟﻔﻬﺮﺳﺔ ﺑﺒﻌﺪ ﻭﺍﺣﺪ.
.RAM ﻣﺴﺄﻟﺔ :ﻣﺼﻔﻮﻓﺔ ﺍﲰﻬﺎ seqﺑﺴﺒﻌﺔ ﻋﻨﺎﺻﺮ ﻛﻞ ﻣﻨﻬﺎ ﺑﻄﻮﻝ ﺑﺎﻳﺖ ﻭﺍﺣﺪ ﳐﺰﻧﺔ ﰲ ﺍﻟﺬﺍﻛﺮﺓ
ﳚﺐ ﻋﻠﻰ ﺍﻟﱪﻧﺎﻣﺞ ﺃﻥ ﻳﻔﺤﺺ ﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﻫﺬﻩ ﺍﳌﺼﻔﻮﻓﺔ ﻣﺮﺗﺒﺔ ﺣﺴﺐ ﺍﳊﺮﻭﻑ ﺍﻷﲜﺪﻳﺔ ،ﻓﺈﺫﺍ
ﻛﺎﻧﺖ ﻣﺮﺗﺒﺔ ﻳﻌﺮﺽ ﺍﳊﺮﻑ (true) Tﻭﺇﻻ ﻓﺈﻧﻪ ﺳﻴﻌﺮﺽ .(false) Fﺳﻨﺴﺘﺨﺪﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﺪﻟﻴﻠﻴﺔ
)ﺍﻟﻔﻬﺮﺳﺔ( ﳊﻞ ﻫﺬﻩ ﺍﳌﺴﺄﻟﺔ .ﺗﺬﻛﺮ ﺃﻥ ﺷﻴﻔﺮﺓ ﺍﻷﺳﻜﻲ ﻟﻠﺤﺮﻭﻑ ﻣﻦ Aﻭﰲ Zﻣﺮﺗﺒﺔ ﺗﺼﺎﻋﺪﻳﺎﹰ،
ﻭﺍﻟﱪﻧﺎﻣﺞ ﺍﻟﺬﻱ ﻳﻘﻮﻡ ﺬﺍ ﻣﻌﻄﻰ ﰲ ﺍﻟﺸﻜﻞ ).(4-6
.data
seq DB ; ''ADEPSWZ
.code
MOV CX, 6 ; Loop count (n-1) where n
; is the array size
MOV SI, 0 ; initialize index to 0
next: MOV AL, ; ]seq [SI load ith value of seq in AL
MOV BL, ;]seq [SI+1 load (i+1) value of seq in BL
CMP AL, BL ; compare characters
JG notseq ; JG is jump if greater
INC SI
LOOP, next ; LOOP back to check next
; element
MOV AH, 2 ; code for display
MOV DL, ''T ; T for True
INT 21h ; Display T
INT 20h ; Halt execution
notseq:MOV AH, 2 ;
MOV DL, ''F ; F for false
INT 21h ; Display F
INT 20h ; Halt execution
ﺗﺼﻤﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ
ﻗﺒﻞ ﻛﺘﺎﺑﺔ ﺍﻟﱪﻧﺎﻣﺞ ﻻﺑﺪ ﻣﻦ ﲢﻠﻴﻞ ﺍﳌﺸﻜﻠﺔ ،ﻭﺗﺼﻤﻴﻢ ﺍﳋﻮﺍﺭﺯﻣﻴﺔ ﻭﺑﻌﺪﺋ ٍﺬ ﺍﻟﺘﺨﻄﻴﻂ ﻟﻜﻴﻔﻴﺔ ﺗﻄﻮﻳﺮ
ﺷﻴﻔﺮﺓ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ .ﺇﻧﻪ ﻟﻌﻤﻞ ﺟﻴﺪ ﺃﻥ ﺗﻘﻮﻡ ﺑﺘﻮﺛﻴﻖ ﺫﻟﻚ ﺑﻮﺿﻮﺡ ،ﻭﻫﺬﻩ ﺍﻟﻮﺛﺎﺋﻖ ﳚﺐ ﺇﻋﺎﺩﺓ
ﻛﺘﺎﺑﺘﻬﺎ ﺇﺫﺍ ﻏﲑﻧﺎ ﺍﻟﺸﻴﻔﺮﺓ ﻣﺮﺓ ﺃﺧﺮﻯ.
ﺳﻨﻘﺪﻡ ﺍﻵﻥ ﻣﺜﺎ ﹰﻻ ﻳﺒﲔ ﻛﻴﻔﻴﺔ ﺗﻮﺛﻴﻖ ﺍﻟﱪﻧﺎﻣﺞ ﺍﳌﻌﻄﻰ ﺑﺎﻟﺸﻜﻞ ):(4-6
ﺗﺴﻤﻰ ﻣﺼﻔﻮﻓﺔ ﺍﳌﻌﻄﻴﺎﺕ ﺑﺎﻻﺳﻢ seqﻭﻫﻲ ﻣﺼﻔﻮﻓﺔ ﺑﺒﻌﺪ ﻭﺣﻴﺪ ﻭﲢﻮﻱ ﺳﺒﻌﺔ ﻋﻨﺎﺻﺮ ﻛﻞ ●
ﻣﻨﻬﺎ ﺑﻄﻮﻝ ﺑﺎﻳﺖ ﻭﺍﺣﺪ.
ﻧﻘﺎﺭﻥ ﺍﻟﻘﻴﻤﺔ ﺭﻗﻢ i-thﻣﻦ ﺍﳌﺼﻔﻮﻓﺔ ﻣﻊ ﺍﻟﻘﻴﻤﺔ ﺫﺍﺕ ﺍﻟﺮﻗﻢ ) (i+1ﻓﺈﺫﺍ ﻛﺎﻧﺖ ﺍﻟﻘﻴﻤﺔ ﺫﺍﺕ ﺍﻟﺮﻗﻢ ●
i-thﺃﻛﱪ ﻣﻦ ﺍﻟﻘﻴﻤﺔ ﺫﺍﺕ ﺍﻟﺮﻗﻢ ) (i+1ﻓﺈﻥ ﺍﳌﺼﻔﻮﻓﺔ ﻏﲑ ﻣﺮﺗﺒﺔ ﻭﺑﺎﻟﺘﺎﱄ ﻧﻮﻗﻒ ﺍﳊﻠﻘﺔ
ﻭﻧﻌﺮﺽ ﻛﻠﻤﺔ Falseﰒ ﻳﺘﻮﻗﻒ ﺍﻟﱪﻧﺎﻣﺞ.
ﺇﺫﺍ ﺍﻧﺘﻬﺖ ﺣﻠﻘﺔ ﺍﳌﻘﺎﺭﻧﺔ ﺑﺸﻜﻞ ﻃﺒﻴﻌﻲ ﻓﻬﺬﺍ ﻳﻌﲏ ﺃﻥ ﺍﳌﺼﻔﻮﻓﺔ ﻣﺮﺗﺒﺔ ﺑﺸﻜﻞ ﺻﺤﻴﺢ. ●
ﺇﻥ ﺗﻌﻠﻴﻤﺔ ﺍﳌﻘﺎﺭﻧﺔ CMPﺗﺴﻤﺢ ﲟﺮﺟﻌﻴﺔ ﻭﺣﻴﺪﺓ ﺇﱃ ﺍﻟﺬﺍﻛﺮﺓ RAMﻭﻟﺬﻟﻚ ﻳﺘﻢ ﻧﻘﻞ ﺍﻟﻌﻨﺼﺮ ●
ﺭﻗﻢ i-thﺇﱃ ﺍﳌﺴﺠﻞ .AL
ﻳﺘﻢ ﺗﻜﺮﺍﺭ ﺣﻠﻘﺔ ﺍﳌﻘﺎﺭﻧﺔ ) (n-1ﻣﺮﺓ ،ﺣﻴﺚ ﺃﻥ nﳝﺜﻞ ﻋﺪﺩ ﺍﻟﻌﻨﺎﺻﺮ ﰲ ﺍﳌﺼﻔﻮﻓﺔ. ●
ﻣﺒﲏ ﻋﻠﻰ ﺍﻟﺘﺼﻤﻴﻢ ﺍﳌﺬﻛﻮﺭ ﻭﻫﻮ ﻳﻮﺿﺢ ﻧﻔﺴﻪ ﺑﻨﻔﺴﻪ )ﺍﻧﻈﺮ )(4-6 ﺇﻥ ﺍﻟﱪﻧﺎﻣﺞ ﺍﳌﺒﲔ ﰲ ﺍﻟﺸﻜﻞ
ﺍﳌﻠﺤﻖ 3ﻣﻦ ﺃﺟﻞ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﻜﺎﻣﻠﺔ(.
ﻣﻠﺨﺺ 4.6
ﺟﺮﻯ ﰲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﺗﻮﺿﻴﺢ ﺃﺭﺑﻌﺔ ﺃﳕﺎﻁ ﻋﻨﻮﻧﺔ ﺃﺣﺪﻫﺎ )ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﻮﺟﻬﺔ ﺑﺎﻹﺯﺍﺣﺔ( ﳝﺜﻞ ﻧﻮﻋﹰﺎ ﻋﺎﻣﹰﺎ
ﻭﻳﻮﺿﺢ ﻧﻮﻋﲔ ﻟﻠﻌﻨﻮﻧﺔ ﳘﺎ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻘﺎﻋﺪﻳﺔ ﻭﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﺪﻟﻴﻠﻴﺔ .ﺗﻌﺘﱪ ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺒﺎﺷﺮﺓ ﻟﻠﻤﻮﺍﻗﻊ
ﺍﻟﺬﺍﻛﺮﻳﺔ ﺃﻭ ﻟﻠﻤﺴﺠﻼﺕ ﺇﺣﺪﻯ ﻃﺮﻕ ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺸﻬﻮﺭﺓ ﻭﱂ ﻧﻌﺘﱪﻫﺎ ﺇﺣﺪﻯ ﻃﺮﻕ ﺍﻟﻌﻨﻮﻧﺔ ﰲ ﻫﺬﺍ
ﺍﻟﻔﺼﻞ .ﺇﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ MOV AX, BXﻋﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ ﺗﻮﻇﻒ ﻋﻨﻮﻧﺔ ﻣﺒﺎﺷﺮﺓ ﻣﺴﺠﻠﻴﺔ ،ﻭﺍﻟﺘﻌﻠﻴﻤﺔ
MOV AX, SUMﺗﻮﻇﻒ ﻋﻨﻮﻧﺔ ﻣﺒﺎﺷﺮﺓ ﺫﺍﻛﺮﻳﺔ.
ﺗﻔﻴﺪ ﺃﳕﺎﻁ ﺍﻟﻌﻨﻮﻧﺔ ﻣﱪﻣﺞ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﰲ ﻃﺮﻕ ﻋﺪﻳﺪﺓ ،ﻓﻬﻲ ﺗﺴﺎﻋﺪ ﰲ ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻗﺎﺑﻞ ﻟﻠﻘﺮﺍﺀﺓ
ﻭﺍﻟﺼﻴﺎﻧﺔ ﺑﺴﻬﻮﻟﺔ ،ﻛﻤﺎ ﺃﺎ ﺗﺴﺎﻋﺪ ﰲ ﺍﺳﺘﺨﺪﺍﻡ ﳎﺎﻝ ﻋﻨﻮﻧﺔ ﺃﻛﱪ ﺑﺪﻭﻥ ﲢﻤﻴِﻞ ﺯﻳﺎﺩﺓ ﻛﺒﲑﺓ ﻋﻠﻰ
ﻃﻮﻝ ﺍﻟﺘﻌﻠﻴﻤﺔ .ﲢﺴﻦ ﺃﳕﺎﻁ ﺍﻟﻌﻨﻮﻧﺔ)ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻔﻮﺭﻳﺔ( ﰲ ﺑﻌﺾ ﺍﳊﺎﻻﺕ ﻣﻦ ﺯﻣﻦ ﺍﻟﺘﻨﻔﻴﺬ ﻭﺫﻟﻚ ﻋﻠﻰ
ﺣﺴﺎﺏ ﺍﳌﺮﻭﻧﺔ ،ﻭﰲ ﺃﺣﻴﺎﻥ ﺃﺧﺮﻯ )ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺒﺎﺷﺮﺓ( ﲢﺴﻦ ﻣﻦ ﺍﳌﺮﻭﻧﺔ ﻋﻠﻰ ﺣﺴﺎﺏ ﺯﻳﺎﺩﺓ ﺯﻣﻦ ﺍﻟﺘﻨﻔﻴﺬ.
اﻟﻔﺼﻞ اﻟﺮاﺑﻊ 80
ﺗﻤﺎرﻳﻦ
ﺿﻊ ﺍﻹﺟﺎﺑﺔ ﺍﻟﺼﺤﻴﺤﺔ ﰲ ﺍﻟﻔﺮﺍﻍ :
ﻳﺴﺘﺨﺪﻡ ﳕﻂ ﺍﻟﻌﻨﻮﻧﺔ ﺍﳌﺒﺎﺷﺮﺓ ﻋﻨﺪﻣﺎ 4.1
ﻋﺪﺩ ﻣﺮﺍﺕ ﺍﻟﺪﺧﻮﻝ ﺇﱃ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﻄﻠﻮﺏ ﳉﻠﺐ ﺍﳌﻌﺎﻣﻞ ﺍﻟﻔﻮﺭﻱ ﻳﺴﺎﻭﻱ.......... 4.8
● ﺧﻄﺄ ● ﺻﺢ
ﺗﺘﻄﻠﺐ ﻋﻨﻮﻧﺔ ﺍﻟﺬﺍﻛﺮﺓ ﻏﲑ ﺍﳌﺒﺎﺷﺮﺓ ..........ﺩﺧﻮ ﹰﻻ ﺇﱃ ﺍﻟﺬﺍﻛﺮﺓ ﳉﻠﺐ ﺍﳌﻌﻄﻴﺎﺕ 4.11
● ﺧﻄﺄ ● ﺻﺢ
ﻳﻌﺘﱪ ﻭﺟﻮﺩ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﺴﺠﻼﺕ ﺍﻟﺪﻟﻴﻞ ﰲ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ ﺃﻓﻀﻞ ﻣﻦ ﺃﺟﻞ ﻣﻌﺎﳉﺔ 4.26
ﺇﻥ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﺪﻟﻴﻠﻴﺔ ﺃﻭ ﺍﻟﻌﻨﻮﻧﺔ ﺍﻟﻘﺎﻋﺪﻳﺔ ﻻ ﻳﺰﻳﺪ ﻣﻦ ﺯﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﺘﻌﻠﻴﻤﺔ. 4.28
● ﺧﻄﺄ ● ﺻﺢ
ﺇﻥ ﻭﺟﻮﺩ ﻋﺪﺩ ﺃﳕﺎﻁ ﺍﻟﻌﻨﻮﻧﺔ ﰲ ﺍﳊﺎﺳﻮﺏ ﺳﻮﻑ.......... 4.29