Professional Documents
Culture Documents
المعالجات الصغرية PDF
المعالجات الصغرية PDF
اﻟ ﻌﺎﻟ ﺎت اﻟ ﻐ ﺔ
2020-2021
ﺍﻟﻔﺼل ﺍﻷﻭل :ﺍﻟﺒﻨﻴﺔ ﺍﻟﻌﺎﻤﺔ ﻟﻠﻤﻌﺎﻟﺠﺎﺕ
ﺍﻟﻤﺨﻁﻁ ﺍﻟﺼﻨﺩﻭﻗﻲ ﻟﻨﻅﺎﻡ ﻤﺒﻨﻲ ﺤﻭل ﻤﻌﺎﻟﺞ ﺼﻐﺭﻱ ﻭﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺭﺌﻴﺴﺔ ﺍﻟﺘﻲ
ﺘﺩﺨل ﻓﻲ ﺘﻜﻭﻴﻨﻪ
ﺍﻟﺘﻌﺭﻑ ﻋﻠﻰ ﻭﻅﻴﻔﺔ ﻤﺴﺭﻯ ﺍﻟﻨﻅﺎﻡ ﻭﺃﺠﺯﺍﺌﻪ ﺍﻟﺭﺌﻴﺴﺔ
ﺁﻟﻴﺔ ﻋﻤل ﻤﻌﺎﻟﺞ ﺼﻐﺭﻱ
ﻤﻌﺭﻓﺔ ﺍﻟﻔﺭﻕ ﺒﻴﻥ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻭﻟﻐﺔ ﺍﻵﻟﺔ ﻭﻜﻴﻔﻴﺔ ﺍﻟﺘﺤﻭﻴل ﺒﻴﻨﻬﻤﺎ
ﻤﻌﺭﻓﺔ ﺍﻟﻤﻜﻭﻨﺎﺕ ﺍﻟﺭﺌﻴﺴﺔ ﻟﺤﺎﺴﻭﺏ ﺸﺨﺼﻲ ﻨﻤﻭﺫﺠﻲ
ﺘﻌﺎﺭﻴﻑ
ﺃﻭ .1 0 ﺍﻟﺒﺕ :bitﺭﻗﻡ ﺍﺜﻨﺎﻨﻲ ﻴﻤﻜﻥ ﺃﻥ ﻴﺄﺨﺫ ﺃﺤﺩ ﺍﻟﻘﻴﻡ
ﺒﺘﺎﺕ. 8 ﺍﻟﺒﺎﻴﺕ :byteﻭﺤﺩ ﹸﺓ ﻤﻌﻠﻭﻤﺎﺕٍ ،ﺘﺘﺄﻟﱠ ﹸ
ﻑ ﻤﻥ
ﻑ ﺒﺎﻴﺕ ) 4ﺒﺘﹼﺎﺕ(.
ﺭﺒﺎﻋﻴﺔ :nibbleﻨﺼ ﹸ
ﺒﺎﻴﺕ ،ﺘﺒﻌﹰﺎ 4 ﺒﺎﻴﺕ ﺃﻭ 2 ﺒﺎﻴﺕ ﺃﻭ 1 ﻜﻠﻤﺔ :wordﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﺍﻟﻜﻠﻤﺔ ﺒﺤﺠﻡ
ﺒﺎﻴﺕ ﺇﻥ ﻟﻡ ﻴﺫﻜﺭ ﻏﻴﺭ ﺫﻟﻙ. 2 ﻟﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ .CPUﻭﻴﻌﺘﺒﺭ ﺤﺠﻤﻬﺎ
1
ﻜﻠﻤﺔ ﻤﺯﺩﻭﺠﺔ :double wordﻭﺤﺩ ﹲﺓ ﻤﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﻜﻭﻨ ﹲﺔ ﻤﻥ ﻜﻠﻤﺘﻴﻥ
ﺒﺎﻴﺕ ﺇﻥ ﻟﻡ ﻴﺫﻜﺭ ﻏﻴﺭ ﺫﻟﻙ. 4 ﻤﺘﻼﺼﻘﺘﻴﻥ ،ﺤﺠﻤﻬﺎ
ﺒﺎﻴﺕ(. )1024 ﺒﺎﻴﺕ 210 ﻜﻴﻠﻭﺒﺎﻴﺕ :kbyteﻭﻴﺴﺎﻭﻱ
ﺒﺎﻴﺕ(. )1,048,576 ﺒﺎﻴﺕ 220 ﻤﻴﻐﺎﺒﺎﻴﺕ :Mbyteﻭﻴﺴﺎﻭﻱ
ﺒﺎﻴﺕ. 230 ﻏﻴﻐﺎﺒﺎﻴﺕ :Gbyteﻭﻴﺴﺎﻭﻱ
ﺘﻤﻬﻴﺩ
ﺍﻋﺘﻤﺩ ﺘﺼﻤﻴﻡ ﺍﻟﻨﻅﻡ ﺍﻹﻟﻜﺘﺭﻭﻨﻴﺔ ﺍﻟﺭﻗﻤﻴﺔ ﻓﻲ ﺒﺩﺍﻴﺔ ﺍﻷﻤﺭ ﻋﻠﻰ ﺘﺠﻤﻴﻊ ﺍﻟﻌﺩﻴﺩ ﻤﻥ
ﺍﻟﺒﻭﺍﺒﺎﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ ﻭﺍﻟﺩﺍﺭﺍﺕ ﺍﻟﺘﺘﺎﺒﻌﻴﺔ ﻟﺘﺤﻘﻴﻕ ﺍﻟﻭﻅﻴﻔﺔ ﺍﻟﻤﻁﻠﻭﺒﺔ .ﻨﺫﻜﺭ ﻋﻠﻰ ﺴﺒﻴل
ﺍﻟﻤﺜﺎل ،ﻨﻅﺎﻡ ﺘﺤﻜﻡ ﺒﻌﻤل ﺍﻹﺸﺎﺭﺓ ﺍﻟﻀﻭﺌﻴﺔ )ﺇﺸﺎﺭﺍﺕ ﺍﻟﻤﺭﻭﺭ( ،ﺍﻟﺫﻱ ﻴﻤﻜﻥ ﺒﻨﺎﺅﻩ
ﺒﺴﻬﻭﻟﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ :ﻋﺩﺍﺩﺍﺕ ﻟﺘﺄﻤﻴﻥ ﺍﻷﺯﻤﻨﺔ ﺍﻟﻤﻨﺎﺴﺒﺔ ﻭﺴﺠل ﺇﺯﺍﺤﺔ ﻹﻀﺎﺀﺓ ﻟﻤﺒﺎﺕ
ﺍﻹﺸﺎﺭﺓ ﺍﻟﻀﻭﺌﻴﺔ )ﺍﻷﺤﻤﺭ ،ﺍﻟﺒﺭﺘﻘﺎﻟﻲ ،ﺍﻷﺨﻀﺭ( ﻋﻠﻰ ﻨﺤ ٍﻭ ﺘﺘﺎﺒﻌﻲ ،ﻜﻤﺎ ﻴﻤﻜﻥ
ﻟﻠﻨﻅﺎﻡ ﺇﺫﺍ ﺭﻏﺒﻨﺎ ﺇﻀﺎﻓﺔ ﺇﻤﻜﺎﻥ ﻤﻘﺎﻁﻌﺔ ﺘﺘﺎﺒﻊ ﻋﻤل ﺍﻹﺸﺎﺭﺓ D ﺇﻀﺎﻓﺔ ﻗﻼﺏ
ﺍﻟﻀﻭﺌﻴﺔ ﻤﻥ ﻗﺒل ﺍﻟﻤﺸﺎﺓ ﺍﻟﺫﻴﻥ ﻴﺭﻏﺒﻭﻥ ﺒﻌﺒﻭﺭ ﺍﻟﺸﺎﺭﻉ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﺯﺭ
ﻤﻨﺎﺴﺏ.
ﻟﻡ ﺘﻌﺩ ﻁﺭﻴﻘﺔ ﺘﺼﻤﻴﻡ ﺍﻟﻨﻅﻡ ﺍﻟﺭﻗﻤﻴﺔ ﺍﻟﺴﺎﺒﻘﺔ ﺘﻨﺎﺴﺏ ﺒﻨﺎﺀ ﺍﻟﻨﻅﻡ ﺍﻟﺘﺤﻜﻤﻴﺔ ﺍﻟﺭﻗﻤﻴﺔ
ﻼ ﻴﺤﺘﺎﺝ ﺍﻟﻨﻅﺎﻡ ﺍﻹﻟﻜﺘﺭﻭﻨﻲ ﻓﻲ ﺍﻟﺴﻴﺎﺭﺍﺕ
ﺍﻟﺤﺎﻟﻴﺔ ﺍﻟﺘﻲ ﺃﺼﺒﺤﺕ ﺃﻜﺜﺭ ﺘﻌﻘﻴﺩﹰﺍ .ﻓﻤﺜ ﹰ
ﺍﻟﺤﺩﻴﺜﺔ ﺇﻟﻰ ﻗﻴﺎﺱ ﻭﻤﺭﺍﻗﺒﺔ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﻤﻘﺎﺩﻴﺭ ﺍﻟﺘﻤﺎﺜﻠﻴﺔ ﻤﺜل :ﺴﺭﻋﺔ ﺍﻟﻤﺤﺭﻙ
ﻭﺩﺭﺠﺔ ﺤﺭﺍﺭﺓ ﺴﺎﺌل ﺍﻟﺘﺒﺭﻴﺩ .ﺇﻀﺎﻓﺔ ﺇﻟﻰ ﺍﻟﺘﺤﻜﻡ ﺍﻟﺭﻗﻤﻲ ﺒﺎﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﻨﻅﻡ ،ﻤﺜل:
ﺍﻟﺘﺤﻜﻡ ﺒﺄﺯﻤﻨﺔ ﺇﺼﺩﺍﺭ ﺍﻟﺸﺭﺍﺭﺓ ﺍﻟﻜﻬﺭﺒﺎﺌﻴﺔ ﻭﺍﻟﺘﺤﻜﻡ ﺒﺩﻭﺭﺍﻥ ﺍﻟﺴﺎﺌل ﻓﻲ ﺍﻟﻤﺸﻊ.
2
ﻴﺯﺩﺍﺩ ﺍﻟﻨﻅﺎﻡ ﺍﻟﺘﺤﻜﻤﻲ ﺘﻌﻘﻴﺩﹰﺍ ﺇﺫﺍ ﻜﺎﻥ ﻋﻠﻴﻪ ﺇﺠﺭﺍﺀ ﺤﺴﺎﺒﺎﺕ ﻭﺍﺘﺨﺎﺫ ﻗﺭﺍﺭﺍﺕ ﻋﻠﻰ
ﻨﺤﻭ ﻤﺴﺘﻤﺭ .ﺇﻥ ﺍﻟﺤل ﺍﻷﻤﺜل ،ﺒﻼ ﺸﻙ ،ﻟﺒﻨﺎﺀ ﻫﻜﺫﺍ ﻨﻅﺎﻡ ﺘﺤﻜﻡ ﺍﻟﻴﻭﻡ ،ﻫﻭ
ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺼﻐﺭﻴﺔ ) .Microprocessors (µpﻤﻥ ﺍﻟﺠﺩﻴﺭ ﺒﺎﻟﺫﻜﺭ ،ﺃﻥ
ﻤﻌﺎﻟﺞ ﺼﻐﺭﻱ ،ﺒﻴﻨﻤﺎ ﺘﺤﺘﻭﻱ ﺴﻴﺎﺭﺓ 15 ﺍﻟﺴﻴﺎﺭﺓ ﺍﻟﻌﺎﺩﻴﺔ ﺘﺤﺘﻭﻱ ﺍﻟﻴﻭﻡ ﺃﻜﺜﺭ ﻤﻥ
ﻤﻌﺎﻟﺞ ﺼﻐﺭﻱ. 65 ﺃﻭ ﻤﺭﺴﻴﺩﺱ ﺃﻜﺜﺭ ﻤﻥ BMW ﻤﻥ ﻨﻭﻉ
ﺃﺼﺒﺢ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺼﻐﺭﻱ ﺍﻟﻴﻭﻡ ﺍﻟﻠﺒﻨﺔ ﺍﻷﺴﺎﺴﻴﺔ ﻓﻲ ﺒﻨﺎﺀ ﺃﻱ ﻨﻅﺎﻡ ﺭﻗﻤﻲ ﻴﺤﺘﺎﺝ
ﺇﻟﻰ ﺇﺠﺭﺍﺀ ﺤﺴﺎﺒﺎﺕ ،ﻭﺍﺘﺨﺎﺫ ﻗﺭﺍﺭ ﺍﻋﺘﻤﺎﺩﹰﺍ ﻋﻠﻰ ﻤﺭﺍﻗﺒﺔ ﺃﺤﺩﺍﺙ ﺨﺎﺭﺠﻴﺔ ،ﻭﻜﺫﻟﻙ
ﺍﻻﺤﺘﻔﺎﻅ ﺒﺄﺤﺩﺍﺙ ﺴﺎﺒﻘﺔ .ﻴﺩﺨل ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺼﻐﺭﻱ ﺍﻟﻴﻭﻡ ﻓﻲ ﺒﻨﻴﺔ ﺍﻟﺤﻭﺍﺴﻴﺏ
ﺍﻟﺸﺨﺼﻴﺔ ﻭﻏﻴﺭﻫﺎ ،ﺍﻟﻬﻭﺍﺘﻑ ﺍﻟﺭﻗﻤﻴﺔ ،ﺃﻓﺭﺍﻥ ﺍﻟﻤِﻜﺭﻭﻴﻑ ،ﺍﻟﺘﻠﻔﺎﺯ ،ﺒﻁﺎﻗﺎﺕ
ﺍﻻﻋﺘﻤﺎﺩ ﻭﺍﻟﺒﻁﺎﻗﺎﺕ ﺍﻟﺫﻜﻴﺔ ،ﺃﻨﻅﻤﺔ ﺍﻟﺘﺤﻜﻡ ﻭﻨﻅﻡ ﺍﻷﺘﻤﺘﺔ ﺍﻟﺼﻨﺎﻋﻴﺔ... ،
ﺘﻌﻤل ﺍﻟﺸﺭﻜﺎﺕ ،ﻜل ﻋﺎﻡ ،ﻋﻠﻰ ﺘﺼﻤﻴﻡ ﻭﺇﻨﺘﺎﺝ ﻤﻌﺎﻟﺠﺎﺕ ﺠﺩﻴﺩﺓ ﺘﻠﺒﻲ ﺃﻜﺜﺭ ﻓﺄﻜﺜﺭ
ﺤﺎﺠﺔ ﻤﻬﻨﺩﺴﻲ ﺍﻟﺘﺼﻤﻴﻡ .ﻭﻤﻊ ﺫﻟﻙ ،ﺘﺒﻘﻰ ﺍﻟﻨﻅﺭﻴﺔ ﺍﻷﺴﺎﺴﻴﺔ ﺨﻠﻑ ﺘﻘﺎﻨﺔ
ﻋﺎﻟﻴﺔ ﺍﻟﺘﻜﺎﻤل (Integrated Circuit) IC ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻨﻔﺴﻬﺎ ،ﻓﻬﻭ ﺩﺍﺭﺓ ﺭﻗﻤﻴﺔ
ﻟﻼﺴﺘﺨﺩﺍﻡ ﺍﻟﻌﺎﻡ ،ﻴﻘﻭﺩ ﻋﻤﻠﻬﺎ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺭﻤﺠﻴﺔ ،ﻭﻴﺘﺼل ﻤﻊ
ﺍﻟﺨﺎﺭﺠﻴﺔ ﻟﺘﻨﺠﻴﺯ ﻋﻤﻠﻴﺎﺕ ﺩﺨل/ﺨﺭﺝ ﺘﺒﻌﹰﺎ ﻟﻠﻤﻬﻤﺔ chips ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﺭﻗﺎﻗﺎﺕ
ﺍﻟﻤﺤﺩﺩﺓ.
ﺃﻭ Intel ﻤﻥ 8085 ﺇﻥ ﺍﺴﺘﻁﻌﺕ ﻓﻬﻡ ﺒﻨﻴﺔ ﻭﻋﻤل ﺃﻱ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﻘﺩﻴﻤﺔ ﻤﺜل
ﻤﻥ ،Motorolaﻓﻴﻤﻜﻨﻙ ﺫﺍﺘﻴﹰﺎ ﺍﺴﺘﺩﺭﺍﻙ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ 6800 ﺃﻭ Zilog ﻤﻥ Z80
3
ﺍﻟﺒﻨﻴﺔ ﺍﻟﻌﺎﻤﺔ ﻟﻨﻅﺎﻡ ﺼﻐﺭﻱ
1
Central Processing ﻴﺸﺒﻪ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺼﻐﺭﻱ ﻓﻲ ﺒﻨﻴﺘﻪ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ
CPU ) ،Unit (CPUﻭﻟﻜﻨﻪ ﻴﺠﻤﻊ ﻜل ﺍﻟﺩﺍﺭﺍﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ ﺍﻟﺘﻲ ﺘﺘﻜﻭﻥ ﻤﻨﻬﺎ ﺍﻟـ
ﻭﺍﺤﺩﺓ. ﺃﻭ ﺩﺍﺭﺓ ﻤﺘﻜﺎﻤﻠﺔ chip ﻀﻤﻥ ﺭﻗﺎﻗﺔ
ت ﻣﻠﻴﺌ ًﺔ 1وهﻲ اﻟﺘﺠﻬﻴﺰ ُة اﻟﺘﻲ ُﺗﻔﺴﱢ ُﺮ وﺗُﻨ ﱢﻔ ُﺬ اﻟﺘﻌﻠﻴﻤﺎت .ﺗﺘﻀﻤﱠﻦ اﻟﺤﻮاﺳﻴ ُ
ﺐ اﻟﺮﺋﻴﺴ ُﺔ واﻟﺼﻐﻴﺮ ُة اﻟﻘﺪﻳﻤ ُﺔ ﻟﻮﺣﺎ ٍ
ﺑﺎﻟﺪارات اﻟﻤﺘﻜﺎﻣﻠﺔ ﺗُﻜﻮﱢن ﺑﻤﺠﻤﻠِﻬﺎ وﺣﺪ َة اﻟﻤﻌﺎﻟﺠ ِﺔ اﻟﻤﺮآﺰﻳﺔ.
4
ﻴﺤﺘﺎﺝ ﺍﻟﻤﻌﺎﻟﺞ ﻹﻨﺠﺎﺯ ﻋﻤﻠﻪ ﺩﺍﺭﺍﺕ ﺇﻀﺎﻓﻴﺔ ﺘﹸﺭﺒﻁ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ ﻋﻥ ﻁﺭﻴﻕ
ﻤﺴﺎﺭﻱ ﺍﻟﻨﻅﺎﻡ ،ﻭﻫﺫﻩ ﺍﻟﺩﺍﺭﺍﺕ ﻟﻴﺴﺕ ﺠﺯﺀﹰﺍ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻨﻔﺴﻪ ﻭﻟﻜﻨﻬﺎ ﻀﺭﻭﺭﻴﺔ
ﻟﺘﺨﺯﻴﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﻜﺫﻟﻙ ﻟﺘﻭﺍﺼل ﺍﻟﻤﻌﺎﻟﺞ ﻤﻊ ﺍﻟﻤﺤﻴﻁ
ﺍﻟﺨﺎﺭﺠﻲ .ﻴﻤﻜﻥ ﺃﻥ ﻨﻤﻴﺯ ﻤﻥ ﻫﺫﻩ ﺍﻟﺩﺍﺭﺍﺕ ،ﻋﻠﻰ ﻨﺤﻭ ﺃﺴﺎﺴﻲ ،ﺩﺍﺭﺓ ﻤﻔﻜﻙ
ﺍﻟﻌﻨﻭﻨﺔ ،ﻭﺍﻟﺫﻭﺍﻜﺭ ﻭﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ .ﺘﹸﺸﻜل ﻫﺫﻩ ﺍﻟﻤﻜﻭﻨﺎﺕ ﻤﺠﺘﻤﻌ ﹰﺔ ﻤﻊ
ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﻨﻅﺎﻡ ﺃﻭ ﻨﻅﺎﻡ ﺍﻟﻤﻌﺎﻟﺠﺔ ،microprocessor-based systemﻭﻴﺴﻤﻰ
ﺃﻴﻀﹰﺎ ﺤﺎﺴﻭﺏ ﺼﻐﺭﻱ .microcomputerﻨﻁﻠﻕ ﻋﻠﻰ ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺼﻐﺭﻱ ،ﻋﻨﺩﻤﺎ
ﻴﻜﻭﻥ ﻤﺨﺼﺼﹰﺎ ﻹﻨﺠﺎﺯ ﻤﻬﺎﻡ ﻤﺘﻨﻭﻋﺔ ﻤﻥ ﻗﺒل ﻤﺴﺘﺨﺩﻡ ﻭﺍﺤﺩ ﺍﺴﻡ ﺤﺎﺴﻭﺏ
ﺸﺨﺼﻲ .PCﻭﻤﻊ ﺘﻁﻭﺭ ﺘﻘﺎﻨﺔ ﺼﻨﺎﻋﺔ ﺍﻟﺭﻗﺎﺌﻕ ﻓﻘﺩ ﺃﺼﺒﺢ ﻤﻥ ﺍﻟﻤﻤﻜﻥ ﻭﻀﻊ
ﺠﻤﻴﻊ ﻤﻜﻭﻨﺎﺕ ﺍﻟﻨﻅﺎﻡ ﻀﻤﻥ ﺭﻗﺎﻗﺔ ﻭﺍﺤﺩﺓ ،ﻭﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﻜﺫﻟﻙ ﻨﺴﻤﻲ ﺍﻟﺤﺎﺴﻭﺏ
ﻭﻫﻭ ﻴﺴﺘﺨﺩﻡ ﻓﻲ ﻨﻅﻡ ﺍﻟﺘﺤﻜﻡ ﻤﺜل microcontroller ﺍﻟﺼﻐﺭﻱ ﻤﺘﺤﻜﻤﹰﺎ ﺼﻐﺭﻴﹰﺎ
ﺍﻹﺸﺎﺭﺓ ﺍﻟﻀﻭﺌﻴﺔ.
ﺍﻟﺫﻱ ﻴﺘﻜﻭﻥ ﻤﻥ ﻤﺠﻤﻭﻋﺔ ﺒﺘﺎﺕ ﺘﹸﺴﺘﺨﺩﻡ ﻟﺘﺨﺯﻴﻥ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺁﺨﺭ ﻋﻤﻠﻴﺔ ﻨﻔﺫﺘﻬﺎ
ﺍﻟـ .ALU
5
ﻼ
ﻋﻠﻰ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﻤﻜﻭﻨﺎﺕ ﻟﻜل ﻤﻨﻬﺎ ﻭﻅﻴﻔﺔ ﻤﺤﺩﺩﺓ ﺘﻘﻭﻡ ﺒﻬﺎ .ﻓﻤﺜ ﹰ ALU ﺘﺤﺘﻭﻱ
ﺘﺴﺘﺨﺩﻡ ﺍﻟﺒﻭﺍﺒﺎﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ ﻹﻨﺠﺎﺯ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺠﻤﻊ ﻭﺍﻟﻁﺭﺡ ،ﻓﻲ ﺤﻴﻥ ﻴﺴﺘﺨﺩﻡ
ﺴﺠل ﺇﺯﺍﺤﺔ ﻹﻨﺠﺎﺯ ﻋﻤﻠﻴﺎﺕ ﺍﻹﺯﺍﺤﺔ ﻨﺤﻭ ﺍﻟﻴﻤﻴﻥ ﺃﻭ ﺍﻟﻴﺴﺎﺭ.
6
ﻭﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻭﺍﺠﺏ ﺍﺴﺘﺨﺩﺍﻤﻬﺎ ﻓﻲ ﺘﻨﺠﻴﺯ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻭﻤﺎ ﺍﻟﺫﻱ ﻴﺠﺏ ﻓﻌﻠﻪ
ﺒﺎﻟﻨﺘﺎﺌﺞ.
ﺴﻴﻨﻔﺫﻫﺎ ﺍﻟﻤﻌﺎﻟﺞ.
ﺴﺠل ﺍﻟﺘﻌﻠﻴﻤﺔ ) :Instruction Register (IRﻴﺴﺘﺨﺩﻡ ﻟﻤﺴﻙ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺤﺎﻟﻴﺔ
ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ ﺒﻴﻨﻤﺎ ﻴﺠﺭﻱ ﻓﻙ ﺘﺭﻤﻴﺯﻫﺎ ﻭﺘﻨﻔﻴﺫﻫﺎ.
ﺍﻟﻤﺭﺍﻜﻡ ) Aﺃﻭ :Accumulator (ACCﻴﺴﺘﺨﺩﻡ ﻟﺤﻔﻅ ﻨﺘﻴﺠﺔ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺘﻲ
ﺘﻨﻔﺫﻫﺎ ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭﺍﻟﻤﻨﻁﻕ.
ﺴﺠل ﻋﻨﻭﺍﻥ ﺍﻟﺫﺍﻜﺭﺓ ) :Memory Address Register (MARﻴﺴﺘﺨﺩﻡ ﻟﺤﻔﻅ
ﻋﻨﻭﺍﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺘﻲ ﺴﻴﺘﻡ ﻗﺭﺍﺀﺓ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻤﻨﻬﺎ ﺃﻭ ﻜﺘﺎﺒﺘﻬﺎ ﺇﻟﻴﻬﺎ.
ﺴﺠل ﺼﻭﺍﻥ 1ﺍﻟﺫﺍﻜﺭﺓ ) :Memory Buffer Register (MBRﹸﺘﻭﻀﻊ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺃﻭ
ﻻ ﻓﻲ ﺴﺠل ﺼﻭﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻤﻥ ﺜﹸﻡ ﺘﻨﻘل ﺇﻟﻰ ﺍﻟﻤﻭﻗﻊ
ﺍﻟﻤﻌﻁﻴﺎﺕ ﺃﻭ ﹰ
ﺍﻟﻤﻨﺎﺴﺏ ،ﻋﻨﺩ ﺠﻠﺏ ﺘﻌﻠﻴﻤﺔ ﺃﻭ ﻤﻌﻁﻴﺎﺕ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ.
1ﺃﻭ ﻋﺎﺯﻝ
7
ﺴﺠل ﺍﻟﺭﺍﻴﺔ ﺃﻭ ﺍﻟﺤﺎﻟﺔ :Flag register/status flagsﻴﺘﻜﻭﻥ ﻤﻥ ﻤﺠﻤﻭﻋﺔ
ﺒﺘﺎﺕ ﺘﺘﻐﻴﺭ ﻗﻴﻤﻬﺎ ﺘﺒﻌﹰﺎ ﻟﻨﺘﻴﺠﺔ ﺁﺨﺭ ﻋﻤﻠﻴﺔ ﺘﻨﻔﺫﻫﺎ ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭﺍﻟﻤﻨﻁﻕ.
ﻤﺜل ﺍﻟﺴﺠل ،B :general purpose register ﺴﺠﻼﺕ ﻟﻼﺴﺘﺨﺩﺍﻤﺎﺕ ﺍﻟﻌﺎﻤﺔ
ﻟﻴﺱ ﻟﻬﺫﻩ ﺍﻟﺴﺠﻼﺕ ﻭﻅﻴﻔﺔ ﻤﺤﺩﺩﺓ ﻭﺘﹸﺴﺘﺨﺩﻡ ﻋﺎﺩﺓ ﻟﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘﻲ
ﻴﺤﺘﺎﺝ ﺇﻟﻴﻬﺎ ﻻﺤﻘﹰﺎ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ.
8
ﻤﺴﺭﻯ ﺍﻟﻌﻨﻭﻨﺔ :Address Busﻴﻭﻟﺩ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻹﺸﺎﺭﺍﺕ ﻋﻠﻰ ﻫﺫﺍ ﺍﻟﻤﺴﺭﻯ
ﻤﻥ ﺃﺠل ِﻋﻨﻭﻨﺔ ﻤﻭﻗﻊ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺃﻭ ﺍﺨﺘﻴﺎﺭ ﺇﺤﺩﻯ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻤﺤﻴﻁﻴﺔ
ﺍﻟﺘﻲ ﻴﻘﺭﺃ ﻤﻨﻬﺎ ﺃﻭ ﻴﻜﺘﺏ ﻓﻴﻬﺎ ﺤﺎﻟﻴﹰﺎ ﺍﻟﻤﻌﻁﻴﺎﺕ .ﻴﺤﺩﺩ ﻋﺩﺩ ﺨﻁﻭﻁ ﻤﺴﺭﻯ
ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﺴﻌﺔ ﺍﻟﻌﻅﻤﻰ ﻟﻠﺫﺍﻜﺭﺓ ﺍﻟﺘﻲ ﻴﻤﻜﻥ ﺃﻥ ﻴﻌﻨﻭﻨﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ .ﻴﺭﺴل
ﻭﻴﺤﻤل ﻜل ﺨﻁ ﺭﻗﻡ ﺍﺜﻨﺎﻨﻲ binary format ﺍﻟﻌﻨﻭﺍﻥ ﺒﺎﻟﺼﻴﺎﻏﺔ ﺍﻻﺜﻨﺎﻨﻴﺔ
ﻗﻭﺓ ﻋﺩﺩ 2 ﻭﺍﺤﺩ ،ﻟﺫﻟﻙ ﺘﺴﺎﻭﻱ ﺴﻌﺔ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﻌﻅﻤﻰ )ﻋﺩﺩ ﺍﻟﻤﻭﺍﻗﻊ(
ﺍﻟﺨﻁﻭﻁ.
ﻴﺴﺎﻭﻱ ،20ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻥ 8088/8086 ﻤﺜﺎل :ﺇﻥ ﻋﺩﺩ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ
ﻤﻴﻐﺎ 1 ﺃﻭ 220=1024576 ﺴﻌﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻌﻅﻤﻰ ﺍﻟﺘﻲ ﻴﻤﻜﻥ ﻟﻠﻤﻌﺎﻟﺞ ﻋﻨﻭﻨﺘﻬﺎ ﻫﻭ
ﻤﻭﻗﻊ.
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ:
ﻜﻴﻠﻭ ﺒﺎﻴﺕ .ﻤﺎ ﻋﺩﺩ 64 ﺒﺎﻴﺕ ﺃﻭ 65536 ﺒﻔﺭﺽ ﺃﻨﻨﺎ ﻨﺭﻴﺩ ﻋﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺤﺠﻤﻬﺎ
ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﺍﻨﺔ ﺍﻟﻼﺯﻡ ﺍﺴﺘﺨﺩﺍﻤﻬﺎ ﻟﻌﻨﻭﻨﺔ ﻜﺎﻤل ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ.
ﺍﻟﺤل :ﻋﺩﺩ ﺍﻟﺨﻁﻭﻁ ﻴﺴﺎﻭﻱ . log 2 65536 = 16
9
ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﺄﻥ ﺘﻜﺘﺏ ﺃﻜﺜﺭ ﻤﻥ ﺩﺍﺭﺓ ﻤﻌﻁﻴﺎﺕ ﻤﺨﺘﻠﻔﺔ ﻋﻠﻰ ﺍﻟﻤﺴﺭﻯ ﻨﻔﺴﻪ ﺒﺂﻥ
ﻭﺍﺤﺩ.
memory ﺍﻟﺫﺍﻜﺭﺓ
ﺘﺘﻭﻀﻊ ﺍﻟﺫﺍﻜﺭﺓ ﺒﺠﻭﺍﺭ ﺍﻟﻤﻌﺎﻟﺞ ﻭﺘﺸﻜل ﺠﺯﺀﹰﺍ ﺃﺴﺎﺴﻴﹰﺎ ﻤﻥ ﺍﻟﻨﻅﺎﻡ .ﻴﺤﺘﻭﻱ ﺍﻟﻨﻅﺎﻡ
1
ﻟﺤﻔﻅ ﺩﺍﺌﻡ ﻟﻠﻤﻌﻁﻴﺎﺕ ﺃﻭ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭ ROM ﻋﺎﺩﺓ ﻋﻠﻰ ﻨﻭﻋﻴﻥ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ:
2
ﻟﻠﺤﻔﻅ ﺍﻟﻤﺅﻗﺕ ﻟﻠﻤﻌﻁﻴﺎﺕ ﻭﺍﻟﻤﺘﺤﻭﻻﺕ ﺃﺜﻨﺎﺀ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ. RAM
1ﳐﺘﺼﺮread-only memory :؛ ﺫﺍﻛﺮﺓ ﻟﻠﻘﺮﺍﺀﺓ ﻓﻘﻂ .ﲢﺘﻮﻱ ﻋﻠﻰ ﺗﻌﻠﻴﻤﺎﺕ ﺃﻭ ﻣﻌﻄﻴﺎﺕ ﳝﻜِﻦ ﻗﺮﺍ َﺀﺗﻬﺎ ﻭﻻ
ﳝﻜِﻦ ﺗﻌﺪﻳﻠﹸﻬﺎ ،ﻟﺬﻟﻚ ﺗﺴﻤﻰ ﺃﻳﻀﹰﺎ ﺑﺎﻟﺬﺍﻛﺮﺓ ﺍﳌﻴﺘﺔ.
CPU 2ﳐﺘﺼﺮrandom access memory :؛ ﺫﺍﻛﺮﺓ ﺫﺍﺕ ﻭﺻﻮﻝ ﻋﺸﻮﺍﺋﻲ .ﺗﺴﺘﻄﻴﻊ ﻭﺣﺪ ﹸﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ
ﻱ ﺗﺮﺗﻴﺐ .ﻭﺗﺴﻤﻰ)ﺃﻭ ﺃﻱ ﻋﺘﺎﺩﻳﺎﺕ ﺃﺧﺮﻯ( ﺃﻥ ﺗﻘﺮﺃﹶﻫﺎ ﻭﺗﻜﺘﺐ ﻓﻴﻬﺎ .ﻭﳝﻜِﻦ ﺍﻟﻨﻔﺎ ﹸﺫ ﺇﱃ ﻣﻮﺍﺿ ِﻊ ﺍﻟﺘﺨﺰﻳﻦ ﻓﻴﻬﺎ ﺑﺄ
ﺃﻳﻀﹰﺎ ﺑﺎﻟﺬﺍﻛﺮﺓ ﺍﳊﻴﺔ.
ﺴﻮﻕ ﺍﻟﻘﺮﺹ ،disk driveﺃﻭ ﻃﺎﺑﻌﺔ ،ﺃﻭ ﻣﻮﺩﻡ ،ﺃﻭ ﻋﺼﺎ ﻗﻴﺎﺩﺓ (joystickﺗﺮﺑﻂﹸ
3ﺍﻟﻄﺮﻓﻴﺔ ﻫﻲ ﲡﻬﻴﺰ ﹲﺓ )ﻣﺜﻞ ِﻣ
ﰿ ﺍﻟﺼﻐﺮﻱ ﻟﻠﺤﺎﺳﻮﺏ.ﺑﺎﳊﺎﺳﻮﺏ ﻭﻳﺘﺤﻜﱠﻢ ﻓﻴﻬﺎ ﺍﳌﻌﺎ ﹸ
4ﺃﻱ ﺃﻥ ﺧﺮﺝ ﺍﻟﺪﺍﺭﺓ ﺃﻭ ﺍﻟﺮﻗﺎﻗﺔ ﻳﺴﺎﻭﻱ ﺇﻣﺎ " 0ﻣﻨﻄﻘﻲ" ﺃﻭ " 1ﻣﻨﻄﻘﻲ" ﺃﻭ ﺃﻥ ﻳﻜﻮﻥ ﰲ ﺍﳊﺎﻟﺔ ﺍﻟﻌﺎﺋﻤﺔ ﻭﻛﺄﻥ
ﺍﻟﺮﻗﺎﻗﺔ ﻏﲑ ﻣﻮﺟﻮﺩﺓ .ﳚﺐ ﺃﻥ ﲤﺘﻠﻚ ﲨﻴﻊ ﳐﺎﺭﺝ ﺍﻟﺪﺍﺭﺍﺕ ﺃﻭ ﺍﻟﺮﻗﺎﺋﻖ ﺍﳌﻮﺻﻮﻟﺔ ﺇﱃ ﻣﺴﺮﻯ ﺍﳌﻌﻄﻴﺎﺕ ﻫﺬﻩ
ﺍﳋﺎﺻﻴﺔ.
10
ﻁﺭﻓﻴﺔ ﺩﺨل ﻤﺜل ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ .ﺘﻀﻊ ﺒﻭﺍﺒﺔ ﺍﻟﺩﺨل ﻤﻌﻁﻴﺎﺘﻬﺎ ﻋﻠﻰ ﻤﺴﺭﻯ
ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻨﺩﻤﺎ ﻴﻁﻠﺏ ﺍﻟﻤﻌﺎﻟﺞ ﺫﻟﻙ.
ﻜﻤﺎ ﺘﺴﻤﺢ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺨﺭﺝ ﻟﻠﻤﻌﺎﻟﺞ ﺒﺈﺭﺴﺎل ﻤﻌﻁﻴﺎﺕ ﺇﻟﻰ ﺍﻟﻭﺴﻁ ﺍﻟﺨﺎﺭﺠﻲ ،ﻤﺜل
ﺍﻟﻁﺎﺒﻌﺔ ﺃﻭ ﺩﻴﻭﺩﺍﺕ ﻀﻭﺌﻴﺔ .1LEDsﻏﺎﻟﺒﹰﺎ ﻤﺎ ﺘﻜﻭﻥ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺨﺭﺝ ﻤﻜﻭﻨﺔ ﻤﻥ
ﻟﻤﺴﻙ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘﻲ ﻴﻀﻌﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ ﻋﻠﻰ ﻤﺴﺭﻯ D ﻗﻼﺒﺎﺕ ﻤﻥ ﻨﻭﻉ
ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻤﻤﺎ ﻴﺴﻤﺢ ﻟﻠﻤﻌﺎﻟﺞ ﺒﻤﺘﺎﺒﻌﺔ ﺘﻨﻔﻴﺫ ﻤﻬﺎﻡ ﺃﺨﺭﻯ.
ﻴﻌﻤل ﺍﻟﻤﻌﺎﻟﺞ ﻋﻠﻰ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﻲ ﹸﺘﻜﻭﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺘﻌﻠﻴﻤﺔ ﺘﻠﻭ ﺍﻷﺨﺭﻯ.
ﻭﺒﻤﺎ ﺃﻥ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺼﻐﺭﻱ ﻴﺴﺘﻁﻴﻊ ﻓﻘﻁ ﺍﻟﺘﻌﺎﻤل ﻤﻊ ﻤﻌﻁﻴﺎﺕ ﻤﻤﺜﻠﺔ ﺇﺜﻨﺎﻨﻴﺎﹰ ،ﻓﺈﻥ
ﺘﺭﻤﻴﺯ ﺇﺜﻨﺎﻨﻲ ﺃﻭ ﻗﻴﻤﺔ ﺇﺜﻨﺎﺌﻴﺔ ﹸﺘﻌﺒﺭ ﻋﻨﻬﺎ ،ﻭﻴﺠﺏ ﺘﺯﻭﻴﺩ instruction ﻟﻜل ﺘﻌﻠﻴﻤﺔ
ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺒﺎﻟﻠﻐﺔ ﺍﻹﺜﻨﺎﻨﻴﺔ ﺃﻭ ﻟﻐﺔ ﺍﻵﻟﺔ .machine languageﻨﺴﻤﻲ ﺠﻤﻴﻊ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﻲ ﻴﺘﻌ ﺭﻓﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ ﻭﻴﺴﺘﻁﻴﻊ ﺘﻨﻔﻴﺫﹶﻫﺎ ﺒﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ
CPU .instruction setﻟﻜل ﻤﻌﺎﻟﺞ ﻤﺠﻤﻭﻋﺔ ﺘﻌﻠﻴﻤﺎﺕ ﻤﺨﺘﻠﻔﺔ ﻭﺫﻟﻙ ﺘﺒﻌﹰﺎ ﻟﺒﻨﻴﺔ ﺍﻟـ
ﺃﻭ ﺍﻟﻤﻌﺎﻟﺞ.
ﻻ ﺃﺤﺩ ﻋﻤﻠﻴﹰﺎ ﻴﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﺒﻠﻐﺔ ﺍﻵﻟﺔ ،ﻷﻥ ﻋﻠﻴﻪ ﺤﻔﻅ ﺍﻟﻤﺌﺎﺕ ﻤﻥ ﺍﻷﺭﻤﺯﺓ
ﺍﻟﻤﺨﺘﻠﻔﺔ ﺍﻟﺘﻲ ﺘﻁﺎﺒﻕ ﻜل ﻤﻨﻬﺎ ﺘﻌﻠﻴﻤﺔ ﻤﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ .ﻭﻟﺤﺴﻥ ﺍﻟﺤﻅ ،ﻓﺈﻥ
ﻤﺼﻤﻤﻭ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻴﺯﻭﺩﻨﺎ ﺒﻜﻠﻤﺎﺕ ﺇﻨﻜﻠﻴﺯﻴﺔ-ﻤﺨﺘﺼﺭﺓ ﺃﻭ َﺃ ﺭﻤِﺯﺓﹰ ﺍﺴﺘﺫﻜﺎﺭﻴ ﹰﺔ
ل ﻋﺒﺎﺭ ٍﺓ ﻤﻨﻬﺎ ﺘﻌﻠﻴﻤ ﹶﺔ ﺁﻟ ٍﺔ ﻭﺍﺤﺩﺓ ،ﺘﹸﺸﻜل ﻤﺠﻤﻭﻉ ﻫﺫﻩ
ﺘﻭﺍﻓﻕ ﻜ ﱡ mnemonic codes
11
ﻻ ﺘﺤﻭﻴل
ﻟﻜل ﻤﻌﺎﻟﺞ ﺃﻴﻀﹰﺎ ﻟﻐﺔ ﺘﺠﻤﻴﻊ ﺨﺎﺼﺔ ﺒﻪ ،ﻭﻗﺒل ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻴﺠﺏ ﺃﻭ ﹰ
ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﺇﻟﻰ ﻟﻐﺔ ﺍﻵﻟﺔ .ﺘﺠﺭﻱ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻭﻴل ﺒﺎﺴﺘﺨﺩﺍﻡ
ﺍﻟﺫﻱ ﻴﺯﻭﺩﻨﺎ ﺒﻪ ﺼﺎﻨﻌﻭ ﺍﻟﻤﻌﺎﻟﺞ. assembler ﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺠﻤﻊ
ﺒﻤﺎ ﺃﻥ ﻟﻜل ﻤﻌﺎﻟﺞ ﻟﻐﺔ ﺘﺠﻤﻴﻊ ﺨﺎﺼﺔ ﺒﻪ ،ﻓﻼ ﻴﻤﻜﻥ ﺘﺒﺎﺩل ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻤﻜﺘﻭﺒﺔ ﺒﻠﻐﺔ
ﺁﻟﺔ ﺒﻴﻥ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ .ﻭﻟﻠﺘﻐﻠﺏ ﻋﻠﻰ ﻫﺫﻩ ﺍﻟﻤﺸﻜﻠﺔ ﻓﻘﺩ ﺠﺭﻯ ﺘﻁﻭﻴﺭ ﻟﻐﺎﺕ ﻋﺎﻟﻴﺔ
ﻭ ،Cﻏﻴﺭ ﻤﻌﺘﻤﺩﺓ ﻋﻠﻰ ﻤﻌﺎﻟﺞ ﻤﺤﺩﺩ. Fortran ﻭ Basic ﺍﻟﻤﺴﺘﻭﻯ ،ﻤﺜل
opcode ﻴﺘﺄﻟﻑ ﺭﻤﺎﺯ ﺁﻟﺔ ﻟﺘﻌﻠﻴﻤﺔ ﻤﺎ ،ﻤﻥ ﺤﻘﻠﻴﻥ ﻤﻨﻔﺼﻠﻴﻥِ :ﺭﻤﺎ ﺯ ﺍﻟﻌﻤﻠﻴﺔ
ﺃﻭ ﺍﻟﻤﻌﺎﻤﻼﺕِ .ﺭﻤﺎ ﺯ ﺍﻟﻌﻤﻠﻴﺔ ﻋﺒﺎﺭﺓ ﻋﻥ ِﺭﻤﺎﺯ ﻤﻭﺠﺯ ﻴﺸﻴﺭ operand 1ﻭﺍﻟﻤﻌﺎﻤل
ﺇﻟﻰ ﻨﻭﻉ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻤﺘﻭﻗﻌﺔ ،ﻭﻟﻜل ﺘﻌﻠﻴﻤﺔ ِﺭﻤﺎﺯ ﻭﺤﻴﺩ .ﻴﺸﻴﺭ ﺍﻟﻤﻌﺎﻤل ﺃﻭ
3
ﺍﻟﻤﻌﺎﻤﻼﺕ ﺇﻟﻰ ﻤﻜﺎﻥ ﺘﻭﻀﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ 2ﻭﻜﻴﻔﻴﺔ ﺍﻟﻨﻔﺎﺫ ﺇﻟﻴﻬﺎ )ﻨﻤﻁ ﺍﻟﻌﻨﻭﻨﺔ(.
ﻴﺨﺘﻠﻑ ﺤﺠﻡ ِﺭﻤﺎ ﺯ ﺍﻵﻟﺔ ﻤﻥ ﻤﻌﺎﻟﺞ ﺇﻟﻰ ﺁﺨﺭ ﻭﻴﻤﻜﻥ ﺃﻥ ﻴﺘﺭﺍﻭﺡ ﻤﻥ ﺒﺎﻴﺕ ﺇﻟﻰ
ﺒﺎﻴﺕ. 12
Opcod )Opearnd(s
ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ،ﺇﻥ ِﺭﻤﺎ ﺯ ﺍﻟﻌﻤﻠﻴﺔ ﻟﺘﻌﻠﻴﻤﺔ ﺘﺨﺯﻴﻥ ﻤﺤﺘﻭﻯ ﺍﻟﻤﺭﺍﻜﻡ ﻓﻲ ﻤﻜﺎﻥ
5 4
ﻟﻠﻤﻌﺎﻟﺞ ،8085ﺘﹸﻜﺘﺏ ﻫﺫﻩ 32h ﺃﻭ 00110010b ﻤﻌﻴﻥ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻴﺴﺎﻭﻱ
ﻭﻫﻲ ﻤﺨﺘﺼﺭﺓ ﻟﺨﺯﻥ ﺍﻟﻤﺭﺍﻜﻡ .STore Accumulator STA ﺍﻟﺘﻌﻠﻴﻤﺔ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ
3ﻳﺤﺪﺩ ﳕﻂ ﺍﻟﻌﻨﻮﻧﺔ ﻃﺮﻳﻘﺔ ﺍﳊﺼﻮﻝ ﻋﻠﻰ ﺍﳌﻌﻄﻴﺎﺕ :ﻣﺒﺎﺷﺮﺓ ،ﻏﲑ ﻣﺒﺎﺷﺮﺓ ...
4ﻣﺨﺘﺼﺮ :اﺛﻨﺎﻧﻲ .binary
ﻋﺸﺮﻱhexadecimal 5ﳐﺘﺼﺮ :ﺳﺖ
12
ﻴﺤﺩﺩ ﻁﻭل ِﺭﻤﺎ ﺯ ﺍﻟﻌﻤﻠﻴﺔ ﻋﺩﺩ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﺍﻟﺘﻲ ﻴﻤﻜﻥ ﺃﻥ ﻴﻨﻔﺫﻫﺎ ﺍﻟﻤﻌﺎﻟﺞ.
ﻓﻤﺜﻼﹰ ،ﺇﺫﺍ ﺠﺭﻯ ﺤﺠﺯ ﺒﺎﻴﺕ ﻟ ِﺭﻤﺎ ﺯ ﺍﻟﻌﻤﻠﻴﺔ ﻓﺈﻥ ﻋﺩﺩ ﻤﺠﻤﻭﻋﺔ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ
ﺘﺴﺎﻭﻱ .28 = 256
ﻤﺜﺎل:
ﻭﻤﺎ ﻴﻘﺎﺒﻠﻬﺎ 8085 ﻴﺒﻴﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺘﺎﻟﻲ ﻤﺜﺎل ﻋﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺒﻠﻐﺔ ﺍﻟﻤﺠﻤﻊ ﻟﻠﻤﻌﺎﻟﺞ
ﻤﻥ ﺭﻤﺎﺯ ﺍﻵﻟﺔ:
ﻟﻐﺔ ﺍﻟﻤﺠﻤﻊ ﺭﻤﺎﺯ ﺍﻵﻟﺔ
ﺒﻤﺎ ﺃﻥ ﻜل ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ﻴﺤﻭﻱ ﻋﻠﻰ ﺒﺎﻴﺕ ﻭﺍﺤﺩ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ ،8085ﻭﺒﻔﺭﺽ ﺃﻥ
ﺃﻭل ﺘﻌﻠﻴﻤﺔ ﻤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺨﺯﻨﺕ ﺒﺎﻟﻌﻨﻭﺍﻥ ،1000hﻓﺈﻥ ﻤﺤﺘﻭﻯ ﺍﻟﺫﺍﻜﺭﺓ ﻴﻅﻬﺭ
ﻋﻠﻰ ﺍﻟﻨﺤﻭ ﺍﻟﺘﺎﻟﻲ ﺒﻌﺩ ﺸﺤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ:
13
ﺍﻟﻌﻨﻭﺍﻥ ﻤﺤﺘﻭﻯ ﺍﻟﺫﺍﻜﺭﺓ
1
1000h 3Eh
2
1001h 20h
3
1002h C6h
4
1003h 02h
5
1004h 32h
6
1005h 50h
7
1006h 20h
14
ﺒﺎﻟﺯﻤﻥ ﺍﻟﻼﺯﻡ ﻹﺘﻤﺎﻡ ﻋﻤﻠﻴﺔ ﻗﺭﺍﺀﺓ ﺃﻭ ﻜﺘﺎﺒﺔ ﻤﻥ ﺫﺍﻜﺭﺓ ﺃﻭ ﻤﻥ machine cycle
ﺒﻭﺍﺒﺔ.
ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﻭﺤﺩﺓ ﺍﻟﺘﺤﻜﻡ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺞ clock ﻨﺴﺘﺨﺩﻡ ﺍﻟﺴﺎﻋﺔ ﺃﻭ ﺍﻟﻤﻴﻘﺎﺘﻴﺔ
ﻟﻤﺯﺍﻤﻨﺔ ﺠﻤﻴﻊ ﺍﻷﺤﺩﺍﺙ ﺍﻟﺴﺎﺒﻘﺔ .ﺘﹸﻭﻟﺩ ﻭﺤﺩﺓ ﺍﻟﺘﺤﻜﻡ ﻨﺒﻀﺎﺕ ﻤﻨﺘﻅﻤﺔ ﻋﻠﻰ ﻤﺴﺭﻯ
ﺍﻟﻨﻅﺎﻡ ﺒﺘﺭﺩﺩ ﻤﺤﺩﺩ ،ﻭﻜﻠﻤﺎ ﻜﺎﻥ ﺘﺭﺩﺩ ﺍﻟﻨﺒﻀﺎﺕ ﺃﻋﻠﻰ ﺍﺯﺩﺍﺩﺕ ﺴﺭﻋﺔ ﺘﻨﻔﻴﺫ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ.
ﺩﻭﺭﺓ ﺳﺎﻋﺔ
ﻭﻨﺴﻤﻲ clock's cycle ﻨﺴﻤﻲ ﺍﻟﺯﻤﻥ ﺍﻟﻼﺯﻡ ﻹﺘﻤﺎﻡ ﻨﺒﻀﺔ ﻜﺎﻤﻠﺔ ﺒﺩﻭﺭﺓ ﺴﺎﻋﺔ
ﻤﻘﻠﻭﺒﻬﺎ ﺴﺭﻋﺔ ﺃﻭ ﺘﺭﺩﺩ ﺍﻟﺴﺎﻋﺔ ﻭﺘﻘﺎﺱ ﺒﺎﻟﻬﺭﺘﺯ ،1ﻭﻴﺘﺭﺍﻭﺡ ﺘﺭﺩﺩ ﺴﺎﻋﺔ ﺍﻟﻨﻅﺎﻡ
ﺇﻟﻰ ﻋﺩﺓ 8088/8086 ﻭ 8085 ﻤﻥ ﻋﺩﺓ ﻤﻴﻐﺎﻫﺭﺘﺯ 2ﻓﻲ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻷﻭﻟﻰ ﻤﺜل
ﻏﻴﻐﺎﻫﺭﺘﺯ 3ﻓﻲ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺤﺩﻴﺜﺔ ﻤﺜل ﺒﻨﺘﻴﻭﻡ .4
ﻴﺨﺘﻠﻑ ﻋﺩﺩ ﺃﺩﻭﺍﺭ ﺍﻵﻟﺔ ﺍﻟﻼﺯﻡ ﻟﺘﻨﻔﻴﺫ ﻜل ﺘﻌﻠﻴﻤﺔ .ﻭﺃﻜﺜﺭ ﻤﻥ ﺫﻟﻙ ،ﻓﺈﻥ ﻋﺩﺩ
ﺃﺩﻭﺍﺭ ﺍﻟﺴﺎﻋﺔ ﺍﻟﻼﺯﻡ ﻹﻨﺠﺎﺯ ﺩﻭﺭﺓ ﺁﻟﺔ ﻴﺨﺘﻠﻑ ﺘﺒﻌﹰﺎ ﻟﻠﻌﻤﻠﻴﺔ ،ﻫل ﻫﻲ ﻋﻤﻠﻴﺔ ﺠﻠﺏ
ﺃﻡ ﻗﺭﺍﺀﺓ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ..ﺍﻟﺦ .ﻭﻨﺴﻤﻲ ﻜل ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻤﻥ ﺩﻭﺭﺓ ﺍﻵﻟﺔ ﺒﺎﻟﺤﺎﻻﺕ
ﻼ ﺘﺤﺘﺎﺝ ﻋﻤﻠﻴﺔ ﺠﻠﺏ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ
... ،T2 ،T1ﻓﻤﺜ ﹰ
ﺃﺩﻭﺍﺭ ﺴﺎﻋﺔ ﺃﻭ ﺤﺎﻻﺕ ﺒﻴﻨﻤﺎ ﺘﺤﺘﺎﺝ ﻋﻤﻠﻴﺔ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ 4 ﺇﻟﻰ 8088/8086
ﺤﺎﻻﺕ .ﻭﺍﻋﺘﻤﺎﺩﹰﺍ ﻋﻠﻰ ﻤﺎ ﺴﺒﻕ ﻓﺈﻥ ﻋﺩﺩ ﺃﺩﻭﺍﺭ ﺍﻟﺴﺎﻋﺔ ﺍﻟﻼﺯﻡ ﻟﺘﻨﻔﻴﺫ 3 ﺇﻟﻰ
ﺘﻌﻠﻴﻤﺔ ﻴﺨﺘﻠﻑ ﻤﻥ ﻭﺍﺤﺩﺓ ﺇﻟﻰ ﺃﺨﺭﻯ .ﻓﻌﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ﻴﺤﺘﺎﺝ ﺍﻟﻤﻌﺎﻟﺞ
106 1هﺮﺗﺰ
109 2هﺮﺗﺰ
3ﺍﳍﺮﺗﺰ ﻭﺣﺪﺓ ﻗﻴﺎﺱ ﺗﺮﺩﺩ ،ﺗﺴﺎﻭﻱ ﻋﺪﺩ ﺃﺩﻭﺍﺭ ﺍﻹﺷﺎﺭﺓ ﺧﻼﻝ ﺛﺎﻧﻴﺔ
15
ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻟﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺔ ﻀﺭﺏ ،ﻓﻲ ﺤﻴﻥ ﻴﺤﺘﺎﺝ ﺍﻟﻤﻌﺎﻟﺞ 70 ﺇﻟﻰ 8088/8086
ﺃﺩﻭﺍﺭ ﺴﺎﻋﺔ ﻟﺠﻤﻊ ﻤﺤﺘﻭﻯ ﺴﺠﻠﻴﻥ ﺩﺍﺨﻠﻴﻴﻥ. 3 ﻨﻔﺴﻪ ﻓﻘﻁ ﺇﻟﻰ
16
ﻋﻠﻰ IP ﹸﺘﺨﺯﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻋﻠﻰ ﻨﺤﻭ ﺘﺘﺎﺒﻌﻲ ﻭ ﻴﺸﻴﺭ ﻤﺅﺸﺭ ﺍﻟﺘﻌﻠﻴﻤﺔ
ﻋﻨﻭﺍﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ،ﻴﻤﻜﻥ ﺒﻴﺎﻥ ﻜﻴﻑ ﻴﺠﺭﻱ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺎﺕ ﺒﺭﻨﺎﻤﺞ ﻋﻠﻰ ﻨﺤﻭ
ﺘﺘﺎﺒﻌﻲ ،ﺒﺎﺴﺘﺨﺩﺍﻡ ِﺭﻤﺎ ﺯ ﻤ ﹾﻔ ﹶﺘﺭﺽ :pseudocode
ﺤﻠﻘﺔ
ﺍﺠﻠﺏ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ
IP ﺯﺩ ﻤﺅﺸﺭ ﺍﻟﺘﻌﻠﻴﻤﺔ
ﻓﻙ ﺘﺭﻤﻴﺯ ﺍﻟﺘﻌﻠﻴﻤﺔ
ﺇﺫﺍ ﻜﺎﻥ ﺍﻟﻤﻌﺎﻤل ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ،ﺍﻗﺭﺃ ﺍﻟﻘﻴﻤﺔ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ
ﻨﻔﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ
ﺇﺫﺍ ﻜﺎﻥ ﻤﻌﺎﻤل ﺍﻟﺨﺭﺝ ﺫﺍﻜﺭﺓ ،ﺍﻜﺘﺏ ﺍﻟﻨﺘﻴﺠﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ
ﺘﺎﺒﻊ ﺍﻟﺤﻠﻘﺔ
ﺴﻨﺘﻁﺭﻕ ﻫﻨﺎ ﺇﻟﻰ ﻨﻅﺎﻡ ﻨﻤﻭﺫﺠﻲ ﻴﺤﻭﻱ ﻤﻌﺎﻟﺞ ﺼﻐﺭﻱ ﻭﻫﻭ ﻨﻅﺎﻡ ﺘﺤﻜﻡ ﺒﺩﺭﺠﺔ
ﺤﺭﺍﺭﺓ ﻏﺭﻓﺔ .ﻴﺘﻜﻭﻥ ﺍﻟﻨﻅﺎﻡ ﻤﻥ ﺠﺯﺃﻴﻥ ﺃﺴﺎﺴﻴﻥ :ﺍﻟﻜﻴﺎﻥ ﺍﻟﺠﺎﻤﺩ ﻭﺒﺭﻤﺠﻴﺎﺕ
ﺍﻟﻨﻅﺎﻡ.
Hardware ﺍﻟﻜﻴﺎﻥ ﺍﻟﺠﺎﻤﺩ
ﻴﺘﻜﻭﻥ ﻨﻅﺎﻡ ﺍﻟﺘﺤﻜﻡ ﺒﺩﺭﺠﺔ ﺍﻟﺤﺭﺍﺭﺓ ﺍﻟﻤﺒﻨﻲ ﺤﻭل ﻤﻌﺎﻟﺞ ﺼﻐﺭﻱ ﻤﻥ ﺍﻟﻌﻨﺎﺼﺭ
ﺍﻟﺭﺌﻴﺴﺔ ﺍﻟﺘﺎﻟﻴﺔ:
ROM ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺼﻐﺭﻱ :ﻴﻘﺭﺃ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻹﺜﻨﺎﻨﻴﺔ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﻴﺘﺔ
ﻭﻴﻨﻔﺫﻫﺎ ﺘﺒﺎﻋﹰﺎ .ﺨﻼل ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻴﻘﺭﺃ ﺍﻟﻤﻌﺎﻟﺞ ﺩﺭﺠﺔ ﺍﻟﺤﺭﺍﺭﺓ ﻤﻥ ﺨﺭﺝ
ﻭﻴﻅﻬﺭ ﺍﻟﻨﺘﻴﺠﺔ ﻋﻠﻰ ﻤﻅﻬﺎﺭ ،1LCDﻜﻤﺎ ﻴﺘﺤﻜﻡ A/D ﺍﻟﻤﺒﺩل ﺍﻟﺘﻤﺎﺜﻠﻲ/ﺍﻟﺭﻗﻤﻲ
17
ﺃﻴﻀﹰﺎ ﺒﻌﻤل ﻜل ﻤﻥ ﺍﻟﻤﺭﻭﺤﺔ ﻭﺍﻟﺴﺨﺎﻥ ﺍﻋﺘﻤﺎﺩﹰﺍ ﻋﻠﻰ ﺩﺭﺠﺔ ﺍﻟﺤﺭﺍﺭﺓ
ﺍﻟﻤﻘﺭﻭﺀﺓ.
ﻟﺘﺨﺯﻴﻥ ﺘﻌﻠﻴﻤﺎﺕ ROM ﺍﻟﺫﺍﻜﺭﺓ :ﻴﻀﻡ ﺍﻟﻨﻅﺎﻡ ﻨﻭﻋﻴﻥ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻫﻤﺎ ﺍﻟﻤﻴﺘﺔ
ﻟﺘﺨﺯﻴﻥ ﺍﻟﻤﺘﺤﻭﻻﺕ ﺍﻟﻤﺅﻗﺘﺔ )ﻤﺜل ﺩﺭﺠﺔ RAM ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺤﻴﺔ
ﺍﻟﺤﺭﺍﺭﺓ ﺍﻟﻤﻘﺭﻭﺀﺓ( ﺨﻼل ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ.
ﺒﻭﺍﺒﺔ ﺩﺨل :ﻴﺤﻭل ﺤﺴﺎﺱ ﺍﻟﺤﺭﺍﺭﺓ ﺍﻟﺤﺭﺍﺭﺓ ﺇﻟﻰ ﺇﺸﺎﺭﺓ ﻜﻬﺭﺒﺎﺌﻴﺔ ﺍﻟﺘﻲ ﻴﻌﻤل
ﺇﻟﻰ ﺘﺤﻭﻴﻠﻬﺎ ﺇﻟﻰ ﺍﻟﺸﻜل ﺍﻟﺭﻗﻤﻲ .ﺘﻌﻤل ﺒﻭﺍﺒﺔ ﺍﻟﺩﺨل ﻓﻲ ﺍﻟﻨﻅﺎﻡ A/D ﺍﻟﻤﺒﺩل
ﻜﺼﻭﺍﻥ ﻴﺨﺯﻥ ﺨﺭﺝ ﺍﻟﻤﺒﺩل ﺍﻟﺭﻗﻤﻲ ﺤﺘﻰ ﻴﺼﺒﺢ ﺍﻟﻤﻌﺎﻟﺞ ﺠﺎﻫﺯﹰﺍ ﻟﻘﺭﺍﺀﺘﻬﺎ.
ﺒﻭﺍﺒﺎﺕ ﺍﻟﺨﺭﺝ :ﺘﻤﺴﻙ ﻫﺫﻩ ﺍﻟﺒﻭﺍﺒﺎﺕ ﺇﺸﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻡ ﺍﻟﺘﻲ ﻴﻭﻟﺩﻫﺎ ﺍﻟﻤﻌﺎﻟﺞ
ﻭﺘﻭﺼﻠﻬﺎ ﺇﻟﻰ ﺇﺤﺩﻯ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﺨﺎﺭﺠﻴﺔ )ﻤﺭﻭﺤﺔ ،ﺴﺨﺎﻥ ،ﻤﻅﻬﺭ .(LCD
ﺒﺭﻤﺠﻴﺎﺕ ﺍﻟﻨﻅﺎﻡ )ﺍﻟﺒﺭﻨﺎﻤﺞ(
ﻴﺤﺘﺎﺝ ﺍﻟﻨﻅﺎﻡ ﺇﻟﻰ ﺒﺭﻨﺎﻤﺞ ﻴﻘﻭﺩ ﻋﻤﻠﻪ ﻨﺴﻤﻴﻪ ﺒﺭﻨﺎﻤﺞ ﺍﻟ ﻤﺭﺍﻗﺏ ﺃﻭ ﺒﺭﻤﺠﻴﺎﺕ ﺍﻟﻨﻅﺎﻡ
ﺍﻟﺫﻱ ﻴﺠﺭﻱ ﺘﺨﺯﻴﻨﻪ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ
.ROMﺒﻌﺩ ﺇﻋﺎﺩﺓ ﺘﺸﻐﻴل ﺍﻟﻨﻅﺎﻡ
ﻴﻘﺭﺃ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭﻴﻨﻔﺫﻫﺎ
ﺒﺎﺴﺘﻤﺭﺍﺭ ﺍﺒﺘﺩﺍ ﺀ ﻤﻥ ﺍﻟﻤﻭﻗﻊ
ﺍﻷﻭل ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ .ROM
18
PC ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺸﺨﺼﻲ -5
ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺭﻗﻤﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﺁﻟﺔ ﻗﺎﺩﺭﺓ ﻋﻠﻰ ﺘﺩﺍﻭل ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﺭﻗﻤﻴﺔ ﺒﻬﺩﻑ
ﻤﻌﺎﻟﺠﺘﻬﺎ ﺃﻭ ﺘﻨﺴﻴﻘﻬﺎ ﺃﻭ ﺘﺨﺯﻴﻨﻬﺎ ﺃﻭ ﺤﺘﻰ ﻨﻘﻠﻬﺎ ،ﻭﺫﻟﻙ ﻋﻥ ﻁﺭﻴﻕ ﺘﻨﻔﻴﺫ ﺒﺭﻨﺎﻤﺞ
ﻴﺤﺩﺩ ﺒﺩﻗﺔ ﺨﻁﻭﺍﺕ ﺍﻟﻌﻤل ﺍﻟﻤﻁﻠﻭﺏ ﺇﻨﺠﺎﺯﻫﺎ .ﻴﻤﻜﻥ ﺃﻥ ﺘﺘﺭﺍﻭﺡ ﺍﻟﺤﻭﺍﺴﻴﺏ ﺒﻴﻥ
ﺍﻟﻜﺒﻴﺭﺓ ﺍﻟﻤﺼﻤﻤﺔ ﻟﻼﺴﺘﺨﺩﺍﻡ ﺍﻟﻌﺎﻡ ﻭﻟﻌﺩﺓ ﻤﺴﺘﺨﺩﻤﻴﻥ ﺒﺂﻥ ﻭﺍﺤﺩ ،ﻤﺜل ﺍﻟﺤﺎﺴﻭﺏ
2ﺇﻟﻰ ﺍﻟﺤﻭﺍﺴﻴﺏ supercomputer 1ﺃﻭﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﻔﺎﺌﻕ mainframe ﺍﻟﺭﺌﻴﺱ
ﻟﻤﺴﺘﺨﺩﻡ ﻭﺤﻴﺩ. )Personal Computer (PC ﺍﻟﺸﺨﺼﻴﺔ ﺍﻟﻤﺨﺼﺹ
َﺃ ﱠﺜﺭ ﺘﻁﻭﺭ ﺘﻘﻨﻴﺔ ﺃﻨﺼﺎﻑ ﺍﻟﻨﻭﺍﻗل ﺨﻼل ﺍﻟﻌﻘﻭﺩ ﺍﻟﻤﺎﻀﻴﺔ ﻭﺍﺒﺘﺩﺍﻉ ﻭﺘﻁﻭﺭ
ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺼﻐﺭﻴﺔ ﺒﺸﻜل ﻓﻌﺎل ﻋﻠﻰ ﺘﻁﻭﺭ ﺍﻟﺤﻭﺍﺴﻴﺏ ،ﻓﺎﻟﺤﻭﺍﺴﻴﺏ ﺍﻟﻀﺨﻤﺔ
ﺍﻟﺘﻲ ﻜﺎﻥ ﻴﺤﺘﺎﺝ ﺒﻨﺎﺅﻫﺎ ﺇﻟﻰ ﻤﺴﺎﺤﺔ ﻜﺒﻴﺭﺓ ،ﺘﻘﻠﺼﺕ ﺇﻟﻰ ﺤﻭﺍﺴﻴﺏ ﻤﻜﺘﺒﻴﺔ ﺼﻐﻴﺭﺓ
ﻗﺎﺩﺭ ﻋﻠﻰ ﺘﻨﻔﻴﺫ ﺤﺴﺎﺒﺎﺕ ﻀﺨﻤﺔ ﻜﺎﻨﺕ ﺤﻠﻤﹰﺎ ﻓﻲ ﺍﻟﺴﻨﻭﺍﺕ ﺍﻟﻤﺎﻀﻴﺔ .ﻋﻠﻰ ﺴﺒﻴل
ﺍﻟﻤﺜﺎل ،ﻓﺈﻥ ﺤﺎﺴﻭﺒﺎ ﺭﺌﻴﺴﺎ ﻤﻁﻭﺭﹰﺍ ﻓﻲ ﺍﻟﺜﻤﺎﻨﻴﻨﺎﺕ ﻭﻜﺎﻥ ﺜﻤﻨﻪ ﻴﺴﺎﻭﻱ ﺤﻭﺍﻟﻲ
ﻤﻠﻴﻭﻥ ﺩﻭﻻﺭ ،ﻟﻴﺱ ﺒﻘﻭﺓ ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺸﺨﺼﻲ ﺍﻟﻤﺼﻤﻡ ﺍﻟﻴﻭﻡ ﺤﻭل ﺍﻟﻤﻌﺎﻟﺞ ﺒﻨﺘﻴﻭﻡ
).(P4 4
ﻭﻴﺘﻜﻭﻥ ﻤﻥ IBM ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﻼﺤﻕ ﺍﻟﺒﻨﻴﺔ ﺍﻟﻌﺎﻤﺔ ﻟﺤﺎﺴﻭﺏ ﺸﺨﺼﻲ ﻤﺘﻭﺍﻓﻕ ﻤﻊ
ﺜﻼﺙ ﻤﻜﻭﻨﺎﺕ ﺭﺌﻴﺴﺔ :ﺘﺠﻬﻴﺯﺍﺕ ﻤﺤﻴﻁﻴﺔ ،ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺼﻐﺭﻱ ﻭﺍﻟﺫﺍﻜﺭﺓ.
19
ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻤﺤﻴﻁﻴﺔ :ﻤﺜل ﺍﻟﻁﺎﺒﻌﺔ ،ﺍﻟﻘﺭﺹ ﺍﻟﻤﺭﻥ ،ﺍﻟﻘﺭﺹ ﺍﻟﺼﻠﺏ ،ﺍﻟﻔﺄﺭﺓ،
ﻗﺎﺭﺉ ﺍﻷﻗﺭﺍﺹ ﺍﻟﻤﻀﻐﻭﻁﺔ ،CDﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ،ﺒﻁﺎﻗﺔ ﻤﻭﺍﺀﻤﺔ ﻓﻴﺩﻴﻭﻴﺔ )ﻜﺭﺕ
ﺍﻟﺸﺎﺸﺔ( ،ﺒﻁﺎﻗﺔ ﺼﻭﺕ ،ﺍﻟﺸﺎﺸﺔ ﻭﺍﻟﻤﻭﺩِﻡ.
ﺍﻟﺘﻲ 80x86 -ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺼﻐﺭﻱ :ﻭﻫﻭ ﻤﺦ ﺍﻟﺤﺎﺴﻭﺏ ،ﻭﻫﻭ ﺃﺤﺩ ﺃﻓﺭﺍﺩ ﺍﻟﻌﺎﺌﻠﺔ
ﺇﻟﻰ ﺒﻨﺘﻴﻭﻡ ،4ﺃﻭ ﺃﺤﺩ 8088/8086 ﺘﻀﻡ ﺴﻠﺴﻠﺔ ﻤﻌﺎﻟﺠﺎﺕ ﺍﻨﺘل ﻤﻥ
ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﻤﺘﻭﺍﻓﻘﺔ ﻤﻌﻬﺎ.
-ﺍﻟﺫﻭﺍﻜﺭ :ﻭﻴﻤﻜﻥ ﺘﻘﺴﻴﻤﻬﺎ ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﻴﺘﺔ ،ﺍﻟﺘﻲ ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﻨﻅﺎﻡ
ﺍﻟﺘﺸﻐﻴل ،1BIOSﻭﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴﺴﺔ ﻭﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ ،2cacheﻭﺘﺴﺘﺨﺩﻡ
ﻟﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﺅﻗﺘ ﹰﺎ.
ﺘﺭﺘﺒﻁ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻤﺤﻴﻁﻴﺔ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ ﻋﺒﺭ ﻤﺴﺭﻯ ﺍﻟﻨﻅﺎﻡ ﺍﻟﺫﻱ ﺘﻁﻭﺭ ﻤﻊ
ﺍﺯﺩﻴﺎﺩ ﺍﻟﺤﺎﺠﺔ ﺇﻟﻰ ﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﺴﺭﻋﺎﺕ ﻋﺎﻟﻴﺔ .ﻓﺒﻴﻨﻤﺎ ﺍﺴﺘﺨﺩﻡ ﺍﻟﻤﺴﺭﻯ
ت routines 1ﻣﺨﺘﺼﺮ .basic input/output system :ﻓﻲ اﻟﺤﻮاﺳﻴﺐ اﻟﺸﺨﺼﻴﺔ :ﻣﺠﻤﻮﻋ ُﺔ ﻣَﺴﺎﻗﺎ ٍ
ت
ﻞ اﻟﻤﻌﻄﻴﺎت ﻋﺒﺮ ﺗﺠﻬﻴﺰا ٍ ﺑﺮﻣﺠﻴ ٍﺔ أﺳﺎﺳﻴ ٍﺔ ﺗَﻔﺤﺺ اﻟﻌﺘﺎدﻳﺎت ﻋﻨﺪ اﻹﻗﻼع ،وﺗُﻔﻌﱢﻞ ﻧﻈﺎ َم اﻟﺘﺸﻐﻴﻞ ،وﺗﺘﺤﻤﱠﻞ ﻧ ْﻘ َ
ﻋﺘﺎدﻳﺔ .ﻳُﺨﺰﱠن اﻟـ BIOSﻓﻲ ذاآﺮة .ROM
ﺕ ﺍﻟﻜﺜﲑﺓ ﺍﻻﺳﺘﺨﺪﺍﻡ ﻧﺴﺨﹰﺎ ﻣﺘﻜﺮﺭﹰﺍ ﻟﺘﺤﻘﻴﻖ ﺍﻟﻮﺻﻮﻝ ﺍﻟﺴﺮﻳﻊ
ﺴﺦ ﻓﻴﻪ ﻗﻴ ﻢ ﺍﳌﻌﻄﻴﺎ ِ
2ﻧﻈﺎ ﻡ ﻓﺮﻋﻲ ﻟﻠﺬﺍﻛﺮ ِﺓ ﺧﺎﺹ ﺗﻨ
ﺇﻟﻴﻬﺎ.
20
ﻤﻴﻐﺎﻫﺭﺘﺯ ،ﻓﻲ 8 ﺒﺕ ﻭﻴﻌﻤل ﺒﺘﺭﺩﺩ 8 ،1ISAﺍﻟﺫﻱ ﻋﺩﺩ ﺨﻁﻭﻁ ﻤﻌﻁﻴﺎﺘﻪ ﻴﺴﺎﻭﻱ
ﺍﻟﻤﺒﻨﻴﺔ ﺤﻭل ﺍﻟﻤﻌﺎﻟﺞ 8088/8086؛ ﻨﺠﺩ ﻟﻴﻭﻡ ﻥ XT ﺍﻟﺤﻭﺍﺴﻴﺏ ﺍﻟﺸﺨﺼﻴﺔ ﺍﻷﻭﻟﻰ
ﺒﺕ ﻭﻴﻌﻤل 64 2ﺍﻟﺫﻱ ﻋﺭﻀﻪ PCI ﺍﻟﺤﻭﺍﺴﻴﺏ ﺒﻨﺘﻴﻭﻡ ﺘﺴﺘﺨﺩﻡ ﺒﻜﺜﺭﺓ ﺍﻟﻤﺴﺭﻯ
ﻤﻴﻐﺎﻫﺭﺘﺯ. 33 ﺒﺘﺭﺩﺩ
ﻨﺠﺩ ﺍﻟﻴﻭﻡ ﺃﻥ ﺃﻏﻠﺏ ﺍﻟﻤﻜﻭﻨﺎﺕ ﺍﻷﻭﻟﻴﺔ ﻓﻲ ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺸﺨﺼﻲ :ﺍﻟﻤﻌﺎﻟﺞ،
ﻭﺍﻟﺫﺍﻜﺭ ِﺓ ﺍﻟﺭﺌﻴﺴﻴﺔ ،ﻭﺍﻟﺩﺍﺭﺍﺕ ﺍﻟﻤﺴﺎﻨﺩﺓ ،ﻭﻤﺘﺤﻜﹼﻡ ﺍﻟﻤﺴﺭﻯ ،ﻭﻤﺭﺒﻁ ،connector
ﺘﻘﻊ ﻀﻤﻥ ﺍﻟﻠﻭﺤﺔ ﺍﻷﻡ ﺃﻭ ﺍﻟﻠﻭﺤﺔ ﺍﻟﺭﺌﻴﺴﺔ .Motherboardﻭﻴﻤﻜِﻥ ﻟﻠﺒﻁﺎﻗﺎﺕ
ﻁ
ﺍﻷﺨﺭﻯ )ﻤﺜل ﺒﻁﺎﻗﺎﺕ ﺘﻭﺴﻴﻊ ﺍﻟﺫﺍﻜﺭﺓ ﻭﺒﻁﺎﻗﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ( ﺃﻥ ﺘﺭﺘﺒ ﹶ
ﺒﺎﻟﺒﻁﺎﻗﺔ ﺍﻷﻡ ﻋﺒﺭ ﻤﺭﺒﻁ ﺍﻟﻤﺴﺭﻯ .ﻨﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ﺒﻨﻴﺔ ﻟﻭﺤﺔ ﺭﺌﻴﺴﺔ ﻟﻠﺤﺎﺴﻭﺏ
ﺍﻟﻤﺒﻨﻲ ﺤﻭل ﺍﻟﻤﻌﺎﻟﺞ .80486
21
ﺘﻤﺎﺭﻴﻥ
ﺃﻭ ﹰﻻ :ﺃﺠﺏ ﺒﺼﺢ ﺃﻭ ﺨﻁﺄ
ﻫﻭ ﺤﺎﺴﻭﺏ ﺼﻐﺭﻱ ﻤﺨﺼﺹ ﻹﻨﺠﺎﺯ ﻤﻬﺎﻡ PC ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺸﺨﺼﻲ -1
ﻴﺨﺘﻠﻑ ﻋﺎﺩﺓ ﺍﻟﺯﻤﻥ ﺍﻟﻼﺯﻡ ﻟﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺔ ﻓﻲ ﻤﻌﺎﻟﺞ ﻤﺎ ﻤﻥ ﺘﻌﻠﻴﻤﺔ ﺇﻟﻰ ﺃﺨﺭﻯ. -3
ﻴﺴﺘﺨﺩﻡ ﺴﺠل ﻋﺩﺍﺩ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻟﻤﺴﻙ ﻋﻨﻭﺍﻥ ﻤﻭﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺫﻱ ﺴﻴﻌﺎﻟﺞ ﻻﺤﻘﹰﺎ.. -4
22
ﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ ﻫﻲ ﻤﺠﻤﻭﻋﺔ ﺍﻟﺭﻤﺎﺯﺍﺕ ﺍﻟﺘﻲ ﻴﻤﻜﻥ ﻟﻭﺤﺩﺓ -8
ﺘﻀﻡ ﺩﻭﻤﹰﺎ ﺩﻭﺭﺓ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺩﻭﺭﺓ ﺤﻔﻅ ﻤﻌﺎﻤل ﺍﻟﺨﺭﺝ. -10
ﻏﻴﻐﺎ ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ،ﻓﻤﺎ ﻫﻭ 4 ﻴﺴﺘﻁﻴﻊ ﻋﻨﻭﻨﺔ 4 ﺇﺫﺍ ﻋﻠﻤﺕ ﺃﻥ ﺍﻟﻤﻌﺎﻟﺞ ﺒﻨﺘﻴﻭﻡ -1
ﺍﻟﺠﻭﺍﺏ :ﻴﺤﺘﻭﻱ ﺍﻟﻤﺘﺤﻜﻡ ﻋﻠﻰ ﺠﻤﻴﻊ ﻤﻜﻭﻨﺎﺕ ﺍﻟﻨﻅﺎﻡ ﻀﻤﻥ ﺭﻗﺎﻗﺔ ﻭﺍﺤﺩﺓ.
ﺒﺕ ،ﻓﻤﺎ ﻫﻭ ﻋﺩﺩ 5 ﺒﻔﺭﺽ ﺃﻥ ﺤﻘل ﺭﻤﺎﺯ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻓﻲ ﻤﻌﺎﻟﺞ ﻴﺴﺎﻭﻱ -6
ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ؟
23
ﺍﻟﻔﺼل ﺍﻟﺜﺎﻨﻲ
ﻋﺎﺌﻼﺕ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ
ﺘﻤﻬﻴﺩ
ﻗﺎﺩ ﺍﻹﻨﺠﺎﺯ ﺍﻟﻌﻠﻤﻲ ﺒﺎﺨﺘﺭﺍﻉ ﺍﻟﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ ﻓﻲ ﻋﺎﻡ ،1947ﻭﻤﻥ ﺜﹸﻡ ﺍﺨﺘﺭﺍﻉ ﺍﻟـﺩﺍﺭﺍﺕ ﺍﻟﻤﺘﻜﺎﻤﻠـﺔ
) ،(Integrated Circuit ICﺇﻟﻰ ﺘﺼﻨﻴﻊ ﺃﻭل ﻤﻌﺎﻟﺞ ﺼﻐﺭﻱ 4004ﻟﻼﺴﺘﺨﺩﺍﻡ ﺍﻟﻌﺎﻡ ﻤﻥ ﻗﺒل ﺸﺭﻜﺔ
Intelﻋﺎﻡ .1971ﺍﺴﺘﺨﺩﻡ ﻫﺫﺍ ﺍﻟﻤﻌﺎﻟﺞ ﺤﻴﻨﺌﺫ ﻓﻲ ﺼﻨﺎﻋﺔ ﺁﻻﺕ ﺍﻟﺤﻭﺴﺒﺔ ﻭﺃﻟﻌﺎﺏ ﺍﻟﻔﻴﺩﻴﻭ ﻭﻨﻅـﻡ
ﺍﻟﺘﺤﻜﻡ ﺍﻟﺒﺴﻴﻁﺔ.
ﻴﺒﻠﻎ ﻁﻭل ﻤﺭﺍﻜﻡ ﻫﺫﺍ ﺍﻟﻤﻌﺎﻟﺞ ،4-bitsﻭﻗﺎﺩﺭ ﻋﻠﻰ ﺘﻨﻔﻴﺫ .192 KIPSﻭﺘﻀﻡ ﻤﺠﻤﻭﻋـﺔ ﺘﻌﻠﻴﻤﺎﺘـﻪ
ﺘﻌﻠﻴﻤﺔ .ﻟﻘﺩ ﻜﺎﻥ ﻫﺫﺍ ﺍﻻﺨﺘﺭﺍﻉ ﺍﻟﺨﻁﻭﺓ ﺍﻷﻭﻟﻰ ﻨﺤﻭ ﺘﻁـﻭﻴﺭ ﺍﻷﺠﻴـﺎل ﺍﻟﻤﺨﺘﻠﻔـﺔ ﻤـﻥ ﻓﻘﻁ 46
ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺼﻐﺭﻴﺔ.
1
ﺃﺼﺩﺭﺕ Intelﻋﺎﻡ ،1972ﻜﺘﻁﻭﻴﺭ ﻟﻠﻤﻌﺎﻟﺞ ،4004ﺍﻟﻤﻌـﺎﻟﺞ ،8008ﺃﻭل ﻤﻌـﺎﻟﺞ 8-bitsﻓـﻲ
ﺍﻟﻌﺎﻟﻡ ،ﻴﺴﻤﺢ ﺒﺈﻤﻜﺎﻥ ﻤﻌﺎﻟﺠﺔ ﻀﻌﻑ ﺤﺠﻡ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘﻲ ﻴﻌﺎﻟﺠﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ .4004ﻭﺘﻀﻡ ﻤﺠﻤﻭﻋﺔ
ﺘﻌﻠﻴﻤﺎﺘﻪ 48ﺘﻌﻠﻴﻤﺔ.
ﻗﺎﻤﺕ ﺒﻌﺩ ﺫﻟﻙ ﺸﺭﻜﺔ Intelﻋﺎﻡ 1974ﺒﻨﻘﻠﺔ ﻨﻭﻋﻴﺔ ﺒﺈﻨﺘﺎﺝ ﻤﻌﺎﻟﺞ 8-bitﺫﺍﺌـﻊ ﺍﻟـﺼﻴﺕ ،8080
ﺍﻟﺫﻱ ﺘﺠﺎﻭﺯ ﻤﺸﺎﻜل ﺴﺎﺒﻘﻴﻪ ﺍﻟﻌﺩﻴﺩﺓ ﻤﺜل ﺍﻟﺴﺭﻋﺔ ﺍﻟﻤﻨﺨﻔﻀﺔ ﻭﺍﻟﺫﺍﻜﺭﺓ ﺍﻟـﺼﻐﻴﺭﺓ؛ ﻴـﺴﺘﻁﻴﻊ ﻫـﺫﺍ
ﺍﻟﻤﻌﺎﻟﺞ ﻋﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﻴﺼل ﺤﺠﻤﻬﺎ ﺇﻟﻰ 64ﻜﻴﻠﻭﺒﺎﻴﺕ ،ﻭﺃﺴﺭﻉ ﺒـ 20ﻀﻌﻑ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺞ .4004
ﹶﻗﺩﻤﺕ Intelﻓﻲ ﻋﺎﻡ 1977ﻨﺴﺨﺔ ﻤﺤﺴﻨﺔ ﻋﻥ 8080ﻭﻫﻭ ﺍﻟﻤﻌﺎﻟﺞ ،8085ﺁﺨﺭ ﻤﻌﺎﻟﺞ ﻤﻥ ﻨﻤﻁ
ل
8-bitﻟﻼﺴﺘﺨﺩﺍﻡ ﺍﻟﻌﺎﻡ ﻤﻥ .Intelﺘﻤﻴﺯ 8085ﺒﺎﺤﺘﻭﺍﺌﻪ ﻋﻠﻰ :ﺴﺎﻋﺔ ﺩﺍﺨﻠﻴـﺔ ،ﺫﺍﺕ ﺘـﺭﺩﺩ ﻋـﺎ ٍ
ﻨﺴﺒﻴﺎﹰ ،ﻭﺘﻌﻠﻴﻤﺎﺕ ﻤﺭﻨﺔ ﻓﻲ ﺍﻟﺘﻌﺎﻤل .ﺃﺩﻯ ﻜل ﺫﻟﻙ ﻟﺒﻴﻊ ﺍﻟﺸﺭﻜﺔ ﺃﻜﺜﺭ ﻤﻥ 100ﻤﻠﻴﻭﻥ ﻨﺴﺨﺔ ﻤﻥ ﻫﺫﺍ
ﺍﻟﻤﻌﺎﻟﺞ.
2
ﺃﺼﺩﺭﺕ Intelﻋﺎﻡ 1978ﻤﻌﺎﻟﺞ 16-bitﻫﻭ ،8086ﺃﻭل ﺃﻓﺭﺍﺩ ﺍﻟﻌﺎﺌﻠﺔ 2 .x86ﻭﺒﻌﺩ ﺃﻜﺜﺭ ﻤـﻥ
ﺴﻨﺔ ﺃﺼﺩﺭﺕ Intelﺍﻟﻤﻌﺎﻟﺞ 8088ﺍﻟﺫﻱ ﻫﻭ ﺃﻴﻀﹰﺎ ،16-bitﻨﺴﺨﺔ ﻤﻌﺩﻟﺔ ﻋﻥ .8086ﺠﻌل ﻋﺭﺽ
ﻤﺴﺭﻯ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8088ﻤﺴﺎﻭﻴﹰﺎ 8-bitﻋﻭﻀﹰﺎ ﻋﻥ 16-bitﻓﻲ ،8086ﺤﺘﻰ ﻴﺘﻭﺍﻓـﻕ ﻤـﻊ
ﺍﻟﺩﺍﺭﺍﺕ ﺍﻟﻤﺼﻤﻤﺔ ﺴﺎﺒﻘﹰﺎ ﻟﺘﻌﻤل ﻤﻊ ﻤﻌﺎﻟﺠﺎﺕ .8-bitﺘﻌﺯﺯ ﻤﻭﻗﻑ ﺸﺭﻜﺔ Intelﺒﻌـﺩ ﺃﻥ ﻗـﺭﺭﺕ
IBMﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﻌﺎﻟﺞ 8088ﻓﻲ ﺘﺼﻤﻴﻡ ﺃﻭل ﺤﺎﺴﻭﺏ ﺸﺨﺼﻲ ﻟﻬﺎ .ﺒﺎﻟﻤﻘﺎﺭﻨﺔ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ ،8085
ﻓﺈﻥ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻴﻨﻔﺫ ،32.5 MIPSﺃﻜﺜﺭ ﺒﻌﺸﺭ ﻤﺭﺍﺕ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺞ ،8085ﻭﻗﺎﺩﺭ ﻋﻠـﻰ
ﻋﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺤﺠﻤﻬﺎ 1ﻤﻴﻐﺎﺒﺎﻴﺕ ﺒﻴﻨﻤﺎ ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﻌﺎﻟﺞ 8085ﻋﻨﻭﻨﺔ ﻓﻘﻁ 64ﻜﻴﻠﻭﺒﺎﻴﺕ ﺫﺍﻜـﺭﺓ،
ﻜﻤﺎ ﻴﺒﻠﻎ ﻋﺩﺩ ﺘﻌﻠﻴﻤﺎﺘﻪ ﺤﻭﺍﻟﻲ 20,000ﺘﻌﻠﻴﻤﺔ ﻤﻘﺎﺭﻨﺔ ﻤﻊ 246ﻴﻤﺘﻠﻜﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ 8085ﻤﻤﺎ ﻴﺯﻴـﺩ
ﻤﻥ ﻓﻌﺎﻟﻴﺘﻪ ﻭﺃﺩﺍﺌﻪ .ﺴﻤﺤﺕ ﺴﺭﻋﺔ ﺍﻟﺘﻨﻔﻴﺫ ﺍﻟﻌﺎﻟﻴﺔ ﻭﺍﻟﻘﺩﺭﺓ ﻋﻠﻰ ﻋﻨﻭﻨﺔ ﺫﺍﻜـﺭﺓ ﻜﺒﻴـﺭﺓ )ﺤﻴﻨـﺫﺍﻙ(
ﻟﻠﻤﻌﺎﻟﺠﺎﺕ 8088/8086ﺒﺎﻟﺴﻴﻁﺭﺓ ﻋﻠﻰ ﺍﻟﻜﺜﻴﺭ ﻤﻥ ﺍﻟﺘﻁﺒﻴﻘﺎﺕ.
ﺍﺯﺩﺍﺩ ﺒﻌﺩ ﺫﻟﻙ ﺍﻟﻁﻠﺏ ﻋﻠﻰ ﺤﻭﺍﺴﻴﺏ ﺸﺨﺼﻴﺔ ﺃﻗﻭﻯ ﻗﺎﺩﺭﺓ ﻋﻠﻰ ﺘﻨﺠﻴﺯ ﺤﺴﺎﺒﺎﺕ ﻭﺇﻅﻬﺎﺭﺍﺕ ﺒﻴﺎﻨﻴـﺔ
ﻭﺭﺴﻭﻤﺎﺕ ﺃﻜﺜﺭ ﺘﻌﻘﻴﺩﹰﺍ ﻭﻜﺫﻟﻙ ﺩﻋﻡ ﻨﻅﻡ ﺍﻟﺘﺸﻐﻴل ﺍﻟﺘﻲ ﺘﺯﺩﺍﺩ ﺇﻤﻜﺎﻨﺎﺘﻬﺎ ﺒﺎﺴﺘﻤﺭﺍﺭ .ﺩﻓﻊ ﻜـل ﺫﻟـﻙ
Intelﺇﻟﻰ ﺘﻁﻭﻴﺭ ﺃﺠﻴﺎل ﻤﻥ ﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﻌﺎﺌﻠﺔ x86ﺘﻠﺒﻲ ﺃﻜﺜﺭ ﺤﺎﺠﺔ ﺍﻟﺘﻁﺒﻴﻘﺎﺕ ﺍﻟﺠﺩﻴﺩﺓ ،ﻭﺘﺘـﻀﻤﻥ
ﻋﺩﺩﹰﺍ ﺃﻜﺒﺭ ﻤﻥ ﺍﻟﺘﺭﺍﻨﺯﺴﺘﻭﺭﺍﺕ ﻓﻲ ﺭﻗﺎﻗﺔ ﺍﻟﻤﻌﺎﻟﺞ.
ﺡ ﻤﻨﻬﺎ:
ﺍﺘﺨﺫ ﺘﻁﻭﻴﺭ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻋﺩﺓ ﻤﻨﺎ ٍ
ﺯﻴﺎﺩﺓ ﻋﺭﺽ ﻤﺴﺭﻯ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﻁﻭل ﺍﻟﺴﺠﻼﺕ ﺍﻟﺩﺍﺨﻠﻴﺔ
ﺇﻤﻜﺎﻥ ﻋﻨﻭﻨﺔ ﺫﻭﺍﻜﺭ ﺃﻜﺒﺭ ﺤﺠﻤﹰﺎ
ﺯﻴﺎﺩﺓ ﺴﺭﻋﺔ ﻋﻤل ﺍﻟﻤﻌﺎﻟﺠﺎﺕ
ﺯﻴﺎﺩﺓ ﻋﺩﺩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭﺠﻌﻠﻬﺎ ﺃﻜﺜﺭ ﻗﻭﺓ ﻭﻤﺭﻭﻨﺔ
ﺘﻁﻭﻴﺭ ﺒﻨﻴﺔ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ
2ﺗﺘﻀﻤﻦ ﻫﺬﻩ ﺍﻟﻌﺎﺋﻠﺔ ﺍﳌﻌﺎﳉﺎﺕ 8088/8086ﻭ 80286ﻭﻣﺎ ﺑﻌﺪﻫﺎ ﲟﺎ ﻓﻴﻬﺎ ﺳﻠﺴﻠﺔ ﺑﻨﺘﻴﻮﻡ
3ﳐﺘﺼﺮ ،Million-Instruction per Second :ﻣﻠﻴﻮﻥ ﺗﻌﻠﻴﻤﺔ ﰲ ﺍﻟﺜﺎﻧﻴﺔ.
3
ﻨﺒﻴﻥ ﻓﻲ ﺍﻟﺠﺩﻭل ﺍﻟﺘﺎﻟﻲ ﻗﺎﺌﻤﺔ ﺒﺄﻫﻡ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﻤﻨﺘﺠﺔ ﻤﻥ ﺸﺭﻜﺔ Intelﻤﻊ ﺃﻫﻡ ﻤﻴﺯﺍﺕ ﻜل ﻤﻨﻬﺎ.
ﻨﻅﺭﹰﺍ ﻟﺘﺒﻨﻲ ﺸﺭﻜﺔ IBMﻤﻌﺎﻟﺠﺎﺕ Intelﻓﻲ ﺘﺼﻤﻴﻡ ﺤﻭﺍﺴﻴﺒﻬﺎ ﺍﻟﺸﺨﺼﻴﺔ ﻓﻘﺩ ﺴﻴﻁﺭﺕ Intelﻋﻠﻰ
ﻫﺫﺍ ﺍﻟﺴﻭﻕ ،ﻭﻤﻊ ﺫﻟﻙ ﻴﺠﺏ ﺃﻥ ﻻ ﻨﻨﺴﻰ ﻭﺠﻭﺩ ﺸﺭﻜﺎﺕ ﺃﺨﺭﻯ ﺼﻨﻌﺕ ﻁﻴﻔـﹰﺎ ﻤـﻥ ﺍﻟﻤﻌﺎﻟﺠـﺎﺕ،
ﻻ ﺠﺩﻴﺩﺓ ﻤﻥ ﻫﺫﻩ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ،ﻤـﻥ ﻫـﺫﻩ ﺍﻟـﺸﺭﻜﺎﺕZilog :
ﻭﺒﻌﻀﻬﺎ ﻻ ﻴﺯﺍل ﻴﻁﻭﺭ ﻭﻴﺼﻨﻊ ﺃﺠﻴﺎ ﹰ
ﻭ Motorolaﻭ Texas Instrumentsﻭﻏﻴﺭﻫﺎ..
ﻟﻠﻤﺯﻴﺩ ﻤﻥ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺤﻭل ﺘﺎﺭﻴﺦ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻭﻋﺎﺌﻼﺘﻬﺎ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻴﺭﺠﻰ ﺍﻻﻁﻼﻉ ﻋﻠـﻰ ﺍﻟﻤﻠـﻑ
.Panorama.pdf
ﺨﻼل ﻋﻤﻠﻴﺔ ﺍﻟﺘﻁﻭﻴﺭ ﺍﻟﻤﺴﺘﻤﺭﺓ ﻟﻠﻤﻌﺎﻟﺠﺎﺕ ،ﻭﺒﻬﺩﻑ ﺘﺤﺴﻴﻥ ﺃﺩﺍﺌﻬﺎ ،ﺒﺭﺯﺕ ﺍﻟﺘﻘﻨﻴﺘـﺎﻥ ﺍﻟﻤﺘﻨﺎﻓـﺴﺘﺎﻥ
RISCﻭ .CISCﺇﻥ ﻟﻜل ﻤﻥ ﻫﺎﺘﻴﻥ ﺍﻟﺘﻘﻨﻴﺘﻴﻥ ﻤﻴﺯﺍﺕ ﻭﻤﺴﺎﻭﺉ ،ﻭﺘـﺴﺘﺨﺩﻡ ﺍﻟﻤﻌﺎﻟﺠـﺎﺕ ﺍﻟﺤﺎﻟﻴـﺔ
ﻤﺯﻴﺠﹰﺎ ﻤﻥ ﻫﺫﻴﻥ ﺍﻟﺒﻨﻴﺎﻨﻴﻥ ﻓﻲ ﺘﺼﻤﻴﻡ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ،CPUﻋﻭﻀﹰﺎ ﻋﻥ ﺍﻟﺘﺒﻨﻲ ﺍﻟﻤﻁﻠﻕ
ﻹﺤﺩﺍﻫﻤﺎ.
4
ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺫﺍﺕ ﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻭﺴّﻌﺔ 4CISC
ﻟﻡ ﺘﻜﻥ ﺘﻘﻨﻴﺔ ﺍﻟﻤﺘﺭﺠﻤﺎﺕ compilerﻤﺘﻭﻓﺭﺓ ﺍﻟﺒﺘﺔ ﺨﻼل ﺍﻟﻔﺘﺭﺓ ﺍﻷﻭﻟﻰ ﻤﻥ ﺇﻨﺘﺎﺝ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ،ﻤﻤـﺎ
ﺤﺼﺭ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺇﻤﺎ ﺒﺭﻤﺎﺯ ﺍﻵﻟﺔ ﺃﻭ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ .ﻭﻟﺘﺴﻬﻴل ﻋﻤﻠﻴﺔ ﺍﻟﺒﺭﻤﺠـﺔ ﻭﺘﺤـﺴﻴﻥ ﺃﺩﺍﺀ
َ
ﺍﻟﻤﻌﺎﻟﺞ ،ﺃﻀﺎﻑ ﻤﺼﻤﻤﻭ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ،ﻓﻲ ﻜل ﻤﺭﺓ ،ﺘﻌﻠﻴﻤﺎﺕ ﻤﻌﻘﺩﺓ ﺘﺴﻤﺢ ﺒﺘﻨﻔﻴﺫ ﻭﻅـﺎﺌﻑ ﺘﹸﻤﺎﺜـل
ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﺘﻲ ﺘﻘﺩﻤﻬﺎ ﺍﻟﻴﻭﻡ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﻌﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ .ﺴﺎﻋﺩ ﺍﻟﻤﻀﻲ ﻓﻲ ﻫﺫﺍ ﺍﻟﺘﻭﺠـﻪ ،ﻓـﻲ
ﺘﻠﻙ ﺍﻟﻔﺘﺭﺓ ،ﺴﻬﻭﻟﺔ ﺘﺼﻤﻴﻡ ﺍﻟﻜﻴﺎﻥ ﺍﻟﺠﺎﻤﺩ hardwareﻭﺼﻌﻭﺒﺔ ﺘﺼﻤﻴﻡ ﺍﻟﻤﺘﺭﺠﻤﺎﺕ ،ﻤﻤﺎ ﺩﻓﻊ ﺃﻜﺜﺭ
ﻨﺤﻭ ﺍﺯﺩﻴﺎﺩ ﺘﻌﻘﻴﺩ ﺍﻟﻜﻴﺎﻥ ﺍﻟﺠﺎﻤﺩ .ﻜﺎﻨﺕ ﻫﺫﻩ ﺍﻟﻔﻜـﺭﺓ ﻭﺭﺍﺀ ﺘـﺼﻤﻴﻡ ﻤﻌﺎﻟﺠـﺎﺕ ﺫﺍﺕ "ﻤﺠﻤﻭﻋـﺔ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻭﺴﻌﺔ" ﺃﻭ CISCﻤﺜل ﻋﺎﺌﻠﺔ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ x86ﻤﻥ Intelﺍﻟﺘﻲ ﺘﻀﻡ ﻤﺠﻤﻭﻋﺔ ﺘﻌﻠﻴﻤﺎﺘﻬﺎ
ﺃﻜﺜﺭ ﻤﻥ 300ﺘﻌﻠﻴﻤﺔ .ﺘﺘﻤﻴﺯ ﻤﻌﺎﻟﺠﺎﺕ CISCﺒﻜﺜﺭﺓ ﻋﺩﺩ ﺃﻨﻤﺎﻁ ﺍﻟﻌﻨﻭﻨﺔ ﻭﺍﻟﺴﺠﻼﺕ ﻭﻜﺫﻟﻙ ﺒﺎﻟﻁﻭل
ﺍﻟﻤﺘﻐﻴﺭ ﻟﺭﻤﺎﺯ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ .ﺃﺩﻯ ﺍﺯﺩﻴﺎﺩ ﺘﻌﻘﻴﺩ ﺍﻟﻜﻴﺎﻥ ﺍﻟﺠﺎﻤﺩ ﻭﺒﻨﻴﺎﻥ ﺍﻟﻤﻌﺎﻟﺞ ﺇﻟـﻰ ﺼـﻌﻭﺒﺔ ﻓﻬﻤـﻪ
ﻭﺒﺭﻤﺠﺘﻪ ﻭﺇﻟﻰ ﺍﺭﺘﻔﺎﻉ ﻜﻠﻔﺔ ﺇﻨﺘﺎﺠﻪ.
ﻨﺫﻜﺭ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ CISCﺍﻟﺸﺎﺌﻌﺔ :ﺍﻟﻌﺎﺌﻠﺔ ، x86ﻭﺍﻟﻌﺎﺌﻠﺔ Motorola 68000ﻭ .AMD
5
ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺫﺍﺕ ﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻭﺠﺯﺓ RISC
ﺸﻬﺩ ﻤﻨﺘﺼﻑ ﺍﻟﺜﻤﺎﻨﻴﻨﺎﺕ ﺒﺩﺍﻴﺔ ﻅﻬﻭﺭ ﺍﻟﺒﻨﻴﺎﻥ .RISCﺍﺴﺘﻭﺤﻴﺕ ﻫﺫﻩ ﺍﻟﻔﻠﺴﻔﺔ ﺒﻌﺩ ﺍﻟﺩﺭﺍﺴـﺔ ﺍﻟﺘـﻲ
ﹶ
ﺃﻅﻬﺭﺕ ﺃﻥ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﻤﻴﺯﺍﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﻭﺤﺩﺍﺕ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ،ﻭﺍﻟﻤـﺼﻤﻤﺔ ﻟﺘـﺴﻬﻴل
ﺒﺭﻤﺠﺘﻪ ،ﻴﺠﺭﻱ ﺘﺠﺎﻫﻠﻬﺎ ﻤﻥ ﻗﺒل ﺍﻟﻤﺒﺭﻤﺞ ﻋﻨﺩ ﻜﺘﺎﺒﺘﻪ ﻟﻠﺒﺭﻨﺎﻤﺞ .ﺃﻀﻑ ﻋﻠﻰ ﺫﻟﻙ ،ﺍﻟﺯﻤﻥ ﺍﻟﻜﺒﻴـﺭ
ﺍﻟﺫﻱ ﻴﺄﺨﺫﻩ ﺍﻟﻤﻌﺎﻟﺞ ﻟﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﻘﺩﺓ ،ﻭﺍﺘﺴﺎﻉ ﺍﻟﻔﺠﻭﺓ ﺒـﻴﻥ ﺴـﺭﻋﺔ ﺍﻟﻤﻌﺎﻟﺠـﺔ ﻭﺍﻟـﺫﺍﻜﺭﺓ
ﺍﻟﺭﺌﻴﺴﺔ .ﻜل ﺫﻟﻙ ﺃﺩﻯ ﺇﻟﻰ ﺘﻁﻭﻴﺭ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺘﺠﻌل ﻋﻤل ﺍﻟﻤﻌﺎﻟﺞ ﺃﻜﺜـﺭ ﺍﻨـﺴﻴﺎﺒﻴﺔ ،ﻤـﻊ
ﺍﻹﻗﻼل ﺒﺎﻟﻭﻗﺕ ﻨﻔﺴﻪ ﻤﻥ ﻋﺩﺩ ﻤﺭﺍﺕ ﺍﻟﻨﻔﻭﺫ ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ.
ﺘﻌﺘﻤﺩ ﻓﻜﺭﺓ RISCﻋﻠﻰ ﺃﻥ ﺍﻟﻁﺭﻴﻘﺔ ﺍﻷﻓﻀل ﻟﺘﺤﺴﻴﻥ ﺃﺩﺍﺀ ﺍﻟﻤﻌﺎﻟﺞ ﺘﻜﻤﻥ ﻓﻲ ﺘﺒـﺴﻴﻁ ﻋﻤﻠـﻪ ﻤـﺎ
ﺃﻤﻜﻥ .ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ،ﺍﺨﺘﺯﻟﺕ ﻋﺩﺩ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ ،IBM PowerPCﻭﻫﻭ ﻤﻥ ﻨﻭﻉ ،RISC
ﺇﻟﻰ ﺤﻭﺍﻟﻲ 100ﺘﻌﻠﻴﻤﺔ ﺃﻭ ﺃﻗل ،ﻭﺃﻋﻴﺩ ﺘﺒﺴﻴﻁ ﺃﻨﻤﺎﻁ ﺍﻟﻌﻨﻭﻨﺔ ﺇﻟﻰ ﺃﺭﺒﻌﺔ ﺃﻭ ﺃﻗل ،ﻜﻤﺎ ﺠﻌل ﻁـﻭل
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺜﺎﺒﺘﹰﺎ ﻤﻥ ﺃﺠل ﺠﻌل ﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻤﻌﻴﺎﺭﻴﺔ.
4
ﻣﺨﺘﺼﺮComplex Instruction Set Computers :
Reduce Instruction Set Computers 5ﳐﺘﺼﺮ:
5
ﻨﺫﻜﺭ ﻤـﻥ ﺍﻟﻤﻌﺎﻟﺠـﺎﺕ RISCﺍﻟـﺸﺎﺌﻌﺔ،PIC ،PA-RISC ،MIPS ،AVR ،ARM ،Alpha :
،Power Architectureﻭ .SPARC
ﺃﺩﻯ ﺍﻟﺘﺤﻭل ﻨﺤﻭ ﺍﻟﺒﻨﻴﺎﻥ RISCﺇﻟﻰ ﺍﺴﺘﺨﺩﺍﻡ ﻋﺩﺩ ﺃﻗل ﻤﻥ ﺍﻟﺘﺭﺍﻨﺯﺴﺘﻭﺭ ﻓﻲ ﺇﻨﺘﺎﺝ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ،ﻤﻤﺎ
ﻴﺠﻌل ﻜﻠﻔﺔ ﺇﻨﺘﺎﺝ ﺍﻟﺭﻗﺎﻗﺎﺕ RISCﺃﻗل ﺒﻜﺜﻴﺭ ﻤﻥ ﻜﻠﻔﺔ ﺇﻨﺘﺎﺝ ﻨﻅﻴﺭﻫﺎ .CISCﻜﺫﻟﻙ ﻓـﺈﻥ ﺍﺨﺘـﺯﺍل
ﻋﺩﺩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻴﻌﻨﻲ ﺃﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻴﻤﻜﻨﻪ ﺃﻥ ﻴﻨﻔﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺒﺴﺭﻋﺔ ﺃﻋﻠﻰ ،ﻭﻟﻜﻥ ﻨﻅﺭﹰﺍ ﻟﻘﻠـﺔ ﻋـﺩﺩ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻓﻤﻥ ﺍﻟﻀﺭﻭﺭﻱ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﺘﺎﺤﺔ ﻋﻠﻰ ﻨﺤﻭ ﻓﻌﺎل.
ﻴﺒﻴﻥ ﺍﻟﺠﺩﻭل ﻤﻘﺎﺭﻨﺔ ﺒﻴﻥ ﺍﻟﺒﻨﻴﺎﻨﻴﻥ CISCﻭ .RISC
RISC CISC ﺍﻟﻤﻌﻴﺎﺭ
ﻗﻠﻴﻠﺔ ) 100ﺃﻭ ﺃﻗل( ﻜﺒﻴﺭﺓ )ﺒﻴﻥ 100ﻭ (300 ﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ
ﺒﺴﻴﻁ ) 4ﺃﻭ ﺃﻗل( ﻤﻌﻘﺩﺓ )ﻤﻥ 8ﺇﻟﻰ (20 ﺃﻨﻤﺎﻁ ﺍﻟﻌﻨﻭﻨﺔ
ﺜﺎﺒﺕ ﻤﺘﻐﻴﺭ ﻁﻭل ﺍﻟﺘﻌﻠﻴﻤﺔ
ﺜﺎﺒﺕ ﻷﻏﻠﺏ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻤﺘﻐﻴﺭ ﺯﻤﻥ ﺍﻟﺘﻨﻔﻴﺫ
ﺃﻗل ﺃﻋﻠﻰ ﻜﻠﻔﺔ ﻭﺘﻌﻘﻴﺩ ﺍﻟـ CPU
ﺃﻋﻠﻰ ﺃﻗل ﺤﺠﻡ ﺍﻟﺒﺭﺍﻤﺞ ﺒﻠﻐﺔ ﺍﻵﻟﺔ
ﺃﻜﺜﺭ ﺃﻗل ﻋﺩﺩ ﺍﻟﺴﺠﻼﺕ
ﺒﺎﻟﻨﻅﺭ ﺇﻟﻰ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺤﺩﻴﺜﺔ ،ﻨﺠﺩ ﺃﻥ ﺍﻟﻤﻨﺎﻓﺴﺔ ﺒﻴﻥ CISCﻭ RISCﻟﻴﺱ ﻟﻪ ﺍﻟﻴﻭﻡ ﺃﻫﻤﻴﺔ ﻜﺒﻴﺭﺓ،
ﻭﻫﺫﺍ ﺒﺴﺒﺏ ﺘﻘﺎﺭﺏ ﻫﺫﺍﻥ ﺍﻟﺒﻨﻴﺎﻨﺎﻥ ﻜل ﻤﻨﻬﻤﺎ ﺒﺎﺘﺠﺎﻩ ﺍﻷﺨﺭ ،ﺤﻴﺙ ﺃﻥ ﻭﺤﺩﺍﺕ ﺍﻟﻤﻌﺎﻟﺠﺔ CPUsﻤﻥ
ﻜل ﺒﻨﻴﺎﻥ ﺘﺘﺒﻨﻰ ﺃﻓﻜﺎﺭ ﺍﻟﺒﻨﻴﺎﻥ ﺍﻵﺨﺭ .ﻓﺎﻟﻤﻌﺎﻟﺠﺎﺕ CISCﺘﺴﺘﺨﺩﻡ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ
،RISCﻜﻤﺎ ﺃﻥ ﻋﺩﺩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻭﺠﺯﺓ ﻟﻤﻌﺎﻟﺠﺎﺕ RISCﻗﺭﻴﺒﺔ ﻤﻥ ﺘﻠﻙ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓـﻲ ﺒﻌـﺽ
ﻤﻌﺎﻟﺠﺎﺕ .CISC
ﺘﻨﻔﺫ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺘﻘﻠﻴﺩﻴﺔ ﺘﻌﻠﻴﻤـﺔ ﻭﺍﺤـﺩﺓ ﺒـﺂﻥ ﻭﺍﺤـﺩ )ﻟـﺫﻟﻙ ﺘﹸـﺴﻤﻰ ﺒﺎﻟﻤﻌﺎﻟﺠـﺎﺕ ﺍﻟـﺴﻠﻤﻴﺔ
(scalar processor؛ ﺃﻱ ﻻ ﻴﺒﺩﺃ ﺍﻟﻤﻌﺎﻟﺞ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺇﻻ ﺒﻌﺩ ﺍﻻﻨﺘﻬﺎﺀ ﺘﻤﺎﻤﹰﺎ ﻤـﻥ ﺘﻨﻔﻴـﺫ
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺤﺎﻟﻴﺔ .ﺒﻔﺭﺽ ﺃﻥ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺔ ﻴﺤﺘﺎﺝ ﺇﻟﻰ ﺃﺭﺒﻊ ﻋﻤﻠﻴﺎﺕ ﺃﺴﺎﺴﻴﺔ :ﺠﻠﺏ ،ﻓﻙ ﺘﺭﻤﻴﺯ ،ﺘﻨﻔﻴﺫ
ﻭﺘﺨﺯﻴﻥ ،ﻭﺒﻔﺭﺽ ﺃﻥ ﻜل ﻋﻤﻠﻴﺔ ﺘﻨﺠﺯ ﺨﻼل ﻭﺤﺩﺓ ﺯﻤﻨﻴﺔ ،ﻓﻴﺤﺘﺎﺝ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺔ ﻭﺍﺤﺩﺓ ﺇﻟﻰ ﺃﺭﺒﻌـﺔ
6
ﻭﺤﺩﺍﺕ ﺯﻤﻨﻴﺔ ﻭﻴﺤﺘﺎﺝ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺘﻴﻥ ﺇﻟﻰ 8ﻭﺤﺩﺍﺕ ﺯﻤﻨﻴﺔ .ﻨﺫﻜﺭ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺘﻲ ﺘﺘﺒﻨﻰ ﻫـﺫﺍ
ﺍﻟﺒﻨﻴﺎﻥ ﺍﻟﻤﻌﺎﻟﺞ .8085
ﺇﺫﺍ ﺍﺤﺘﻭﻯ ﺍﻟﻤﻌﺎﻟﺞ ﻋﻠﻰ ﻋﺩﺓ ﻭﺤﺩﺍﺕ ﻤﺘﺨﺼﺼﺔ :ﻭﺍﺤﺩﺓ ﻟﺠﻠﺏ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻭﺃﺨﺭﻯ ﻟﻔـﻙ ﺘﺭﻤﻴﺯﻫـﺎ
ﻭﺜﺎﻟﺜﺔ ﻟﺘﻨﻔﻴﺫﻫﺎ ﻭﺭﺍﺒﻌﺔ ﻟﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻋﻨﺩﺌﺫ ﻴﻤﻜﻥ ﺘﻨﻔﻴﺫ ﺃﻜﺜﺭ ﻤﻥ ﺘﻌﻠﻴﻤﺔ ﺒﺂﻥ ﻭﺍﺤـﺩ .ﻓﺒﻴﻨﻤـﺎ
ﺘﻌﻤل ﻭﺤﺩﺓ ﺍﻟﺠﻠﺏ ﻋﻠﻰ ﺠﻠﺏ ﺘﻌﻠﻴﻤﺔ ﺠﺩﻴﺩﺓ ﺘﻌﻤل ﻭﺤﺩﺓ ﺍﻟﻔﻙ ﻋﻠﻰ ﻓﻙ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﻲ ﺃﻨﻬﺕ ﻭﺤـﺩﺓ
ﺍﻟﺠﻠﺏ ﺠﻠﺒﻬﺎ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ،ﻭﺘﻌﻤل ﻭﺤﺩﺓ ﺍﻟﺘﻨﻔﻴﺫ ﻋﻠﻰ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﻲ ﺃﻨﻬﺕ ﻭﺤﺩﺓ ﻓﻙ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻤﻥ
ﻓﻜﻬﺎ ﺃﻭ ﺘﺤﻠﻴﻠﻬﺎ ،ﻭﺘﻌﻤل ﻭﺤﺩﺓ ﺍﻟﺘﺨﺯﻴﻥ ﻋﻠﻰ ﺘﺨﺯﻴﻥ ﻨﺎﺘﺞ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺴﺎﺒﻘﺔ .ﺘـﺴﻤﻰ ﻫـﺫﻩ ﺍﻟﺘﻘﻨﻴـﺔ
ﺒﺎﻟﺘﻭﺍﺭﺩ Pipeliningﻷﻥ ﻜل ﻭﺤﺩﺓ ﺘﺨﺼﺼﻴﺔ ﺘﹸﻭﺭﺩ ﻨﺘﺎﺌﺠﻬﺎ ﺇﻟﻰ ﺍﻟﻭﺤﺩﺓ ﺍﻟﺘﻲ ﺘﻠﻴﻬﺎ ﻋﻨـﺩ ﺇﻨﻬـﺎﺀ
ﻤﻬﻤﺘﻬﺎ ﻋﺒﺭ ﻗﻨﺎﺓ ﻨﹸﺴﻤﻴﻬﺎ ﻗﻨﺎﺓ ﺍﻟﻤﻭﺍﺭﺩﺓ .Pipeline
ﻨﺠﺩ ﻤﻥ ﺍﻟﻤﺨﻁﻁ ﺍﻟﺴﺎﺒﻕ ﺃﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻷﻭﻟﻰ ﻗﺩ ﺍﺤﺘﺎﺠﺕ ﺇﻟﻰ ﺃﺭﺒﻌﺔ ﻭﺤﺩﺍﺕ ﺯﻤﻨﻴﺔ ﻹﻨﻬﺎﺀ ﺘﻨﻔﻴﺫﻫﺎ،
ﻜﻤﺎ ﻫﻭ ﺍﻟﺤﺎل ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺘﻘﻠﻴﺩﻱ ،ﻓﻲ ﺤﻴﻥ ﺍﺤﺘﺎﺝ ﺘﻨﻔﻴﺫ ﺍﻟﺜﺎﻨﻴﺔ ﻓﻘﻁ ﺇﻟﻰ ﻭﺤـﺩﺓ ﺯﻤﻨﻴـﺔ ﻭﺍﺤـﺩﺓ
ﻭﻜﺫﻟﻙ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺜﺎﻟﺜﺔ ﻭﻫﻜﺫﺍ ..ﻨﺴﺘﻨﺘﺞ ﺃﻥ ﻭﺠﻭﺩ ﺍﻟﻭﺤﺩﺍﺕ ﺍﻟﺘﺨﺼﺼﻴﺔ ﺃﺩﻯ ﺇﻟﻰ ﺇﻨﻘـﺎﺹ ﺯﻤـﻥ
7
ﺍﻟﻤﻌﺎﻟﺠﺔ ﺘﻘﺭﻴﺒﹰﺎ ﺇﻟﻰ ﺍﻟﺭﺒﻊ ،ﻤﺎ ﻋﺩﺍ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻷﻭﻟﻰ ﺍﻟﺘﻲ ﺒﻘﻲ ﺯﻤﻥ ﺘﻨﻔﻴﺫﻫﺎ ﺒﺩﻭﻥ ﺘﻐﻴﻴﺭ .ﻨﺫﻜﺭ ﻤـﻥ
ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺘﻲ ﺘﺴﺘﺨﺩﻡ ﻓﻲ ﺘﺼﻤﻴﻤﻬﺎ ﻤﺒﺩﺃ ﺍﻟﺘﻭﺍﺭﺩ ﻤﻌﺎﻟﺠﺎﺕ AVRﻭﺍﻟﻤﺘﺤﻜﻤﺎﺕ ﺍﻟـﺼﻐﺭﻴﺔ ﻤـﻥ
PICﻭﻤﻌﺎﻟﺞ ﺒﻨﺘﻴﻭﻡ .4
ﻤﻊ ﺃﻥ ﻤﺒﺩﺃ ﺍﻟﺘﻭﺍﺭﺩ ﻴﺴﻤﺢ ﺒﺈﻨﻘﺎﺹ ﺯﻤﻥ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﻓﺈﻥ ﻭﺠﻭﺩ ﺒﻌﺽ ﺍﻟﺼﻌﻭﺒﺎﺕ ﺘﺠﻌل ﺃﺩﺍﺀﻩ
ﺃﻗل ﻤﻥ ﺍﻟﻨﺤﻭ ﺍﻟﻤﺭﻏﻭﺏ ﻓﻴﻪ .ﻓﻤﻥ ﻨﺎﺤﻴﺔ ،ﻨﺠﺩ ﺃﻥ ﻤﺯﺍﻤﻨﺔ ﻋﻤل ﺍﻟﻭﺤﺩﺍﺕ ﻟﻴﺱ ﺒﺎﻷﻤﺭ ﺍﻟﺴﻬل ﺒﺴﺒﺏ
ﻼ ﻨﺠﺩ ﺃﻥ ﺍﻟﺯﻤﻥ ﺍﻟﻼﺯﻡ ﻟﺘﻨﻔﻴﺫ
ﻋﺩﻡ ﺍﺴﺘﻐﺭﺍﻕ ﺠﻤﻴﻊ ﺍﻟﻭﺤﺩﺍﺕ ﺍﻟﻤﺩﺓ ﻨﻔﺴﻬﺎ ﻹﻨﻬﺎﺀ ﻋﻤل ﻜل ﻤﻨﻬﺎ ،ﻓﻤﺜ ﹰ
ﺘﻌﻠﻴﻤﺔ ﻴﻜﻭﻥ ﻋﺎﺩﺓ ﺃﻜﺒﺭ ﻤﻥ ﺯﻤﻥ ﺠﻠﺏ ﺘﻌﻠﻴﻤﺔ .ﻭﻤﻥ ﻨﺎﺤﻴﺔ ﺃﺨﺭﻯ ،ﹸﺘﻐﻴﺭ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔﺯ ﻤﻥ ﺘﺘـﺎﺒﻊ
ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ،ﻤﻤﺎ ﻴﺴﺘﺩﻋﻲ ﺇﻓﺭﺍﻍ ﻗﻨﺎﺓ ﺍﻟﻤﻭﺍﺭﺩﺓ ﺜﻡ ﻤﻸﻫﺎ ﻤﺠﺩﺩﹰﺍ ﺒﻌﺩ ﺇﻨﺠﺎﺯ ﻋﻤﻠﻴﺔ ﺍﻟﻘﻔﺯ ،ﻭﻫـﺫﺍ
ﻴﺒﻁﺊ ﺴﺭﻋﺔ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ.
ﺇﻥ ﺘﻁﺒﻴﻕ ﻤﺒﺩﺃ ﺍﻟﺘﻭﺍﺭﺩ Pipeliningﻴﺯﻴﺩ ﻤﻥ ﺴﺭﻋﺔ ﺘﻨﻔﻴﺫ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻠﺘﻌﻠﻴﻤﺎﺕ؛ ﻓﺒﻴﻨﻤﺎ ﺘﹸﺤ ﱢﻤل ﻭﺤـﺩﺓ
ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ﺘﻌﻠﻴﻤﺔ ﺠﺩﻴﺩﺓ ﻓﺈﻨﻬﺎ ﺘﻨﻔﺫ ﺤﺴﺎﺒﺎﺕ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﻲ ﺴﺒﻘﺘﻬﺎ ﻭﺘﺨﺯﻥ ﻨﺘﻴﺠﺔ ﺍﻟﺘﻌﻠﻴﻤـﺔ
ﺍﻟﺘﻲ ﺴﺒﻘﺕ ﺴﺎﺒﻘﺘﻬﺎ .ﺼﺤﻴﺢ ﺃﻥ ﻫﺫﻩ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺘﻌﺘﺒﺭ ﺘﻔﺭﻋﻴﺔ ﺇﻻ ﺃﻨﻬﺎ ﻻ ﺘﻌﺘﺒﺭ ﻤﻌﺎﻟﺠﺔ ﺴﻠﻤﻴﺔ ﻓﺎﺌﻘـﺔ
superscalar processingﻟﻜﻭﻨﻬﺎ ﹸﺘﻨﻬﻲ ﻋﻠﻰ ﺍﻷﻜﺜﺭ ﺘﻌﻠﻴﻤﺔ ﻭﺍﺤﺩﺓ ﺨﻼل ﻜل ﺩﻭﺭﺓ ﺁﻟﺔ.
ﻟﺯﻴﺎﺩﺓ ﻤﻌﺩل ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻤﺩﺕ ﺒﻌﺽ ﺍﻟﺸﺭﻜﺎﺕ ﺇﻟﻰ ﺘﺼﻨﻴﻊ ﻤﻌﺎﻟﺠﺎﺕ ﻋﺎﻟﻴـﺔ ﺍﻷﺩﺍﺀ ﺘﺤﺘـﻭﻱ
ﻋﻠﻰ ﻋﺩﺓ ﻭﺤﺩﺍﺕ ﺤﺴﺎﺒﻴﺔ ﻭﻤﻨﻁﻘﻴﺔ ALUﺘﻌﻤل ﻤﻌﹰﺎ ﻋﻠﻰ ﺍﻟﺘﻭﺍﺯﻱ .ﺘﺴﺘﻁﻴﻊ ﻫﺫﻩ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺠﻠـﺏ
ﻋﺩﺓ ﺘﻌﻠﻴﻤﺎﺕ ﺒﺂﻥ ﻭﺍﺤﺩ ﻭﻓﻙ ﺘﺭﻤﻴﺯ ﻋﺩﺩ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺴﺎﺒﻘﺔ ﻭﺘﻨﻔﻴﺫ ﻋﺩﺩ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤـﺎﺕ ﺍﻟﺘـﻲ
ﻼ 96ﺒـﺕ(،
ﺴﺒﻘﺕ ﺴﺎﺒﻘﺘﻬﺎ .ﺘﹸﺒﺭﻤﺞ ﻫﺫﻩ ﺍﻟﻭﺤﺩﺍﺕ ﺒﺘﻌﻠﻴﻤﺎﺕ ﻤﺭﻤﺯﺓ ﻋﻠﻰ ﻋﺩﺩ ﻜﺒﻴﺭ ﻤﻥ ﺍﻟﺒﺘﺎﺕ )ﻤﺜ ﹰ
ﺘﺴﻤﻰ ﺒﺎﻟﺘﻌﻠﻴﻤﺎﺕ ﺫﺍﺕ ﺍﻟﻜﻠﻤـﺎﺕ ﺍﻟﻌﺭﻴـﻀﺔ ﺠـﺩﹰﺍ ).Very Large Instruction Word (VLIW
ﺘﹸﻭﺼﻑ ﻫﺫﻩ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺒﺄﻨﻬﺎ ﻤﻌﺎﻟﺠﺎﺕ ﺴﻠﻤﻴﺔ ﻓﺎﺌﻘﺔ .Superscalar
ﺘﺯﺩﺍﺩ ﺴﺭﻋﺔ ﺍﻟﻤﻌﺎﻟﺠﺔ ﻤﻊ ﺍﺯﺩﻴﺎﺩ ﻋﺩﺩ ﺍﻟﻭﺤﺩﺍﺕ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ .ﻓﺒﻴﻨﻤﺎ ﺘﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺠـﺎﺕ ﺍﻟـﺴﻠﻤﻴﺔ
ﺍﻟﻔﺎﺌﻘﺔ ﺍﻷﻭﻟﻰ ﻋﻠﻰ ﻭﺤﺩﺘﻲ ﺤﺴﺎﺏ ﻤﻨﻁﻘﻴﺔ ALUﻭﻭﺤﺩﺓ ﺤـﺴﺎﺏ ﺒﺎﻟﻔﺎﺼـﻠﺔ ﺍﻟﻌﺎﺌﻤـﺔ ،ﻨﺠـﺩ ﺃﻥ
ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺤﺩﻴﺜﺔ ،ﻤﺜل ،PowerPC 970ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﺃﺭﺒﻊ ﻭﺤﺩﺍﺕ ﺤﺴﺎﺏ ﻤﻨﻁﻘﻴﺔ ﻭﻭﺤـﺩﺘﻲ
ﺤﺴﺎﺏ ﺒﺎﻟﻔﺎﺼﻠﺔ ﺍﻟﻌﺎﺌﻤﺔ.
8
ﻴﺸﺎﺭ ﻋﺎﺩﺓ ﺇﻟﻰ ﺍﻟﻤﻌﺎﻟﺞ CDC 6600ﻤﻥ Seymour Crayﻋﻠﻰ ﺃﻨﻪ ﺃﻭل ﺘﺼﻤﻴﻡ ﻟﻤﻌﺎﻟﺞ ﺴـﻠﻤﻲ
ﻓﺎﺌﻕ ،ﺒﻴﻨﻤﺎ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ i960ﻤﻥ ) Intelﻋﺎﻡ (1988ﻭﺴﻠﺴﻠﺔ ) AMD 29000ﻋﺎﻡ (1990ﻫـﻲ
ﺃﻭل ﻤﻌﺎﻟﺞ ﺘﺠﺎﺭﻱ ﻤﻥ ﻨﻭﻉ .Superscalarﻭﻤﻨﺫ ﺍﻟﻌﺎﻡ 1988ﻓﺈﻥ ﺃﻏﻠﺏ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻟﻼﺴـﺘﺨﺩﺍﻡ
ﺍﻟﻌﺎﻡ ﻫﻲ ﻤﻥ ﻨﻭﻉ ،Superscalarﻤﻨﻬﺎ ﻤﻌﺎﻟﺠﺎﺕ ﺒﻨﺘﻴﻭﻡ ﺍﻟﺘﻲ ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﻭﺤﺩﺘﻲ ﺤﺴﺎﺏ ﻟﻸﻋﺩﺍﺩ
ﺍﻟﺼﺤﻴﺤﺔ ،ﻴﻤﻜﻨﻬﻤﺎ ﺍﻟﻌﻤل ﻤﻌﹰﺎ ﺇﺫﺍ ﺘﻭﺍﻓﺭﺕ ﺍﻟﺸﺭﻭﻁ ﺍﻟﻤﻼﺌﻤﺔ ﻟﺫﻟﻙ.
ﺍﻋﺘﻤﺩ ﺘﺼﻤﻴﻡ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻓﻲ ﺍﻟﺒﺩﺀ ﻋﻠﻰ ﺍﺴﺘﺨﺩﺍﻡ ﺒﻨﻴﺎﻥ ﺫﺍﻜﺭﺓ ﻨﻔﺴﻪ ﻟﺘﺨﺯﻴﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭﺍﻟﻤﻌﻁﻴـﺎﺕ
ﻭﻜﺫﻟﻙ ﺍﻟﻤﺴﺎﺭﻱ ﻨﻔﺴﻬﺎ ﻤﻥ ﺃﺠل ﺍﻟﻨﻔﺎﺫ ﺇﻟﻰ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﺘﻌﺭﻑ ﻫﺫﻩ ﺍﻟﺘﻘﺎﻨـﺔ
ﺒﺒﻨﻴﺎﻥ ﭭﻭﻥ ﻨﻭﻤﺎﻥ .von Neumannﻓﻲ ﻫﺫﺍ ﺍﻟﺒﻨﻴﺎﻥ ﻴﻤﻜﻥ ﻟﻠﻤﻌﺎﻟﺞ ﻓﻲ ﺁ ٍ
ﻥ ﻭﺍﺤﺩ ﺇﻤـﺎ ﺃﻥ ﻴﻘـﺭﺃ
ﺘﻌﻠﻴﻤﺔ ﺃﻭ ﻴﻘﺭﺃ/ﻴﻜﺘﺏ ﻤﻌﻁﻴﺎﺕ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ،ﻜﻤﺎ ﻴﻨﻔﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺘﻌﻠﻴﻤﺔ ﺘﻠﻭ ﺍﻷﺨـﺭﻯ ﻋﻠـﻰ ﻨﺤـﻭ
ﺘﻐﻴﻴﺭ ﻫﺫﺍ ﺍﻟﺘﺘﺎﺒﻊ ﻤﻥ ﻣﺴﺮﻯ ﻋﻨﻮﻧﺔ ﺘﺘﺎﺒﻌﻲ ﺇﻻ ﺇﺫﺍ ﺠﺭﻯ
ﺍﻟﺒﺭﻨــﺎﻤﺞ ،ﻤﺜــل ﻗﺒـــل ﺘﻌﻠﻴﻤـــﺎﺕ
CPU ﺫﺍﻜﺭﺓ ﺒﺭﻨﺎﻤﺞ ﺫﺍﻜﺭﺓ ﻤﻌﻁﻴﺎﺕ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔﺯ.
ﻣﺴﺮﻯ ﻣﻌﻄﻴﺎﺕ
9
ﺒﻨﻴﺎﻥ ﭭﻭﻥ ﻨﻭﻤﺎﻥ
ﻭﻟﺘﺤﺴﻴﻥ ﺃﺩﺍﺀ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ،ﺍﻋﺘﻤﺩﺕ ﺒﻌﺽ ﺍﻟﺸﺭﻜﺎﺕ ﺍﻟﻤﺼﻨﻌﺔ ﺒﻨﻴﺎﻨﹰﺎ ﺫﻭ ﻤﺴﺭﻴﻴﻥ ﻤﺴﺘﻘﻠﻴﻥ:
ﺍﻟﻤﺴﺭﻯ ﺍﻷﻭل :ﻴﺘﺼل ﺒﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﻭﻴﺠﺭﻱ ﻤﻥ ﺨﻼﻟﻪ ﻗﺭﺍﺀﺓ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺇﻟـﻰ
ﺍﻟﻤﻌﺎﻟﺞ.
ﺍﻟﻤﺴﺭﻯ ﺍﻟﺜﺎﻨﻲ :ﻴﺘﺼل ﺒﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻭﻴﺴﻤﺢ ﺒﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻴﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺤﻴﺔ RAM
ﻭﺍﻟﻤﻌﺎﻟﺞ.
ﻣﺴﺮﻯ ﻋﻨﻮﻧﺔ ﺫﺍﻛﺮﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻣﺴﺮﻯ ﻋﻨﻮﻧﺔ ﺫﺍﻛﺮﺓ ﺍﻟﱪﻧﺎﻣﺞ
ﺒﻨﻴﺎﻥ ﻫﺎﺭﭭﺭﺩ
ﻴﺴﻤﺢ ﺍﻟﻔﺼل ﺒﻴﻥ ﻤﺴﺭﻯ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﻤﺴﺭﻯ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﺘﺴﺭﻴﻊ ﻋﻤل ﺍﻟﻤﻌﺎﻟﺞ ،ﺤﻴـﺙ
ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﻌﺎﻟﺞ ﺠﻠﺏ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﻘﺎﺩﻤﺔ ﺒﻴﻨﻤﺎ ﻴﻨﻬﻲ ﺘﺨﺯﻴﻥ ﻨﺎﺘﺞ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺤﺎﻟﻴﺔ ،ﺒﺎﻟﻁﺒﻊ ﻫﻨﺎﻙ ﺜﻤـﻥ
ﻟﻬﺫﺍ ﺍﻟﺘﺴﺭﻴﻊ ﻭﻫﻭ ﺯﻴﺎﺩﺓ ﻋﺩﺩ ﻤﻐﺎﺭﺯ ﺍﻟﺭﻗﺎﻗﺔ ICﻤﻤﺎ ﻴﺠﻌل ﺘﻭﺼﻴل ﺍﻟﻤﻌﺎﻟﺞ ﺩﺍﺨل ﺍﻟﻨﻅﺎﻡ ﻤﻌﻘـﺩﹰﺍ.
ﻜﻤﺎ ﺘﺴﻤﺢ ﻋﻤﻠﻴﺔ ﺍﻟﻔﺼل ﺃﻴﻀﹰﺎ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺒﻨﻴﺔ ﻤﺨﺘﻠﻔﺔ ﻟﻜل ﻤﻥ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴـﺎﺕ؛
ﻼ ﺃﻥ ﺤﺠﻡ ﻜﻠﻤﺔ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺤﺩﻴﺜﺔ ﺃﻜﺒﺭ ﻤﻥ ﺤﺠﻡ ﻜﻠﻤﺔ ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻜﻤـﺎ ﺃﻥ
ﻓﻨﺠﺩ ﻤﺜ ﹰ
ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻏﺎﻟﺒﹰﺎ ﻤﺎ ﺘﻜﻭﻥ ﻤﻥ ﻨﻭﻉ ﺍﻟﻤﻴﺘﺔ )ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ( ﺒﻴﻨﻤﺎ ﻨﺴﺘﺨﺩﻡ ﺫﺍﻜﺭﺓ ﺤﻴـﺔ )ﻟﻠﻘـﺭﺍﺀﺓ
ﻭﺍﻟﻜﺘﺎﺒﺔ( ﻟﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﺅﻗﺘﺔ.
ﻴﺴﺘﺨﺩﻡ ﺒﻨﻴﺎﻥ ﻫﺎﺭﻓﺭﺩ ﻜﺜﻴﺭﹰﺍ ﻓﻲ ﻤﻌﺎﻟﺠﺎﺕ ﺍﻹﺸﺎﺭﺓ ﺍﻟﺭﻗﻤﻴﺔ ،ﻭﺍﻟﻤﺘﺤﻜﻤﺎﺕ ﺍﻟﺼﻐﺭﻴﺔ.
10
ﺍﻟﻤﺘﺤﻜﻤﺎﺕ ﺍﻟﺼﻐﺭﻴﺔ Microcontroller
ﻻ ﺘﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻟﻼﺴﺘﺨﺩﺍﻡ ﺍﻟﻌﺎﻡ ﻀﻤﻥ ﺍﻟﺭﻗﺎﻗﺔ ﻨﻔﺴﻬﺎ ﻋﻠﻰ ﺫﺍﻜﺭﺓ ROMﺃﻭ RAMﻭﻻ ﺤﺘﻰ
ﻋﻠﻰ ﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ .ﻭﺒﺎﻟﺘﺎﻟﻲ ﻴﺤﺘﺎﺝ ﺒﻨﺎﺀ ﻨﻅﺎﻡ ﺤﻭل ﺍﻟﻤﻌﺎﻟﺞ ﺇﻟﻰ ﺇﻀﺎﻓﺔ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟـﺩﺍﺭﺍﺕ
ﺍﻟﺨﺎﺭﺠﻴﺔ ،ﺫﻭﺍﻜﺭ ﻭﻏﻴﺭﻫﺎ ،ﺘﺯﻴﺩ ﻤﻥ ﻜﻠﻔﺔ ﺍﻟﻨﻅﺎﻡ ﻭﺤﺠﻤﻪ ،ﻤﻤﺎ ﻴﺠﻌﻠﻪ ﻏﻴﺭ ﻤﻨﺎﺴـﺏ ﻟﻜﺜﻴـﺭ ﻤـﻥ
ﺍﻟﺘﻁﺒﻴﻘﺎﺕ .ﻨﺫﻜﺭ ﻤﻥ ﻫﺫﻩ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﻌﺎﺌﻠﺔ x86ﻤﻥ Intelﻭﺍﻟﻌﺎﺌﻠﺔ 680x0ﻤﻥ .Motorola
ﻣﺴﺮﻯ ﺍﳌﻌﻄﻴﺎﺕ
ﻣﺴﺮﻯ ﺍﻟﻌﻨﻮﻧﺔ
ﺍﻟﺸﻜﻞ ﺍﻟﻨﻤﻄﻲ ﻟﻨﻈﺎﻡ ﺻﻐﺮﻱ
11
-ﺩﺍﺭﺍﺕ ﻤﺤﻴﻁﻴﺔ peripheralsﻤﺜل ﺍﻟﻤﺅﻗﺘﺎﺕ ﻭﺩﺍﺭﺍﺕ ﺍﻟﻤﺭﺍﻗﺒـﺔ watchdog circuits
ﻭﻤﺒﺩﻻﺕ ﺘﻤﺎﺜﻠﻴﺔ/ﺭﻗﻤﻴﺔ .A/D
-ﺫﺍﻜﺭﺓ ﻟﻠﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ .RAM
-ﺫﺍﻜﺭﺓ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ EEPROM ،EPROM ،ROMﺃﻭ ﺫﺍﻜﺭﺓ ﺴﺭﻴﻌﺔ .Flash memory
-ﻤﻭﻟﺩ ﺴﺎﻋﺔ .clock generator
ﺇﻥ ﻭﻀﻊ ﺠﻤﻴﻊ ﻫﺫﻩ ﺍﻟﻤﻜﻭﻨﺎﺕ ﻀﻤﻥ ﺩﺍﺭﺓ ﻤﺘﻜﺎﻤﻠﺔ ﻭﺍﺤﺩﺓ ICﻴﻘﻠل ﻜﺜﻴﺭﹰﺍ ﻤﻥ ﻋﺩﺩ ﺍﻟﺭﻗﺎﻗﺎﺕ ﻭﻜﻤﻴﺔ
ﺍﻷﺴﻼﻙ ﻭﻤﺴﺎﺤﺔ ﺍﻟﺩﺍﺭﺓ ﺍﻟﻤﻁﺒﻭﻋﺔ ﺍﻟﻼﺯﻤﻴﻥ ﻟﺒﻨﺎﺀ ﺍﻟﻨﻅﺎﻡ ،ﻤﻘﺎﺭﻨﺔ ﺒﺎﻟﻨﻅﻡ ﺍﻟﻤﺒﻨﻴﺔ ﺤـﻭل ﺍﻟﻤﻌـﺎﻟﺞ
ﺍﻟﺼﻐﺭﻱ ﺍﻟﺘﻲ ﺘﺴﺘﺨﺩﻡ ﺭﻗﺎﻗﺎﺕ ﻤﻨﻔﺼﻠﺔ ﺨﺎﺭﺠﻴﺔ ﻟﻜل ﻤﻜﻭﻥ ﻤﻥ ﻤﻜﻭﻨﺎﺕ ﺍﻟﻨﻅـﺎﻡ .ﻭﻫـﺫﺍ ﻴﺠﻌـل
ﺍﻟﻤﺘﺤﻜﻤﺎﺕ ﺍﻟﺼﻐﺭﻴﺔ ﻤﻨﺎﺴﺒﺔ ﻟﻠﻨﻅﻡ ﺍﻟﻤﻀﻤﻨﺔ embedded systemsﻤﻨﺫ ﻨـﺸﺄﺘﻬﺎ ﺍﻷﻭﻟـﻰ ﻓـﻲ
ﺍﻟﺴﺒﻌﻴﻨﺎﺕ .ﹸﺘﺴﺘﺨﺩﻡ ﺍﻟﻤﺘﺤﻜﻤﺎﺕ ﺍﻟﺼﻐﺭﻴﺔ ﺍﻟﻴﻭﻡ ﻓﻲ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻜﻬﺭﺒﺎﺌﻴﺔ ﺍﻟﻤﻨﺯﻟﻴـﺔ )ﻤﺜـل :ﺁﻻﺕ
ﺍﻟﻐﺴﻴل ﻭﺃﻓﺭﺍﻥ ﻤﻴﻜﺭﻭﻴﻑ ﻭﺍﻟﻬﻭﺍﺘﻑ( ،ﻭﺍﻟﺒﻁﺎﻗﺎﺕ ﺍﻟﺫﻜﻴﺔ Smart cardsﻭﻓﻲ ﺍﻟﺴﻴﺎﺭﺍﺕ )ﺘﺤﺘـﻭﻱ
ﺴﻴﺎﺭﺓ ﻤﺭﺴﻴﺩﺱ ﻤﻭﺩﻴل 1999ﻤﻥ ﻓﺌﺔ Sﻋﻠﻰ 63ﻤﺘﺤﻜﻡ ﻭﺴﻴﺎﺭﺓ BMWﻤﻭﺩﻴل 1999ﻋﻠﻰ 65
ﻤﺘﺤﻜﻡ!(.
ﺘﺘﺠﻪ ﺍﻟﻤﺘﺤﻜﻤﺎﺕ ﺍﻟﻴﻭﻡ ﺇﻟﻰ ﺍﺴﺘﺨﺩﺍﻡ ﺒﻨﻴﺎﻥ ﻫﺎﺭﭭﺭﺩ ﻭﺒﻨﻴﺎﻥ RISCﻓﻲ ﺘﺼﻤﻴﻤﻬﺎ ،ﻤﺜﺎل ﻋﻠـﻰ ﺫﻟـﻙ
ﻋﺎﺌﻠﺔ AVRﻭ .PIC
ﻤﻥ ﺍﻟﺸﺭﻜﺎﺕ ﺍﻟﻤﺼﻨﻌﺔ ﻟﻠﻤﺘﺤﻜﻤﺎﺕ ﻨﺫﻜﺭ،Intel ،Dallas Semiconductor ،Atmel ،Altera :
،NEC ،National Semiconductor ،Microchip Technology
.ZiLOG ،Texas Instruments ،Philips Semiconductors
12
ﻤﻌﺎﻟﺠﺎﺕ ﺍﻹﺸﺎﺭﺓ ﺍﻟﺭﻗﻤﻴﺔ Digital Signal Processor
ﻤﻌﺎﻟﺠﺎﺕ ﺍﻹﺸﺎﺭﺓ ﺍﻟﺭﻗﻤﻴﺔ DSPﻫﻲ ﻤﻌﺎﻟﺠﺎﺕ ﺼﻐﺭﻴﺔ ﻤﺘﺨﺼﺼﺔ ،ﻤـﺼﻤﻤﺔ ﺨﺼﻴـﺼﹰﺎ ﻟﺘﻨﻔﻴـﺫ
ﻤﻌَﺎﹶﻟﺠَﺎﺕ ﺭﻗﻤﻴﺔ .digital processingﺘﺄﺨﺫ ﻫﺫﻩ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺭﻗﻤﻴﺔ ﻤﻥ ﺨﺭﺝ ﺍﻟﻤﺒـﺩل
ﺍﻟﺘﻤﺎﺜﻠﻲ ﺍﻟﺭﻗﻤﻲ A/Dﻭﺘﹸﺨﺭﺝ ﻤﻌﻁﻴﺎﺕ ﺭﻗﻤﻴﺔ ﻋﻠﻰ ﺍﻟﻤﺒﺩل ﺍﻟﺭﻗﻤﻲ ﺍﻟﺘﻤﺎﺜﻠﻲ ،D/Aﺒﻌـﺩ ﺇﺠـﺭﺍﺀ
ﺒﻌﺽ ﺍﻟ ﻤﻌَﺎﹶﻟﺠَﺎﺕ ﺍﻟﺭﻗﻤﻴﺔ ﻋﻠﻰ ﻫﺫﻩ ﺍﻟﻤﻌﻁﻴﺎﺕ .ﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﺇﺸﺎﺭﺓ ﺩﺨل ﺍﻟﻤﺒـﺩل A/Dﺇﺸـﺎﺭﺓ
ﺼﻭﺕ ﺃﻭ ﻓﻴﺩﻴﻭ ﺃﻭ ﺇﺸﺎﺭﺍﺕ ﺍﺘﺼﺎﻻﺕ ﺃﻭ ﻏﻴﺭ ﺫﻟﻙ .ﺘﺴﺘﺨﺩﻡ ﻫﺫﻩ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻓﻲ ﺍﻟﺘﻁﺒﻴﻘـﺎﺕ ﻤﺜـل
ﺘﻌﺭﻑ ﺍﻟﻜﻼﻡ ﻭﻀﻐﻁ ﺍﻟﻜﻼﻡ ﺍﻟﺭﻗﻤﻲ ﻭﻀﻐﻁ ﺍﻟﺼﻭﺭﺓ ﺍﻟﺭﻗﻤﻴﺔ ﻭﻓﻲ ﺘﻌﺩﻴل ﻭﻓﻙ ﺘﻌﺩﻴل ﺍﻹﺸـﺎﺭﺍﺕ
ﻼ ﻴﺴﺘﺨﺩﻡ ﺍﻟﻤﻌﺎﻟﺞ TMS320C54xxﻓﻲ ﺃﺠﻬﺯﺓ ﺍﻟﻬﻭﺍﺘﻑ ﺍﻟﻨﻘﺎﻟﺔ ﻨﻅـﺭﹰﺍ
ﻓﻲ ﻨﻅﻡ ﺍﻻﺘﺼﺎﻻﺕ .ﻓﻤﺜ ﹰ
ﻟﻘﻭﺘﻬﺎ ﻭﺍﺴﺘﻬﻼﻜﻬﺎ ﺍﻟﻘﻠﻴل ﻟﻠﻁﺎﻗﺔ.
11001110 11001000
DSP
ﺇﺷﺎﺭﺓ ﻣﻌﺎﳉﺔ ﺭﻗﻤﻴﺔ ﺇﺷﺎﺭﺓ
ﻣﺪﺧﻞ ﲤﺎﺛﻠﻴﺔ A/D
ﻟﻠﻤﻌﻄﻴﺎﺕ
D/A ﳐﺮﺝ ﲤﺎﺛﻠﻴﺔ
ﺘﺴﺘﺨﺩﻡ DSPﺒﻨﻴﺎﻥ ﻫﺎﺭﻓﺭﺩ ﻓﻲ ﺘﺼﻤﻴﻤﻬﺎ ،ﺃﻱ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﻨﻔﺼﻠﺔ ﻋﻥ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻜﻤﺎ
ﺘﻁﺒﻕ ﻤﺒﺩﺃ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﺘﻭﺍﺭﺩﻴﺔ ﻤﻥ ﺃﺠل ﺘﺴﺭﻴﻊ ﺘﻨﻔﻴﺫ ﺍﻟﻌﻤﻠﻴﺎﺕ ،ﻭﻫﻲ ﻗﺎﺩﺭﺓ ﻋﻠﻰ ﺘﻨﻔﻴﺫ ﻋﺩﺓ ﻋﻤﻠﻴﺎﺕ
ﺤﺴﺎﺒﻴﺔ ﻋﻠﻰ ﺍﻟﺘﻔﺭﻉ ﻷﻥ ﻭﺤﺩﺓ ﺍﻟﺘﻨﻔﻴﺫ ﺘﺘﻜﻭﻥ ﻋﺎﺩ ﹰﺓ ﻤﻥ ﻀﺎﺭﺏ ﻭﻭﺤﺩﺓ ﺤـﺴﺎﺏ ﻤﻨﻁﻘﻴـﺔ ﻭﺩﺍﺭﺍﺕ
ﻟﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺎﺕ ﺍﻹﺯﺍﺤﺔ .ﺇﻥ ﺒﻨﻴﺎﻥ ﺒﻌﺽ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻤﻭﺠﻪ ﺃﻜﺜﺭ ﻨﺤﻭ ﺘﻨﻔﻴﺫ ﻤﻌَﺎﹶﻟﺠَﺎﺕ ﺭﻗﻤﻴﺔ ﻤﺤﺩﺩﺓ،
ﻭﺒﺎﻟﺘﺎﻟﻲ ﹶﺘﻀِﻡ ﺘﻌﻠﻴﻤﺎﺕ ﺨﺎﺼﺔ ﹸﺘﺴﱢﺭﻉ ﺘﻨﻔﻴﺫ ﻫﺫﻩ ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺎﺕ.
ﺘﻤﺎﺭﻴﻥ
ﺃﺠﺏ ﺒﺼﺢ ﺃﻭ ﺨﻁﺄ
ﻁﻭل ﺍﻟﻤﺭﺍﻜﻡ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ 4004ﻴﺴﺎﻭﻱ 8-bit؟ -1
ﺇﻥ ﻋﺩﺩ ﺨﻁﻭﻁ ﻤﺴﺭﻯ ﺍﻟﻌﻨﻭﻨﺔ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻴﺴﺎﻭﻱ ﺩﻭﻤـﹰﺎ ﻋـﺩﺩ ﺨﻁـﻭﻁ ﻤـﺴﺭﻯ -3
ﺍﻟﻤﻌﻁﻴﺎﺕ؟
ﻋﺩﺩ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ 8086ﻴﺴﺎﻭﻱ 32-bit؟ -4
14
ﻴﺴﺘﺨﺩﻡ ﺒﻨﻴﺎﻥ ﭭﻭﻥ ﻨﻭﻤﺎﻥ ﻤﺴﺭﻴﻴﻥ ﻤﺴﺘﻘﻠﻴﻥ ﻟﻜل ﻤﻥ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴـﺎﺕ -10
ﺍﻟﻤﺅﻗﺘﺔ؟
ﻴﺠﺭﻱ ﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﺅﻗﺘﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ROM؟ -11
ﻴﻤﻜﻥ ﻟﻠﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺴﻠﻤﻴﺔ ﺍﻟﻔﺎﺌﻘﺔ ﺘﻨﻔﻴﺫ ﺃﻜﺜﺭ ﻤﻥ ﺘﻌﻠﻴﻤﺔ ﻋﻠﻰ ﺍﻟﺘﻔﺭﻉ؟ -18
ﺘﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺴﻠﻤﻴﺔ ﺍﻟﻔﺎﺌﻘﺔ ﻋﻠﻰ ﻋﺩﺓ ﻭﺤﺩﺍﺕ ﺤﺴﺎﺒﻴﺔ ﻭﻤﻨﻁﻘﻴﺔ ALUﺘﻌﻤل ﻤﻌـﹰﺎ -19
ﻋﻠﻰ ﺍﻟﺘﺴﻠﺴل؟
ﺘﻌﺘﺒﺭ ﻤﻌﺎﻟﺠﺎﺕ ﺒﻨﺘﻴﻭﻡ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺴﻠﻤﻴﺔ ﺍﻟﻔﺎﺌﻘﺔ؟ -20
ﻴﺠﺏ ﺇﻓﺭﺍﻍ ﻗﻨﺎﺓ ﺍﻟﻤﻭﺍﺭﺩﺓ ﺜﻡ ﻤﻠﺅﻫﺎ ﻤﺠﺩﺩﹰﺍ ﺒﻌﺩ ﺇﻨﺠﺎﺯ ﻋﻤﻠﻴﺔ ﺍﻟﻘﻔﺯ؟ -21
15
ﺒﻨﻴﺎﻥ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086
1
ﺘﻤﻬﻴﺩ
ﻴﻌﺘﺒﺭ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺼﻐﺭﻱ 8086ﺃﻭل ﻤﻌﺎﻟﺞ 16-bitﻤﻥ ،Intelﻭﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﺘﻁـﻭﻴﺭ ﻟﻠﻤﻌـﺎﻟﺞ
8080/8085ﻤﻥ Intelﺩﻭﻥ ﺃﻥ ﻴﻜﻭﻥ ﻤﺘﻭﺍﻓﻘﹰﺎ ﻤﻌﻪ .ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ 8086ﻋﻠﻰ 20ﺨﻁ ﻋﻨﻭﻨﺔ،
ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﻬﻭ ﻗﺎﺩﺭ ﻋﻠﻰ ﻋﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺒﺤﺠﻡ 1ﻤﻴﻐﺎﺒﺎﻴﺕ ،ﺒﻴﻨﻤﺎ ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ 8085ﻓﻘﻁ 16ﺨﻁ
ﻋﻨﻭﻨﺔ .ﻤﻥ ﺠﻬﺔ ﺃﺨﺭﻯ ،ﻓﺈﻥ ﻋﺩﺩ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﻜﺫﻟﻙ ﻋﺭﺽ ﻜﻠﻤﺔ ﺍﻟﻤﺭﺍﻜﻡ ﻓـﻲ ﺍﻟﻤﻌـﺎﻟﺞ
8086ﻴﺴﺎﻭﻱ 16ﺒﻴﻨﻤﺎ ﻫﻲ 8ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ .8085ﻴﺴﻤﺢ ﺯﻴﺎﺩﺓ ﻁﻭل ﺍﻟﻤﺭﺍﻜﻡ ﺇﻟﻰ 16ﺒﻤﻌﺎﻟﺠـﺔ
ﻤﻌﻁﻴﺎﺕ ﺒﻁﻭل 2-byteﺩﻓﻌﺔ ﻭﺍﺤﺩﺓ.
ﺘﺘﻀﻤﻥ ﻋﺎﺌﻠﺔ x86ﻨﻭﻋﻴﻥ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺒـ 8086 :16-bitﻭ .8088ﻭﻴﻜﻤﻥ ﺍﻟﻔﺭﻕ ﺍﻟـﺭﺌﻴﺱ
ﺒﻴﻨﻬﻤﺎ ﻓﻲ ﻋﺩﺩ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺨﺎﺭﺠﻴﺔ ﺤﻴﺙ ﺘﺴﺎﻭﻱ 8ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ ،8088ﻭﻟﺫﻟﻙ ﻴﺤﺘﺎﺝ ﻫﺫﺍ
ﺍﻟﻤﻌﺎﻟﺞ ﺇﻟﻰ ﻋﻤﻠﻴﺘﻲ ﻭﺼﻭل ﻟﻠﺫﺍﻜﺭﺓ ﻤﻥ ﺃﺠل ﻗﺭﺍﺀﺓ ﺃﻭ ﻜﺘﺎﺒﺔ ﻜﻠﻤﺔ ﺒـ 16ﺒﺕ.
ﺒﺩﺍﻴ ﹰﺔ ،ﻅﻬﺭ ﺍﻟﻤﻌﺎﻟﺞ ،8086ﻭﻟﻜﻥ ﻨﻅﺭﹰﺍ ﻟﻜﻭﻥ ﺍﻟﺩﺍﺭﺍﺕ ﺍﻟﻤﺤﻴﻁﻴﺔ )ﺫﻭﺍﻜﺭ ﻭﻏﻴﺭﻫﺎ( ،ﺍﻟﺘﻲ ﻜﺎﻨـﺕ
ﻤﺘﻭﺍﻓﺭﺓ ﺤﻴﻨﺫﺍﻙ ﻓﻲ ﺍﻷﺴﻭﺍﻕ ،ﻤﺼﻤﻤﺔ ﻟﺘﻌﻤل ﻤﻊ ﻤﻌﺎﻟﺠﺎﺕ 8-bit؛ ﻓﻘﺩ ﺃﻨﺘﺠﺕ Intelﺇﺼﺩﺍﺭﹰﺍ ﻤ ﻌ ﺩ ﹰ
ﻻ
ﻋﻥ 8086ﻭﻫﻭ ،8088ﺍﺴ ﹸﺘﺨﺩﻡ ﻓﻲ ﺘﺼﻤﻴﻡ ﺃﻭل ﺤﺎﺴﻭﺏ ﺸﺨﺼﻲ.
ﻤﻥ ﺍﻟﻀﺭﻭﺭﻱ ﻤﻌﺭﻓﺔ ﺍﻟﺒﻨﻴﺎﻥ ﻭﺍﻟﺴﺠﻼﺕ ﺍﻟﺩﺍﺨﻠﻴﺔ ﻷﻱ ﻤﻌﺎﻟﺞ ﻗﺒل ﺍﻟﺒﺩﺀ ﺒﻜﺘﺎﺒﺔ ﺒﺭﺍﻤﺞ ﺒﻠﻐﺔ ﺍﻵﻟﺔ ﺃﻭ
ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ،ﻟﻜﻭﻥ ﻫﺫﻩ ﺍﻟﻠﻐﺎﺕ ﺘﺘﻌﺎﻤل ﻤﺒﺎﺸﺭﺓ ﻤﻊ ﺍﻟﺒﻨﻴﺎﻥ ﺍﻟﺩﺍﺨﻠﻲ ﻟﻠﻤﻌﺎﻟﺞ.
ﺘﺘﻜﻭﻥ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ﻟﻠﻤﻌﺎﻟﺞ 8088/8086ﻤﻥ ﻭﺤﺩﺘﻴﻥ ﺃﺴﺎﺴﻴﺘﻴﻥ ﺘﻌﻤﻼﻥ ﻋﻠﻰ ﻨﺤـﻭ
ﻤﺴﺘﻘل ،ﻭﻫﻤﺎ :ﻭﺤـﺩﺓ ﺍﻟﺘﻭﺍﺠـﻪ ﻤـﻊ ﺍﻟﻤـﺴﺭﻯ (Bus Interface Unit) BIUﻭﻭﺤـﺩﺓ ﺍﻟﺘﻨﻔﻴـﺫ
.(Execution Unit) EU
2
ﻭﺤﺩﺓ ﺍﻟﺘﻭﺍﺠﻪ ﻤﻊ ﺍﻟﻤﺴﺭﻯ
ﺘﺘﺼل ﻫﺫﻩ ﺍﻟﻭﺤﺩﺓ ﻤﻊ ﺍﻟﺩﺍﺭﺍﺕ ﺍﻟﻤﺤﻴﻁﻴﺔ ﻟﻠﻤﻌﺎﻟﺞ )ﺫﻭﺍﻜﺭ ﻭﺒﻭﺍﺒﺎﺕ( ﻋﺒﺭ ﻤﺴﺭﻯ ﺍﻟﻨﻅـﺎﻡ ) ﻭﻫـﻭ
ﺍﻟﻤﺴﺭﻯ ﺍﻟﺫﻱ ﻴﺭﺒﻁ ﺠﻤﻴﻊ ﺩﺍﺭﺍﺕ ﺍﻟﻨﻅﺎﻡ ﻤﻥ ﻤﻌﺎﻟﺞ ﻭﺫﻭﺍﻜﺭ ﻭﺒﻭﺍﺒﺎﺕ ﻭﻏﻴﺭﻫﺎ( ،ﻭﺘﻨﻔﺫ ﻫﺫﻩ ﺍﻟﻭﺤﺩﺓ
ﺍﻟﻤﻬﺎﻡ ﺍﻟﺭﺌﻴﺴﺔ ﺍﻟﺘﺎﻟﻴﺔ:
ﺤﺴﺎﺏ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﻠﻤﻌﻁﻴﺎﺕ
ﺠﻠﺏ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ
ﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻴﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻭﺍﻟﺫﺍﻜﺭﺓ ﻭﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ
ﺘﻭﻟﻴﺩ ﺇﺸﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻡ ﻟﻌﻤﻠﻴﺎﺕ ﻤﺴﺭﻯ ﺍﻟﻨﻅﺎﻡ
3
ﺭﺘل ﺍﻟﺘﻌﻠﻴﻤﺎﺕ instruction queue
ﺴﺠﻼﺕ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ segment registers
ﻤﺅﺸﺭ ﺍﻟﺘﻌﻠﻴﻤﺔ )Instruction Pointer (IP
ﺩﺍﺭﺓ ﺘﻭﻟﻴﺩ ﺍﻟﻌﻨﺎﻭﻴﻥ address generation circuitry
ﺩﺍﺭﺍﺕ ﺘﻭﻟﻴﺩ ﺇﺸﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻡ ﺒﺎﻟﻤﺴﺭﻯ bus control circuitry
ﺭﺘل ﺍﻟﺘﻌﻠﻴﻤﺎﺕ:
ﻴﺴﻤﺢ ﺭﺘل ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺒﺯﻴﺎﺩﺓ ﺴﺭﻋﺔ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﺍﻤﺞ ،ﻓﺒﻴﻨﻤﺎ ﺘﻜﻭﻥ ﻭﺤﺩﺓ ﺍﻟﺘﻨﻔﻴـﺫ ﻤـﺸﻐﻭﻟﺔ ﻓـﻲ
ﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺘﻌﻤل BIUﻋﻠﻰ ﺠﻠﺏ ﺘﻌﻠﻴﻤﺎﺕ ﺠﺩﻴﺩﺓ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ .ﺘﻭﻀﻊ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤـﺎﺕ
ﻀﻤﻥ ﻤﺼﻔﻭﻓﺔ ﻤﻥ ﺫﺍﻜﺭﺓ RAMﺩﺍﺨﻠﻴﺔ ،ﹸﺘﺴﻤﻰ ﺭﺘل ﺩﻓﻕ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ .ﻴﻤﻜﻥ ﻟﻬﺫﺍ ﺍﻟﺭﺘل ﺘﺨﺯﻴﻥ
ﺃﺭﺒﻊ ﺒﺎﻴﺘﺎﺕ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻠﻰ ﺍﻷﻜﺜﺭ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ 8088ﻭﺨﺯﻥ 6ﺒﺎﻴﺘﺎﺕ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ 8086
ﻋﻠﻰ ﺍﻷﻜﺜﺭ.
ﻻ
ﻻ ﻴﺨـﺭﺝ ﺃﻭ ﹰ
ﹸﺘﻨﻔﺫ EUﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﻲ ﺘﻘﺭﺅﻫﺎ ﻤﻥ ﺍﻟﺭﺘل ،ﺍﻟﺫﻱ ﻴﻌﻤل ﺒﻁﺭﻴﻘـﺔ "ﺍﻟـﺩﺍﺨل ﺃﻭ ﹰ
."FIFOﻋﻨﺩﻤﺎ ﺘﻜﻭﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﻲ ﺘﺒﺤﺙ ﻋﻨﻬﺎ EUﻏﻴﺭ ﻤﻭﺠﻭﺩﺓ ﻤﺴﺒﻘﹰﺎ ﻓﻲ ﺍﻟﺭﺘـل ﻓﺈﻨﻬـﺎ
ﺘﻨﺘﻅﺭ ﺤﺘﻰ ﺘﻌﻤل BIUﻋﻠﻰ ﺠﻠﺒﻬﺎ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻭﻀﻌﻬﺎ ﻓﻲ ﺍﻟﺭﺘل .ﻴﻤﻜﻥ ﺃﻥ ﻴﺤـﺩﺙ ﺫﻟـﻙ
ﻼ:
ﻤﺜ ﹰ
ﻋﻨﺩﻤﺎ ﺘﺤﺘﺎﺝ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺤﺎﻟﻴﺔ ﺇﻟﻰ ﻤﻌﻁﻴﺎﺕ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻏﻴﺭ ﻤﻭﺠﻭﺩﺓ ﻀﻤﻥ ﺍﻟﺭﺘل.
ﻋﻨﺩ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺔ ﻗﻔﺯ ﺃﻭ ﺍﺴﺘﺩﻋﺎﺀ ،JUMP/CALLﺇﺫ ﻴﺠﺭﻱ -ﻋﻨﺩ ﺘﻨﻔﻴﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ-
ﺇﻓﺭﺍﻍ ﻤﺤﺘﻭﻯ ﺍﻟﺭﺘل ﻭﺸﺤﻨﻪ ﻤﻥ ﺠﺩﻴﺩ ﺒﺎﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﺒﺘﺩﺍ ﺀ ﻤﻥ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻗﻔﺯﺕ ﺇﻟﻴـﻪ
ﺍﻟﺘﻌﻠﻴﻤﺔ.
ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻋﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺘﺼل ﺴﻌﺘﻬﺎ ﺤﺘﻰ 1ﻤﻴﻐﺎﺒﺎﻴـﺕ .ﻭﺘﺤﺘـل ﻫـﺫﻩ
ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﺤﻘﻴﻘﺔ ﺃﻭ ﺍﻟﻔﻴﺯﻴﺎﺌﻴﺔ ﻤﻥ 00000hﺤﺘﻰ .FFFFFh
ﻨﺤﺘﺎﺝ ﻟﻌﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺒﺤﺠﻡ 1ﻤﻴﻐﺎﺒﺎﻴﺕ ﺇﻟﻰ 20ﺨﻁ ﻋﻨﻭﻨﺔ ،ﻭﻟ ﻤﺎ ﻜﺎﻥ ﻁﻭل ﺍﻟﺴﺠﻼﺕ ﺍﻟﺩﺍﺨﻠﻴﺔ
ﻟﻠﻤﻌﺎﻟﺞ 8088/8086ﻫﻭ 16ﺒﺘﺎﹰ ،ﻓﻘﺩ ﻗﺴﻤﺕ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺇﻟـﻰ ﻤﻘﺘﻁﻌـﺎﺕ
ﻤﻨﻁﻘﻴﺔ )ﺴﻭﻑ ﻨﺸﺭﺡ ﻤﻔﻬﻭﻡ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﻨﻁﻘﻲ ﻭﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻗﺭﻴﺒﹰﺎ( logical segmentsﻁـﻭل
4
ﻜل ﻤﻨﻬﺎ 64ﻜﻴﻠﻭﺒﺎﻴﺕ .ﺘﺤﺘﻭﻱ ﻭﺤﺩﺓ ﺍﻟﺘﻭﺍﺠﻪ ﺃﺭﺒﻌﺔ ﺴـﺠﻼﺕ ﻤﻘﺘﻁﻌـﺎﺕ DS ،SS ،CSﻭ
ESﻁﻭل ﻜل ﻤﻨﻬﺎ 16ﺒﺕ ،ﻭﻴﺅﺸﺭ ﻜل ﺴﺠل ﻋﻠﻰ ﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﻤﺤﺩﺩ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ.
ﻼ ﻋﻠﻰ 20ﺒﺕ ،ﺘﻘﻭﻡ ﻭﺤﺩﺓ ﺍﻟﺘﻭﺍﺠﻪ ﺒﺈﺯﺍﺤـﺔ ﻤﺤﺘـﻭﻯ
ﻭﻟﻠﺤﺼﻭل ﻋﻠﻰ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻤﻤﺜ ﹰ
ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺃﺭﺒﻊ ﺒﺘﺎﺕ ﻨﺤﻭ ﺍﻟﻴﺴﺎﺭ )ﻓﺘﺼﺒﺢ ﻗﻴﻤﺔ ﺍﻟﻌﻨﻭﺍﻥ ﻤﻤﺜﻠﺔ ﻋﻠﻰ 20ﺒﺕ( ﺜﻡ
ﻴﻀﺎﻑ ﺇﻟﻴﻬﺎ ﻗﻴﻤﺔ ﺍﻨﺯﻴﺎﺡ ﻤﻤﺜﻠﺔ ﻋﻠﻰ 16ﺒﺕ .ﻭﺒﺫﻟﻙ ،ﻴﻤﻜﻥ ﻟﻠﻤﻘﺘﻁﻌﺎﺕ ﺃﻥ ﺘﺒﺩﺃ ﻤﻥ ﺃﻱ ﻤﻭﻗﻊ
ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺸﺭﻴﻁﺔ ﺃﻥ ﻴﻨﺘﻬﻲ ﻋﻨﻭﺍﻥ ﻫﺫﺍ ﺍﻟﻤﻭﻗﻊ ﺒﺄﺭﺒﻌﺔ ﺃﺼﻔﺎﺭ .ﺘﺴﻤﺢ ﺒﻌﺽ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ
ﺒﻘﺭﺍﺀﺓ ﻫﺫﻩ ﺍﻟﺴﺠﻼﺕ ﻭﺘﻐﻴﻴﺭ ﻤﺤﺘﻭﺍﻫﺎ ،ﻤﻤﺎ ﻴﻤﻜﻨﻨﺎ ﻤﻥ ﻋﻨﻭﻨﺔ ﻜﺎﻤل ﻓﻀﺎﺀ ﺫﺍﻜـﺭﺓ ﺍﻟﻤﻌـﺎﻟﺞ.
ﺘﺤﺘﻭﻱ ﻭﺤﺩﺓ ﺍﻟﺘﻭﺍﺠﻪ ﻋﻠﻰ ﺠﺎﻤﻊ adderﻴﺴﺘﺨﺩﻡ ﺨﺼﻴﺼﹰﺎ ﻟﺘﺸﻜﻴل ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﺒﻁـﻭل
20ﺒﺕ.
15 0
Code Segment CS ﻗﻄﺎﻉ ﺍﻟﱪﻧﺎﻣﺞ
Data segment
DS ﻗﻄﺎﻉ ﺍﳌﻌﻄﻴﺎﺕ
Stack Segment SS ﻗﻄﺎﻉ ﺍﳌﻜﺪﺱ
Extra Data Segment ES ﻗﻄﺎﻉ ﺍﳌﻌﻄﻴﺎﺕ
CSﺴﺠل ﻤﻘﺘﻁﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ :Code Segmentﻴﺅﺸﺭ ﻫﺫﺍ ﺍﻟﺴﺠل ﺇﻟـﻰ ﺒﺩﺍﻴـﺔ ﻤﻘﺘﻁـﻊ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ،ﻭﻴﺠﺏ ﺃﻥ ﺘﻘﻊ ﺠﻤﻴﻊ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻀﻤﻥ ﻫﺫﺍ ﺍﻟﻤﻘﺘﻁﻊ.
SSﺴﺠل ﻤﻘﺘﻁﻊ ﺍﻟﻤﻜﺩﺱ :Stack Segmentﻴﺅﺸﺭ ﻫﺫﺍ ﺍﻟﺴﺠل ﺇﻟـﻰ ﺒﺩﺍﻴـﺔ ﻤﻘﺘﻁـﻊ
ﺍﻟ ﻤ ﹶﻜ ﺩﺱ ﺍﻟﺤﺎﻟﻲ.
DSﺴﺠل ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ :Data Segmentﻴﺅﺸﺭ ﻫﺫﺍ ﺍﻟﺴﺠل ﺇﻟـﻰ ﺒﺩﺍﻴـﺔ ﻤﻘﺘﻁـﻊ
ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺤﺎﻟﻲ ،ﺘﻘﻊ ﻤﻌﻅﻡ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘﻲ ﻴﺤﺘﺎﺠﻬﺎ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺃﺜﻨﺎﺀ ﺘﻨﻔﻴـﺫﻩ ﻟﻠﺘﻌﻠﻴﻤـﺎﺕ
ﻀﻤﻥ ﻫﺫﺍ ﺍﻟﻤﻘﺘﻁﻊ.
ESﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﺍﻹﻀﺎﻓﻲ :Extra Segmentﻴﺅﺸﺭ ﻫﺫﺍ ﺍﻟﺴﺠل ﺇﻟﻰ ﺒﺩﺍﻴـﺔ ﻤﻘﺘﻁـﻊ
ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻹﻀﺎﻓﻲ.
5
ﺩﺍﺭﺍﺕ ﺘﻭﻟﻴﺩ ﺇﺸﺎﺭﺍﺕ ﺘﺤﻜﻡ ﺍﻟﻤﺴﺭﻯ
ﺘﻭﻟﺩ ﻫﺫﻩ ﺍﻟﺩﺍﺭﺍﺕ ﺇﺸﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻡ ﺒﺎﻟﻤﺴﺭﻯ ﻤﺜل ﺇﺸﺎﺭﺍﺕ ﺍﻟﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ ﻤﻥ/ﻓـﻲ ﺍﻟـﺫﺍﻜﺭﺓ
ﻭﺍﻟﺒﻭﺍﺒﺎﺕ.
ﻭﺤﺩﺓ ﺍﻟﺘﻨﻔﻴﺫ
ﺘﺤﻠل ﻭﺤﺩﺓ ﺍﻟﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﻲ ﻗﺎﻤﺕ BIUﺒﺠﻠﺒﻬﺎ ﻤﺴﺒﻘﹰﺎ ﻭﺘﻨﻔﺫﻫﺎ ،ﻭﻫﻲ ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﺍﻷﺠـﺯﺍﺀ
ﺍﻟﺭﺌﻴﺴﺔ ﺍﻟﺘﺎﻟﻴﺔ:
ﺩﺍﺭﺍﺕ ﺘﻔﻜﻴﻙ ِﺭﻤﺎﺯ ﺍﻟﺘﻌﻠﻴﻤﺔ:
ﹸﺘﺘﺭﺠﻡ ﻫﺫﻩ ﺍﻟﺩﺍﺭﺍﺕ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺒﻌﺩ ﻗﺭﺍﺀﺘﻬﺎ ﻤﻥ ﺍﻟﺭﺘل ﺇﻟﻰ ﺴﻠﺴﻠﺔ ﺃﻓﻌﺎل ﻴﺠﺭﻱ ﺘﻨﻔﻴﺫﻫﺎ ﻻﺤﻘﹰﺎ
ﻤﻥ ﻗﺒل ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭﺍﻟﻤﻨﻁﻕ.
ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭﺍﻟﻤﻨﻁﻕ :ALU
ﺘﻨﻔﺫ ﻫﺫﻩ ﺍﻟﻭﺤﺩﺓ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﺍﻷﺴﺎﺴﻴﺔ ﻤﺜل ﺍﻟﺠﻤﻊ ﻭﺍﻟﻁﺭﺡ ﻭﺍﻟﻌﻤﻠﻴـﺎﺕ ﺍﻟﻤﻨﻁﻘﻴـﺔ
ﺍﻟﺒﺴﻴﻁﺔ ﻤﺜل ANDﻭ ORﻭﺍﻹﺯﺍﺤﺔ.
ﺴﺠﻼﺕ ﻋﺎﻤﺔ :general registers
ﺘﺤﺘﻭﻱ ﻭﺤﺩﺓ ﺍﻟﺘﻨﻔﻴﺫ ﻋﻠﻰ 8ﺴﺠﻼﺕ ﻋﺎﻤﺔ ﻁﻭل ﻜل ﻤﻨﻬﺎ 16ﺒﺕ ﻭﻫﻲ،CX ،BX ،AX :
SI ،BP ،SP ،DXﻭ .DI
ﺇﻥ ﺍﻟﺴﺠﻼﺕ DX ،CX ،BX ،AXﻫﻲ ﻟﻼﺴﺘﺨﺩﺍﻡ ﺍﻟﻌﺎﻡ ،ﻭﺘﹸﺴﺘﺨﺩﻡ ﻋﺎﺩﺓ ﻟﻠﺘﺨﺯﻴﻥ ﺍﻟﻤﺅﻗﺕ
ﻟﻠﻤﻌﻁﻴﺎﺕ ﺃﻭ ﻟﻠﻨﺘﺎﺌﺞ .ﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻡ ﻫﺫﻩ ﺍﻟﺴﺠﻼﺕ ﻟﺘﺨﺯﻴﻥ ﻤﻌﻁﻴﺎﺕ ﻤﻤﺜﻠﺔ ﻋﻠﻰ 16ﺒـﺕ
ﺃﻭ ﺘﻘﺴﻴﻡ ﻜل ﻤﻨﻬﺎ ﺇﻟﻰ ﺴﺠﻠﻴﻥ :ﺃﻋﻠﻰ ﻭﺃﺩﻨﻰ ﻭﺨﺯﻥ ﻓﻲ ﻜل ﻤﻨﻬﺎ ﻤﻌﻁﻴﺎﺕ ﺒﻁﻭل 8ﺒﺕ.
ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ،ﻴﻤﻜﻥ ﺍﻋﺘﺒﺎﺭ ﺍﻟﺴﺠل DXﺴﺠﻠﻴﻥ ﻜل ﻤﻨﻬﺎ ﺒﺜﻤـﺎﻨﻲ ﺒﺘـﺎﺕ ﻫﻤـﺎ DH
)ﺍﻟﺒﺎﻴﺕ ﺍﻷﻋﻠﻰ ﻤﻥ (DXﻭ ) DLﺍﻟﺒﺎﻴﺕ ﺍﻷﺩﻨﻰ ﻤﻥ .(DX
ﺃﻤﺎ ﺍﻟﺴﺠﻼﺕ SI ،BP ،SPﻭ DIﻓﻁﻭل ﻜل ﻤﻨﻬﺎ 16ﺒﺕ ،ﻭﻻ ﻴﻤﻜﻥ ﺘﻘﺴﻴﻡ ﺃﻱ ﻤﻨﻬﺎ ﺇﻟﻰ
ﺴﺠﻠﻴﻥ.
6
AH AX AL اﻟﻤﺮاآﻢ
:AXﻴﻘﻭﻡ AXﺒﺩﻭﺭ ﺍﻟﻤﺭﺍﻜﻡ ﻓﻲ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺘﻲ ﺘﺴﺘﺨﺩﻡ ﻤﻌﺎﻤل ﻤﻌﻁﻴﺎﺕ ﺒﻁﻭل 16ﺒـﺕ،
ﺒﻴﻨﻤﺎ ﻴﻘﻭﻡ ALﺒﺩﻭﺭ ﺍﻟﻤﺭﺍﻜﻡ ﻓﻲ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﺜﻤﺎﻨﻲ ﺒﺘﺎﺕ ﻓﻘﻁ.
:BXﺴﺠل ﺍﻟﻘﺎﻋﺩﺓ ،Base registerﻭﻫﻭ ﺴﺠل ﻟﻼﺴﺘﺨﺩﺍﻡ ﺍﻟﻌﺎﻡ ﻭﻴﻤﻜﻥ ﺃﻥ ﻴﺴﺘﺨﺩﻡ ﻓـﻲ
ﻋﻨﻭﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ.
ﻲ ﻜﺫﻟﻙ ﻷﻥ ﺒﻌﺽ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻤﺜل ﺍﻹﺯﺍﺤـﺔ
ﺴﻤ ّ
:CXﺴﺠل ﺍﻟﻌﺩﺍﺩ ،Counter registerﻭ
ﻭﺍﻟﺤﻠﻘﺎﺕ ﺘﺴﺘﺨﺩﻤﻪ ﻜﻌﺩﺍﺩ.
:DXﺴﺠل ﺍﻟﻤﻌﻁﻴﺎﺕ ،Data registerﻭﺘﺴﺘﺨﺩﻡ ،ﻀﻤﻨﻴﺎﹰ ،ﻓﻲ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺠﺩﺍﺀ ﻭﺍﻟﻘـﺴﻤﺔ،
ﻭﻓﻲ ﺍﻟﻌﻨﻭﻨﺔ ﻏﻴﺭ ﺍﻟﻤﺒﺎﺸﺭﺓ ﻟﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺨﺭﺝ.
:SPﺴﺠل ﻤﺅﺸﺭ ﺍﻟﻤﻜﺩﺱ ،Stack pointerﻴﺴﺘﺨﺩﻡ ﻓﻲ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻭﺼﻭل ﺇﻟﻰ ﺍﻟﻤﻌﻁﻴﺎﺕ
ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍﻟﻤﻜﺩﺱ .ﻴﺤﺘﻭﻱ SPﻤﻘﺩﺍﺭ ﺍﻻﻨﺯﻴﺎﺡ ﻋﻥ ﺒﺩﺍﻴﺔ ﺍﻟﻤﻘﺘﻁﻊ ﺍﻟﺫﻱ ﻴـﺸﻴﺭ ﺇﻟﻴـﻪ
ﺍﻟﺴﺠل .SS
ﺘﺴﺘﺨﺩﻡ ﺍﻟﺴﺠﻼﺕ BP :ﻤﺅﺸﺭ ﺍﻟﻘﺎﻋﺩﺓ Base pointerﻭ SIﺩﻟﻴل ﺍﻟﻤﺼﺩﺭ Source indexﻭ DI
ﺩﻟﻴل ﺍﻟﻭﺠﻬﺔ ،ﻋﻠﻰ ﻨﺤﻭ ﺭﺌﻴﺱ ﻓﻲ ﺘﺨﺯﻴﻥ ﻗﻴﻤﺔ ﺍﻨﺯﻴﺎﺡ ﻤﻭﻗﻊ ﻋﻥ ﺒﺩﺍﻴﺔ ﺃﺤﺩ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ﺍﻟﺘﻲ ﻴﺸﻴﺭ
ﺇﻟﻴﻬﺎ ﺃﺤﺩ ﺴﺠﻼﺕ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ.
ﹸﺘﺴﺘﺨﺩﻡ ﺴﺠﻼﺕ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻓﻲ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﻭﺍﻟﻤﻨﻁﻘﻴﺔ ﺍﻟﻤﺨﺘﻠﻔـﺔ ،ﻜﻤـﺎ ﺘﹶـﺴﺘﺨﺩﻡ ﺒﻌـﺽ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻀﻤﻨﻴﹰﺎ ﺒﻌﺽ ﺍﻟﺴﺠﻼﺕ ﺍﻟﻌﺎﻤﺔ ﻓﻲ ﺘﻨﺠﻴﺯﻴﻬﺎ ،ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺠﺩﻭل:
ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺴﺠل
ﻀﺭﺏ ﻜﻠﻤﺔ ،ﺘﻘﺴﻴﻡ ﻜﻠﻤﺔ ،ﺇﺩﺨﺎل/ﺇﺨﺭﺍﺝ ﻜﻠﻤﺔ AX
7
ﺘﺨﺯﻴﻥ ﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﺍﻟﻌﻨﺎﻭﻴﻥ BX
ﻀﺭﺏ ﻜﻠﻤﺔ ،ﺘﻘﺴﻴﻡ ﻜﻠﻤﺔ ،ﻋﻨﻭﻨﺔ ﻏﻴﺭ ﻤﺒﺎﺸﺭﺓ ﻟﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ DX
8
ﻴﺴﺎﻭﻱ ) 1ﺃﻱ ﻜﺎﻥ ﺍﻟﻨﺎﺘﺞ ﺴﺎﻟﺒ ﹰﺎ(.
:PFﺭﺍﻴﺔ ﺍﻟﻨﺩﻴﺔ ،Parity Flagﻴﺴﺎﻭﻱ 1ﻓﻲ ﺤﺎل ﻜﺎﻥ ﻋﺩﺩ ﺍﻟﻭﺤﺩﺍﻥ ﻓﻲ ﻨﺎﺘﺞ ﺍﻟﻌﻤﻠﻴـﺔ
ﻴﺴﺎﻭﻱ ﻋﺩﺩﹰﺍ ﺯﻭﺠﻴﹰﺎ.
:ZFﺭﺍﻴﺔ ﺍﻟﺼﻔﺭ ،Zero Flagﻴﺴﺎﻭﻱ 1ﻓﻲ ﺤﺎل ﻜﺎﻥ ﻨﺎﺘﺞ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺤﺴﺎﺒﻴﺔ ﺃﻭ ﺍﻟﻤﻨﻁﻘﻴﺔ
ﻴﺴﺎﻭﻱ ﺍﻟﺼﻔﺭ.
:DFﺭﺍﻴﺔ ﺍﻻﺘﺠﺎﻩ ،Direction Flagﺘﺴﺒﺏ ،ﻋﻨﺩﻤﺎ ﺘﺴﺎﻭﻱ ،1ﺇﻨﻘﺎﺼﹰﺎ ﺁﻟﻴﹰﺎ ﻟﻤﺤﺘﻭﻯ ﻜـل
ﻤﻥ ﺍﻟﺴﺠﻠﻴﻥ DIﻭ SIﻓﻲ ﺘﻌﻠﻴﻤﺎﺕ ﺴﻼﺴل ﺍﻟﻤﺤﺎﺭﻑ ﺃﻤﺎ ﺤﻴﻥ ﺘﺴﺎﻭﻱ 0ﻓﺘـﺴﺒﺏ ﺯﻴـﺎﺩﺓ
ﺁﻟﻴﺔ ﻟﻬﺫﺍ ﺍﻟﻤﺤﺘﻭﻯ.
IFﺭﺍﻴﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ،Interrupt Flagﺘﺴﻤﺢ ،ﻋﻨﺩﻤﺎ ﺘﺴﺎﻭﻱ ،1ﺒﺤﺩﻭﺙ ﻤﻘﺎﻁﻌﺔ ﺨﺎﺭﺠﻴـﺔ
ﻗﺎﺒﻠﺔ ﻟﻠﺤﺠﺏ .ﺃﻤﺎ ﻋﻨﺩﻤﺎ ﺘﺴﺎﻭﻱ 0ﻓﻬﻲ ﺘﺤﺠﺏ )ﺘﻤﻨﻊ( ﻫﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ.
TFﺭﺍﻴﺔ ﺍﻟﺘﻨﻔﻴﺫ ﺍﻟﺨﻁﻭﻱ .Trace Flagﺘﺴﻤﺢ ،ﻋﻨﺩﻤﺎ ﺘﺴﺎﻭﻱ ،1ﺒﺈﻤﻜﺎﻥ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨـﺎﻤﺞ
ﺨﻁﻭﺓ ﻓﺨﻁﻭﺓ.
ﻴﻤﻜﻥ ﺃﻥ ﻴﻌﻨﻭﻥ ﺍﻟﻤﻌﺎﻟﺞ ﺫﺍﻜﺭﺓ ﻴﺼل ﺤﺠﻤﻬﺎ ﺇﻟﻰ 1,048,576ﺒﺎﻴﺕ ) 1ﻤﻴﻐﺎﺒﺎﻴﺕ( .ﹸﻨﻅﻤﺕ ﺫﺍﻜﺭﺓ
ﺍﻟﻤﻌﺎﻟﺞ ﻜﻤﺼﻔﻭﻓﺔ ﻤﻥ ﺍﻟﺒﺎﻴﺘﺎﺕ ،ﻴﺄﺨﺫ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻭل ﺍﻟﻌﻨﻭﺍﻥ 00000hﻭﺍﻟﺜﺎﻨﻲ 00001hﻭﺍﻷﺨﻴـﺭ
.FFFFFhﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل:
ﺫﺍﻛﺮﺓ ﺣﺠﻤﻬﺎ 1ﻣﻴﻐﺎﺑﺎﻳﺖ
FFFFFh
FFFFEh
00001h
00000h
ﻴﻤﻜﻥ ﺃﻥ ﻴﺸﻜل ﺃﻱ ﺒﺎﻴﺘﻴﻥ ﻤﺘﺘﺎﻟﻴﻥ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻜﻠﻤﺔ
ﺒﻁﻭل 2ﺒﺎﻴﺕ .ﻴﻤﻜﻥ ﺃﻥ ﺘﻘﻊ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻁﻭل ﺒﺎﻴﺕ ﺃﻭ ﺒﺎﻴﺘﻴﻥ ﻓـﻲ ﺃﻱ ﻤﻜـﺎﻥ ﻓـﻲ
ﺍﻟﺫﺍﻜﺭﺓ .ﺤﻴﻥ ﻴﻜﻭﻥ ﻋﻨﻭﺍﻥ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻗل ﺩﻻﻟﺔ ﺃﻭ ﻭﺯﻨﹰﺎ ﻟﻜﻠﻤﺔ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺯﻭﺠﻴﹰﺎ ﻨﻘﻭل ﺃﻥ ﺍﻟﻜﻠﻤﺔ ﺘﻘﻊ
ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻋﻠﻰ ﻨﺤﻭ ﻤﺘﺤﺎ ٍﺫ .alignmentﺃﻤﺎ ﺤﻴﻥ ﻴﻜﻭﻥ ﻋﻨﻭﺍﻥ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻗل ﺩﻻﻟﺔ ﻟﻜﻠﻤﺔ ﻤﻌﻁﻴﺎﺕ
ﻓﺭﺩﻴﹰﺎ ﻨﻘﻭل ﺃﻥ ﺍﻟﻜﻠﻤﺔ ﺘﻘﻊ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻋﻠﻰ ﻨﺤﻭ ﻏﻴﺭ ﻤﺘﺤﺎ ٍﺫ .unaligned
9
ﻤﺜﺎل:
ﻟﺘﺨﺯﻴﻥ ﺍﻟﻜﻠﻤﺔ 5502Hﻀﻤﻥ ﻤﻭﻗﻌﻴﻥ ﻤﺘﺘـﺎﻟﻴﻴﻥ ،ﻋﻨـﻭﺍﻥ ﺍﻟﻤﻭﻗـﻊ ﺍﻷﻭل ، 00724Hﻭﺍﻟﺜـﺎﻨﻲ
ل ﺩﻻﻟ ﹰﺔ 02Hﻓﻲ ﺍﻟﻤﻭﻗﻊ ،00724Hﻭﺍﻟﺒﺎﻴﺕ ﺍﻷﻜﺜﺭ ﺩﻻﻟﺔ 55H
،00725Hﻴﺘﻡ ﺘﺨﺯﻴﻥ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻗ ُ
00724H 00725H ﻓﻲ ﺍﻟﻤﻭﻗﻊ .00725H
0 2 5 5 ﺗﺮﻣﻴﺰ ﺳﺖ ﻋﺸﺮ
0000 0010 0101 0101 ﺗﺮﻣﻴﺰ ﺍﺛﻨﺎﱐ
ﻴﻌﺘﺒﺭ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺴﺎﺒﻕ ﻋﻠﻰ ﻨﺤﻭ ﻤﺘﺤﺎ ٍﺫ ﻷﻨﻪ ﺠﺭﻯ ﺘﺨﺯﻴﻥ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻗل ﺩﻻﻟﺔ ﻓﻲ ﻤﻭﻗﻊ ﺯﻭﺠﻲ.
ﺕ ﺍﻟﺼﻐﺭﻴ ﹸﺔ ﻟﺸﺭﻜﺔ Intelﻜﻠﻤﺔ ﻤﻥ 2ﺒﺎﻴﺕ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ،ﺍﻟﺒﺎﻴﺕ ﺍﻷﻗل ﺩﻻﻟـﺔ ﺃﻭ ﹰ
ﻻ ﹸﺘﺨﺯﻥ ،ﺍﻟﻤﻌﺎِﻟﺠﺎ ﹸ
ﺜﻡ ﻴﻠﻴﻬﺎ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻜﺜﺭ ﺩﻻﻟﺔ ،ﻭﺘﺴﻤﻰ ﻁﺭﻴﻘﺔ ﺍﻟﺘﺨﺯﻴﻥ ﻫﺫﻩ ﺒﺎﻟ ﹸﻨﻬﻭﻱ ﺍﻟﺼﻐﻴﺭ ،little-endianﺒﻴﻨﻤـﺎ
ﻕ ﻤﻥ ﺭﺤﻼﺕ Gulliverﺍﻟﺫﻱ
ﺴﻤّﻰ ﺒـ ﺘﹸﺴﺘﺨﺩﻡ ﻁﺭﻴﻘ ﹸﺔ ﺍﻟﻨﻬﻭﻱ ﺍﻟﻜﺒﻴﺭ )ﻤﺼﻁﻠﺢ "ﻨﻬﻭﻱ ﻜﺒﻴﺭ" ﻤﺸﺘ ﹲ
ﺽ ﻴﺠـﺏ ﺃﻥ
ﻥ ﺍﻟ ﺒ ﻴ
"ﺍﻟﻨﻬﻭﻴﻴﻥ ﺍﻟﻜﺒﺎﺭ" ﺯﻤﺭ ﹰﺓ ﻤﻥ ﺍﻟﻨﺎﺱ ﻋﺎﺭﻀﻭﺍ ﻤﺭﺴﻭ ﻡ ﺍﻻﻤﺒﺭﺍﻁﻭﺭ ﺍﻟﺫﻱ ﻴﻘﻭل ﺇ ّ
ﻼ ﻓﻲ ﺍﻟﻤﻌﺎﻟِﺠﺎﺕ ﺍﻟﺼﻐﺭﻴ ِﺔ ﻟـﺸﺭﻜ ِﺔ Motorola
ﻴ ﹾﻜﺴﺭ ﻤﻥ ﺍﻟﻁﺭﻑ )ﺍﻟ ﱡﻨ ﻬﻴﺔ( ﺍﻟﺼﻐﻴ ِﺭ ﻗﺒل ﺃﻜﻠِﻪ( ﻤﺜ ﹰ
ﻻ ﺜﹸﻡ ﻴﻠﻴﻬﺎ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻗل ﺩﻻﻟﺔ.
ﺤﻴﺙ ﺘﺨﺯﻴﻥ ﻫﺫﻩ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻜﺜﺭ ﺩﻻﻟﺔ ﺃﻭ ﹰ
ﺍﻟﻤﻘﺘﻁﻌﺎﺕ
ﺠﺭﻯ ﺘﻘﺴﻴﻡ ﻓﻀﺎﺀ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺇﻟﻰ ﻤﻘﺘﻁﻌﺎﺕ ﻁﻭل ﻜل ﻤﻨﻬﺎ 64ﻜﻴﻠﻭﺒﺎﻴﺕ .ﻴﺴﻨﺩ
ﻟﻜل ﻤﻘﺘﻁﻊ ﻋﻨﻭﺍﻥ ﻗﺎﻋﺩﻱ Base addressﻴﺸﻴﺭ ﺇﻟﻰ ﻋﻨﻭﺍﻥ ﺃﻭل ﺒﺎﻴﺕ ﻤﻥ ﺍﻟﻤﻘﺘﻁﻊ .ﻴﻤﻜـﻥ ﺃﻥ
ﺘﻜﻭﻥ ﻫﺫﻩ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ﻤﻨﻔﺼﻠﺔ ﺘﻤﺎﻤﹰﺎ ﺃﻭ ﻤﺘﺩﺍﺨﻠﺔ ﺠﺯﺌﻴﹰﺎ ﺃﻭ ﻜﻠﻴﹰﺎ.
ﻴﺨﺯﻥ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻘﺎﻋﺩﻱ ﻓﻲ ﺃﺤﺩ ﺴﺠﻼﺕ ﺍﻟﻤﻘﺘﻁﻌـﺎﺕ ﺍﻷﺭﺒﻌـﺔ ES ،DS ،CSﻭ ،SSﻭﺒـﺫﻟﻙ
ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﻌﺎﻟﺞ ﻋﻨﻭﻨﺔ ﺃﺭﺒﻊ ﻤﻘﺘﻁﻌﺎﺕ ﺒﺂﻥ ﻭﺍﺤﺩ .ﻋﻨﺩﻤﺎ ﺘﻜﻭﻥ ﻫﺫﻩ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ﻤﻨﻔﺼﻠﺔ ﻜﻠﻴﹰﺎ ﻴﻤﻜﻥ
256ﻜﻴﻠﻭﺒﺎﻴﺕ ﺒﺂﻥ ﻭﺍﺤﺩ .ﻭﻴﻤﻜﻥ ،ﺒﺘﻐﻴﻴﺭ ﻤﺤﺘﻭﻯ ﺴﺠﻼﺕ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ،ﻋﻨﻭﻨﺔ ﻟﻠﻤﻌﺎﻟﺞ ﺃﻥ ﻴﻌﻨﻭﻥ
ﻜﺎﻤل ﻓﻀﺎﺀ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺫﻱ ﻴﺴﺎﻭﻱ 1ﻤﻴﻐﺎﺒﺎﻴﺕ.
ﻴﺤﻭﻱ ﺍﻟﻤﻘﺘﻁﻊ ﺍﻟﺫﻱ ﻴﺸﻴﺭ ﺇﻟﻴﻪ ﺍﻟﺴﺠل CSﺘﻌﻠﻴﻤﺎﺕ ﺃﻭ ِﺭﻤﺎﺯ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﺃﻤﺎ ﺍﻟﻤﻘﺘﻁﻊ ﺍﻟﺫﻱ ﻴـﺸﻴﺭ
ـﺎﺕ،
ـﺯﻴﻥ ﺍﻟﻤﻌﻁﻴــ
ـﺎ ﻟﺘﺨــ
ـﻪ ESﻓﻬﻤــ
ـﺸﻴﺭ ﺇﻟﻴــ
ـﺫﻱ ﻴــ ـﻪ DSﻭﺍﻟﻤﻘﺘﻁــ
ـﻊ ﺍﻟــ ﺇﻟﻴــ
ﻭﻴﺨﺼﺹ ﺍﻟﻤﻘﺘﻁﻊ ﺍﻟﺫﻱ ﻴﺸﻴﺭ ﺇﻟﻴﻪ SSﻟﻌﻤل ﺍﻟﻤﻜﺩﺱ .Stack
ﻻ ﻋﻥ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ﺍﻷﺭﺒﻌﺔ ﺍﻟﻤﺤﺩﺩﺓ ﺒﺎﻟﺴﺠﻼﺕ DS ،SS ،CSﻭ ،ES
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻤﺜﺎ ﹰ
ﻭﻜﻤﺎ ﻫﻭ ﻭﺍﻀﺢ ﻤﻥ ﺍﻟﺸﻜل ﻓﺈﻨﻪ ﻻ ﻴﻭﺠﺩ ﻓﻲ ﻫﺫﺍ ﺍﻟﻤﺜﺎل ﺃﻱ ﺘﻘﺎﻁﻊ ﺒﻴﻥ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ﺍﻷﺭﺒﻌﺔ.
10
ﻣﻘﺘﻄﻊ ﺍﻟﱪﻧﺎﻣﺞ CODE
SEGMENT
CS
SS
ﻣﻘﺘﻄﻊ ﺍﳌﻜﺪﺱ STACK DS
SEGMENT
ES
11
ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ :ﻤﺤﺘﻭﻯ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ × + 16ﺍﻻﻨﺯﻴﺎﺡ
ﻤﺜﺎل:
ﺇﺫﺍ ﻜﺎﻥ ﺍﻟﺴﺠل CSﻴﺤﺘﻭﻱ ﺍﻟﻘﻴﻤﺔ 07A0hﻭﺍﻟﺴﺠل IPﻴﺤﺘﻭﻱ ﺍﻟﻘﻴﻤـﺔ 0100hﻓـﺈﻥ ﺍﻟﻌﻨـﻭﺍﻥ
ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﻠﺘﻌﻠﻴﻤﺔ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻴﺴﺎﻭﻱ 07A00h + 0100h = 07B00h
ﻻﺤﻅ ﺃﻨﻪ ﻴﻤﻜﻥ ﻷﻜﺜﺭ ﻤﻥ ﻋﻨﻭﺍﻥ ﻤﻨﻁﻘﻲ ﺃﻥ ﻴﺸﻴﺭ ﺇﻟﻰ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻨﻔﺴﻪ.
ﻤﺜﺎل:
ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ 07B00hﻴﺴﺎﻭﻱ 97A0:0100ﻭﻴﺴﺎﻭﻱ ﺃﻴﻀﹰﺎ .07B0:0000
ﻴﻭﻀﺢ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﺒﺩﺍﻴﺔ ﻭﻟﻨﻬﺎﻴﺔ ﻜـل ﻤـﻥ ﺍﻟﻤﻘﺘﻁﻌـﺎﺕ ﺍﻷﺭﺒﻌـﺔ ﻋﻨـﺩﻤﺎ
SS=5D27 ،DE=E000h ،CS=B3FFhﻭ .ES=52B8ﻭﻜﻤﺎ ﻫﻭ ﺒﻴﻥ ﻤﻥ ﺍﻟﺸﻜل ﻓﺈﻨﻪ ﻴﻭﺠـﺩ
ﺘﻘﺎﻁﻊ ﺒﻴﻥ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻜﺩﺱ ﻭﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻹﻀﺎﻓﻲ.
12
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﻜﻴﻑ ﻨﺤﺴﺏ ﺒﺩﺍﻴﺔ ﻭﻨﻬﺎﻴﺔ ﻤﻘﺘﻁﻊ ﻤﺎ؟
ﺍﻟﺠﻭﺍﺏ :ﺇﻥ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﺒﺩﺍﻴﺔ ﺍﻟﻤﻘﺘﻁﻊ DSﻓﻲ ﺍﻟﻤﺜﺎل ﺍﻟـﺴﺎﺒﻕ ﻫـﻭ ﺍﻟﻌﻨـﻭﺍﻥ ﺍﻟﻔﻴﺯﻴـﺎﺌﻲ
E000:0000hﻭﺍﻟﺫﻱ ﻴﺴﺎﻭﻱ ،E0000hﻭﺒﻤﺎ ﺃﻥ ﻁﻭل ﺃﻱ ﻤﻘﺘﻁـﻊ ﺍﻟﻤﻌﻁﻰ ﺒﺎﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﻨﻁﻘﻲ
ﻴﺴﺎﻭﻱ 64ﻜﻴﻠﻭﺒﺎﻴﺕ ﻓﺈﻥ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﻨﻬﺎﻴـﺔ ﺍﻟﻤﻘﺘﻁـﻊ DSﻴﻌﻁـﻰ ﺒـﺎﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﻨﻁﻘـﻲ
E000:FFFFhﻭﺍﻟﺫﻱ ﻴﺴﺎﻭﻱ .EFFFFh
13
ﻤﻭﺍﻗﻊ ﺫﺍﻜﺭﺓ ﻤﺤﺠﻭﺯﺓ
ﺠﺭﻯ ﺤﺠﺯ ﺍﻟﻤﺠﺎل ﺍﻟﻌﻠﻭﻱ ﻭﺍﻟﺴﻔﻠﻲ ﻤﻥ ﻓﻀﺎﺀ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ ،8088/8086ﻟﺘﺤﻘﻴـﻕ ﻭﻅـﺎﺌﻑ
ﻤﺤﺩﺩﺓ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ ﺃﻭ ﻤﻥ ﻗﺒل ﺍﻟﺸﺭﻜﺔ ﺍﻟﻤﺼﻨﻌﺔ ﻟﻠﺘﻁﻭﻴﺭ ﺍﻟﻤﺴﺘﻘﺒﻠﻲ ،ﻭﻫﺫﻩ ﺍﻟﻤﻭﺍﻗـﻊ ﺘﻘـﻊ ﻀـﻤﻥ
ﺍﻟﻤﺠﺎﻟﻴﻥ 00000h-0007Fhﻭ .FFFF0-FFFFFh
ﺘﺴﻤﺢ ﻁﺭﻴﻘﺔ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﻤﻨﻁﻘﻴﺔ ﻟﻠﺫﺍﻜﺭﺓ ،ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ ،8088/8086ﺒﺘﺤﺭﻴﻙ ﻜﺎﻤل ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﻜﻜﺘﻠﺔ
ﻭﺍﺤﺩﺓ ،ﺇﻟﻰ ﺃﻱ ﻤﻜﺎﻥ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺩﻭﻥ ﺍﻟﺤﺎﺠﺔ ﺇﻟﻰ ﻀﺭﻭﺭﺓ ﺇﺠﺭﺍﺀ ﺘﻌﺩﻴﻼﺕ ﻋﻠﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺃﻭ ﻋﻠﻰ
ﺍﻟﻤﻌﻁﻴﺎﺕ .ﺇﻥ ﻜل ﻤﺎ ﻨﺤﺘﺎﺠﻪ ﻹﺠﺭﺍﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﺭﻴﻙ ﻫﻭ ﻓﻘﻁ ﺘﻐﻴﻴﺭ ﻤﺤﺘﻭﻯ ﺴﺠﻼﺕ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ،
ﻼ ﺇﺫﺍ ﻜﺎﻥ ﻟﺩﻴﻨﺎ ﺘﻌﻠﻴﻤﺔ ﺘﻘﻊ ﺒﻌﺩ 4ﺒﺎﻴﺘﺎﺕ ﻤﻥ ﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﺃﻱ ﻗﻴﻤﺔ ﺍﻻﻨﺯﻴﺎﺡ ﺘـﺴﺎﻭﻱ
ﻓﻤﺜ ﹰ
،4ﻓﺈﻥ ﺘﺤﺭﻴﻙ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺇﻟﻰ ﺃﻱ ﻤﻜﺎﻥ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻴﺒﻘﻰ ﺍﻨﺯﻴﺎﺡ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻋﻥ ﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ
ﻴﺴﺎﻭﻱ ﺃﻴﻀﹰﺎ .4
ﺘﻌﻁﻲ ﻫﺫﻩ ﺍﻹﻤﻜﺎﻨﻴﺔ ﻨﻅﻡ ﺍﻟﺘﺸﻐﻴل ﻓﻲ ﺍﻟﺤﻭﺍﺴﻴﺏ ﺍﻟﺸﺨﺼﻴﺔ ﺩﻴﻨﺎﻤﻴﻜﻴﺔ ﻹﺩﺍﺭﺓ ﻤﻭﺍﺭﺩ ﺍﻟﺫﺍﻜﺭﺓ ﻋﻠـﻰ
ﻨﺤﻭ ﻓﻌﺎل ،ﻭﺫﻟﻙ ﺒﻭﻀﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﻊ ﻤﻌﻁﻴﺎﺘﻪ ﻓﻲ ﺃﻱ ﻤﻜﺎﻥ ﻤﺘﺎﺡ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ.
ﺍﻟﻤﻜﺩﺱ
ﻴﺴﺘﺨﺩﻡ ﺍﻟﻤﻜﺩﺱ stackﻓﻲ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻟﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﺍﻟﻌﻨﺎﻭﻴﻥ ﻤﺅﻗﺘﹰﺎ ﻋﻨـﺩ ﺘﻨﻔﻴـﺫ ﺍﻟﺒـﺭﺍﻤﺞ
ﺍﻟﻔﺭﻋﻴﺔ ،ﻜﻤﺎ ﻴﺴﺘﺨﺩﻡ ﻟﺘﻤﺭﻴﺭ ﻤﻌﻁﻴﺎﺕ ﻤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺭﺌﻴﺱ ﺇﻟﻰ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻔﺭﻋﻴﺔ .ﻴﺠـﺭﻱ ،ﻓـﻲ
ﺍﻟﻤﻌﺎﻟﺞ ،8088/8086ﺤﺠﺯ ﺤﻴﺯ ﻤﻥ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻌﻤل ﺍﻟﻤﻜ ﺩﺱ.
ﻴﺤﻭﻱ ﺍﻟﺴﺠل SSﻋﻠﻰ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻘﺎﻋﺩﻱ ﻟﻠﻤﻜﺩﺱ ﺒﻴﻨﻤﺎ ﻴﺅﺸﺭ ﺍﻟﺴﺠل SPﺇﻟﻰ ﻗﻤﺔ ﺍﻟﻤﻜـﺩﺱ )ﺃﻱ
ﺨﺯﻥ ﻓﻴﻪ ﺁﺨﺭ ﺒﺎﻴﺕ( ،ﻭﺒﺎﻟﺘﺎﻟﻲ ﻴﺤﺘﻭﻱ SPﺍﻨﺯﻴﺎﺡ ﻗﻤﺔ ﺍﻟﻤﻜﺩﺱ ﻋﻥ
ﺇﻟﻰ ﺍﻟﻤﻭﻗﻊ ﻓﻲ ﺍﻟﻤﻜﺩﺱ ﺍﻟﺫﻱ ﹸ
14
ﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻜﺩﺱ .ﺘﺴﺘﻁﻴﻊ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﻲ ﺘﺘﻌﺎﻤل ﻤﻊ ﺍﻟﻤﻜﺩﺱ ﺘﺨﺯﻴﻥ ﺃﻭ ﻗﺭﺍﺀﺓ ﻜﻠﻤﺔ ﻭﺍﺤـﺩﺓ
ﻓﻲ ﻭﻗﺕ ﻭﺍﺤﺩ ،ﻻ ﻴﻤﻜﻥ ﺘﺨﺯﻴﻥ ﺃﻭ ﻗﺭﺍﺀﺓ ﺒﺎﻴﺕ ﻭﺍﺤﺩ .ﻴﻤﻜﻥ ﺩﻓﻊ )ﻜﺘﺎﺒﺔ( ﻜﻠﻤـﺔ ﻓـﻲ ﺍﻟﻤﻜـﺩﺱ
ﺒﺎﺴﺘﺨﺩﺍﻡ ﺘﻌﻠﻴﻤﺔ ،PUSHﻋﻨﺩﻫﺎ ﻴﺠﺭﻱ ﺘﺨﺯﻴﻥ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻜﺜﺭ ﺩﻻﻟﺔ ﻟﻠﻜﻠﻤﺔ ﻓﻲ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻴﻌﻨﻭﻨﻪ
SP-1ﻭﺍﻟﺒﺎﻴﺕ ﺍﻷﻗل ﺩﻻﻟﺔ ﻓﻲ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻴﻌﻨﻭﻨﻪ SP-2ﺜﹸﻡ ﻴﺠﺭﻱ ﺇﻨﻘﺎﺹ SPﺒﻤﻘﺩﺍﺭ .2ﻭﻴﻤﻜﻥ
ﺴﺤﺏ )ﻨﺴﺦ( ﻜﻠﻤﺔ ﻤﻥ ﺍﻟﻤﻜﺩﺱ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺔ ،POPﻋﻨﺩﻫﺎ ﹸﺘﻨﺴﺦ ﺍﻟﻜﻠﻤﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﻗﻤـﺔ
ﺍﻟﻤﻜﺩﺱ ،ﻴﺠﺭﻱ ﻨﺴﺦ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻗل ﺩﻻﻟﺔ ﻤﻥ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻴﻌﻨﻭﻨﻪ SPﻭﺍﻟﺒﺎﻴﺕ ﺍﻷﻜﺜﺭ ﺩﻻﻟـﺔ ﻤـﻥ
ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻴﺅﺸﺭ ﺇﻟﻴﻪ SP-1ﺜﻡ ﻴﺠﺭﻱ ﺯﻴﺎﺩﺓ SPﺒﻤﻘﺩﺍﺭ .2
ﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ
ﺘﹸﺴﺘﺨﺩﻡ ﺍﻟﺒﻭﺍﺒﺎﺕ ﻟﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻴﻥ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﺨﺎﺭﺠﻴﺔ ﻭﺍﻟﻤﻌﺎﻟﺞ .ﻴﻤﻜـﻥ ﺃﻥ ﺘﻘـﻊ ﻋﻨـﺎﻭﻴﻥ
ﺍﻟﺒﻭﺍﺒﺎﺕ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺇﻤﺎ ﻀﻤﻥ ﻓﻀﺎﺀ ﻤﺴﺘﻘل ﻟﻌﻨﻭﻨﺔ ﺒﻭﺍﺒﺎﺕ ﺩﺨـل/ﺨـﺭﺝ I/Oﺃﻭ
ﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﺠﺯ ﺀﺍ ﻤﻥ ﻓﻀﺎﺀ ﻋﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ.
ﻴﻤﻜﻥ ﺃﻥ ﻴ ﻌﻨ ِﻭﻥ ﻓﻀﺎﺀ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﺇﻤﺎ 64ﻜﻴﻠﻭ )ﻋﻨﺩﻤﺎ ﻨﺫﻜﺭ ﺤﺠﻡ ﺫﺍﻜﺭﺓ ﺃﻭ ﺒﻭﺍﺒﺎﺕ ﻓﺈﻥ
ﺍﻟﻜﻴﻠﻭ ﻴﺴﺎﻭﻱ 1024ﻭﻟﻴﺱ (1000ﺒﻭﺍﺒﺔ ﺩﺨل/ﺨﺭﺝ ﻁﻭل ﻜل ﻤﻨﻬﺎ 8ﺒﺕ،
15
ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻨﻨﺎ ﻨﺤﺘﺎﺝ ﻓﻘﻁ ﺇﻟﻰ 16ﺨﻁ ﻋﻨﻭﻨﺔ ﻟﻌﻨﻭﻨﺔ ﻜﺎﻤل ﻓﻀﺎﺀ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ.
ﺘﺴﻤﺢ ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ INﻭ OUTﺒﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻴﻥ ﺍﻟﻤﺭﺍﻜﻡ ) ALﻟﻠﻌﻤﻠﻴـﺎﺕ ﻋﻠـﻰ ﺒﺎﻴـﺕ ﻭ AX
ﻟﻠﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ 2ﺒﺎﻴﺕ( ﻭﺒﻭﺍﺒﺔ ﺘﻘﻊ ﻀﻤﻥ ﻓﻀﺎﺀ ﻋﻨﻭﻨﺔ ﺒﻭﺍﺒﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ .ﻻ ﻴﺴﺘﺨﺩﻡ ﻓﻀﺎﺀ ﺒﻭﺍﺒﺎﺕ
ﺍﻟﺩﺨل/ﺨﺭﺝ ﻨﻅﺎﻡ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ،ﺍﻟﻤﺴﺘﺨﺩﻡ ﻓﻲ ﻋﻨﻭﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ ،ﻟﻠﻭﺼﻭل ﺇﻟﻰ ﺍﻟﺒﻭﺍﺒـﺎﺕ .ﻭﺒﺎﻟﺘـﺎﻟﻲ
ﺘﻀﻊ ﻭﺤﺩﺓ ﺍﻟﺘﻭﺍﺠﻪ ﻤﻊ ﺍﻟﻤﺴﺭﻯ ﺍﻟﺨﺎﺭﺠﻲ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﻠﺒﻭﺍﺒﺔ ) ﺍﻟﻤﻜـﻭﻥ ﻤـﻥ 16ﺒـﺕ(
ﻤﺒﺎﺸﺭﺓ ﻋﻠﻰ ﺍﻟﺨﻁﻭﻁ ﺍﻟﺴﺕ ﻋﺸﺭﺓ ﺍﻷﻭﻟﻰ ﻤﻥ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ.
ﺠﺭﻯ ﺤﺠﺯ ﺍﻟﺒﻭﺍﺒﺎﺕ ﺍﻟﺘﻲ ﺘﻘﻊ ﻋﻨﺎﻭﻴﻨﻬﺎ ﺒﻴﻥ 00F8Hﻭ ،00FFHﻤﻥ ﻗﺒل ﺍﻟـﺸﺭﻜﺔ ﺍﻟﻤـﺼﻨﻌﺔ،
ﻷﻫﺩﺍﻑ ﺍﻟﺘﻁﻭﻴﺭ ﺍﻟﻤﺴﺘﻘﺒﻠﻴﺔ.
FFFFH
ﻣﺘﺎﺣﺔ ﻟﻠﻤﺴﺘﺨﺪﻡ
0100H
ﳏﺠﻮﺯﺓ 00FFH
00F8H
00F7H
ﻣﺘﺎﺣﺔ ﻟﻠﻤﺴﺘﺨﺪﻡ
0000H
ﺇﺫﺍ ﻜﺎﻥ ﹶﺘﺼﺭﻑ ﻭﺍﺴﺘﺠﺎﺒﺔ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻴﻤﺎﺜل ﺘﺼﺭﻑ ﻭﺍﺴﺘﺠﺎﺒﺔ ﺫﻭﺍﻜﺭ ﺍﻟﻤﻌﺎﻟﺞ ﻓـﻴﻤﻜﻥ
ﺃﻥ ﻨﺠﻌل ﺍﻟﺒﻭﺍﺒﺎﺕ ﺘﺤﺘل ﺠﺯ ﺀﺍ ﻤﻥ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ .ﻴﻤﻜﻨﻨﺎ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺍﻻﺴـﺘﻔﺎﺩﺓ ﻤـﻥ ﻜﺎﻤـل
ﺇﻤﻜﺎﻨﺎﺕ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ .ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ،ﻴﻤﻜﻨﻨﺎ ﺍﺴﺘﺨﺩﺍﻡ ﺘﻌﻠﻴﻤﺔ MOVﻟﺘﺒﺎﺩل ﻤﻌﻁﻴﺎﺕ ﻤـﻊ
ﺒﻭﺍﺒﺎﺕ ﺘﻘﻊ ﻀﻤﻥ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ .ﺘﺴﺘﻔﻴﺩ ﺍﻟﺒﻭﺍﺒﺎﺕ ﺍﻟﻭﺍﻗﻌﺔ ﻀﻤﻥ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ ﺃﻴﻀﹰﺎ ﻤﻥ ﺃﻨﻤـﺎﻁ
ﻋﻨﻭﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺘﻨﻭﻋﺔ ،ﻜﻤﺎ ﻴﻤﻜﻨﻨﺎ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻋﻨﻭﻨﺔ ﺃﻜﺜﺭ ﻤﻥ 64ﻜﻴﻠﻭ ﺒﻭﺍﺒﺔ.
ﺃﻨﻤﺎﻁ ﺍﻟﻌﻨﻭﻨﺔ
ﹸﺘﻨﻔﺫ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ ﻋﻤﻠﻴﺎﺕ ﻤﺤﺩﺩﺓ ﻋﻠﻰ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘﻲ ﺘﹸﺴﻤﻰ ﺒﻤﻌﺎﻤﻼﺕ Operandsﺍﻟﺘﻌﻠﻴﻤﺔ.
ﻴﺤﺘﺎﺝ ﺘﻨﻔﻴﺫ ﺒﻌﺽ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺇﻟﻰ ﻤﻌﺎﻤﻠﻴﻥ :ﻤﻌﺎﻤل ﻤﺼﺩﺭ sourceﻭﻤﻌﺎﻤل ﻭﺠﻬﺔ ،destination
ﻼ ﻭﺍﺤﺩﹰﺍ .ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻫﻭ ﺍﻟﻤﻜـﺎﻥ ﺍﻟـﺫﻱ ﻴﻘـﺭﺃ ﻤﻨـﻪ ﺍﻟﻤﻌـﺎﻟﺞ
ﻭﻴﺘﻁﻠﺏ ﺒﻌﻀﻬﺎ ﺍﻵﺨﺭ ﻤﻌﺎﻤ ﹰ
ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﺒﻴﻨﻤﺎ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻫﻭ ﺍﻟﻤﻜﺎﻥ ﺍﻟﺫﻱ ﻴﺨﺯﻥ ﻓﻴﻪ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﻤﻌﻁﻴﺎﺕ .ﻟﺩﻴﻨﺎ ﻋﺩﺓ ﺤـﺎﻻﺕ
16
ﻟﻠﻤﻌﺎﻤل:
-ﻤﻀ ﻤﻨﹰﺎ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻨﻔﺴﻬﺎ
-ﺃﺤﺩ ﺴﺠﻼﺕ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺩﺍﺨﻠﻴﺔ
-ﻤﻭﻗﻊ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺃﻭ ﺒﻭﺍﺒﺔ ﺩﺨل/ﺨﺭﺝ
ﻨﻌﺭﺽ ﻓﻴﻤﺎ ﻴﻠﻲ ﺍﻟﻁﺭﻕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﺍﻟﺘﻲ ﺘﻤﻜﻨﻨﺎ ﻤﻥ ﺍﻟﻭﺼﻭل ﺇﻟﻰ ﻤﻌﺎﻤﻼﺕ ﺍﻟﺘﻌﻠﻴﻤﺔ ،ﺘﻌـﺭﻑ ﻫـﺫﻩ
ﺍﻟﻁﺭﻕ ﺒﺄﻨﻤﺎﻁ ﺍﻟﻌﻨﻭﻨﺔ.
ﻴﻜﻭﻥ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﺃﻭ ﺍﻟﻭﺠﻬﺔ ﺃﻭ ﻜﻠﻴﻬﻤﺎ ﻤﻌﹰﺎ ﻤﻭﺠﻭﺩﻴﻥ ﻀﻤﻥ ﺴﺠﻼﺕ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺩﺍﺨﻠﻴﺔ ،ﻭﻴﺠﺏ
ﺃﻥ ﻴﻜﻭﻥ ﻁﻭل ﺴﺠل ﺍﻟﻤﺼﺩﺭ ﻤﻁﺎﺒﻘﹰﺎ ﻟﻁﻭل ﺴﺠل ﺍﻟﻭﺠﻬﺔ.
ﻤﺜﺎل:
ﺘﻌﻤل ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻋﻠﻰ ﻨﺴﺦ ﻤﺤﺘﻭﻯ ﺍﻟﺴﺠل AXﺇﻟﻰ ﺍﻟﺴﺠل .DX
17
ﻋﻨﻭﻨﺔ ﻤﺒﺎﺸﺭﺓ Direct Addressing
ﺘﻭﻟﺞ ﻭﺤﺩﺓ ﺍﻟﺘﻨﻔﻴﺫ EUﻤﺒﺎﺸﺭﺓ ﺇﻟﻰ ﺍﻟﻤﻌﺎﻤﻼﺕ ﻓﻲ ﺍﻟﻌﻨﻭﻨﺔ ﺒﺎﻟﺴﺠل ﻭﻓﻲ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﻔﻭﺭﻴـﺔ .ﻭﻟﻜـﻥ
ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﺃﺤﺩ ﻤﻌﺎﻤﻠﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ﺘﻤﺭﺭ EUﺇﻟﻰ BIUﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﻨﻁﻘﻲ ﺍﻟﻤﻜﻭﻥ ﻤـﻥ
ﺍﻨﺯﻴﺎﺡ ﻭﻋﻨﻭﺍﻥ ﻗﺎﻋﺩﻱ ﻭﺘﺤﺴﺏ BIUﺒﻨﺎ ﺀ ﻋﻠﻰ ﺫﻟﻙ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﻠﻤﻌﺎﻤل .ﻴﻤﻜﻥ ﺃﻥ ﺘﺤﺴﺏ
EUﺍﻻﻨﺯﻴﺎﺡ ﺒﻌﺩﺓ ﻁﺭﻕ ﺒﺤﺴﺏ ﻨﻤﻁ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ،ﻨﺴﻤﻲ ﻫﺫﺍ ﺍﻻﻨﺯﻴﺎﺡ ﺒﺎﻟﻌﻨﻭﺍﻥ
ﺍﻟﻔﻌﺎل ).effective address (EA
ﺘﻨﺴﺦ ﺍﻟﺘﻌﻠﻴﻤﺔ ]) MOV AX, [addressﻴﻤﺜل addressﺍﻻﻨﺯﻴﺎﺡ ﻋﻥ ﺒﺩﺍﻴﺔ ﺍﻟﻘﻁﺎﻉ ﺍﻟﻤﺤﺩﺩ ﺒﺴﺠل
ﺍﻟﻘﻁﺎﻉ .DXﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل ﻴﺴﺎﻭﻱ ﻓﻲ ﻫﺫﺍ ﺍﻟﻨﻤﻁ (addressﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓـﻲ ﺍﻟﻤﻭﻗـﻊ
addressﻤﻥ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻓﻲ .AXﻴﺴﺘﺨﺩﻡ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ،DXﺍﻓﺘﺭﺍﻀﻴﹰﺎ ،ﻓـﻲ ﺤـﺴﺎﺏ
ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ.
ﻤﺜﺎل:
ﺘﺒﻌﹰﺎ ﻟﻠﺸﻜل ﺍﻟﺘﺎﻟﻲ ،ﻓﺈﻨﻪ ﻭﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ] MOV CX, [1234hﻴﺠﺭﻱ ﻨﺴﺦ ﻤﺤﺘـﻭﻯ ﺍﻟﻤﻭﻗـﻊ
18
1234hﻤﻥ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻓﻲ ﺍﻟﺴﺠل ،CXﺃﻱ ﻴﺠﺭﻱ ﻨـﺴﺦ ﻤﺤﺘـﻭﻯ ﺍﻟﻤﻭﻗـﻊ ﺍﻟﻔﻴﺯﻴـﺎﺌﻲ
02000+1234h = 03234hﻓﻲ .CXﻭﺒﻤﺎ ﺃﻥ ﻁﻭل ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻴﺴﺎﻭﻱ 2ﺒﺎﻴﺕ ﻓﺈﻨﻪ ﻴﺠﺭﻱ
ﻨﺴﺦ ﻤﺤﺘﻭﻯ ﺍﻟﻤﻭﻗﻌﻴﻥ 03234hﻭ 03235hﻓﻲ .CXﻭﺒﺎﻟﻨﺘﻴﺠﺔ ﻴﺤﺘﻭﻱ CXﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤـﺔ
ﺍﻟﺴﺎﺒﻘﺔ ﺍﻟﻘﻴﻤﺔ .BEEDh
19
ﻤﺜﺎل:
ﺘﺒﻌ ﹰﺎ ﻟﻠﺸﻜل ﺍﻟﺘﺎﻟﻲ ،ﻓﺈﻨﻪ ﻭﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ] MOV AX, [SIﻴﺠﺭﻱ ﻨﺴﺦ ﻤﺤﺘﻭﻯ ﺍﻟﻤﻭﻗﻊ 1234h
ﻤﻥ ﻤﻘﺘﻁـﻊ ﺍﻟﻤﻌﻁﻴـﺎﺕ ﻓـﻲ ﺍﻟـﺴﺠل ،AXﺃﻱ ﻴﺠـﺭﻱ ﻨـﺴﺦ ﻤﺤﺘـﻭﻯ ﺍﻟﻤﻭﻗـﻊ ﺍﻟﻔﻴﺯﻴـﺎﺌﻲ
02000+1234h = 03234hﻓﻲ .AXﻭﺒﺎﻟﻨﺘﻴﺠﺔ ﻴﺤﺘﻭﻱ AXﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟـﺴﺎﺒﻘﺔ ﺍﻟﻘﻴﻤـﺔ
.BEEDh
20
ﺘﺘﻀﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻗﻴﻤﺔ ﺍﻹﺯﺍﺤﺔ ﺍﻟﺘﻲ ﹸﺘﻜﻭﻥ ﻤﻤﺜﻠﺔ ﻋﻠﻰ 16ﺒﺕ ﻤﻊ ﺇﺸﺎﺭﺓ ،ﻭﺒﺎﻟﺘﺎﻟﻲ ﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ
ﻗﻴﻤﺔ ﺍﻹﺯﺍﺤﺔ ﺒﻴﻥ -32,768ﻭ .32,767ﻴﺴﺘﺨﺩﻡ ﻓﻲ ﺤﺴﺎﺏ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ،ﺍﻓﺘﺭﺍﻀﻴﹰﺎ ،ﺴـﺠل
ﺍﻟﻤﻘﺘﻁﻊ:
DS -ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ SI ،BXﺃﻭ .DI
SS -ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ .BP
ﻤﺜﺎل:
ﺘﺒﻌﹰﺎ ﻟﻠﺸﻜل ﺍﻟﺘﺎﻟﻲ ،ﻓﺈﻨﻪ ﻭﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ MOV AL, [SI] + 1234hﻴﺠﺭﻱ ﻨﺴﺦ ﻤﺤﺘﻭﻯ ﺍﻟﻤﻭﻗﻊ
ﺍﻟﻔﻴﺯﻴﺎﺌﻲ 02000+2000+1234h = 05234hﻓﻲ .AXﻭﺒﺎﻟﻨﺘﻴﺠﺔ ﻴﺤﺘﻭﻱ ALﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ
ﺍﻟﺴﺎﺒﻘﺔ ﺍﻟﻘﻴﻤﺔ .BEh
21
ﻋﻨﻭﻨﺔ ﻏﻴﺭ ﻤﺒﺎﺸﺭﺓ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺴﺠل ﻗﺎﻋﺩﺓ ﻭﺴﺠل ﺩﻟﻴل Base-Plus-Index Addressing
ﺘﺸﺒﻪ ﻁﺭﻴﻘﺔ ﺍﻟﻌﻨﻭﻨﺔ ﻫﺫﻩ ﻨﻤﻁ ﺍﻟﻌﻨﻭﻨﺔ ﻏﻴﺭ ﺍﻟﻤﺒﺎﺸﺭﺓ ﺒﺎﻟﺴﺠل .ﻴﺠﺭﻱ ﺍﺴﺘﺨﺩﺍﻡ ﺃﺤﺩ ﺴﺠﻼﺕ ﺍﻟﻘﺎﻋﺩﺓ
) BPﺃﻭ (BXﻤﻊ ﺃﺤﺩ ﺴﺠﻼﺕ ﺍﻟﺩﻟﻴل ) DIﺃﻭ (SIﻟﻌﻨﻭﻨﺔ ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ﺒﻁﺭﻴﻘـﺔ ﻏﻴـﺭ ﻤﺒﺎﺸـﺭﺓ
)ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل ﻴﺴﺎﻭﻱ ﻨﺎﺘﺞ ﺠﻤﻊ ﺃﺤﺩ ﺍﻟﺴﺠﻠﻴﻥ BP ،BXﻤﻊ ﺃﺤﺩ ﺍﻟﺴﺠﻠﻴﻥ .(DI ،SIﻴـﺴﺘﺨﺩﻡ
ﻓﻲ ﺤﺴﺎﺏ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ،ﺍﻓﺘﺭﺍﻀﻴﹰﺎ ،ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ:
DS -ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ .BX
SS -ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ .BP
ﻤﺜﺎل:
ﺒﻔــﺭﺽ ﺃﻥ DS=0100hﻭ DI=0010ﻭ ،BX=1000hﻓﺈﻨــﻪ ﻭﺒﻌــﺩ ﺘﻨﻔﻴــﺫ ﺍﻟﺘﻌﻠﻴﻤــﺔ
] MOV DX, [BX+DIﻴﺠـــﺭﻱ ﻨـــﺴﺦ ﺍﻟﻜﻠﻤـــﺔ ﻤـــﻥ ﺍﻟﻤﻭﻗـــﻊ ﺍﻟﻔﻴﺯﻴـــﺎﺌﻲ
01000h+1000h+0010h= 02010hﻓﻲ .DX
22
ﻋﻨﻭﻨﺔ ﻏﻴﺭ ﻤﺒﺎﺸﺭﺓ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺴﺠل ﻗﺎﻋﺩﺓ ﻭﺴﺠل ﺩﻟﻴل ﻤﻊ ﺇﺯﺍﺤﺔ
Based-Plus-Indexed relative Addressing
ﺇﻥ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻌﻨﻭﻨﺔ ﻫﻭ ﺃﻗل ﺃﻨﻤﺎﻁ ﺍﻟﻌﻨﻭﻨﺔ ﺍﺴﺘﺨﺩﻤﹰﺎ ،ﻴﺠﺭﻱ ﻓﻴﻪ ﺤﺴﺎﺏ ﺍﻨﺯﻴﺎﺡ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻥ
ﺴﺠل ﻤﻘﺘﻁﻊ ﺒﺠﻤﻊ ﺇﺯﺍﺤﺔ ﻤﻊ ﺃﺤﺩ ﺴﺠﻼﺕ ﺍﻟﻘﺎﻋﺩﺓ BPﺃﻭ BXﻭﻤﻊ ﺃﺤﺩ ﺴﺠﻼﺕ ﺍﻟﺩﻟﻴل DIﺃﻭ SI
)ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل ﻴﺴﺎﻭﻱ ﻨﺎﺘﺞ ﺠﻤﻊ ﺇﺯﺍﺤﺔ ﻤﺘﻀﻤﻨﺔ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻤﻊ ﺃﺤﺩ ﺍﻟﺴﺠﻠﻴﻥ BPﺃﻭ BXﻭﻤﻊ
ﺃﺤﺩ ﺍﻟﺴﺠﻠﻴﻥ DIﺃﻭ .(SI
ﻴﺴﺘﺨﺩﻡ ﻓﻲ ﺤﺴﺎﺏ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ،ﺍﻓﺘﺭﺍﻀﻴﹰﺎ ،ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ:
DS -ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ .BX
SS -ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ .BP
ﻤﺜﺎل:
ﺒﻔــﺭﺽ ﺃﻥ DS=1000hﻭ SI=0100ﻭ ،BX=0020hﻓﺈﻨــﻪ ﻭﺒﻌــﺩ ﺘﻨﻔﻴــﺫ ﺍﻟﺘﻌﻠﻴﻤــﺔ
] MOV AL, [BX+SI+ 100hﻴﺠـــﺭﻱ ﻨـــﺴﺦ ﻤﺤﺘـــﻭﻯ ﺍﻟﻤﻭﻗـــﻊ ﺍﻟﻔﻴﺯﻴـــﺎﺌﻲ
10000h+0020h+0100h+100h = 10220hﻓﻲ .AL
23
ﺇﻥ ﺘﺭﺘﻴﺏ ﺍﻟﺴﺠﻼﺕ ﻏﻴﺭ ﻤﻬﻡ ﻭﺒﺎﻟﺘﺎﻟﻲ ﻴﻤﻜﻥ ﺃﻴﻀﹰﺎ ﻜﺘﺎﺒﺔ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻓﻲ ﺍﻟﻤﺜﺎل ﺍﻟﺴﺎﺒﻕ ﻜﻤﺎ ﻴﻠﻲ:
]MOV AL, [SI+100h +BX
MOV AL, [SI][BX]+100h
24
ﺁﺨﺭ ﻋﻭﻀﹰﺎ ﻋﻨﻪ ،ﻓﻲ ﺤﻴﻥ ﻴﺴﺘﺨﺩﻡ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ DSﻟﻠﻤﺼﺩﺭ ﻤﻊ ﺇﻤﻜﺎﻥ ﺘﻌﻴﻴﻥ ﺴـﺠل ﻤﻘﺘﻁـﻊ
ﺁﺨﺭ.
ﻤﺜﺎل:
=][DI ـﺎﻥ [DF]=0ﻭ [DS]=2000hﻭ [SI]=500hﻭ [ES]=4000hﻭ 0300h
ﺇﺫﺍ ﻜــــ
ﻭ [20500]=38hﻭ [40300]=45ﻓﺈﻨﻪ ﺒﻌـﺩ ﺘﻨﻔﻴـﺫ ﺍﻟﺘﻌﻠﻴﻤـﺔ MOVS BYTEﻴـﺼﺒﺢ ﻟـﺩﻴﻨﺎ
[40300h]=38ﻭ [SI]=0501hﻭ .[DI]=0301hﻭﻻ ﺘﺘﻐﻴــﺭ ﻤﺤﺘــﻭﻯ ﺍﻟــﺴﺠﻼﺕ ﺍﻷﺨــﺭﻯ
ﻭﺍﻟﺫﺍﻜﺭﺓ.
25
ﺇﺒﻁﺎل ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﺍﻻﻓﺘﺭﺍﻀﻲ
ﻴﺭﺘﺒﻁ ﺒﻜل ﻨﻤﻁ ﻋﻨﻭﻨﺔ ﺴﺠل ﻤﻘﺘﻁﻊ ﺍﻓﺘﺭﺍﻀﻲ ،ﻭﻴﻤﻜﻨﻨﺎ ﻓﻲ ﺃﻏﻠﺏ ﺍﻷﺤﻴﺎﻥ ﺍﺨﺘﻴﺎﺭ ﺴﺠل ﻤﻘﺘﻁـﻊ
ﺁﺨﺭ ﻋﻭﻀﹰﺎ ﻋﻨﻪ ﻭﺫﻟﻙ ﺒﻜﺘﺎﺒﺔ ﺍﺴﻡ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﻗﺒل ﺍﻟﻤﻌﺎﻤل ﻓﻲ ﻟﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ.
ﻤﺜﺎل:
ﻨﹸﻌﻴﻥ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﺴﺠل ESﻜﺴﺠل ﻤﻘﺘﻁﻊ ﻋﻭﻀﹰﺎ ﻋﻥ ﺍﻟﺴﺠل ﺍﻻﻓﺘﺭﺍﻀﻲ .DX
]MOV AL, ES:[DI
ﻴﺒﻴﻥ ﺍﻟﺠﺩﻭل ﺍﻟﺘﺎﻟﻲ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﺍﻻﻓﺘﺭﺍﻀﻲ ﻭﺍﻟﺴﺠﻼﺕ ﺍﻟﺒﺩﻴﻠﺔ ﺍﻟﻤﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻤﻬﺎ ﺒﺤﺴﺏ ﻨـﻭﻉ
ﺍﻟﺭﺠﻭﻉ ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ.
ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﺍﻓﺘﺭﺍﻀﻴ ﹰﺎ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﺍﻟﺒﺩﻴل ﺍﻻﻨﺯﻴﺎﺡ ﻨﻭﻉ ﺍﻟﺭﺠﻭﻉ ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ
IP ﻻ ﻴﻭﺠﺩ CS ﺠﻠﺏ ﺍﻟﺘﻌﻠﻴﻤﺔ
SP ﻻ ﻴﻭﺠﺩ SS ﻋﻤﻠﻴﺎﺕ ﺍﻟﻤﻜﺩﺱ
ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل SS ،ES ،CS ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻌﺎﻤـﺔ )ﻤﺎﻋـﺩﺍ DS
ﺍﻟﺘﺎﻟﻴﺔ(
SI SS ،ES ،CS DS ﺍﻟﻤﺼﺩﺭ ﻓﻲ ﺴﻠﺴﻠﺔ ﺍﻟﻤﺤﺎﺭﻑ
DI ﻻ ﻴﻭﺠﺩ ES ﺍﻟﻭﺠﻬﺔ ﻓﻲ ﺴﻠﺴﻠﺔ ﺍﻟﻤﺤﺎﺭﻑ
ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل SS ،ES ،CS SS ﻋﻨﻭﻨﺔ ﺘﺴﺘﺨﺩﻡ ﺍﻟﺴﺠل BP
ﻻ ﻴﻤﻜﻨﻨﺎ ﺍﺴﺘﺨﺩﺍﻡ ﺴﺠل ﻤﻘﺘﻁﻊ ﻏﻴﺭ ﺍﻟﺴﺠل ﺍﻻﻓﺘﺭﺍﻀﻲ ﻓﻲ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺜﻼﺜﺔ ﺍﻟﺘﺎﻟﻴﺔ:
-1ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﻲ ﺘﺴﺘﺨﺩﻡ ﺍﻟﻤﻜﺩﺱ )ﻤﺜل PUSHﻭ ،(POPﻭﺍﻟﺘﻲ ﺘﺴﺘﺨﺩﻡ ﻤﺤﺘﻭﻯ ﺍﻟـﺴﺠل
SPﻜﻘﻴﻤﺔ ﺍﻨﺯﻴﺎﺡ ،ﻓﺈﻨﻬﺎ ﺘﺴﺘﺨﺩﻡ ﺩﻭﻤﹰﺎ ﺍﻟﺴﺠل SSﻜﺴﺠل ﻤﻘﺘﻁﻊ.
-2ﻓﻲ ﺘﻌﻠﻴﻤﺎﺕ ﺴﻼﺴل ﺍﻟﻤﺤﺎﺭﻑ ﺍﻟﺘﻲ ﺘﺴﺘﺨﺩﻡ ﺍﻟﺴﺠل DIﻓﺈﻨﻬﺎ ﺘﺴﺘﺨﺩﻡ ﺩﻭﻤﹰﺎ ﺍﻟﺴﺠل ESﻜﺴﺠل
ﻤﻘﺘﻁﻊ.
-3ﻓﻲ ﻋﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﺤﻴﺙ ﻴﻜﻭﻥ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﻫﻭ ﺩﻭﻤﹰﺎ CSﻭﺴﺠل ﺍﻹﺯﺍﺤﺔ ﻫﻭ ﺩﻭﻤﹰﺎ
.IP
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺍﻟﻤﻁﻠﻭﺏ ﺘﺤﺩﻴﺩ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﺍﻻﻓﺘﺭﺍﻀﻲ ﻓﻲ ﻜل ﻤﻥ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﺎﻟﻴﺔ ﺒﻔـﺭﺽ ﺃﻥ
ﻤﺤﺘﻭﻯ ﺍﻟﺴﺠل ﺍﻟﻤﻌﻁﻰ ﻴﻤﺜل ﺍﻻﻨﺯﻴﺎﺡ ؟
BX -5 SP -4 SI -3 IP -2 BP -1
ﺍﻟﺠﻭﺍﺏ:
26
DS -5 SS -4 DS -3 CS -2 SS -1
27
ﻋﻨﻭﻨﺔ ﻏﻴﺭ ﻤﺒﺎﺸﺭﺓ :ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ،ﻴﺤﺘﻭﻱ ﺍﻟﺴﺠل DXﻋﻠﻰ ﺭﻗﻡ ﺍﻟﺒﻭﺍﺒﺔ ،ﻭﺒﻤﺎ ﺃﻥ ﻁـﻭل DX
ﻴﺴﺎﻭﻱ 16ﺒﺕ ﻓﺘﺴﻤﺢ ﻟﻨﺎ ﻁﺭﻴﻘﺔ ﺍﻟﻌﻨﻭﻨﺔ ﻫﺫﻩ ﺒﻌﻨﻭﻨﺔ ﻜﺎﻤل ﻓﻀﺎﺀ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ.
ﻤﺜﺎل:
ﺇﺫﺍ ﻜﺎﻥ ﻟﺩﻴﻨﺎ ،[DX]=5040hﻓﺘﻘﺭﺃ ﺍﻟﺘﻌﻠﻴﻤﺔ IN AL, DXﺍﻟﺒﺎﻴﺕ ﻋﻠـﻰ ﺩﺨـل ﺍﻟﺒﻭﺍﺒـﺔ 5040h
ﻭﺘﺨﺯﻨﻬﺎ ﻓﻲ ﺍﻟﺴﺠل ،ALﺒﻴﻨﻤﺎ ﺘﻘﺭﺃ ﺍﻟﺘﻌﻠﻴﻤﺔ IN AX, DXﺍﻟﻜﻠﻤﺔ ﻋﻠـﻰ ﺩﺨـل ﺍﻟﺒﻭﺍﺒـﺔ 5040h؛
ﺘﺨﺯﻥ ﻓﻲ ALﺍﻟﺒﺎﻴﺕ ﻋﻠﻰ ﺩﺨل ﺍﻟﺒﻭﺍﺒﺔ 5040hﻭﺘﺨﺯﻥ ﻓﻲ AHﺍﻟﺒﺎﻴـﺕ ﻋﻠـﻰ ﺩﺨـل ﺍﻟﺒﻭﺍﺒـﺔ
.5041h
28
ﻤﻼﺤﻅﺔ :ﺘﺠﺭﻱ ،ﺩﻭﻤﺎﹰ ،ﻋﻤﻠﻴﺎﺕ ﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻁﻭل 8ﺒﺕ ﻤﻊ ﺍﻟﺒﻭﺍﺒﺎﺕ ﻋﺒﺭ ALﻓـﻲ ﺤـﻴﻥ
ﻨﺴﺘﺨﺩﻡ AXﻟﺘﺒﺎﺩل ﻤﻌﻁﻴﺎﺕ ﺒﻁﻭل 16ﺒﺕ.
ﺘﻤﺎﺭﻴﻥ
ﺃﻭ ﹰﻻ :ﺃﺠﺏ ﺒـ ﺼﺢ ﺃﻭ ﺨﻁﺄ:
29
-7ﻟﻜل ﻋﻨﻭﺍﻥ ﻓﻴﺯﻴﺎﺌﻲ ﻋﻨﻭﺍﻥ ﻤﻨﻁﻘﻲ ﻭﺤﻴﺩ.
-8ﻴﺴﺘﺨﺩﻡ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ EXﺍﻓﺘﺭﺍﻀﻴﹰﺎ ﻜﺴﺠل ﻤﻘﺘﻁﻊ ﻓﻲ ﺘﻌﻠﻴﻤـﺎﺕ ﺴﻼﺴـل ﺍﻟﻤﺤـﺎﺭﻑ ،ﻭﻻ
ﻴﻤﻜﻨﻨﺎ ﺘﻌﻴﻴﻥ ﺴﺠل ﻤﻘﺘﻁﻊ ﺁﺨﺭ ﻋﻭﻀﹰﺎ ﻋﻨﻪ.
-9ﻴﺴﺘﺨﺩﻡ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻨﻅﺎﻡ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ﻓﻲ ﻋﻨﻭﻨﺔ ﺍﻟﺒﻭﺍﺒﺎﺕ ﺍﻟﺘﻲ ﺘﻘﻊ ﻓﻲ ﻓﻀﺎﺀ ﻋﻨﻭﻨﺔ
ﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ.
-10ﻋﻨﺩﻤﺎ ﺘﻘﻊ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻀﻤﻥ ﻓﻀﺎﺀ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ ﻓﻴﻤﻜﻨﻨﺎ ﻋﻠﻰ ﺍﻷﻜﺜﺭ ﻋﻨﻭﻨﺔ 64
ﻜﻴﻠﻭ ﺒﻭﺍﺒﺔ ﻁﻭل ﻜل ﻤﻨﻬﺎ ﺒﺎﻴﺕ ﻭﺍﺤﺩ.
-11ﻴﻤﻜﻥ ﺒﺎﻟﻌﻨﻭﻨﺔ ﺍﻟﻤﺒﺎﺸﺭﺓ ﻋﻨﻭﻨﺔ 64ﻜﻴﻠﻭ ﺒﻭﺍﺒﺔ ﺩﺨل/ﺨﺭﺝ ﻋﻠﻰ ﺍﻷﻜﺜﺭ.
-12ﻴﺤﺘﻭﻱ ﺍﻟﺴﺠل DXﻋﻠﻰ ﺭﻗﻡ ﺍﻟﺒﻭﺍﺒﺔ ﻓﻲ ﺍﻟﻌﻨﻭﻨﺔ ﻏﻴﺭ ﺍﻟﻤﺒﺎﺸﺭﺓ ﻟﻠﺒﻭﺍﺒﺎﺕ ﺍﻟﺘﻲ ﺘﻘﻊ ﻓﻲ ﻓﻀﺎﺀ
ﻋﻨﻭﻨﺔ ﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ.
30
-10ﻤﺎ ﻫﻭ ﺴﺠل ﺍﻟﻤﻘﺘﻁﻊ ﺍﻟﺫﻱ ﻴﺴﺘﺨﺩﻡ ﺍﻓﺘﺭﺍﻀﻴﹰﺎ ﻟﻠﻭﺼﻭل ﺇﻟﻰ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺭﻨﺎﻤﺞ؟ ﻭﻤـﺎ ﻫـﻲ
ﺴﺠﻼﺕ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ﺍﻟﺒﺩﻴﻠﺔ؟
-11ﻤﺎ ﻫﻲ ﻗﻴﻤﺔ DSﺍﻟﺘﻲ ﺘﹸﻤﻜﻨﻨﺎ ﻤﻥ ﺍﻟﻨﻔﺎﺫ ﺇﻟﻰ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ 67F66؟
-12ﺒﻔﺭﺽ ﺃﻨﻨﺎ ﺨ ّﺯﻨﺎ ﺍﻟﻜﻠﻤﺔ 00F9ﻓﻲ ﺍﻟﻤﻭﻗﻊ ،0F000hﻫل ﻴﻌﺘﺒﺭ ﻫﺫﺍ ﺍﻟﺘﺨﺯﻴﻥ ﻤﺘﺤﺎ ٍﺫ ﺃﻡ ﻏﻴﺭ
ﻤﺘﺤﺎﺫٍ؟ ﻫل ﻴﺠﺭﻱ ﻗﺭﺍﺀﺓ ﺍﻟﻜﻠﻤﺔ 00F9ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻋﻠﻰ ﻤﺭﺤﻠﺔ ﺃﻡ ﻤﺭﺤﻠﺘﻴﻥ؟
-13ﺒﻴﻥ ﺼﺤﺔ ﻜل ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ:
-14ﺒﻔﺭﺽ ﺃﻥ ﻭﺤﺩﺓ ﺍﻟﺘﻨﻔﻴﺫ ﻗﺎﻤﺕ ﺒﺠﻤﻊ ﺍﻟﻘﻴﻤﺘـﻴﻥ 00110100 11110101 :ﻭ 10010101
،11101011ﻤﺎ ﻫﻲ ﻗﻴﻤﺔ ﺍﻟﺭﺍﻴﺎﺕ ZFﻭ AFﻭ SFﻭ CFﻭ PFﺒﻌﺩ ﻋﻤﻠﻴﺔ ﺍﻟﺠﻤﻊ؟
-15ﻤﺎ ﻫﻭ ﻤﺤﺘﻭﻯ ﺍﻟﺴﺠل AHﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ MOV AX, 1020h؟
-16ﻤﺎ ﻫﻭ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﻤﻌﺎﻤل ﺍﻟﻭﺠﻬـﺔ ﻓـﻲ ﺍﻟﺘﻌﻠﻴﻤـﺔ ] ،MOV DX, [DIﺒﻔـﺭﺽ ﺃﻥ
ES=0000h ،DS=0200hﻭ DI=100h؟
-17ﻤﺎ ﻫﻭ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻓـﻲ ﺍﻟﺘﻌﻠﻴﻤـﺔ MOV [BP-1], BLﺒﻔـﺭﺽ ﺃﻥ
SS=2000h ،DS=0200hﻭ BP=30h؟
-18ﺇﺫﺍ ﻜﺎﻥ ﻟﺩﻴﻨﺎ [DF]=1ﻭ [SI]=500hﻭ [DI]= 0300hﻓﻤﺎ ﻫﻲ ﻗﻴﻤﺔ SIﻭ DIﺒﻌـﺩ ﺘﻨﻔﻴـﺫ
ﺍﻟﺘﻌﻠﻴﻤﺔ MOVS BYTE؟
31
ﺍﻟﻔﺼل ﺍﻟﺭﺍﺒﻊ
ﺍﻟﺒﺭﻤﺠﺔ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ
ﺘﻤﻬﻴﺩ
ﻨﻬﺘﻡ ﻓﻲ ﻫﺫﺍ ﺍﻟﻔﺼل ﺒﻜﺘﺎﺒﺔ ﺒﺭﺍﻤﺞ ﺒﻠﻐﺔ ﺘﺠﻤﻴﻊ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻭﺘﻨﻔﻴـﺫﻫﺎ ﻋﻠـﻰ ﺍﻟﺤﺎﺴـﻭﺏ
1
ﻤﻥ ﺸـﺭﻜﺔ ﻤِﻜﺭﻭﺴـﻭﻓﺕ assembler ﺍﻟﺸﺨﺼﻲ .ﻭﺴﻨﺴﺘﺨﺩﻡ ،ﻤﻥ ﺃﺠل ﺫﻟﻙ ،ﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺠ ﱢﻤﻊ
MASMﻟﺘﺭﺠﻤﺔ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻤﻜﺘﻭﺒﺔ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻭﺘﺤﻭﻴﻠﻬﺎ ﺇﻟﻰ ﻤﻠﻔﺎﺕ ﺘﻨﻔﻴﺫﻴﺔ.
ﻹﻨﺸﺎﺀ ﻤﻠﻑ ﺘﻨﻔﻴﺫﻱ ﺍﻨﻁﻼﻗﹰﺎ ﻤﻥ ﺒﺭﻨﺎﻤﺞ ﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻴﺠﺏ ﻋﻠﻴﻨﺎ ﺘﻨﻔﻴﺫ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟـﺜﻼﺙ
ﺍﻟﺘﺎﻟﻴﺔ:
ﻜﺘﺎﺒﺔ ﺒﺭﻨﺎﻤﺞ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻤﺤﺭﺭ ﻨﺼﻭﺹ ﻤﻨﺎﺴﺏ ﻭﻤﻥ ﺜﹸﻡ ﺘﺨﺯﻴﻨﻪ ﺒﺎﻟﻼﺤﻘﺔ ،asm -1
ﺒﺭﻨﺎﻤﺞ ﻤﺠﻤﻊ assemblerﺁﺨﺭ ﻤﻨﺎﺴﺏ .ﻴﻭﻟﺩ ﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺠﻤﻊ ﺍﻟﻤﻠﻑ ،Myfile.objﻭ ﻴﺠﺭﻱ
ﻓﻲ ﻫﺫﻩ ﺍﻟﻤﺭﺤﻠﺔ ﺃﻴﻀﹰﺎ ﺍﻜﺘﺸﺎﻑ ﺍﻷﺨﻁﺎﺀ ﺍﻟﻨﺤﻭﻴﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍﻟﻤﻠﻑ .Myfile.asm
ﺍﺴﺘﺨﺩﺍﻡ ﺒﺭﻨﺎﻤﺞ ﺭﺍﺒﻁ 2LINKERﻟﺘﺤﻭﻴل ﺍﻟﻤﻠﻑ Myfile.objﻤﻊ ﻤﻠﻔﺎﺕ ﺃﺨـﺭﻯ )ﺇﺫﺍ ﻜـﺎﻥ -3
ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﻭ ﺯﻋﹰﺎ ﻋﻠﻰ ﻋﺩﺓ ﻤﻠﻔﺎﺕ( ﺇﻟﻰ ﺍﻟﻤﻠﻑ ﺍﻟﺘﻨﻔﻴﺫﻱ Myfile.exeﺃﻭ .Myfile.com
1ﺑﺮﻧﺎﻣ ﺞ ﻣﻬ ﻤﺘﻪ ﲢﻮﻳ ﹸﻞ ﺍﻟﱪﺍﻣ ِﺞ ﺍﳌﻜﺘﻮﺑ ِﺔ ﺑﻠﻐ ِﺔ ﺍﻟﺘﺠﻤﻴﻊ ،ﺍﻟﱵ ﻳﻔﻬﻤﻬﺎ ﺍﻹﻧﺴﺎﻥﹸ ،ﺇﱃ ﻟﻐ ِﺔ ﺁﻟ ٍﺔ ﻗﺎﺑﻠ ٍﺔ ﻟﻠﺘﻨﻔﻴﺬ.
ﺞ ﺗﻨﻔﻴﺬي .ﻗﺪ ﻳَﻜﻮن ﻟﻠﺮاﺑﻂ
ت ﻹﻧﺸﺎء ﺑﺮﻧﺎﻣ ٍ
ت ﻣﻌﻄﻴﺎ ٍ
ت ﻣُﺼﺮﱠﻓ ًﺔ compiled modulesوﻣﻠﻔﺎ ِ
ﻂ َﻧﺴِﻴﻘَﺎ ٍ 2ﺑﺮﻧﺎﻣ ٌ
ﺞ ﻳَﺮﺑ ُ
ﻒ أﺧﺮى أﻳﻀًﺎ آﺈﻧﺸﺎء اﻟﻤﻜﺘﺒﺎت. وﻇﺎﺋ ُ
1
ﻜﻤﺎ ﻴﻤﻜﻨﻨﺎ ﹶﺘﻔﹶﺤﺹ ﻋﻤل ﺍﻟﺒﺭﻨـﺎﻤﺞ ﺒﺎﺴـﺘﺨﺩﺍﻡ ﺒﺭﻨـﺎﻤﺞ ﻤـ ﹶﻨﻘﱢﺢ 3debuggerﻤﺜـل ﺍﻟﺒﺭﻨـﺎﻤﺞ
CODEVIEWﺍﻟﺫﻱ ﻫﻭ ﺠﺯﺀ ﻤﻥ ﺤﺯﻤﺔ ﺒﺭﻤﺠﻴﺎﺕ .MASM
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟﺜﻼﺙ ﺍﻟﺴﺎﺒﻘﺔ ﻤﻊ ﺍﺴﻡ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻓﻲ ﻜل ﻤﺭﺤﻠـﺔ ﻭﻜـﺫﻟﻙ
ﻤﺩﺨل ﻭﻤﺨﺭﺝ ﻜل ﻤﺭﺤﻠﺔ.
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺗﻌﻠﻴﻖ
ﻟﺼﺎﻗﺔ ﺑﺎﺩﺋﺔ
ﺺ
ﺤ ِ
3ﺑﺮﻧﺎﻣ ﺞ ﻣﺼ ﻤ ﻢ ﻟﻠﻤﺴﺎﻋﺪﺓ ﰲ ﺗﻨﻘﻴﺢ ﺑﺮﻧﺎﻣ ٍﺞ ﺁﺧﺮ ،ﲝﻴﺚ ﻳﺴﻤﺢ ﻟﻠﻤﱪﻣﺞ ﺑﺘﻨﻔﻴﺬ ﺑﺮﻧﺎﳎﻪ ﺧﻄﻮ ﹰﺓ ﻓﺨﻄﻮﺓ ،ﻭﺗﻔ
ﻣﻌﻄﻴﺎﺕ ﺍﻟﱪﻧﺎﻣﺞ ،ﻭﻣﺮﺍﻗﺒ ِﺔ ﺑﻌﺾ ﺍﻟﺸﺮﻭﻁ ﻛﺘﻠﻚ ﺍﳌﺘﻌﻠﻘﺔ ﺑﻘﻴﻢ ﺍﳌﺘﻐﻴﺮﺍﺕ.
2
ﻼ ﻓﻲ ﺘﻌﻠﻴﻤﺎﺕ
ﺍﻟﻠﺼﺎﻗﺔ :labelﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﻌﺭﻑ ﻴﻭﻀﻊ ﻗﺒل ﺍﻟﺘﻌﻠﻴﻤﺔ ،ﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻤﻬﺎ ﻤﺜ ﹰ
ﺍﻟﻘﻔﺯ ﻜﻌﻨﻭﺍﻥ ﺭﻤﺯﻱ symbolic addressﻟﻠﻌﻨﻭﺍﻥ ﺍﻟﺘﻲ ﺴﺘﻘﻔﺯ ﺇﻟﻴﻪ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻋﻭﻀﹰﺎ ﻋﻥ ﺍﻟﻌﻨـﻭﺍﻥ
ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻟﻬﺎ.
ﻤﺜﺎل :ﺘﻘﻔﺯ ﺍﻟﺘﻌﻠﻴﻤﺔ ،JMPﻓﻲ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺘﺎﻟﻲ ،ﺇﻟﻰ ﺍﻟﻤﻭﻗﻊ ﺃﻭ ﺍﻟﻌﻨﻭﺍﻥ ﺫﻱ ﺍﻟﻠﺼﺎﻗﺔ STARTﻭﻓﻴﻪ
ﺍﻟﺘﻌﻠﻴﻤﺔ :MOV AL, 0h
JMP START
….
ﻤﻌﺎﻤﻼﺕ ﺍﻟﺘﻌﻠﻴﻤﺔ :ﻴﻤﻜﻥ ﺃﻥ ﺘﺤﺘﺎﺝ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﻟﻰ ﻤﻌﺎﻤل ﺃﻭ ﺍﺜﻨﻴﻥ ،ﻜﻤﺎ ﻴﻤﻜﻥ ﺃﻥ ﻴﻜـﻭﻥ ﺍﻟﻤﻌﺎﻤـل
ﻤﻀﻤﻨﹰﺎ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻨﻔﺴﻬﺎ ،ﺃﻭ ﻻ ﺘﺘﻀﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺃﻱ ﻤﻌﺎﻤل .ﻓﻲ ﺤﺎل ﺘﻀﻤﻨﺕ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺃﻜﺜﺭ ﻤﻥ
ﻤﻌﺎﻤل ﻴﺠﺭﻱ ﺍﻟﻔﺼل ﺒﻴﻨﻬﻡ ﺒﻔﺎﺼﻠﺔ ).(,
ﻤﺜﺎل :ﻻ ﺘﺤﺘﺎﺝ ﺍﻟﺘﻌﻠﻴﻤﺔ 4 NOPﺇﻟﻰ ﺃﻱ ﻤﻌﺎﻤل ،ﺒﻴﻨﻤﺎ ﻴﻜﻭﻥ ﺍﻟﻤﻌﺎﻤل ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ CLCﻤـﻀﻤﻨﹰﺎ
ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻨﻔﺴﻬﺎ .ﺘﺤﺘﺎﺝ ﺍﻟﺘﻌﻠﻴﻤﺔ INC ALﺇﻟﻰ ﻤﻌﺎﻤل ﻭﺍﺤـﺩ ،ﺃﻤـﺎ ﺍﻟﺘﻌﻠﻴﻤـﺔ MOV CX, AX
ﻓﺘﺤﺘﺎﺝ ﺇﻟﻰ ﻤﻌﺎﻤﻠﻴﻥ.
ﺘﻌﻠﻴﻕ :ﻜل ﻤﺎ ﻴﻜﺘﺏ ﺒﻌﺩ ﺍﻟﻔﺎﺼﻠﺔ ﺍﻟﻤﻨﻘﻭﻁﺔ );( ﻫﻭ ﺘﻌﻠﻴﻕ commentﻴﻬﻤﻠﻪ ﺍﻟﻤﺠﻤﻊ ﺃﺜﻨﺎﺀ ﺘﺤﻭﻴﻠـﻪ
ﺒﺭﻨﺎﻤﺞ ﺒﻠﻐﺔ ﺍﻟﻤﺠﻤﻊ ﺇﻟﻰ ﻟﻐﺔ ﺍﻵﻟﺔ.
ﺒﺎﺩﺌﺔ :ﻴﻤﻜﻥ ﺃﻥ ﺘﺘﻀﻤﻥ ﺒﻌﺽ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺒﺎﺩﺌﺔ prefixﻗﺒل ﺍﻟﺘﻌﻠﻴﻤﺔ ﻤﺜل ﺍﻟﺒﺎﺩﺌﺔ .REP
3
ﻻ ﺘﻌﺭﻴﻑ ﺍﻟﺜﺎﺒﺕ Kﻭﺇﻋﻁﺎﺅﻩ ﺍﻟﻘﻴﻤﺔ ،5ﺜﹸﻡ ﺇﺴـﻨﺎﺩ ﺍﻟﺜﺎﺒـﺕ K
ﻤﺜﺎل :ﻓﻲ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻴﺠﺭﻱ ﺃﻭ ﹰ
ﺇﻟﻰ ﺍﻟﺴﺠل .AXﻤﺎ ﻫﻭ ﻤﺤﺘﻭﻯ AXﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺔ MOV؟ ﺒﺎﻟﻁﺒﻊ 0005h
K EQU 5h
MOV AX, K
ﻴﻤﻜﻥ ﻜﺘﺎﺒﺔ ﺍﻷﻋﺩﺍﺩ ﺒﺎﻟﺘﺭﻤﻴﺯ ﺍﻟﻌﺸﺭﻱ ﺃﻭ ﺍﻟﺴﺘﺔ ﻋﺸﺭ ﺃﻭ ﺍﻻﺜﻨﺎﻨﻲ.
ﺍﻟﺘﺼﺭﻴﺢ ﻋﻥ ﻤﺘﺤﻭل :ﺍﻟﻤﺘﺤﻭل ﻫﻭ ﻤﻭﻗﻊ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻴﺴﺘﺨﺩﻡ ﻟﺤﻔﻅ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﺅﻗﺘﺔ .ﻋﻨﺩ ﻜﺘﺎﺒﺔ
ﺒﺭﻨﺎﻤﺞ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ،ﻤﻥ ﺍﻷﺴﻬل ﻋﻠﻰ ﺍﻟﻤﺒﺭﻤﺞ ﺍﺴﺘﺨﺩﺍﻡ ﺍﺴﻡ ﺍﻟﻤﺘﺤﻭل ﻓﻲ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﻤﺜل ،var1
ﻋﻭﻀﹰﺎ ﻋﻥ ﺍﺴﺘﺨﺩﺍﻡ ﻋﻨﻭﺍﻨﻪ ﺍﻟﻤﻨﻁﻘﻲ ﻤﺜل.5A72h:235Bh :
ﻴﻤﻜﻥ ﺍﻟﺘﺼﺭﻴﺢ ﻋﻥ ﻤﺘﺤﻭل ﻁﻭﻟﻪ ﺒﺎﻴﺕ ﻭﺍﺤﺩ ﻭﺇﻋﻁﺎﺌﻪ ﻗﻴﻤﺔ ﺍﺒﺘﺩﺍﺌﻴﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﻭﺠﻪ DBﻜﻤﺎ ﻓﻲ
ﺍﻟﻤﺜﺎل ﺍﻟﺘﺎﻟﻲ:
Var1 DB 02h
ﻭﻴﻤﻜﻥ ﺍﻟﺘﺼﺭﻴﺢ ﻋﻥ ﻤﺘﺤﻭل ﻁﻭﻟﻪ 2ﺒﺎﻴﺕ ﻭﺇﻋﻁﺎﺌﻪ ﻗﻴﻤﺔ ﺍﺒﺘﺩﺍﺌﻴﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﻭﺠﻪ DWﻜﻤﺎ ﻓﻲ
ﺍﻟﻤﺜﺎل ﺍﻟﺘﺎﻟﻲ:
Var2 DW 03C5h
ﺘﻌﻤل ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻋﻠﻰ ﻨﺴﺦ ﻤﺤﺘﻭﻯ ﺍﻟﻤﺘﺤﻭل Var1ﻓﻲ :AL
MOV AL, var1
ﺍﻟﺘﺼﺭﻴﺢ ﻋﻥ ﻤﺼﻔﻭﻓﺔ :ﻴﻤﻜﻨﻨﺎ ﺃﻴﻀﹰﺎ ﺍﻟﺘﺼﺭﻴﺢ ﻋﻥ ﻤﺼﻔﻭﻓﺔ ﻭﺇﻋﻁﺎﺅﻫﺎ ﻗﻴﻤﹰﺎ ﺍﺒﺘﺩﺍﺌﻴﺔ .ﻴﺠﺭﻱ ﻓـﻲ
ﺍﻟﻤﺜﺎل ﺍﻟﺘﺎﻟﻲ ﺤﺠﺯ ﺍﻟﻤﺼﻔﻭﻓﺔ aﺒﻁﻭل 6ﺒﺎﻴﺕ ﻭﺇﻋﻁﺎﺅﻫﺎ ﻗﻴﻤﹰﺎ ﺍﺒﺘﺩﺍﺌﻴﺔ.
a DB 48h, 65h, 6Ch, 6Ch, 6Fh, 00h
ﺘﻌﺘﺒﺭ ﺴﻠﺴﻠﺔ ﺍﻟﻤﺤﺎﺭﻑ stringﻤﺜﺎل ﻋﻥ ﻤﺼﻔﻭﻓﺔ ﻁﻭل ﻜل ﻋﻨﺼﺭ ﻤﻨﻬﺎ ﺒﺎﻴﺕ .ﻴﺠﺭﻱ ﻓﻲ ﺍﻟﻤﺜﺎل
ﺍﻟﺘﺎﻟﻲ ﺤﺠﺯ ﺴﻠﺴﻠﺔ ﺍﻟﻤﺤﺎﺭﻑ bﻭﺇﺴﻨﺎﺩ ﺍﻟﻜﻠﻤﺔ ' 'Helloﺇﻟﻴﻬﺎ.
b DB ''Hello
ﻋﻨﺩﻤﺎ ﻴﺼﺎﺩﻑ ﺍﻟ ﻤﺠﻤﻊ ﺴﻠﺴﻠﺔ ﻤﺤﺎﺭﻑ ﺒﻴﻥ ﻋﻼﻤﺘﻲ ﺍﻗﺘﺒﺎﺱ ﻴﺤﻭﻟﻬﺎ ﺇﻟﻰ ﻤﺠﻤﻭﻋﺔ ﻤـﻥ ﺍﻟﺒﺎﻴﺘـﺎﺕ
ﺘﺤﻭﻱ ﺭﻤﺎﺯ asciiﻟﻤﺤﺎﺭﻑ ﺍﻟﺴﻠﺴﻠﺔ.
ﻴﻤﻜﻥ ﺍﻟﻭﺼﻭل ﺇﻟﻰ ﺃﻱ ﻋﻨﺼﺭ ﻤﻥ ﺍﻟﻤﺼﻔﻭﻓﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻷﻗﻭﺍﺱ ] [.
ﻤﺜﺎل :ﺘﻨﺴﺦ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﻌﻨﺼﺭ ﺍﻟﺭﺍﺒﻊ ﻤﻥ ﺍﻟﻤﺼﻔﻭﻓﺔ aﻓﻲ :AL
]MOV AL, a[3
ﻴﻤﻜﻨﻨﺎ ﺃﻴﻀﹰﺎ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺃﺤﺩ ﺴﺠﻼﺕ ﺍﻟﺩﻟﻴل ﺍﻟﻭﺼﻭل ﺇﻟﻰ ﺃﺤﺩ ﻋﻨﺎﺼﺭ ﺍﻟﻤﺼﻔﻭﻓﺔ ،ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ
ﺍﻟﻤﺜﺎل ﺍﻟﺘﺎﻟﻲ:
]MOV AL, a[SI
4
ﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﺅﺜﺭ DUPﻟﻠﺘﺼﺭﻴﺢ ﻋﻥ ﻤﺼﻔﻭﻓﺔ ﻜﺒﻴﺭﺓ ،ﻜﻤﺎ ﻴﻠﻲ:
c DB )?(10 DUP
d DW )10 DUP(8
ﹸﺘﺼﺭﺡ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻷﻭﻟﻰ ﻋﻥ ﻤﺼﻔﻭﻓﺔ ﺒﺎﻴﺘﺎﺕ ﻁﻭﻟﻬﺎ ،10ﺩﻭﻥ ﺃﻥ ﺘﻌﻁﻲ ﻋﻨﺎﺼﺭ ﺍﻟﻤﺼﻔﻭﻓﺔ ﻗﻴﻤـﹰﺎ
ﺍﺒﺘﺩﺍﺌﻴﺔ .ﻓﻲ ﺤﻴﻥ ﹸﺘﺼﺭﺡ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺜﺎﻨﻴﺔ ﻋﻥ ﻤﺼﻔﻭﻓﺔ ﻜﻠﻤﺎﺕ ﻁﻭﻟﻬﺎ ﺃﻴﻀﹰﺎ ،10ﻭﻟﻜﻨﻬـﺎ ﺘﻌﻁـﻲ
ﺠﻤﻴﻊ ﻋﻨﺎﺼﺭ ﺍﻟﻤﺼﻔﻭﻓﺔ ﺍﻟﻘﻴﻤﺔ ﺍﻻﺒﺘﺩﺍﺌﻴﺔ .8
ﺍﻟﻤﻭﺠﻪ :ORGﻴﺨﺒﺭ ﻫﺫﺍ ﺍﻟﻤﻭﺠﻪ ﺍﻟﻤﺠﻤﻊ ﺒﺄﻥ ﻴﻀﻊ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ )ﺃﻭ ﺍﻟﻤﻌﻁﻴﺎﺕ( ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺍﺒﺘـﺩﺍ ًﺀ
ﻤﻥ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﺤﺩﺩ ﺒﺎﻟﻤﻭﺠﻪ .ORGﻓﻲ ﺍﻟﻤﺜﺎل ﺍﻟﺘﺎﻟﻲ ،ﺘﻘﻊ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻭﻟﻰ ﻤـﻥ ﺍﻟﺘﻌﻠﻴﻤـﺔ MOV
AL, 05hﻓﻲ ﺍﻟﻤﻭﻗﻊ 100hﻤﻥ ﻤﻘﺘﻁﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ:
ORG 100h
MOV AL, 05h
ﺍﻟﺒﺎﺩﺌﺘﺎﻥ BYTE PTRﻭ :WORD PTRﻻ ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﺠﻤﻊ ،ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ،ﻤﻌﺭﻓﺔ ﻓﻴﻤـﺎ
ﺇﺫﺍ ﻜﺎﻥ ﺍﻟﺴﺠل BXﻴﻌﻨﻭﻥ ﺒﺎﻴﺘﹰﺎ ﺃﻭ ﻜﻠﻤﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ:
MOV [BX], 05h
ﻴﻤﻜﻨﻨﺎ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺒﺎﺩﺌﺔ BYTE PTRﺇﺨﺒﺎﺭ ﺍﻟﻤﺠﻤﻊ ﺃﻥ ﻁﻭل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻴﺴﺎﻭﻱ ﺒﺎﻴﺕ ﻭﺍﺤﺩ ،ﻜﻤـﺎ
ﻴﻤﻜﻨﻨﺎ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺒﺎﺩﺌﺔ WORD PTRﺇﺨﺒﺎﺭ ﺍﻟﻤﺠﻤﻊ ﺃﻥ ﻁﻭل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻴﺴﺎﻭﻱ 2ﺒﺎﻴﺕ.
ﻤﺜﺎل :ﺘﻀﻊ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﺒﺎﻴﺕ 05hﻓﻲ ﻤﻭﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻨﻭﻥ ﺒـ :BX
MOV [BX], BYTE PTR 05h
ﺒﻴﻨﻤﺎ ﺘﻀﻊ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﻜﻠﻤﺔ 0005hﻓﻲ ﻜﻠﻤﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻨﻭﻨﺔ ﺒـ :BX
MOV [BX], WORD PTR 05h
ﺍﻟ ﻤﺅﺜﺭ :OFFSETﻴﻌﻴﺩ ﺍﻟﻤﺅﺜﺭ OFFSETﺍﻟﻤﺴﺎﻓﺔ ﺒﻴﻥ ﻟﺼﺎﻗﺔ ﺃﻭ ﻤﺘﺤﻭل ﻋﻥ ﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ .ﻓﻲ
ﺍﻟﻤﺜﺎل ﺍﻟﺘﺎﻟﻲ ﻨﻀﻊ ﻓﻲ BXﻋﻨﻭﺍﻥ ﺍﻟﻤﺘﺤﻭل ،VAR1ﺜﻡ ﻨﺴﺘﺨﺩﻡ ﻋﻨﻭﻨﺔ ﻏﻴـﺭ ﻤﺒﺎﺸـﺭﺓ ﺒﺎﻟـﺴﺠل
ﻟﺘﻐﻴﻴﺭ ﻤﺤﺘﻭﻯ .VAR1
VAR1 DB 22h
ORG 100h
MOV BX, OFFSET VAR1
MOV BYTE PTR [BX], 44h
5
ﺍﻟﻜﻠﻤﺔ ) FARﻋﻨﺩﻤﺎ ﺘﻘﻊ ﺍﻹﺠﺭﺍﺌﻴﺔ ﻓﻲ ﻤﻘﺘﻁﻊ ﻏﻴﺭ ﻤﻘﺘﻁﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺭﺌﻴﺱ(.
ﻤﺜﺎل:
ADDEM PROC FAR
ADD BX, DX
MOV AX, BX
RET
ADDEN ENDP
ﺠﻪ ،MODELﺤﺠﻡ
ﺍﻟﻤﻭﺠﻪ :MODELﻴﺤﺩﺩ ﺍﻟﻤﺠﻤﻊ ،ﺒﻨﺎ ًﺀ ﻋﻠﻰ ﻨﻤﻭﺫﺝ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺤﺩﺩ ﺒﻌﺩ ﺍﻟﻤﻭ
ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻜﻠﻴﺔ .ﻤﻥ ﺍﻟﻤﻤﻜﻥ ﺍﺨﺘﻴﺎﺭ ﺃﺤﺩ ﺍﻟﻨﻤﺎﺫﺝ ﺍﻟﺘﺎﻟﻴﺔ:
ﺍﻟﺫﻱ ﻴﻌﻨﻲ ﺃﻥ ﺤﺠﻡ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﺍﻟﻤﻜﺩﺱ ﻤﻌﹰﺎ ﺃﻗل ﻤﻥ 64ﻜﻴﻠﻭﺒﺎﻴﺕ ،ﻭﺒﺎﻟﺘﺎﻟﻲ ﻴﻘﻊ ﺭﻤﺎﺯ
ﻭﻤﻌﻁﻴﺎﺕ ﻭﻤﻜﺩﺱ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻀﻤﻥ ﻤﻘﺘﻁﻊ ﻭﺍﺤﺩ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ .ﻫﺫﺍ ﺍﻟﻨﻤﻭﺫﺝ ﻤﻔﻴﺩ ﻤﻥ ﺃﺠل ﺍﻟﺒـﺭﺍﻤﺞ
ﺍﻟﺼﻐﻴﺭﺓ ،ﻭﻴﻭﻟﺩ ﺍﻟﺭﺍﺒﻁ ،LINKERﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ،ﺒﺭﻨﺎﻤﺠﹰﺎ ﺘﻨﻔﻴﺫﻴﹰﺎ ﻻﺤﻘﺘـﻪ comﻭﻟـﻴﺱ .exe
ﻴﺠﺏ ﺃﻥ ﺘﺒﺩﺃ ﺍﻟﺒﺭﺍﻤﺞ ﻤﻥ ﻨﻭﻉ comﺒﺎﻟﻌﻨﻭﺍﻥ .100h
ﻋﻨﺩ ﺍﺨﺘﻴﺎﺭ ﺃﺤﺩ ﻨﻤﺎﺫﺝ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻷﺨﺭﻯ ﻴﻜﻭﻥ ﻟﺩﻴﻨﺎ ﻋﻠﻰ ﺍﻷﻗل ﻤﻘﺘﻁﻊ ﻟﻠﺒﺭﻨﺎﻤﺞ ﻭﺁﺨﺭ ﻟﻠﻤﻌﻁﻴـﺎﺕ.
ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻴﻭﻟﺩ ﺍﻟﺭﺍﺒﻁ ﺒﺭﻨﺎﻤﺠﺎ ﺘﻨﻔﻴﺫﻴﺎ ﻻﺤﻘﺘﻪ .exe
ﺠﻬﺎﺕ CODE ،STACKﻭ :DATAﺘﺤﺩﺩ ﻫﺫﻩ ﺍﻟﻤﻭﺠﻬﺎﺕ ﺒﺩﺍﻴﺔ ﻭﻨﻬﺎﻴﺔ ﻤﻘﺘﻁﻌﺎﺕ ﻤﻨﻁﻘﻴـﺔ
ﺍﻟﻤﻭ ﱢ
ﻀﻤﻥ ﺒﺭﻨﺎﻤﺞ ﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ .ﺘﺤﺘﻭﻱ ﺃﻏﻠﺏ ﺍﻟﺒﺭﺍﻤﺞ ﺜﻼﺙ ﻤﻘﺘﻁﻌﺎﺕ ﻋﻠﻰ ﺍﻷﻗل ،ﻴﻤﻜﻥ ﺃﻥ
ﺘﻜﻭﻥ ﻫﺫﻩ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ ﻤﺘﺭﺍﻜﺒﺔ ﺠﺯﺌﻴﹰﺎ ﺃﻭ ﻜﻠﻴﹰﺎ ﻓﻴﻤﺎ ﺒﻴﻨﻬﺎ ﺃﻭ ﻤﻨﻔﺼﻠﺔ ﺘﻤﺎﻤﹰﺎ ﻋﻥ ﺒﻌﻀﻬﺎ.
ﻴﺤﺩﺩ ﺍﻟﻤﻭﺠﻪ STACKﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻜﺩﺱ ﻭ ﹸﺘﺤﺩﺩ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺘﻲ ﺘﻠﻲ ﻫﺫﺍ ﺍﻟﻤﻭﺠﻪ ﺤﺠـﻡ ﺍﻟـﺫﺍﻜﺭﺓ
6
ﻼ ﻴﺤﺠﺯ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﺘﺎﻟﻲ 256ﺒﺎﻴﺕ ﻟﻌﻤل ﺍﻟﻤﻜﺩﺱ
ﺍﻟﻤﺭﺍﺩ ﺤﺠﺯﻫﺎ ﻟﻌﻤل ﺍﻟﻤﻜﺩﺱ ،ﻓﻤﺜ ﹰ
.STACK 100h
ﻭﻴﺤﺩﺩ ﺍﻟﻤﻭﺠﻪ DATAﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻭﻴﺠﺏ ﺃﻥ ﻴﺼﺭﺡ ﻋﻥ ﺠﻤﻴـﻊ ﺍﻟﻤﻌﻁﻴـﺎﺕ ﻓـﻲ
ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﺒﺎﺸﺭﺓ ﺒﻌﺩ ﻫﺫﺍ ﺍﻟﻤﻭﺠﻪ ،ﻤﺜﺎل:
.DATA
DATAW DW 213FH
DATA1 DB 52H
ﻭﻴﺤﺩﺩ ﺍﻟﻤﻭﺠﻪ CODEﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﻭﻴﺠﺏ ﻜﺘﺎﺒﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻤﺒﺎﺸﺭﺓ ﺒﻌﺩ ﻫﺫﺍ ﺍﻟﻤﻭﺠـﻪ،
ﻤﺜﺎل:
.CODE
MOV AX, @DATA
MOV DS, AX
.... ...
ﺘﻌﻤل ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ ﺍﻟﺴﺎﺒﻘﺘﺎﻥ ﻋﻠﻰ ﺸﺤﻥ DSﺒﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﺘﹶـﺴﺘﺨﺩﻡ ﺍﻟﺘﻌﻠﻴﻤـﺔ ﺍﻷﻭﻟـﻰ
ﺍﻟﻤﻭﺠﻪ @ ﻟﺘﺤﺩﻴﺩ ﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ.
ﻟﻜل ﺘﻌﻠﻴﻤﺔ ﻤﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺭﻤـﺎﺯ ﺍﺜﻨـﺎﻨﻲ ﻤﺨﺘﻠـﻑ ﻴـﺴﻤﻰ ﺭﻤـﺎﺯ ﺍﻵﻟـﺔ
،Machine Codeﺘﹶﻔﻙ ﻭﺤﺩﺓ ﺍﻟﺘﻨﻔﻴﺫ ﻭ ﹸﺘﺤﻠل ﺭﻤﺎﺯ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭﻤﻥ ﺜﻡ ﹸﺘﻨﻔﺫﻫﺎ ﻭﺍﺤﺩﺓ ﺘﻠﻭ ﺍﻷﺨﺭﻯ.
ﻋﻨﺩ ﻜﺘﺎﺒﺘﻙ ﺒﺭﻨﺎﻤﺞ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻊ ﻓﺈﻨﻙ ﻻ ﺘﻬﺘﻡ ﻤﺒﺩﺌﻴﹰﺎ ﺒ ِﺭﻤﺎﺯ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ،ﻭﻤﻊ ﺫﻟﻙ ﻓﺈﻥ ﻤﻌﺭﻓﺘﻙ ﺒﻬﺫﻩ
ﺍﻟ ِﺭﻤﺎﺯﺍﺕ ﻴﺠﻌﻠﻙ ﺘﺨﺘﺎﺭ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻓﻲ ﺒﺭﻨﺎﻤﺠﻙ ﻋﻠﻰ ﻨﺤﻭ ﺃﻓﻀل ،ﻷﻥ ﻁﻭل ﺭﻤﺎﺯ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻴﻤﺘﺩ
ﻤﻥ ﺒﺎﻴﺕ ﺇﻟﻰ 6ﺒﺎﻴﺘﺎﺕ ،ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻥ ﺯﻤﻥ ﺍﻟﺘﻨﻔﻴﺫ ﻴﺨﺘﻠﻑ ﺃﻴﻀﹰﺎ ﻤﻥ ﺘﻌﻠﻴﻤﺔ ﺇﻟﻰ ﺃﺨﺭﻯ.
ﻴﻤﻜﻥ ﻟﻤﻥ ﻴﺭﻴﺩ ﺍﻹﻁﻼﻉ ﻋﻠﻰ ﻤﺼﺎﻏﺎﺕ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻓـﻲ ﺍﻟﻤﻌـﺎﻟﺞ 8088/8086ﻗـﺭﺍﺀﺓ ﺍﻟﻤﻠـﻑ
ﺭﻤﺎﺯ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ.
ﺴﻭﻑ ﻨﺸﺭﺡ ﻓﻴﻤﺎ ﻴﻠﻲ ﻤﺠﻤﻭﻋﺔ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻀﻤﻥ ﻤﺠﻤﻭﻋﺎﺕ ﻟﻬـﺎ ﺍﻟﺨﺎﺼـﻴﺔ
ﻨﻔﺴﻬﺎ .ﻴﺤﺘﻭﻱ ﺍﻟﻤﻠﻑ x866.pdfﺘﻔﺎﺼﻴل ﺃﻜﺜﺭ ﻋﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ.
5ﻳﻤﻜﻦ رﺑﻂ آﻞ ﺗﻌﻠﻴﻤﺔ ﻓﻲ هﺬا اﻟﻔﺼﻞ ﻣﻊ اﻟﺘﻌﻠﻴﻤﺔ اﻟﻤﻮاﻓﻘﺔ ﻓﻲ اﻟﻤﻠﻒ ،8086_instruction_set.htmlآﻤﺎ ﻓﻌﻠﻨﺎ
ﻣﻊ MOV
8
ﻻ ﻴﻤﻜﻨﻨﺎ ﺍﺴﺘﺨﺩﺍﻡ ﺘﻌﻠﻴﻤﺔ 6MOVﻓﻲ ﺤﺎﻟﺔ:
ﻨﺴﺦ ﻤﻌﻁﻴﺎﺕ ﻤﻥ ﺫﺍﻜﺭﺓ ﺇﻟﻰ ﺫﺍﻜﺭﺓ.
ﺇﺴﻨﺎﺩ ﻗﻴﻤﺔ ﻓﻭﺭﻴﺔ ﻟﺴﺠل ﻤﻘﺘﻁﻊ.
ﻨﺴﺦ ﻤﺤﺘﻭﻯ ﺴﺠل ﻤﻘﺘﻁﻊ ﺇﻟﻰ ﺴﺠل ﻤﻘﺘﻁﻊ.
ﻨﺴﺦ ﻤﻌﻁﻴﺎﺕ ﺇﻟﻰ ﻤﺅﺸﺭ ﺍﻟﺘﻌﻠﻴﻤﺔ .IP
ﻤﺜﺎل:
MOV AX, 0B800h ; set AX = B800h (VGA memory).
MOV DS, AX ; copy value of AX to DS.
MOV 'CL, 'A ; CL = 41h (ASCII code).
MOV CH, 01011111b ; CL = color attribute.
MOV BX, 15Eh ; BX = position on screen.
MOV [BX], CX ; [0B800h:015Eh] = CX.
ﺘﻌﻠﻴﻤﺔ XCHG
ﺘﺒﺎﺩل ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺒﻴﻥ ﻤﺤﺘﻭﻯ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻭﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ،ﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ ﻁﻭل ﻜـل ﻤـﻥ
ﺍﻟﻤﻌﺎﻤﻠﻴﻥ ﻤﺘﺴﺎﻭﻴﻴﻥ.
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺭﺍﻴﺎﺕ ﺍﻟﺘﻲ ﺘﺘﺄﺜﺭ
XCHG D,S )(D)↔(S ﻻ ﺃﺤﺩ
ﻤﺜﺎل:
MOV AL, 5
MOV AH, 2
XCHG AL, AH ; AL = 2, AH = 5
XCHG AL, AH ; AL = 5, AH = 2
ﺍﻟﺘﻌﻠﻴﻤﺔ XLAT
ﺒﻔﺭﺽ ﺃﻥ ﻟﺩﻴﻨﺎ ﺠﺩﻭل ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻥ 256ﺒﺎﻴﺕ ﻭﺃﻥ BXﻴﺅﺸﺭ ﺇﻟﻰ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻭل ﻤﻥ ﺍﻟﺠـﺩﻭل،
ﻓﺈﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ XLATﺘﺴﺘﺨﺩﻡ ﺍﻟﺴﺠل ALﻜﺩﻟﻴل indexﻤﻭﺠﺏ ﻓﻲ ﺍﻟﺠﺩﻭل ﻭﺘﺴﺘﺒﺩل ﻤﺤﺘـﻭﻯ AL
ﺒﺎﻟﺒﺎﻴﺕ ﺍﻟﺫﻱ ﺇﺯﺍﺤﺘﻪ ﻓﻲ ﺍﻟﺠﺩﻭل ﺘﺴﺎﻭﻱ AL؛ ﺃﻱ ﺘﻨﺴﺦ ﺍﻟﻤﻭﻗﻊ ] DS:[BX + unsigned ALﻓﻲ
.AL
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺭﺍﻴﺎﺕ ﺍﻟﺘﻲ ﺘﺘﺄﺜﺭ
XLAT )DS:[BX + unsigned AL]→(AL ﻻ ﺃﺤﺩ
6ﳝﻜﻦ ﻓﻘﻂ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺗﻌﻠﻴﻤﺎﺕ ﺳﻼﺳﻞ ﺍﶈﺎﺭﻑ ﻧﺴﺦ ﻣﻌﻄﻴﺎﺕ ﻣﻦ ﺫﺍﻛﺮﺓ ﺇﱃ ﺫﺍﻛﺮﺓ
9
ﻤﺜﺎل :ﻴﻭﺠﺩ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺘﺎﻟﻲ ﺭﻤﺎﺯ ASCIIﻟﻠﺭﻗﻡ 2ﺍﻟﻤﻭﺠﻭﺩ ﻓﻲ :AL
dat DB 30h, 31h, 32h, 33h, 34h, 35h, 36h, 37h, 38h, 39h
LEA BX, dat
MOV AL, 2
XLAT ; AL = 32h
ﺍﻟﺘﻌﻠﻴﻤﺔ LEA
ﺤ ﻤل ﺴﺠل ﺍﻟﻭﺠﻬﺔ )-16ﺒﺕ( ﺒﺎﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل ) EAﺤﻘل ﺍﻻﻨﺯﻴﺎﺡ ﻓﻲ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﻨﻁﻘﻲ( ﻟﻤﻌﺎﻤل
ﹸﺘ َ
ﺍﻟﻤﺼﺩﺭ ﺍﻟﺫﻱ ﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ ﺫﺍﻜﺭﺓ.
ﺍﻟﺘﻌﻠﻴﻤﺔ LDS
ﺤ ﻤل ﺍﻟﺘﻌﻠﻴﻤﺔ LDSﺍﻟﻜﻠﻤﺔ ﺍﻷﻭﻟﻰ ﻤﻥ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ،ﺍﻟﺫﻱ ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻜﻠﻤﺔ ﻤﻀﺎﻋﻔﺔ ﻓـﻲ
ﹸﺘ َ
ﺍﻟﺫﺍﻜﺭﺓ ،ﻓﻲ ﺴﺠل ﺍﻟﻭﺠﻬﺔ ﺍﻟﻤﺤﺩﺩ ﺒﺎﻟﺘﻌﻠﻴﻤﺔ .ﻭﺘﹸﺤﻤل ﺍﻟﻜﻠﻤﺔ ﺍﻟﺜﺎﻨﻴﺔ ﻤﻥ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻓﻲ ﺍﻟﺴﺠل
.DS
ﻤﺜﺎل :ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ،ﻴﺠﺭﻱ ﺘﺤﻤﻴل AXﺒﺎﻟﻜﻠﻤﺔ 1234hﻭ DSﺒﺎﻟﻜﻠﻤﺔ .5678h
m DW 1234h
DW 5678h
LDS AX, m
ﺍﻟﺘﻌﻠﻴﻤﺔ LES
ﺤﻤل ﺍﻟﺘﻌﻠﻴﻤﺔ LESﺍﻟﻜﻠﻤﺔ ﺍﻷﻭﻟﻰ ﻤﻥ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ،ﺍﻟﺫﻱ ﻫﻭ ﻜﻠﻤﺔ ﻤﻀﺎﻋﻔﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ،ﺇﻟﻰ
ﹸﺘ َ
ﺴﺠل ﺍﻟﻭﺠﻬﺔ ﺍﻟﻤﺤﺩﺩ ﺒﺎﻟﺘﻌﻠﻴﻤﺔ ،ﻜﻤﺎ ﻴﺠﺭﻱ ﺘﺤﻤﻴل ﺍﻟﻜﻠﻤﺔ ﺍﻟﺜﺎﻨﻴﺔ ﻤﻥ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻓﻲ ﺍﻟـﺴﺠل
.ES
10
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺭﺍﻴﺎﺕ ﺍﻟﺘﻲ ﺘﺘﺄﺜﺭ
ﻻ ﺃﺤﺩ
)(Mem32)→(Reg16
LES Reg16, MEM32
)(Mem32+2)→(ES
ﻤﺜﺎل :ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ،ﻴﺠﺭﻱ ﺘﺤﻤﻴل AXﺒﺎﻟﻜﻠﻤﺔ 1234hﻭ ESﺒﺎﻟﻜﻠﻤﺔ .5678h
m DW 1234h
DW 5678h
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ
ﻴﻤﻜﻥ ﺘﻨﻔﻴﺫ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﻋﻠﻰ ﺃﺭﺒﻊ ﻤﺼﺎﻏﺎﺕ ﻤﻥ ﺍﻷﻋﺩﺍﺩ :ﺍﺜﻨﺎﻨﻲ ﺒﻼ ﺇﺸـﺎﺭﺓ ،ﺍﺜﻨـﺎﻨﻲ ﻤـﻊ
ﺇﺸﺎﺭﺓ ،ﻋﺸﺭﻱ ﻤﺭﺯﻭﻡ ﺒﻼ ﺇﺸﺎﺭﺓ unsigned packed decimalﺃﻭ ﻋﺸﺭﻱ ﻏﻴﺭ ﻤـﺭﺯﻭﻡ ﺒـﻼ
ﺇﺸﺎﺭﺓ .unsigned unpacked decimalﺴﻨﺸﺭﺡ ﻓﻘﻁ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﺍﻷﻋﺩﺍﺩ ﺒﺎﻟﻤﺼﺎﻏﺔ ﺍﻻﺜﻨﺎﻨﻴﺔ
ﻷﻨﻨﺎ ﻏﺎﻟﺒﹰﺎ ﻤﺎ ﻨﺴﺘﺨﺩﻡ ﺍﻟﻤﺼﺎﻏﺎﺕ ﺍﻟﻌﺸﺭﻴﺔ ﺍﻟﻤﺭﺯﻭﻤﺔ ﻭﻏﻴﺭ ﺍﻟﻤﺭﺯﻭﻤﺔ ﻷﻏﺭﺍﺽ ﺍﻟﺘﺤﻜﻡ.
ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺠﻤﻊ ADC ،ADD :ﻭ INC
ﺘﺠﻤﻊ ﺍﻟﺘﻌﻠﻴﻤﺔ ADDﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻤﻊ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ،ﻭﺘﻀﻊ ﺍﻟﻨﺎﺘﺞ ﻓﻲ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ.
ﺘﺠﻤﻊ ﺍﻟﺘﻌﻠﻴﻤﺔ ADCﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻤﻊ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻤﻊ ﺍﻟﺤﺎﻤل ،CFﻭﺘﻀﻊ ﺍﻟﻨﺎﺘﺞ ﻓـﻲ
ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ.
11
ﻻ ﻭﻀﻊ 1ﻓﻲ ،CFﺜﻡ 5ﻓﻲ ALﻭﺃﺨﻴﺭﹰﺍ ﻴﺠﺭﻱ ﺠﻤـﻊ CF
ﻤﺜﺎل :ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻴﺠﺭﻱ ﺃﻭ ﹰ
ﻤﻊ ALﻤﻊ 1ﻭﻭﻀﻊ ﺍﻟﻨﺎﺘﺞ ،7 ،ﻓﻲ .AL
STC ; set CF=1
MOV AL, 5 ; AL=5
ADC AL, 1 ; AL=7
ﹸﺘﻀﻴﻑ ﺍﻟﺘﻌﻠﻴﻤﺔ INCﻭﺍﺤﺩﹰﺍ ﺇﻟﻰ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ.
ﺘﻁﺭﺡ ﺍﻟﺘﻌﻠﻴﻤﺔ SBBﻤﻊ ﺍﺴﺘﻌﺎﺭﺓ CFﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻤﻥ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻭﺘـﻀﻊ ﺍﻟﻨـﺎﺘﺞ ﻓـﻲ
ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ.
12
ﻻ ﻭﻀﻊ 1ﻓﻲ ،CFﺜﻡ 5ﻓﻲ ALﻭﺃﺨﻴﺭﹰﺍ ﻴﺠﺭﻱ ﻁﺭﺡ CF
ﻤﺜﺎل :ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻴﺠﺭﻱ ﺃﻭ ﹰ
ﻭ 3ﻤﻥ ALﻭﻭﻀﻊ ﺍﻟﻨﺎﺘﺞ 1ﻓﻲ .AL
STC ; set CF = 1
MOV AL, 5
SBB AL, 3 ; AL = 5 - 3 - 1 = 1
ﺘﻁﺭﺡ ﺍﻟﺘﻌﻠﻴﻤﺔ NEGﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻤﻥ ﺍﻟﺼﻔﺭ ﻭﺘﻀﻊ ﺍﻟﻨﺘﻴﺠﺔ ﻓﻲ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ؛ ﺃﻱ ﺘﹸﻌﻜﺱ
ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺸﺎﺭﺓ ﺍﻟﻌﺩﺩ.
13
ﻀﺭﺏ MUL :ﺃﻭ IMUL ﺍﻟﻤﻀﺭﻭﺏ ﻤﻌﺎﻤل ﺍﻟﻀﺭﺏ ﺍﻟﻨﺎﺘﺞ
Byte × Byte AL ﺴﺠل ﺃﻭ ﺫﺍﻜﺭﺓ AX
Word × Word AX ﺴﺠل ﺃﻭ ﺫﺍﻜﺭﺓ DX: AX
ﻤﺜﺎل :ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻴﺠﺭﻱ ﻭﻀﻊ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻌﺸﺭﻴﺔ 200ﻓﻲ ،ALﻭ 4ﻓﻲ ،BLﺜﹸﻡ ﻴـﻀﺭﺏ
ALﻤﻊ .BLﻴﻭﻀﻊ ﻨﺎﺘﺞ ﺍﻟﻀﺭﺏ 800ﻓﻲ .AX
MOV AL, 200 ; AL = 0C8h
MOV BL, 4
MUL BL ); AX = 0320h (800
ﻤﺜﺎل :ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻴﺠﺭﻱ ﻭﻀﻊ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻌﺸﺭﻴﺔ -203ﻓﻲ ،AXﻭ 4ﻓﻲ ،BLﺜﹸـﻡ ﻴﻘـﺴﻡ
AXﻋﻠﻰ .BLﻴﻭﻀﻊ ﻨﺎﺘﺞ ﺍﻟﻘﺴﻤﺔ -50ﻓﻲ ،ALﻭﺒﺎﻗﻲ ﺍﻟﻘﺴﻤﺔ -3ﻓﻲ .AH
MOV AX, -203 ; AX = 0FF35h
MOV BL, 4
IDIV BL ); AL = -50 (0CEh), AH = -3 (0FDh
14
MOV AX, 0 ; AH = 0, AL = 0
)MOV AL, -5 ; AX = 000FBh (251
CBW ); AX = 0FFFBh (-5
ﹸﺘﺤﻭل ﺍﻟﺘﻌﻠﻴﻤﺔ CWDﻜﻠﻤﺔ ﻤﻌﻁﻴﺎﺕ ﺇﻟﻰ ﻜﻠﻤﺔ ﻤﻀﺎﻋﻔﺔ ،ﻭﺫﻟﻙ ﺒﺘﻭﺴﻴﻊ ﺒﺕ ﺍﻹﺸﺎﺭﺓ ﻟﻤﺤﺘـﻭﻯ
ﺍﻟﺴﺠل AXﻋﺒﺭ ﺍﻟﺴﺠل .DX
ﻤﺜﺎل :ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻴﺠﺭﻱ ﻭﻀﻊ ﺍﻟﻘﻴﻤﺔ 0ﻓﻲ DXﻭ (FFFBh) -5ﻓﻲ ،AXﺜﻡ ﻴﻭﻀـﻊ
ﺇﺸﺎﺭﺓ ﺍﻟﻘﻴﻤﺔ -5ﻓﻲ .DXﻭﺒﻤﺎ ﺃﻥ ﺇﺸﺎﺭﺓ -5ﻫﻲ ،1ﻓﻴﺠﺭﻱ ﻭﻀﻊ FFFFhﻓﻲ .DX
ﻻ ﺘﺨﺯﻥ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻨﺎﺘﺞ ﺍﻟﻁﺭﺡ ،ﻭﺇﻨﻤﺎ ﻓﻘﻁ ﹸﺘﻌﺩل ﻗﻴﻡ ﺒﻌﺽ ﺍﻟﺭﺍﻴﺎﺕ ﺘﺒﻌﹰﺎ ﻟﻨﺎﺘﺞ ﺍﻟﻁﺭﺡ:
ﺇﺫﺍ ﻜﺎﻨﺕ ﻤﻌﺎﻤﻼﺕ ﺍﻟﻌﻤﻠﻴﺔ CMPﺒﻼ ﺇﺸﺎﺭﺓ ﻓﺈﻥ:
ZF=1ﻋﻨﺩﻤﺎ )(D) == (S
CF=1ﻋﻨﺩﻤﺎ )(D) < (S
ﺇﺫﺍ ﻜﺎﻨﺕ ﺍﻟﻤﻌﺎﻤﻼﺕ ﻤﻊ ﺇﺸﺎﺭﺓ ﻓﺈﻥ:
ZF=1ﻋﻨﺩﻤﺎ )(D) == (S
SF=OFﻋﻨﺩﻤﺎ )(S) < (D
SF≠OFﻋﻨﺩﻤﺎ )(D) < (S
ﻤﺜﺎل :ﻴﺠﺭﻱ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻭﻀﻊ ﺍﻟﻘﻴﻤﺔ 5ﻓﻲ ALﻭﻓﻲ ،BLﻭﻤﻥ ﺜﹸﻡ ﻴﻘﺎﺭﻥ ﻤﺤﺘـﻭﻯ BL
ﻤﻊ ،ALﻭﺒﻤﺎ ﺃﻨﻬﻤﺎ ﻤﺘﺴﺎﻭﻴﻴﻥ ﻓﺘﺼﺒﺢ ZFﺘﺴﺎﻭﻱ .1
MOV AL, 5
MOV BL, 5
)!CMP AL, BL ; AL = 5, ZF = 1 (so equal
15
ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔﺯ
ل ﻤﻥ ﻤﻘﺘﻁﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺤﺩﺩ ﺒﺎﻟـﺴﺠل .CSﺘﺯﻴـﺩ
ﺘﻘﺭﺃ ﻭﺤﺩﺓ ﺍﻟﺘﻭﺍﺠﻪ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻠﻰ ﻨﺤﻭ ﻤﺘﺘﺎ ٍ
ﻭﺤﺩﺓ ﺍﻟﺘﻭﺍﺠﻪ ﺍﻟﺴﺠل IPﺒﻌﺩ ﻗﺭﺍﺀﺓ ﻜل ﺘﻌﻠﻴﻤﺔ ﻟﻴﺼﺒﺢ ﻤﺸﻴﺭﹰﺍ ﺇﻟﻰ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ.
ﺘﺤﺘﻭﻱ ﻤﺠﻤﻭﻋﺔ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻋﻠﻰ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﻲ ﹸﺘﻤﻜﻨﻨﺎ ﻤﻥ ﺘﻐﻴﻴـﺭ
ﺘﺘﺎﺒﻊ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﻨﻬﺘﻡ ﻫﻨﺎ ﻤﻥ ﺒﻴﻥ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤـﺎﺕ ﺒﺘﻌﻠﻴﻤـﺎﺕ
ﺍﻟﻘﻔﺯ.
ﺘﺤﺘﻭﻱ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻋﻠﻰ ﻤﺠﻤﻭﻋﺘﻴﻥ ﻤﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔـﺯ :ﻤـﺸﺭﻭﻁﺔ ﻭﻏﻴـﺭ
ﻤﺸﺭﻭﻁﺔ.
ﻭﻫﻭ ﻗﻔﺯ ﻤﺒﺎﺸﺭ ﻨﺴﺒﻲ ،ﹸﺘﺴﺘﺨﺩﻡ ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﺍﻟﻘﻔﺯ ﺇﻟﻰ ﺘﻌﻠﻴﻤﺔ ﺘﻘﻊ ﻀﻤﻥ ﻤﻘﺘﻁﻊ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺤﺎﻟﻲ،
ﻭﻻ ﺘﺒﻌﺩ ﺃﻜﺜﺭ ﻤﻥ +127ﺃﻭ -128ﺒﺎﻴﺕ ﻋﻥ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻭﻟﻰ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﻲ ﺘﻠﻲ ﺘﻌﻠﻴﻤـﺔ .JMP
ﻴﺠﺭﻱ ﺤﺴﺎﺏ ﻋﻨﻭﺍﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺠﺩﻴﺩﺓ ﺒﺠﻤﻊ ﻗﻴﻤﺔ ﺍﻹﺯﺍﺤﺔ ،ﺍﻟﻤﻀﻤﻨﺔ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ،ﺇﻟﻰ .IP
ﻤﺜﺎل :ﺒﻔﺭﺽ ﺃﻥ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺘﺤﻭﻱ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ:
000D ]ADD AL,[BX
000F INC BX
0010 DEC CX
0011 JMP FA
0013 ….
16
ﻓﺴﻭﻑ ﹸﺘﺠﺒـﺭ ﺍﻟﺘﻌﻠﻴﻤـﺔ JMP FAﺍﻟﻤﻌـﺎﻟﺞ ﻋﻠـﻰ ﺘﻨﻔﻴـﺫ ﺍﻟﺘﻌﻠﻴﻤـﺎﺕ ﺍﺒﺘـﺩﺍ ًﺀ ﻤـﻥ ﺍﻟﻤﻭﻗـﻊ:
0013h + FAh(-6) = 0Dhﻋﻭﻀﹰﺎ ﻋﻥ ﺍﻟﻤﻭﻗﻊ ،0013hﻭﺒﺎﻟﺘﺎﻟﻲ ﺴﻭﻑ ﻴﻨﻔـﺫ ﺍﻟﻤﻌـﺎﻟﺞ ﺘﺎﻟﻴـﹰﺎ
ﺍﻟﺘﻌﻠﻴﻤﺔ ].ADD AL,[BX
ﻋﻨﺩ ﻜﺘﺎﺒﺘﻙ ﻟﻠﺒﺭﻨﺎﻤﺞ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻴﻤﻜﻨﻙ ﺃﻥ ﺘﻀﻊ ﻟﺼﺎﻗﺔ ﻗﺒل ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﻤﺭﺍﺩ ﺍﻟﻘﻔﺯ ﺇﻟﻴﻬﺎ ،ﻭﻟـﺘﻜﻥ
ﻫﺫﻩ ﺍﻟﻠﺼﺎﻗﺔ ،STARTﻓﻴﺤﺴﺏ ﺍﻟﻤﺠﻤﻊ ﺍﻹﺯﺍﺤﺔ ﺒﻴﻥ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻭﻟﻰ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﻲ ﺘﻠـﻲ JMP
ﻭ STARTﺁﻟﻴﹰﺎ .ﻋﻨﺩﻫﺎ ﻴﻤﻜﻨﻙ ﺃﻥ ﺘﻜﺘﺏ ﺍﻟﺘﻌﻠﻴﻤﺔ JMP STARTﻟﻠﻘﻔﺯ ﺇﻟﻰ ﺍﻟﻤﻭﻗﻊ .START
ﻴﻤﻜﻨﻨﺎ ﺇﻋﺎﺩﺓ ﻜﺘﺎﺏ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻓﻲ ﺍﻟﻤﺜﺎل ﺍﻟﺴﺎﺒﻕ ﻋﻠﻰ ﺍﻟﻨﺤﻭ ﺍﻟﺘﺎﻟﻲ:
ﻗﻔﺯ ﻏﻴﺭ ﻤﺒﺎﺸﺭ ﻀﻤﻥ ﻤﻘﺘﻁﻊ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻨﻔﺴﻪ Indirect Intrasegment JMP
ﻴﺤﺘﺎﺝ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺍﻟﻘﻔﺯ ﺇﻟﻰ ﻤﻌﺎﻤل ﺫﺍﻜﺭﺓ ﺒﻁﻭل -16ﺒﺕ ،ﺤﻴﺙ ﻴﺠـﺭﻱ ﺘﺤﻤﻴـل IPﺒﻘﻴﻤـﺔ
ﺍﻻﻨﺯﻴﺎﺡ ﺍﻟﻤﺨﺯﻥ ﻓﻲ ﺍﻟﻤﻭﻗﻊ ﺍﻟﻤﺤﺩﺩ ﺒﺎﻟﺘﻌﻠﻴﻤﺔ.
ﻤﺜﺎل:
WordVar DW TargetAddress
.
.
.
JMP word ptr WordVar
17
ﺘﻘﻔﺯ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﻟﻰ ﺍﻻﻨﺯﻴﺎﺡ ﺍﻟﻤﻭﺠﻭﺩ ﻓﻲ ﺍﻟﻤﺘﺤﻭل WordVarﻭﻟﻴﺱ ﺇﻟﻰ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻴﺤـﻭﻱ
ﺍﻟﻌﺒﺎﺭﺓ .WordVar
ﻴﻤﻜﻨﻙ ﺃﻥ ﺘﺴﺘﺨﺩﻡ ﺃﻴﹰﺎ ﻤﻥ ﺃﻨﻤﺎﻁ ﻋﻨﻭﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ ﻟﻠﻭﺼﻭل ﺇﻟﻰ ﻗﻴﻤﺔ ﺍﻻﻨﺯﻴﺎﺡ ﺍﻟﻤﺨﺯﻨﺔ ﻓﻲ ﺍﻟـﺫﺍﻜﺭﺓ.
ﻼ ﺘﻨﺴﺦ ﺍﻟﺘﻌﻠﻴﻤﺔ ] JMP Disp[BXﺍﻟﻜﻠﻤﺔ ﻤﻥ ﺍﻟﻤﻭﻗﻊ DISP+BXﻓﻲ .IP
ﻓﻤﺜ ﹰ
18
ﺗﻌﻠﻴﻤﺔ ﻗﻔﺰ ﻣﺸﺮﻭﻃﺔ
ﻫﻞ ﺍﻟﺸﺮﻁ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﱵ ﺳﺘﻨﻔﺬ ﺇﻥ ﱂ ﻳﺘﺤﻘﻖ ﺍﻟﺸﺮﻁ
ﳏﻘﻖ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺃﻭ ﺍﳌﻮﺍﻗﻊ ﺍﻟﱵ ﺳﻴﺠﺮﻯ
ﲣﻄﻴﻬﺎ ﺇﺫﺍ ﺣﺪﺙ ﺍﻟﻘﻔﺰ
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﱵ ﺳﺘﻨﻔﺬ
ﺇﺫﺍ ﺣﺪﺙ ﺍﻟﻘﻔﺰ
ﹸﺘﺴﺘﺨﺩﻡ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔﺯ ﺍﻟﺸﺭﻁﻴﺔ ﻓﻲ ﺘﻨﺠﻴﺯ ﺍﻟﺤﻠﻘﺎﺕ ﺃﻭ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﺒﺭﻤﺠﻴﺔ ﻤﺜـل ،if … then
ﻜﻤﺎ ﺘﹸﺴﺘﺨﺩﻡ ﺒﻌﺩ ﺘﻌﻠﻴﻤﺔ ﺍﻟﻤﻘﺎﺭﻨﺔ ِ CMPﻟ ﹶﺘﺤﺩﻴﺩ ﺍﻟﻤﻌﺎﻤل ﺍﻷﻜﺒﺭ.
ﻴﺒﻴﻥ ﺍﻟﺠﺩﻭﻟﻴﻥ ﺍﻟﺘﺎﻟﻴﻴﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔﺯ ﺍﻟﺸﺭﻁﻴﺔ ،ﺍﻟﺘﻲ ﺘﺘﻀﻤﻨﻬﺎ ﻤﺠﻤﻭﻋـﺔ ﺘﻌﻠﻴﻤـﺎﺕ ﺍﻟﻤﻌـﺎﻟﺞ
،8088/8086ﻭﺍﻟﺘﻲ ﺘﻔﺤﺹ ﺤﺎﻟﺔ ﺇﺤﺩﻯ ﺭﺍﻴﺎﺕ ﺴﺠل ﺍﻟﺭﺍﻴﺔ:
19
ﻴﺒﻴﻥ ﺍﻟﺠﺩﻭل ﺍﻟﺘﺎﻟﻲ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔﺯ ﺍﻟﺸﺭﻁﻴﺔ ،ﺍﻟﺘﻲ ﺘﺘـﻀﻤﻨﻬﺎ ﻤﺠﻤﻭﻋـﺔ ﺘﻌﻠﻴﻤـﺎﺕ ﺍﻟﻤﻌـﺎﻟﺞ
،8088/8086ﻟﻠﺘﺤﻘﻕ ﻤﻥ ﺤﺩﻭﺙ ﺤﺎﻟﺔ ﻤﺤﺩﺩﺓ ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺔ ﺍﻟﻤﻘﺎﺭﻨﺔ CMPﺒﻴﻥ ﻤﻌـﺎﻤﻠﻴﻥ
ﺒﻼ ﺇﺸﺎﺭﺓ.
ﺭﻤﺯ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺸﺭﺡ ﺍﻟﺭﺍﻴﺔ
JA ﺍﻗﻔﺯ ﺇﺫﺍ op1>op2 CF=0ﻭ ZF=0
JAE ﺍﻗﻔﺯ ﺇﺫﺍ op1≥op2 CF=0
JB ﺍﻗﻔﺯ ﺇﺫﺍ op1<op2 CF=1
JBE ﺍﻗﻔﺯ ﺇﺫﺍ op1≤op2 CF=1ﺃﻭ ZF=1
ﻭﻴﺒﻴﻥ ﺍﻟﺠﺩﻭل ﺍﻟﺘﺎﻟﻲ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔﺯ ﺍﻟﺸﺭﻁﻴﺔ ،ﺍﻟﺘﻲ ﺘﺘﻀﻤﻨﻬﺎ ﻤﺠﻤﻭﻋـﺔ ﺘﻌﻠﻴﻤـﺎﺕ ﺍﻟﻤﻌـﺎﻟﺞ
،8088/8086ﻟﻠﺘﺤﻘﻕ ﻤﻥ ﺤﺩﻭﺙ ﺤﺎﻟﺔ ﻤﺤﺩﺩﺓ ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺔ ﺍﻟﻤﻘﺎﺭﻨﺔ CMPﺒﻴﻥ ﻤﻌـﺎﻤﻠﻴﻥ
ﻤﻊ ﺇﺸﺎﺭﺓ:
ﻤﺜﺎل :ﺘﻘﺎﺭﻥ ﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﺒﻴﻥ ﻤﺤﺘﻭﻯ BLﻭ DHﻭﺘﻀﻊ ﺍﻟﻘﻴﻤﺔ ﺍﻷﻜﺒﺭ ﻓﻲ .AL
CMP BL, DH
JAE FIRST ; JMP if BL > DH
MOV AL, DH ]; [AL] = [DH
JMP NEXT
FIRST: MOV AL, DH ]; [AL] = [BL
… NEXT:
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﺤﺴﺏ ﻤﺘﻭﺴﻁ ﺨﻤﺱ ﻗﻴﺎﺴﺎﺕ ﻟﺩﺭﺠﺔ ﺍﻟﺤﺭﺍﺭﺓ ﻭﺍﻜﺘﺏ ﺍﻟﻨﺎﺘﺞ ﻓﻲ ،AX
ﺍﻓﺘﺭﺽ ﺃﻥ ﺍﻟﻘﻴﺎﺴﺎﺕ ﺍﻟﺨﻤﺴﺔ ﻤﺨﺯﻨﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ.
ﺍﻟﺠﻭﺍﺏ:
20
DATA DB ;+13,-10,+19,+14,-18
MOV CX,5 ;LOAD COUNTER
SUB BX, BX ;CLEAR BX, USED AS ACCUMULATOR
MOV SI, OFFSET DATA ;SET UP POINTER
]BACK: MOVAL,[SI ;MOVE BYTE INTO AL
CBW ;SIGN EXTEND INTO AX
ADD BX, AX ;ADD TO BX
INC SI ;INCREMENT POINTER
DEC CX ;DECREMENT COUNTER
JNZ BACK ;LOOP IF NOT FINISHED
MOV CL,5 ;MOVE COUNT TO AL
DIV CL ;FIND THE AVERAGE
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ
ﺘﻨﻔﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ،XOR ،OR ،ANDﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ،ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ XOR ،OR ،ANDﺒـﻴﻥ
ﺒﺘﺎﺕ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻭﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ،ﻭﻴﺠﺭﻱ ﻭﻀﻊ ﺍﻟﻨﺎﺘﺞ ﻓﻲ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ .ﻴﻤﻜﻥ ﺃﻥ ﺘﻜـﻭﻥ
ﺃﻁﻭﺍل ﺍﻟﻤﻌﺎﻤﻠﻴﻥ ﺇﻤﺎ ﺒﺎﻴﺕ ﺃﻭ 2ﺒﺎﻴﺕ .ﺘﺴﻤﺢ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺒﻔﺤﺹ ﺃﻭ ﹶﺘﻐﻴﻴﺭ ﺤﺎﻟﺔ ﺒﻌـﺽ ﺒﺘـﺎﺕ
ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻭ ﻴﺅﺜﺭ ﻨﺎﺘﺞ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻠﻰ ﺤﺎﻟﺔ ﺒﻌﺽ ﺭﺍﻴﺎﺕ ﺴﺠل ﺍﻟﺤﺎﻟﺔ.
ﻤﺜﺎل :ﹸﺘ َﻌ ﺩل ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻤﺤﺘﻭﻯ ﺍﻟﺴﺠل CHﻭﺫﻟﻙ ﺒﻭﻀﻊ 0 :ﻓﻲ ﺃﻭل ﺒﺘﻴﻥ ،ﻭ 1ﻓﻲ ﺁﺨـﺭ
ﺒ ﹼﺘﻴﻥ ،ﻜﻤﺎ ﺘﻌﻜﺱ ﺤﺎﻟﺔ ﺍﻟﺒﺕ .5
AND CH, FCH ;1111 1100
OR CH, C0H ;1100 0000
XOR CH, 20H ;0010 0000
ﺍﻟﺘﻌﻠﻴﻤﺔ :TESTﺘﻨﻔﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ TESTﻋﻤﻠﻴﺔ ANDﺍﻟﻤﻨﻁﻘﻴﺔ ﺒﻴﻥ ﺒﺘﺎﺕ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻭﻤﻌﺎﻤـل
ﺍﻟﻭﺠﻬﺔ .ﺘﺅﺜﺭ ﺍﻟﺘﻌﻠﻴﻤﺔ TESTﻓﻘﻁ ﻋﻠﻰ ﺤﺎﻟﺔ ﺒﻌﺽ ﺭﺍﻴﺎﺕ ﺴﺠل ﺍﻟﺭﺍﻴﺔ .ﻭﻻ ﺘﺨﺯﻥ ﻨﺎﺘﺞ ﺍﻟﻌﻤﻠﻴﺔ
ﻓﻲ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ.
ﻻ ﺤﺎﻟﺔ ﺍﻟﺒﺕ ﺍﻷﻭﻟﻰ ﻤﻥ ALﻓﺈﺫﺍ ﻜﺎﻨﺕ ﺘﺴﺎﻭﻱ 1ﻓﻴﺠﺭﻱ ﺍﻟﻘﻔـﺯ
ﻤﺜﺎل :ﺘﻔﺤﺹ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﺃﻭ ﹰ
ﺇﻟﻰ ﺍﻟﻤﻭﻗﻊ ﺫﻱ ﺍﻟﻠﺼﺎﻗﺔ .RIGHT
TEST AL, 1 ; test right bit
JNZ RIGHT ; if set
ﺍﻟﺘﻌﻠﻴﻤﺔ :NOTﺘﹸﻌﻜﺱ ﺍﻟﺘﻌﻠﻴﻤﺔ NOTﺤﺎﻟﺔ ﻜل ﺒﺕ ﻤﻥ ﺒﺘﺎﺕ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ .ﹸﺘﻜﺎﻓﺊ ﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﺔ
ﺇﺠﺭﺍﺀ ﺍﻟﻤﺘﻤﻡ ﺇﻟﻰ ﺍﻟﻭﺍﺤﺩ .one's complement
ﻤﺜـﺎل :ﺒﻔﺭﺽ ﺃﻥ ،CH=99hﻓﺈﻨﻪ ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ،NOT CHﻴﺼﺒﺢ ﻤﺤﺘـﻭﻯ CHﻤـﺴﺎﻭﻴﹰﺎ
.66h
21
ﺘﻌﻠﻴﻤﺎﺕ ﺍﻹﺯﺍﺤﺔ
ﺘﺴﻤﺢ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻹﺯﺍﺤﺔ ﺒﺈﺯﺍﺤﺔ ﺒﺘﺎﺕ ﻤﻌﺎﻤل ،ﺒﻁﻭل ﺒﺎﻴﺕ ﺃﻭ 2ﺒﺎﻴﺕ ،ﺇﺯﺍﺤﺔ ﻤﻨﻁﻘﻴﺔ ﺃﻭ ﺤـﺴﺎﺒﻴﺔ.
ﻴﻤﻜﻥ ﺃﻥ ﺘﻨﻔﺫ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻹﺯﺍﺤﺔ ﻋﻠﻰ ﺍﻷﻜﺜﺭ 255ﺇﺯﺍﺤﺔ ،ﻭ ﻴﺤ ﺩﺩ ﻤﻌﺎﻤل ﺍﻟﻌﺩ count operandﻓﻲ
ﺍﻟﺘﻌﻠﻴﻤﺔ ﻋﺩﺩ ﻤﺭﺍﺕ ﺍﻹﺯﺍﺤﺔ .ﻴﻤﻜﻥ ﺃﻥ ﻴﻜﻭﻥ ﻤﻌﺎﻤل ﺍﻟﻌﺩ ﻗﻴﻤﺔ ﺜﺎﺒﺘﺔ ﺃﻭ ﻤﺤﺘﻭﻯ ﺍﻟﺴﺠل .CLﺘﺅﺜﺭ
ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻠﻰ ﺤﺎﻟﺔ ﺒﻌﺽ ﺭﺍﻴﺎﺕ ﺴﺠل ﺍﻟﺭﺍﻴﺔ ،ﻜﻤﺎ ﻴﺠﺭﻱ ﺇﺯﺍﺤﺔ ﺍﻟﺒﺕ ﺍﻷﻭﻟﻰ ﻤﻥ ﺍﻟﻤﻌﺎﻤـل
ﺇﻟﻰ ﺒﺕ ﺍﻟﺤﺎﻤل CFﻓﻲ ﻋﻤﻠﻴﺎﺕ ﺍﻹﺯﺍﺤﺔ ﻨﺤﻭ ﺍﻟﻴﻤﻴﻥ ،ﻭ ﺇﺯﺍﺤﺔ ﺍﻟﺒﺕ ﺍﻟﻌﻠﻴﺎ ﻤﻥ ﺍﻟﻤﻌﺎﻤل ﺇﻟﻰ ﺒـﺕ
ﺍﻟﺤﺎﻤل CFﻓﻲ ﻋﻤﻠﻴﺎﺕ ﺍﻹﺯﺍﺤﺔ ﻨﺤﻭ ﺍﻟﻴﺴﺎﺭ.
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻋﻤل ﺘﻌﻠﻴﻤﺎﺕ ﺍﻹﺯﺍﺤﺔ SHR ،SAL ،SHLﻭ .SAR
ﺳﺠﻞ ﺃﻭ ﻣﻮﻗﻊ ﺫﺍﻛﺮﺓ
ﻳﻤﻜﻦ وﺿﻊ اﻟﺒﺎﻳﺖ 10001011
ﻓﻲ اﻟﺴﺠﻞ وﺗﻐﻴﺮ ﺣﺎﻟﺔ اﻟﺴﺠﻞ ﺑﻌﺪ 0 ﳚﺮﻱ ﺇﺩﺭﺍﺝ
ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺔ اﻹزاﺣﺔ .ﺗﺼﺒﺢ اﻟﻨﺘﻴﺠﺔ
ﻋﻠﻰ اﻟﺘﺮﺗﻴﺐ:
00010110و C=1
00010110و C=1
01000101و C=1
11000101و C=1
ﺑﺖ ﺍﻹﺷﺎﺭﺓ
ﺍﻟﺘﻌﻠﻴﻤﺔ SHR
ﺘﻨﻔﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺯﺍﺤﺔ ﻤﻨﻁﻘﻴﺔ ﻋﻠﻰ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻴﻤﻴﻨﹰﺎ .ﻴﺠﺭﻱ ﺇﺩﺨﺎل ﺼﻔﺭ ﻓﻲ ﺍﻟﺒﺕ ﺍﻷﺨﻴـﺭﺓ
ﻤﻥ ﺍﻟﻤﻌﺎﻤل ﺒﻌﺩ ﻜل ﺇﺯﺍﺤﺔ.
ﺍﻟﺘﻌﻠﻴﻤﺔ SAR
ﺘﻨﻔﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺯﺍﺤﺔ ﺤﺴﺎﺒﻴﺔ ﻋﻠﻰ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻨﺤﻭ ﺍﻟﻴﻤﻴﻥ .ﻴﺠﺭﻱ ﺩﻭﻤﹰﺎ ﺇﺩﺭﺍﺝ ﺒﺕ ﺍﻹﺸﺎﺭﺓ
ﻓﻲ ﺍﻟﺒﺕ ﺍﻷﻋﻠﻰ ﻤﻥ ﺍﻟﻤﻌﺎﻤل.
22
ﻤﺜﺎل:
MOV AL, 11100000b
SHL AL, 1 ; AL = 11000000b, CF=1.
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﻀﺭﺏ AXﺒـ 10ﻤﺴﺘﺨﺩﻤﹰﺎ ﻋﻤﻠﻴﺎﺕ ﺇﺯﺍﺤﺔ ﻭﺠﻤﻊ.
ﺍﻟﺠﻭﺍﺏ:
SHL AX,1
MOV BX, AX
MOV CL, 2
SHL AX, CL
ADD AX, BX
ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺩﻭﺭﺍﻥ
ﺘﺴﻤﺢ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺩﻭﺭﺍﻥ ﺒﺈﺯﺍﺤﺔ ﺒﺘﺎﺕ ﻤﻌﺎﻤل ،ﺒﻁﻭل ﺒﺎﻴﺕ ﺃﻭ 2ﺒﺎﻴﺕ ،ﻴﻤﻴﻨﹰﺎ ﺃﻭ ﻴﺴﺎﺭﹰﺍ ﻜﻤـﺎ ﻓـﻲ
ﺘﻌﻠﻴﻤﺎﺕ ﺍﻹﺯﺍﺤﺔ ،ﻭﻴﻜﻤﻥ ﺍﻟﻔﺭﻕ ﺒﻴﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻹﺯﺍﺤﺔ ﻭﺍﻟﺩﻭﺭﺍﻥ ﺃﻨـﻪ ﻻ ﻴﺠـﺭﻱ ﻓـﻲ ﺘﻌﻠﻴﻤـﺎﺕ
ﺍﻟﺩﻭﺭﺍﻥ ﺇﻫﻤﺎل ﺍﻟﺒﺕ ﺍﻟﻤﺯﺍﺤﺔ ﺨﺎﺭﺠﹰﺎ ﻭﺇﻨﻤﺎ ﻴﻌﺎﺩ ﺇﺩﺨﺎﻟﻬﺎ ﻤﻥ ﺠﺩﻴﺩ ﻓـﻲ ﺍﻟﻤﻌﺎﻤـل .ﺘـﺅﺜﺭ ﻫـﺫﻩ
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻠﻰ ﺤﺎﻻﺕ ﺒﻌﺽ ﺍﻟﺭﺍﻴﺎﺕ.
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻋﻤل ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺩﻭﺭﺍﻥ RCR ،ROL ،RCLﻭ .ROR
ﺳﺠﻞ ﺃﻭ ﻣﻮﻗﻊ ﺫﺍﻛﺮﺓ
ﺍﻟﺘﻌﻠﻴﻤﺔ RCL
ﺘﻨﻔﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺯﺍﺤﺔ ﺩﻭﺭﺍﻨﻴﺔ ﻟﺒﺘﺎﺕ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻨﺤﻭ ﺍﻟﻴﺴﺎﺭ ﻋﺒﺭ ﺍﻟﺤﺎﻤل .ﻴﺠﺭﻱ ﻓﻲ ﻫـﺫﻩ
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺩﺭﺍﺝ ﺍﻟﺤﺎﻤل CFﻓﻲ ﺍﻟﺒﺕ ﺍﻷﻭﻟﻰ ﻤﻥ ﺍﻟﻤﻌﺎﻤل ﻭﻴﺄﺨﺫ ﺍﻟﺤﺎﻤل ﻗﻴﻤﺔ ﺍﻟﺒـﺕ ﺍﻟﻌﻠﻴـﺎ ﻤـﻥ
ﺍﻟﻤﻌﺎﻤل.
23
ﺍﻟﺘﻌﻠﻴﻤﺔ ROL
ﺘﻨﻔﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺯﺍﺤﺔ ﺩﻭﺭﺍﻨﻴﺔ ﻟﺒﺘﺎﺕ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻨﺤﻭ ﺍﻟﻴﺴﺎﺭ ﻋﺒﺭ ﺍﻟﺤﺎﻤل .ﻴﺠﺭﻱ ﻓﻲ ﻫـﺫﻩ
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺩﺭﺍﺝ ﺍﻟﺒﺕ ﺍﻟﻌﻠﻴﺎ ﻓﻲ ﺍﻟﺒﺕ ﺍﻷﻭﻟﻰ ﻤﻥ ﺍﻟﻤﻌﺎﻤل ﻭﻴﺄﺨﺫ ﺍﻟﺤﺎﻤل ﺃﻴﻀﹰﺎ ﻗﻴﻤﺔ ﺍﻟﺒﺕ ﺍﻟﻌﻠﻴﺎ ﻤـﻥ
ﺍﻟﻤﻌﺎﻤل.
ﺍﻟﺘﻌﻠﻴﻤﺔ RCR
ﺘﻨﻔﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺯﺍﺤﺔ ﺩﻭﺭﺍﻨﻴﺔ ﻟﺒﺘﺎﺕ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻨﺤﻭ ﺍﻟﻴﻤﻴﻥ ﻋﺒﺭ ﺍﻟﺤﺎﻤل .ﻴﺠﺭﻱ ﻓﻲ ﻫـﺫﻩ
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺩﺭﺍﺝ ﺍﻟﺤﺎﻤل CFﻓﻲ ﺍﻟﺒﺕ ﺍﻷﻋﻠﻰ ﻤﻥ ﺍﻟﻤﻌﺎﻤل ﻭﻴﺄﺨﺫ ﺍﻟﺤﺎﻤل ﻗﻴﻤﺔ ﺍﻟﺒﺕ ﺍﻷﻭﻟـﻰ ﻤـﻥ
ﺍﻟﻤﻌﺎﻤل.
ﺍﻟﺘﻌﻠﻴﻤﺔ ROR
ﺘﻨﻔﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺯﺍﺤﺔ ﺩﻭﺭﺍﻨﻴﺔ ﻟﺒﺘﺎﺕ ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﻨﺤﻭ ﺍﻟﻴﻤﻴﻥ ﻋﺒﺭ ﺍﻟﺤﺎﻤل .ﻴﺠﺭﻱ ﻓﻲ ﻫـﺫﻩ
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺩﺭﺍﺝ ﺍﻟﺒﺕ ﺍﻷﻭﻟﻰ ﻓﻲ ﺍﻟﺒﺕ ﺍﻟﻌﻠﻴﺎ ﻤﻥ ﺍﻟﻤﻌﺎﻤل ﻭﻴﺄﺨﺫ ﺍﻟﺤﺎﻤل ﺃﻴﻀﹰﺎ ﻗﻴﻤﺔ ﺍﻟﺒﺕ ﺍﻷﻭﻟﻰ ﻤﻥ
ﺍﻟﻤﻌﺎﻤل.
ﻤﺜﺎل:
STC ; set carry (CF=1).
MOV AL, 1Ch ; AL = 00011100b
RCL AL, 1 ; AL = 00111001b, CF=0.
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﺤﺼﻲ ﻋﺩﺩ ﺍﻟﻭﺤﺩﺍﻥ ﻓﻲ ﺒﺎﻴﺕ ﻭﻴﻀﻊ ﺍﻟﻨﺎﺘﺞ ﻓﻲ :BL
ﺍﻟﺤل:
24
ﺒﺭﻨﺎﻤﺠﹰﺎ ﻓﺭﻋﻴﹰﺎ ﺃﻭ ﺇﺠﺭﺍﺌﻴﺔ.
ﻴﻤﻜﻥ ﻁﻠﺏ ﺍﻹﺠﺭﺍﺌﻴﺔ ﻤﻥ ﺃﻱ ﻨﻘﻁﺔ ﻤﻥ ﺒﺭﻨﺎﻤﺠﻙ ﺍﻟﺭﺌﻴﺱ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺘﻌﻠﻴﻤﺔ ،CALLﻋﻨﺩﻫﺎ ﻴﺨﹶـ ِﺯﻥ
ﺍﻟﻤﻌﺎﻟﺞ ﻋﻨﻭﺍﻥ ﺃﻭل ﺒﺎﻴﺕ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﻲ ﺘﻠﻲ ﺘﻌﻠﻴﻤﺔ CALLﻓﻲ ﺍﻟﻤﻜﺩﺱ ،ﺜﻡ َﻴﺸﺤﻥ IPﺒﻌﻨـﻭﺍﻥ
ﺃﻭل ﺒﺎﻴﺕ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻷﻭﻟﻰ ﻓﻲ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻔﺭﻋﻲ .ﻴﻨﻔﺫ ﺍﻟﻤﻌﺎﻟﺞ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻹﺠﺭﺍﺌﻴﺔ ﺤﺘﻰ ﻴـﺼل
ﺇﻟﻰ ﺘﻌﻠﻴﻤﺔ ،RETﺍﻟﺘﻲ ﺘﹸﺸﻴﺭ ﺇﻟﻰ ﻨﻬﺎﻴﺔ ﺍﻹﺠﺭﺍﺌﻴﺔ .ﻋﻨﺩﻫﺎ َﻴﺸﺤﻥ ﺍﻟﻤﻌﺎﻟﺞ IPﺒﺎﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﺨﺯﻥ ﻓﻲ
ﺍﻟﻤﻜﺩﺱ ﻭﻴﻌﻭﺩ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻴﺘﺎﺒﻊ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﺒﺘﺩﺍ ًﺀ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﻲ ﺘﻠـﺕ ﺘﻌﻠﻴﻤـﺔ ﺍﻻﺴـﺘﺩﻋﺎﺀ
،CALLﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ:
ﺘﺒﺩﺃ ﺇﺠﺭﺍﺌﻴﺔ ﺒﻤﻌﺭﻑ ﻴﺤﺩﺩ ﺍﺴﻡ ﺍﻹﺠﺭﺍﺌﻴﺔ ﻤﺘﺒﻭﻋﹰﺎ ﺒﺎﻟﻜﻠﻤﺔ ﺍﻟﻤﺨﺘﺯﻟﺔ ،procﻭﺘﻨﺘﻬﻲ ﺃﻴـﻀﹰﺎ ﺒﺎﺴـﻡ
ﺍﻹﺠﺭﺍﺌﻴﺔ ﻤﺘﺒﻭﻋﹰﺎ ﺒﺎﻟﻜﻠﻤﺔ ﺍﻟﻤﺨﺘﺯﻟﺔ .endpﻭﻴﻤﻜﻨﻨﺎ ﺍﻟﺘﻤﻴﻴﺯ ﺒﻴﻥ ﻨﻭﻋﻴﻥ ﻤﻥ ﺍﻻﺴـﺘﺩﻋﺎﺀ :ﻗﺭﻴـﺏ
NEAR CALLﻭﺒﻌﻴﺩ .FAR CALL
25
ﻋﻨﻭﻨﺔ ﻏﻴﺭ ﻤﺒﺎﺸﺭﺓ :ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻴﻘﻊ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل ﻟﻺﺠﺭﺍﺌﻴﺔ ﻓﻲ ﺃﺤﺩ ﺴﺠﻼﺕ ﺍﻟﻤﻌﺎﻟﺞ ﺃﻭ
ﻓﻲ ﻤﻭﻗﻌﻴﻥ ﻤﺘﺘﺎﻟﻴﻴﻥ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ .ﻭﻴﻤﻜﻨﻨﺎ ﺒﺎﻟﺘﺎﻟﻲ ﺍﺴﺘﺨﺩﺍﻡ ﺃﺤﺩ ﺃﻨﻤﺎﻁ ﻋﻨﻭﻨـﺔ ﺍﻟـﺫﺍﻜﺭﺓ ﻏﻴـﺭ
ﺍﻟﻤﺒﺎﺸﺭﺓ ﻟﻘﺭﺍﺀﺓ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل ﻟﻺﺠﺭﺍﺌﻴﺔ.
ﻤﺜﺎل:
CALL CallTbl[bx] ;Index into an array of pointers.
CALL word ptr [bx] ;BX points at word to use.
ﻴﻤﻜﻥ ﺃﻥ ﻴﻜﻭﻥ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﻨﻁﻘﻲ ﺠﺯﺀ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺃﻭ ﻓﻲ ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ،ﻭﺒﺎﻟﺘﺎﻟﻲ ﻴﻤﻜـﻥ ﺃﻥ ﻨﻤﻴـﺯ
ﺒﻴﻥ ﺍﺴﺘﺩﻋﺎﺀ ﺒﻌﻨﻭﻨﺔ ﻤﺒﺎﺸﺭﺓ ﺃﻭ ﻏﻴﺭ ﻤﺒﺎﺸﺭﺓ.
ﻋﻨﻭﻨﺔ ﻤﺒﺎﺸـﺭﺓ :ﺘﺘﻀﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ،ﻓﻲ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﻤﺒﺎﺸﺭﺓ ،ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﻨﻁﻘﻲ ﻟﺒﺩﺍﻴﺔ ﺍﻹﺠﺭﺍﺌﻴـﺔ،
ﺍﻟﺫﻱ ﻴﺸﺤﻥ ﻓﻲ ﺯﻭﺝ ﺍﻟﺴﺠﻼﺕ .CS:IPﻴﺨﺯﻥ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺃﻭ ﹰ
ﻻ ﺍﻻﻨﺯﻴﺎﺡ ﺜﻡ ﻴﻠﻴﻬﺎ ﺍﻟﻤﻘﺘﻁﻊ.
ﻋﻨﻭﻨﺔ ﻏﻴﺭ ﻤﺒﺎﺸﺭﺓ :ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻴﻘﻊ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﻨﻁﻘﻲ ﻟﺒﺩﺍﻴﺔ ﺍﻹﺠﺭﺍﺌﻴﺔ ﻓﻲ ﺃﺭﺒـﻊ ﻤﻭﻗـﻊ
ﻤﺘﺘﺎﻟﻴﺔ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ،ﻴﺤﺘﻭﻱ ﺃﻭل ﺒﺎﻴﺘﻴﻥ ﻗﻴﻤﺔ IPﻭﻴﺤﻭﻱ ﺍﻟﺒﺎﻴﺘﻴﻥ ﺍﻟﺜﺎﻟﺙ ﻭﺍﻟﺭﺍﺒﻊ ﻋﻠـﻰ ﻗﻴﻤـﺔ
.CSﻴﻤﻜﻨﻨﺎ ﺍﺴﺘﺨﺩﺍﻡ ﺃﺤﺩ ﺃﻨﻤﺎﻁ ﻋﻨﻭﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ ﻏﻴﺭ ﺍﻟﻤﺒﺎﺸـﺭﺓ ﻟﻘـﺭﺍﺀﺓ ﺍﻟﻌﻨـﻭﺍﻥ ﺍﻟﻤﻨﻁﻘـﻲ
ﻟﻺﺠﺭﺍﺌﻴﺔ.
26
ﻤﺜل:
CALL DWordVar
]CALL dword ptr [bx
ﺘﻌﻠﻴﻤﺔ RET
ﻋﻨﺩﻤﺎ ﻴﺼﺎﺩﻑ ﺍﻟﻤﻌﺎﻟﺞ ﺘﻌﻠﻴﻤﺔ RETﻴﻨﻬﻲ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻹﺠﺭﺍﺌﻴﺔ ﻭﻴﻌﻭﺩ ﺇﻟﻰ ﺍﻟﺒﺭﻨـﺎﻤﺞ ﺍﻟـﺫﻱ
ﺍﺴﺘﺩﻋﻰ ﺍﻹﺠﺭﺍﺌﻴﺔ .ﻴﺘﺎﺒﻊ ﺍﻟﻤﻌﺎﻟﺞ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﺒﺘﺩﺍ ًﺀ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﻲ ﺘﻠﺕ ﻤﺒﺎﺸﺭﺓ ﺘﻌﻠﻴﻤﺔ ﻁﻠﺏ
ﺍﻹﺠﺭﺍﺌﻴﺔ .ﻭﻴﺘﻡ ﺫﻟﻙ ﺒﺸﺤﻥ IPﺒﺂﺨﺭ ﻜﻠﻤﺔ ﻤﺨﺯﻨﺔ ﻓﻲ ﺍﻟﻤﻜﺩﺱ ﺇﺫﺍ ﻜﺎﻨﺕ ﺘﻌﻠﻴﻤﺔ CALLﻤﻥ ﺍﻟﻨﻭﻉ
ﺍﻟﻘﺭﻴﺏ ،ﺃﻭ ﺒﺸﺤﻥ ﺯﻭﺝ ﺍﻟﺴﺠﻼﺕ CS:IPﺒﺂﺨﺭ ﻜﻠﻤﺔ ﻤﻀﺎﻋﻔﺔ ﻤﺨﺯﻨﺔ ﻓﻲ ﺍﻟﻤﻜـﺩﺱ ﺇﺫﺍ ﻜﺎﻨـﺕ
ﺘﻌﻠﻴﻤﺔ CALLﻤﻥ ﺍﻟﻨﻭﻉ ﺍﻟﺒﻌﻴﺩ.
27
ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ ﺘﻌﻠﻴﻤﺔ PUSHﻟﺘﺨﺯﻴﻥ ﻤﻌﺎﻤل ﻤﻥ -16ﺒﺕ ﻓﻲ ﺍﻟﻤﻜﺩﺱ ﻴﺠـﺭﻱ ﺘﻨﻔﻴـﺫ ﺍﻟﺨﻁـﻭﺍﺕ
ﺍﻟﺘﺎﻟﻴﺔ:
-1ﻴﺨﺯﻥ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻜﺜﺭ ﺩﻻﻟﺔ ﻟﻠﻜﻠﻤﺔ ﻓﻲ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻴﻌﻨﻭﻨﻪ SP-1
-2ﻴﺨﺯﻥ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻗل ﺩﻻﻟﺔ ﻓﻲ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻴﻌﻨﻭﻨﻪ SP-2
-3ﻴﻨﻘﺹ SPﺒﻤﻘﺩﺍﺭ SP ← SP-2 : 2
ﻴﻤﻜﻥ ﺃﻥ ﻴﻜﻭﻥ ﺍﻟﻤﻌﺎﻤل ﺴﺠل ﻋﺎﻡ ﺃﻭ ﺴﺠل ﻤﻘﺘﻁﻊ ﺃﻭ ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ.
ﻤﺜﺎل:
PUSHF ; push flages
PUSH AX ; push accumulator
PUSH C
PUSH [BX] ; push the location pointed by BX
ﺘﻨﺴﺦ ﺍﻟﺘﻌﻠﻴﻤﺔ POPﻓﻲ ﻤﻌﺎﻤل ﺍﻟﺘﻌﻠﻴﻤﺔ ﺁﺨﺭ ﺒﺎﻴﺘﻴﻥ ﹸ
ﺨﺯﻨﺘﺎ ﻓﻲ ﺍﻟﻤﻜﺩﺱ )ﺍﻟﺒﺎﻴﺘﻴﻥ ﺍﻟﻤﻭﺠﺩﺘﻴﻥ ﻓـﻲ
ﻗﻤﺔ ﺍﻟﻤﻜﺩﺱ( ،ﻭﻤﻥ ﺜﻡ ﹸﺘﺯﻴﺩ SPﺒـ ،2ﻋﻠﻰ ﺍﻟﻨﺤﻭ ﺍﻟﺘﺎﻟﻲ:
-1ﻴﺠﺭﻱ ﻨﺴﺦ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻗل ﺩﻻﻟﺔ ﻤﻥ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻴﻌﻨﻭﻨﻪ SP
-2ﻴﺠﺭﻱ ﻨﺴﺦ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻜﺜﺭ ﺩﻻﻟﺔ ﻤﻥ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻱ ﻴﺅﺸﺭ ﺇﻟﻴﻪ SP-1
-3ﻴﺯﺍﺩ SPﺒﻤﻘﺩﺍﺭ SP ← SP+2 : 2
ﻴﻤﻜﻥ ﺃﻥ ﻴﻜﻭﻥ ﺍﻟﻤﻌﺎﻤل ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ POPﺴﺠل ﻋﺎﻡ ﺃﻭ ﺴﺠل ﻤﻘﺘﻁﻊ ،ﻤﺎ ﻋـﺩﺍ ،CSﺃﻭ ﻤﻭﻗـﻊ
ﺫﺍﻜﺭﺓ .ﻨﺴﺘﺨﺩﻡ ﺍﻟﺘﻌﻠﻴﻤﺔ POPFﻟﻨﺴﺦ ﻤﺤﺘﻭﻯ ﺍﻟﻤﻜﺩﺱ ﻓﻲ ﺴﺠل ﺍﻟﺭﺍﻴﺔ.
ﻤﺜﺎل:
POPF ; pop flages
POP AX ; pop accumulator
POP C
POP [BX] ; pop the location pointed by BX
ﻨﺨﺯﻥ ،ﻋﺎﺩﺓ ،ﻓﻲ ﺒﺩﺍﻴﺔ ﻜل ﺇﺠﺭﺍﺌﻴﺔ ﺍﻟﺴﺠﻼﺕ ﺍﻟﺘﻲ ﻴﻤﻜﻥ ﺃﻥ ﻴﺘﻐﻴﺭ ﻤﺤﺘﻭﺍﻫﺎ ﺨﻼل ﺘﻨﻔﻴﺫ ﺍﻹﺠﺭﺍﺌﻴﺔ.
ﻼ ﺘﺨﺯﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﺴﺠل ﺍﻟﺭﺍﻴﺎﺕ ﻭ AXﻭ BXﻓﻲ ﺍﻟﻤﻜﺩﺱ:
ﻓﻤﺜ ﹰ
PUSHF
PUSH AX
PUSH BX
ﻭﻗﺒل ﺍﻟﻌﻭﺩﺓ ﻤﻥ ﺍﻹﺠﺭﺍﺌﻴﺔ ﻨﺴﺤﺏ ﺍﻟﺴﺠﻼﺕ ﻤﻥ ﺍﻟﻤﻜﺩﺱ ﺒﺎﻟﺘﺭﺘﺏ ﺍﻟﻌﻜﺴﻲ ،ﺃﻱ ﺍﻟﻤﺨـﺯﻥ ﺃﺨﻴـﺭﹰﺍ
ﻻ:
ﻴﺴﺤﺏ ﺃﻭ ﹰ
POP BX
POP AX
POPF
RET
28
ﺘﻌﻠﻴﻤﺎﺕ ﺴﺠل ﺍﻟﺭﺍﻴﺔ
ﺍﻟﺘﻌﻠﻴﻤﺔ :LAHFﺘﻨﺴﺦ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻭﻟﻰ ﻤﻥ ﺴﺠل ﺍﻟﺭﺍﻴﺔ ﻓﻲ ﺍﻟﺴﺠل .AH
ﺍﻟﺘﻌﻠﻴﻤﺔ :SAHFﺘﻨﺴﺦ AHﻓﻲ ﺍﻟﺒﺎﻴﺕ ﺍﻷﻭﻟﻰ ﻤﻥ ﺴﺠل ﺍﻟﺭﺍﻴﺔ.
ﺍﻟﺘﻌﻠﻴﻤﺔ :CLCﺘﻀﻊ 0ﻓﻲ ﺭﺍﻴﺔ ﺍﻟﺤﺎﻤل (CF) ← 0 :CF
ﺍﻟﺘﻌﻠﻴﻤﺔ :STCﺘﻀﻊ 1ﻓﻲ ﺭﺍﻴﺔ ﺍﻟﺤﺎﻤل (CF) ← 1 :CF
ﺍﻟﺘﻌﻠﻴﻤﺔ :CMCﺘﻌﻜﺱ ﺤﺎﻟﺔ ﺭﺍﻴﺔ ﺍﻟﺤﺎﻤل (CF) ← 0 :ﺇﺫﺍ (CF) ==1
(CF) ← 1ﺇﺫﺍ (CF) ==0
ﺍﻟﺘﻌﻠﻴﻤﺔ :CLIﺘﻀﻊ 0ﻓﻲ ﺭﺍﻴﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ،IFﻭﺒﺎﻟﺘﺎﻟﻲ ﻟﻥ ﻴﺴﺘﺠﻴﺏ ﺍﻟﻤﻌﺎﻟﺞ ﺇﻟﻰ ﺃﻱ ﻤﻘﺎﻁﻌـﺔ
ﺨﺎﺭﺠﻴﺔ ﺘﺤﺩﺙ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ (IF) ← 0 :INTR
ﺍﻟﺘﻌﻠﻴﻤﺔ :STIﺘﻀﻊ 1ﻓﻲ ﺭﺍﻴﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ،IFﻭﺒﺎﻟﺘﺎﻟﻲ ﺘﺴﻤﺢ ﻟﻠﻤﻌﺎﻟﺞ ﺒﺎﻻﺴـﺘﺠﺎﺒﺔ ﻟﻤﻘﺎﻁﻌـﺔ
ﺨﺎﺭﺠﻴﺔ ﺘﺤﺩﺙ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ (IF) ← 1 :INTR
ﺍﻟﺘﻌﻠﻴﻤﺔ :CLDﺘﻀﻊ 0ﻓﻲ ﺭﺍﻴﺔ ﺍﻻﺘﺠﺎﻩ ،DFﻤﻤﺎ ﻴﺴﺒﺏ ﻓﻲ ﺯﻴﺎﺩﺓ ﺁﻟﻴﺔ ﻟﻤﺤﺘﻭﻯ ﺍﻟﺴﺠﻠﻴﻥ SI
ﻭ DIﻓﻲ ﺘﻌﻠﻴﻤﺎﺕ ﺴﻼﺴل ﺍﻟﻤﺤﺎﺭﻑ(DF) ← 0 :
ﺍﻟﺘﻌﻠﻴﻤﺔ :STDﺘﻀﻊ 1ﻓﻲ ﺭﺍﻴﺔ ﺍﻻﺘﺠﺎﻩ ،DFﻤﻤﺎ ﻴﺴﺒﺏ ﻓﻲ ﺇﻨﻘﺎﺹ ﺁﻟﻲ ﻟﻤﺤﺘﻭﻯ ﺍﻟـﺴﺠﻠﻴﻥ
SIﻭ DIﻓﻲ ﺘﻌﻠﻴﻤﺎﺕ ﺴﻼﺴل ﺍﻟﻤﺤﺎﺭﻑ(DF) ← 1 :
ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻘﺎﻁﻌﺔ
ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻋﻠﻰ 256ﻤﻘﺎﻁﻌﺔ ﻤﺨﺘﻠﻔﺔ ﻟﻜل ﻤﻨﻬﺎ ﺇﺠﺭﺍﺌﻴﺔ ﺨﺩﻤﺔ ﻤﻘﺎﻁﻌﺔ ﺨـﺎﺹ
ﺒﻬﺎ .ﻴﻤﻜﻥ ﻤﻘﺎﻁﻌﺔ ﺍﻟﻤﻌﺎﻟﺞ ﺇﻤﺎ:
ﺩﺍﺨﻠﻴﹰﺎ ﻋﻨﺩﻤﺎ ﻴﺤﺩﺙ ﻁﻔﺢ ﻓﻲ ﻋﻤﻠﻴﺔ ﺤﺴﺎﺒﻴﺔ ﺃﻭ ﻋﻨﺩ ﻤﺤﺎﻭﻟﺔ ﺍﻟﺘﻘﺴﻴﻡ ﻋﻠﻰ ﺼﻔﺭ.
ﺒﺭﻤﺠﻴﹰﺎ ﻋﻥ ﻁﺭﻴﻕ ﺘﻨﻔﻴﺫ ﺃﺤـﺩ ﺍﻟﺘﻌﻠﻴﻤـﺎﺕ ،INT nnﺃﻭ INTOﺃﻭ ،INT 3ﺤﻴـﺙ xxﺭﻗـﻡ
ﺍﻟﻤﻘﺎﻁﻌﺔ ﻤﻥ 00hﺇﻟﻰ .FFh
ﺃﻭ ﺨﺎﺭﺠﻴﹰﺎ ﻋﺒﺭ ﺒﻌﺽ ﻤﻐﺎﺭﺯ ﺍﻟﻤﻌﺎﻟﺞ.
ﺴﻨﻬﺘﻡ ﻓﻲ ﻫﺫﺍ ﺍﻟﻔﺼل ﺒﺎﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﺒﺭﻤﺠﻴﺔ INTOﻭ ،INT nnﻭﺴﻨﺸﺭﺡ ﻋﻠﻰ ﻨﺤﻭ ﺘﻔﺼﻴﻠﻲ
ﻓﻲ ﺍﻟﻔﺼل ﺍﻟﺴﺎﺩﺱ ﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺍﻟﻤﺨﺘﻠﻔﺔ.
:INTOﺘﹸﻨﻔﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻤﻘﺎﻁﻌﺔ ﺇﺫﺍ ﻨﺘﺞ ﻁﻔﺢ overflowﺨﻼل ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺴﺎﺒﻘﺔ.
:INT nnﻴﻤﻜﻥ ﺒﺎﻟﺘﻌﻠﻴﻤﺔ INT nnﺘﻭﻟﻴﺩ 256ﻤﻘﺎﻁﻌﺔ ﻤﺨﺘﻠﻔﺔ ،ﻟﻜل ﻤﻨﻬﺎ ﺒﺭﻨﺎﻤﺞ ﺨﺩﻤـﺔ ﻤﻘﺎﻁﻌـﺔ
ﺨﺎﺹ ﺒﻬﺎ.
ﺘﹸﺴﺘﺨﺩﻡ ﺘﻌﻠﻴﻤﺔ INT nnﻓﻲ ﺍﻟﺤﺎﺴﻭﺏ ﻋﻠﻰ ﻨﺤﻭ ﺭﺌﻴﺱ ﻻﺴﺘﺩﻋﺎﺀ ﺍﻹﺠﺭﺍﺌﻴﺎﺕ ﺍﻟﺘﻲ ﻴﺯﻭﺩﻨـﺎ ﺒﻬـﺎ
29
ﻨﻅﺎﻡ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﺍﻷﺴﺎﺴﻲ 7 BIOSﻭﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل .8MS-DOSﻴﻤﻜﻥ ﺒﺎﻟﺘﻌﻠﻴﻤﺔ INTﺍﺴﺘﺩﻋﺎﺀ
256ﺇﺠﺭﺍﺌﻴﺔ ﺨﺩﻤﺔ ﻤﺨﺘﻠﻔﺔ ﻓﻘﻁ ،ﻓﻲ ﺤﻴﻥ ﻴﺩﻋﻡ ﻨﻅﺎﻡ MS-DOSﺃﻜﺜﺭ ﻤﻥ 100ﺇﺠﺭﺍﺌﻴﺔ ﻭﻴـﺩﻋﻡ
ﺍﻟـ BIOSﻭﺃﺩﻭﺍﺕ ﺍﻟﻨﻅﺎﻡ ﺍﻷﺨﺭﻯ ﻤﺌﺎﺕ ﺍﻹﺠﺭﺍﺌﻴﺎﺕ ﺍﻷﺨﺭﻯ .ﺤﺠﺯﺕ ﺍﻟﻤﻘﺎﻁﻌـﺎﺕ ،10h-1Ah
ﻓﻲ ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺸﺨﺼﻲ ،ﻻﺴﺘﺩﻋﺎﺀ ﺇﺠﺭﺍﺌﻴﺎﺕ ﺍﻟـ BIOSﻭ ﺍﻟﻤﻘﺎﻁﻌـﺎﺕ 20h-3Fhﻹﺠﺭﺍﺌﻴـﺎﺕ
ﻨﻅﺎﻡ .MS-DOS
ﺘﹸﺨﺩﻡ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻨﻔﺴﻬﺎ ﺃﻜﺜﺭ ﻤﻥ ﻭﻅﻴﻔﺔ )ﺘﺎﺒﻊ ،ﻤﻬﻤﺔ( ،ﻭﻴﺠﺭﻱ ﺘﻌﻴﻴﻥ ﺃﺤﺩ ﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﻤـﻥ ﺨـﻼل
ﺍﻟﻌﺩﺩ ﺍﻟﺫﻱ ﻴﻤﺭﺭ ﺇﻟﻰ ﺇﺠﺭﺍﺌﻴﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻋﺒﺭ ﺍﻟﺴﺠل .AXﻜﻤﺎ ﺘﺘﻁﻠﺏ ﺒﻌﺽ ﺍﻹﺠﺭﺍﺌﻴﺎﺕ ﻤﻭﺴﻁﺎﺕ
parametersﻴﺠﺭﻱ ﺘﻤﺭﻴﺭﻫﺎ ﺇﻟﻰ ﺍﻹﺠﺭﺍﺌﻴﺎﺕ ﻋﺒﺭ ﺒﻌﺽ ﺴﺠﻼﺕ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺩﺍﺨﻠﻴﺔ.
ﻨﺒﻴﻥ ﻓﻴﻤﺎ ﻴﻠﻲ ﺃﻤﺜﻠﺔ ﻻﺴﺘﺩﻋﺎﺀ ﺒﻌﺽ ﻤﻘﺎﻁﻌﺎﺕ ﻨﻅﺎﻡ MS-DOSﻭ BIOSﻟﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺎﺕ :ﺇﺩﺨـﺎل
ﻤﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ،ﻭﺇﻅﻬﺎﺭ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ.
ﺃﻤﺜﻠﺔ:
ﺇﺩﺨﺎل ﻤﺤﺭﻑ ﻤﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ:
ﻴﺴﺘﺩﻋﻰ ﻫﺫﺍ ﺍﻟﺘﺎﺒﻊ ﺒﺎﻟﻤﻘﺎﻁﻌﺔ INT 21hﺒﻌﺩ ﻭﻀﻊ 01hﻓﻲ .AXﻴﺠﺭﻱ ﺇﻅﻬﺎﺭ ﺍﻟﻤﺤﺭﻑ ﺍﻟ ﻤﺩْﺨل
ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ ﻭﻭﻀﻌﻪ ﻓﻲ .AL
ﻤﺜﺎل:
MOV AH, 01h
INT 21h
MOV character, AL ;Save readed character.
ﻜﻤﺎ ﻴﻤﻜﻨﻨﺎ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺘﻭﺍﺒﻊ BIOSﻗﺭﺍﺀﺓ ﻤﺤﺭﻑ ﻤﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﻭﻭﻀـﻌﻪ ﻓـﻲ ،ALﻭﺫﻟـﻙ
ﺒﺎﺴﺘﺩﻋﺎﺀ ﺍﻟﻤﻘﺎﻁﻌﺔ 16hﺒﻌﺩ ﻭﻀﻊ 0ﻓﻲ .AH
MOV AH, 0 ;Wait for key available, and then
INT 16h ; read that key.
MOV character, al ;Save readed character.
8ﳐﺘﺼﺮ .Microsoft Disk Operating System :ﻧﻈﺎ ﻡ ﺗﺸﻐﻴ ٍﻞ ﳌﻬﻤ ٍﺔ ﻭﺍﺣﺪﺓ ﻭِﻟﻤﺴﺘﺨ ِﺪ ٍﻡ ﻭﺍﺣﺪ ﻣﻊ ﻭﺍﺟﻬ ِﺔ ﺃﻭﺍﻣﺮ
ﺕ
ﺳﻄﺮﻳﺔ ،ﺃﹸﳒﺰ ﻋﺎﻡ 1981ﳊﻮﺍﺳﻴﺐ IBMﻭﺍﳌﺘﻮﺍﻓﻘﺔ ﻣﻌﻬﺎ .ﺇﻥ ﻧﻈﺎﻡ MS-DOSﻛﻐﲑﻩ ﻣﻦ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ ﻳﺪﻳ ﺮ ﻋﻤﻠﻴﺎ ٍ
ﺧﺎﺭﺟﻴﺔ ،ﻣﺜﻞ :ﺩﺧﻞ ﻭﺧﺮﺝ ﺍﻟﻘﺮﺹ ،ﻭﺗﻘﺒﻞ ﺍﻟﻔﻴﺪﻳﻮ ،ﻭﺍﻟﺘﺤﻜﹼﻢ ﰲ ﻟﻮﺣﺔ ﺍﳌﻔﺎﺗﻴﺢ ،ﺇﺿﺎﻓ ﹰﺔ ﺇﱃ ﻋﺪﺩ ﻣﻦ ﺍﻟﻮﻇﺎﺋﻒ ﺍﻟﺪﺍﺧﻠﻴﺔ
ﺗﺘﻌﻠﻖ ﺑﺘﻨﻔﻴﺬ ﺍﻟﱪﻧﺎﻣﺞ ﻭﺻﻴﺎﻧﺔ ﺍﳌﻠﻒ.
30
ﺇﻅﻬﺎﺭ ﻤﺤﺭﻑ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ :ﻴﺴﺘﺩﻋﻰ ﻫﺫﺍ ﺍﻟﺘﺎﺒﻊ ﺒﺎﻟﻤﻘﺎﻁﻌﺔ INT 10hﺒﻌﺩ ﻭﻀﻊ 0Ehﻓﻲ .AX
ﻴﺠﺭﻱ ﻭﻀﻊ ﺍﻟﻤﺤﺭﻑ ﺍﻟﻤﺭﺍﺩ ﺇﻅﻬﺎﺭﻩ ﻓﻲ ،ALﻭ ﻴﺤﺩﺩ BHﺼﻔﺤﺔ ﺍﻟﻔﻴﺩﻴﻭ ﻭ BLﻟﻭﻥ ﺍﻟﺨﻠﻔﻴﺔ.
ﻤﺜﺎل:
MOV AH, 0Eh ;character display function
MOV AL, 41h '; specify ASCII character 'A
MOV BH, 00h ; set to page 0
MOV BL, 00h ; set colour
INT 10h ; perform interupt
ﺇﺩﺨﺎل ﺴﻠﺴﺔ ﻤﺤﺎﺭﻑ ﻤﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ :ﻴﺴﺘﺩﻋﻰ ﻫﺫﺍ ﺍﻟﺘﺎﺒﻊ ﺒﺎﻟﻤﻘﺎﻁﻌﺔ INT 21hﺒﻌﺩ ﻭﻀـﻊ
0Ahﻓﻲ .AHﻴﺤﺘﻭﻱ DXﻋﻠﻰ ﺍﻨﺯﻴﺎﺡ ﻋﻨﻭﺍﻥ ﺴﻠﺴﺔ ﺍﻟﻤﺤﺎﺭﻑ ﻋﻥ ﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ .DS
ﻤﺜﺎل:
ﺣﺠﺰ ﺑﺎﻳﺖ ﻳﻀﻊ ﻓﻴﻪ ﺗﺎﺑﻊ ﺣﺠﺰ 6ﺑﺎﻳﺘﺎت ﻟﺴﻠﺴﺔ اﻟﻤﺤﺎرف
اﻟﻌﺪد اﻷآﺒﺮ ﻟﻠﻤﺤﺎرف اﻹدﺧﺎل ﻋﺪد اﻟﺒﺎﻳﺘﺎت اﻟﻤُﺪﺧﻠﺔ اﻟﻤﺮاد إدﺧﺎﻟﻬﺎ وﺿﻊ اﻟﺒﺎﻳﺖ FFh
اﻟﻤﺴﻤﻮح إدﺧﺎﻟﻬﺎ ﻓﻲ آﻞ ﻣﻨﻬﺎ
ﺒﻔﺭﺽ ﺃﻨﻨﺎ ﺃﺩﺨﻠﻨﺎ ﺴﻠﺴﺔ ﺍﻟﻤﺤﺎﺭﻑ USAﺜﻡ > <enterﻓﺈﻥ ﺴﻠـﺴﻠﺔ ﺍﻟﻤﺤـﺎﺭﻑ DATAﺴـﻭﻑ
ﺘﺤﺘﻭﻱ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ:
ﺗﺮﻣﻴﺰ ascii
ﻋﺪد اﻟﻤﺤﺎرف اﻟﻌﺪد اﻷآﺒﺮ ﻟﻠﻤﺤﺎرف ﻟـ USA
اﻟﻤﺴﻤﻮح إدﺧﺎﻟﻬﺎ اﻟﻤُﺪﺧﻠﺔ ﺗﺮﻣﻴﺰ ascii
ﻟـ return
ﺇﺨﺭﺍﺝ ﺴﻠﺴﺔ ﻤﺤﺎﺭﻑ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ :ﻴﺴﺘﺩﻋﻰ ﻫﺫﺍ ﺍﻟﺘﺎﺒﻊ ﺒﺎﻟﻤﻘﺎﻁﻌﺔ INT 21hﺒﻌﺩ ﻭﻀﻊ 09hﻓﻲ
.AXﻴﺤﺘﻭﻱ DXﻋﻠﻰ ﺍﻨﺯﻴﺎﺡ ﻋﻨﻭﺍﻥ ﺴﻠﺴﺔ ﺍﻟﻤﺤﺎﺭﻑ ﻋﻥ ﺒﺩﺍﻴﺔ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ .DS
ﻤﺜﺎل:
ﺳﻠﺴﺔ اﻟﻤﺤﺎرف ﺗﺮﻣﻴﺰ ascii ﺗﺮﻣﻴﺰ ascii
اﻟﻤُﺮاد إﺧﺮاﺟﻬﺎ ﻟـ line feed ﻟـcarriage return
31
ﻴﺠﺏ ﺸﺤﻥ AHﺒـ 4Chﺜﹸﻡ ﻁﻠﺏ ﺍﻟﻤﻘﺎﻁﻌﺔ 21hﻹﻨﻬﺎﺀ ﺒﺭﻨﺎﻤﺞ ﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ﺍﻟﻤﺠﻤـﻊ ﻭِﺇﻋـﺎﺩﺓ
ﺍﻟﺴﻴﻁﺭﺓ ﺇﻟﻰ ﻨﻅﺎﻡ .MS-DOS
ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ LOOPE/LOOPZ
ﺇﻥ ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ LOOPZﻭ LOOPEﻤﺘﻜﺎﻓﺌﺘﺎﻥ .ﹸﺘﻨﻘﺹ ﻜﻠﺘﺎ ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ ﻤﺤﺘﻭﻯ CXﺒﻭﺍﺤﺩ ﻭﺘﻘﻔـﺯ
ﺇﻟﻰ ﺍﻟﻤﻭﻗﻊ ﺍﻟﻤﺤﺩﺩ ﺒﺎﻟﺘﻌﻠﻴﻤﺔ ﺇﺫﺍ ﻜﺎﻨﺕ :ﻗﻴﻤﺔ CXﻻ ﺘﺴﺎﻭﻱ ﺍﻟﺼﻔﺭ ﺒﻌﺩ ﻋﻤﻠﻴـﺔ ﺍﻹﻨﻘـﺎﺹ ﻭ ZF
ﺘﺴﺎﻭﻱ .1ﻴﺠﺏ ﺃﻥ ﻴﻘﻊ ﻤﻜﺎﻥ ﺍﻟﻘﻔﺯ ﻀﻤﻥ -128ﻭ +127ﺒﺎﻴـﺕ ﻋـﻥ ﺍﻟﺘﻌﻠﻴﻤـﺔ LOOPZﺃﻭ
.LOOPE
ﻫﺎﺘﺎﻥ ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ ﻤﻔﻴﺩﺍﻥ ﻓﻲ ﺘﻜﺭﺍﺭ ﺤﻠﻘﺔ ﻋﺩﺩ ﻤﻥ ﺍﻟﻤﺭﺍﺕ ﻁﺎﻟﻤﺎ ﺒﻘﻴﺕ ﻗﻴﻤﺔ ﻤﺘﺤﻭل ﻤﺎ ﻤﺨﺘﻠﻔﺔ ﻋﻥ
)ﻻ ﺘﺴﺎﻭﻱ( ﻗﻴﻤﺔ ﻤﻌﻴﻨﺔ.
ﻤﺜﺎل :ﺒﻔﺭﺽ ﺃﻥ ﻋﺩﺩ ﻋﻨﺎﺼﺭ ﺍﻟﻤﺼﻔﻭﻓﺔ Arrayﻫﻭ ،16ﻓﺈﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﺘﻘﻭﻡ ﺒﺎﻟﺒﺤﺙ ﻋـﻥ
ﺃﻭل ﻋﻨﺼﺭ ﻓﻲ ﺍﻟﻤﺼﻔﻭﻓﺔ Arrayﻻ ﻴﺴﺎﻭﻱ ﺍﻟﺼﻔﺭ.
32
ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ LOOPNE/LOOPNZ
ﺇﻥ ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ LOOPNZﻭ LOOPNEﺃﻴﻀ ﹰﺎ ﻤﺘﻜﺎﻓﺌﺘﺎﻥ .ﺘﹸﻨﻘﺹ ﻜﻠﺘـﺎ ﺍﻟﺘﻌﻠﻴﻤﺘـﺎﻥ ﻤﺤﺘـﻭﻯ CX
ﺒﻭﺍﺤﺩ ﻭﺘﻘﻔﺯ ﺇﻟﻰ ﺍﻟﻤﻭﻗﻊ ﺍﻟﻤﺤﺩﺩ ﺒﺎﻟﺘﻌﻠﻴﻤﺔ :ﺇﺫﺍ ﻜﺎﻨﺕ ﻗﻴﻤﺔ CXﻻ ﺘﺴﺎﻭﻱ ﺍﻟـﺼﻔﺭ ﺒﻌـﺩ ﻋﻤﻠﻴـﺔ
ﺍﻹﻨﻘﺎﺹ ﻭ ZFﺘﺴﺎﻭﻱ .0ﻴﺠﺏ ﺃﻥ ﻴﻘﻊ ﻤﻜﺎﻥ ﺍﻟﻘﻔﺯ ﻀﻤﻥ -128ﻭ +127ﺒﺎﻴﺕ ﻋـﻥ ﺍﻟﺘﻌﻠﻴﻤـﺔ
LOOPNZﺃﻭ .LOOPE
ﻫﺎﺘﺎﻥ ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ ﻤﻔﻴﺩﺍﻥ ﻓﻲ ﺘﻜﺭﺍﺭ ﺤﻠﻘﺔ ﻋﺩﺩﹰﺍ ﻤﻥ ﺍﻟﻤﺭﺍﺕ ﺒﺎﻨﺘﻅﺎﺭ ﺃﻥ ﻴﺘﺤﻘﻕ ﺸﺭﻁ ﺁﺨﺭ.
ﻤﺜﺎل :ﺒﻔﺭﺽ ﺃﻥ ﻋﺩﺩ ﻋﻨﺎﺼﺭ ﺍﻟﻤﺼﻔﻭﻓﺔ Arrayﻫﻭ ،16ﻓﺈﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﺘﻘﻭﻡ ﺒﺎﻟﺒﺤﺙ ﻓـﻲ
ﺍﻟﻤﺼﻔﻭﻓﺔ ﻋﻥ ﺃﻭل ﻋﻨﺼﺭ ﻴﺴﺎﻭﻱ .0h
ﺍﻟﺘﻌﻠﻴﻤﺔ JCXZ
ﺘﻘﻔﺯ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﻟﻰ ﺍﻟﻤﻭﻗﻊ ﺍﻟﻤﺸﺎﺭ ﺇﻟﻴﻪ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺫﺍ ﻜﺎﻨﺕ ﻗﻴﻤﺔ CXﻻ ﺘﺴﺎﻭﻱ .0ﻴﻤﻜـﻥ ﺃﻥ
ﺘﺴﺘﺨﺩﻡ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻟﻔﺤﺹ ﻓﻴﻤﺎ ﺇﺫﺍ ﻜﺎﻥ .[CX]=0ﻜﻤﺎ ﺘﺴﺘﺨﺩﻡ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻗﺒل ﺒﺩﺍﻴـﺔ ﺍﻟﺤﻠﻘـﺔ
ﻟﻤﻨﻊ ﺍﻟﺩﺨﻭل ﻓﻲ ﺍﻟﺤﻠﻘﺔ ﺇﺫﺍ ﻜﺎﻥ .[CX]=0
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﺒﺤﺙ ﻋﻥ ﺍﻟﻌﻼﻤﺔ ﺍﻷﻋﻅﻡ ﻤﻥ ﺒﻴﻥ 5ﻋﻼﻤﺎﺕ ﻤﺨﺯﻨﺔ ﻓﻲ ﺍﻟـﺫﺍﻜﺭﺓ،
ﺍﻜﺘﺏ ﺍﻟﻨﺘﻴﺠﺔ ﻓﻲ .DL
ﺍﻟﺠﻭﺍﺏ:
; DATA DB 51, 44, 99, 88, 80
MOV CX,5 ;set up loop counter
MOV BX, OFFSET DATA ;BX points to GRADE data
SUB AL,AL ;AL holds highest grade found so far
]AGAIN: CMP AL,[BX ;compare next grade to highest
JA NEXT ;jump if AL still highest
]MOV AL,[BX ;else AL holds new highest
NEXT:INC BX ;point to next grade
LOOP AGAIN ;continue search
MOV DL, AL
ﺘﻌﻠﻴﻤﺎﺕ ﺩﺨل/ﺨﺭﺝ
ﺘﺴﻤﺢ ﺍﻟﺘﻌﻠﻴﻤﺘﺎﻥ INﻭ OUTﺒﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻴﻥ ALﺃﻭ AXﻤﻊ ﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ ﺘﻘـﻊ ﻓـﻲ
ﻓﻀﺎﺀ ﻋﻨﻭﻨﺔ ﺒﻭﺍﺒﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ .8088/8086
33
ﺘﻘﺭﺃ ﺍﻟﺘﻌﻠﻴﻤﺔ INﺍﻟﻘﻴﻤﺔ ﻋﻠﻰ ﻤﺩﺨل ﺒﻭﺍﺒﺔ ﻭﺘﻀﻌﻬﺎ ﻓﻲ ﺍﻟﻤﺭﺍﻜﻡ ،ﻓﻲ ﺤﻴﻥ ﺘﻀﻊ ﺃﻭ ﺘﹸﺨﺭﺝ ﺍﻟﺘﻌﻠﻴﻤـﺔ
OUTﻤﺤﺘﻭﻯ ﺍﻟﻤﺭﺍﻜﻡ ﻋﻠﻰ ﻤﺨﺭﺝ ﺒﻭﺍﺒﺔ .ﻴﻤﻜﻥ ﻋﻨﻭﻨﺔ ﺍﻟﺒﻭﺍﺒﺎﺕ ،ﺍﻟﻭﺍﻗﻌﺔ ﻓﻲ ﻓﻀﺎﺀ ﻋﻨﻭﻨﺔ ﺒﻭﺍﺒﺎﺕ
ﺍﻟﻤﻌﺎﻟﺞ ،8088/8086ﺒﻁﺭﻴﻘﺔ ﻤﺒﺎﺸﺭﺓ ﺃﻭ ﻏﻴﺭ ﻤﺒﺎﺸﺭﺓ.
ﻋﻨﻭﻨﺔ ﻤﺒﺎﺸـﺭﺓ :ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺘﺤﺘﻭﻱ ﺘﻌﻠﻴﻤﺔ INﻭ OUTﻋﻠﻰ ﺭﻗﻡ ﺍﻟﺒﻭﺍﺒﺔ ﺍﻟﺫﻱ ﻴﺘﺭﺍﻭﺡ ﺒﻴﻥ 0
ﻭ .255ﺇﺫﺍ ﺠﺭﻯ ﺘﻌﻴﻴﻥ ALﻜﻤﻌﺎﻤل ﻭﺠﻬﺔ ﻓﺈﻨﻪ ﻴﺠﺭﻱ ﺘﺒﺎﺩل ﺒﺎﻴﺕ ﺒﻴﻥ ALﻭﺍﻟﺒﻭﺍﺒﺔ .ﻭﺇﺫﺍ ﺠﺭﻯ
ﺘﻌﻴﻴﻥ AXﻜﻤﻌﺎﻤل ﻭﺠﻬﺔ ﻓﺈﻨﻪ ﻴﺠﺭﻱ ﺘﺒﺎﺩل ﻜﻠﻤﺔ ﺒﻴﻥ AXﻭﺍﻟﺒﻭﺍﺒﺔ
ﻤﺜـﺎل :ﺇﺫﺍ ﻋﻠﻤﺕ ﺃﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ keyboardﻟﻠﺤﺎﺴﻭﺏ ﺍﻟﺸﺨﺼﻲ ﻤﻭﺼﻭﻟﺔ ﻋﻠﻰ ﺍﻟﺒﻭﺍﺒـﺔ ﺫﺍﺕ
ﺍﻟﺭﻗﻡ 60hﻓﻴﻤﻜﻨﻙ ﻗﺭﺍﺀﺓ ﻫﺫﻩ ﺍﻟﺒﻭﺍﺒﺔ ﻜﻤﺎ ﻴﻠﻲ:
IN AL, 60h
ﻋﻨﻭﻨﺔ ﻏﻴﺭ ﻤﺒﺎﺸﺭﺓ :ﻴﻤﻜﻥ ﻟﻠﻤﻌﺎﻟﺞ 8088/8086ﺃﻥ ﻴﻌﻨﻭﻥ ﺤﺘﻰ 64ﻜﻴﻠﻭ ﺒﻭﺍﺒﺔ ﺩﺨل/ﺨﺭﺝ ﻁﻭل
ﻜل ﻤﻨﻬﺎ 1ﺒﺎﻴﺕ ﺃﻭ 32ﻜﻴﻠﻭ ﺒﻭﺍﺒﺔ ﺩﺨل/ﺨﺭﺝ ﻁﻭل ﻜل ﻤﻨﻬﺎ 2ﺒﺎﻴﺕ .ﻭﻟﻌﻨﻭﻨـﺔ ﻜﺎﻤـل ﻓـﻀﺎﺀ
ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺨﺭﺝ ﻴﺠﺭﻱ ﻭﻀﻊ ﺭﻗﻡ ﺍﻟﺒﻭﺍﺒﺔ ﻓﻲ ﺍﻟﺴﺠل DXﻭﻤﻥ ﺜﻡ ﹸﺘﻌﻨﻭﻥ ﺍﻟﺒﻭﺍﺒﺔ ﻋﻠـﻰ ﻨﺤـﻭ
ﻏﻴﺭ ﻤﺒﺎﺸﺭ.
ﻤﺜﺎل :ﺇﺫﺍ ﻋﻠﻤﺕ ﺃﻥ ﻋﻨﻭﺍﻥ ﺍﻟﺒﻭﺍﺒﺔ ﺍﻟﺘﻔﺭﻋﻴﺔ LTP1ﻟﻠﺤﺎﺴﻭﺏ ﺍﻟﺸﺨﺼﻲ ﻫﻭ 378hﻓﻴﻤﻜﻨﻙ ﻗﺭﺍﺀﺓ
ﻫﺫﻩ ﺍﻟﺒﻭﺍﺒﺔ ﻜﻤﺎ ﻴﻠﻲ:
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺍﻜﺘﺏ ﺘﻌﻠﻴﻤﺎﺕ ﹸﺘﺨﺭﺝ ﻤﻭﺠﺔ ﻤﺭﺒﻌﺔ ﻋﻠﻰ ﺍﻟﺒﺕ ﺍﻟﺜﺎﻨﻴﺔ ﻤﻥ ﺍﻟﺒﻭﺍﺒﺔ ﺍﻟﺘﻔﺭﻋﻴﺔ.
ﺍﻟﺠﻭﺍﺏ:
34
ﻤﻘﺎﺭﻨﺔ ﺴﻠﺴﻠﺘﻲ ﻤﺤﺎﺭﻑ
ﺍﻟﺒﺤﺙ ﻋﻥ ﻗﻴﻤﺔ ﻓﻲ ﺴﻠﺴﻠﺔ ﻤﺤﺎﺭﻑ
ﻜﻤﺎ ﺘﹶﻀﻡ ﺘﻌﻠﻴﻤﺎﺕ ﹸﺘﻤﻜﻨﻨﺎ ﻤﻥ ﻨﻘل ﻋﻨﺎﺼﺭ ﺴﻠﺴﻠﺔ ﻤﺤﺎﺭﻑ ﻤﻥ ﺍﻟﻤﺭﺍﻜﻡ ﻭﺇﻟﻴﻪ.
ﻴﻤﻜﻥ ﺃﻥ ﺘﺤﺘﻭﻱ ﺘﻌﻠﻴﻤﺎﺕ ﺴﻼﺴل ﺍﻟﻤﺤﺎﺭﻑ ﻋﻠﻰ ﻤﻌﺎﻤل ﻤﺼﺩﺭ ﺃﻭ ﻤﻌﺎﻤـل ﻭﺠﻬـﺔ ﺃﻭ ﻜﻠﻴﻬﻤـﺎ.
ﻭﺘﻔﺘﺭﺽ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺃﻥ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻴﻘﻊ ﻓﻲ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺤﺎﻟﻲ ،9 DS ،ﻭﺃﻥ ﻤﻌﺎﻤل
ﺍﻟﻭﺠﻬﺔ ﻴﻘﻊ ﻓﻲ ﻤﻘﺘﻁﻊ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻹﻀﺎﻓﻲ .ES ،ﺘﻔﺘﺭﺽ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺃﻴـﻀﹰﺎ ﺃﻥ SIﻴﻌﻨـﻭﻥ
ﺍﻟﻌﻨﺼﺭ ﺍﻟﺤﺎﻟﻲ ﻤﻥ ﺴﻠﺴﻠﺔ ﻤﺤﺎﺭﻑ ﺍﻟﻤﺼﺩﺭ ،ﻭﻴﻌﻨﻭﻥ DIﺍﻟﻌﻨﺼﺭ ﺍﻟﺤﺎﻟﻲ ﻤﻥ ﺴﻠـﺴﻠﺔ ﻤﺤـﺎﺭﻑ
ﺍﻟﻭﺠﻬﺔ.
ﺘﹸﺤ ﺩﺙ ﺘﻌﻠﻴﻤﺎﺕ ﺴﻼﺴل ﺍﻟﻤﺤﺎﺭﻑ ﻤﺤﺘﻭﻯ SIﻭ/ﺃﻭ DIﻟﻴﺅﺸﺭﻭﺍ ﺇﻟﻰ ﺍﻟﻌﻨﺼﺭ ﺍﻟﺘﺎﻟﻲ ﻤﻥ ﺴﻼﺴـل
ﺍﻟﻤﺤﺎﺭﻑ ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﻜل ﺘﻌﻠﻴﻤﺔ .ﻓﻲ ﺤﺎل ﻜﺎﻥ ،DF=0ﻓﺈﻨﻪ ﻴﺠﺭﻱ ﺯﻴﺎﺩﺓ SIﻭ DIﺒﻭﺍﺤﺩ )ﺇﺫﺍ ﻜﺎﻥ
ﻁﻭل ﻋﻨﺼﺭ ﻤﻥ ﺍﻟﺴﻠﺴﻠﺔ ﻴﺴﺎﻭﻱ ﺒﺎﻴﺕ( ﺃﻭ ﺒﺎﺜﻨﻴﻥ )ﺇﺫﺍ ﻜﺎﻥ ﻁﻭل ﻋﻨﺼﺭ ﻤﻥ ﺍﻟﺴﻠـﺴﻠﺔ ﻴـﺴﺎﻭﻱ
ﻜﻠﻤﺔ( ،ﺘﺼﺒﺢ ﻋﻤﻠﻴﺔ ﺍﻟﺯﻴﺎﺩﺓ ﺇﻨﻘﺎﺼﹰﺎ ﺇﺫﺍ ﻜﺎﻥ .DF=1
ﺍﻟﺘﻌﻠﻴﻤﺔ CMPS
ﺘﻁﺭﺡ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻋﻨﺼﺭ ﺍﻟﻭﺠﻬﺔ ﺍﻟﻤﻌﻨﻭﻥ ﺒـ SIﻤﻥ ﻋﻨﺼﺭ ﺍﻟﻤﺼﺩﺭ ﺍﻟﻤﻌﻨﻭﻥ ﺒــ ،DIﻜﻤـﺎ
ﹸﺘﺤ ّﺩﺙ ﺍﻟﺘﻌﻠﻴﻤﺔ SIﻭ DIﻟﻴﺅﺸﺭﻭﺍ ﺇﻟﻰ ﺍﻟﻌﻨﺼﺭﻴﻥ ﺍﻟﺘﺎﻟﻴﻴﻥ ﻤﻥ ﺍﻟﺴﻠﺴﻠﺘﻴﻥ .ﻻ ﺘﻐﻴﺭ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻤﻥ
ﻤﺤﺘﻭﻯ ﺍﻟﻤﺼﺩﺭ ﺃﻭ ﺍﻟﻭﺠﻬﺔ ﻭﺇﻨﻤﺎ ﹸﺘﺤﺩﺙ ﻓﻘﻁ ﺤﺎﻟﺔ ﺍﻟﺭﺍﻴﺎﺕ ﺘﺒﻌﹰﺎ ﻟﻠﻌﻼﻗﺔ ﺒـﻴﻥ ﻋﻨـﺼﺭ ﺍﻟﻤـﺼﺩﺭ
ﻭﻋﻨﺼﺭ ﺍﻟﻭﺠﻬﺔ .ﻴﻤﻜﻥ ﺃﻥ ﻴﻜﻭﻥ ﻁﻭل ﻜل ﻤﻥ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﻭﺍﻟﻭﺠﻬﺔ ﺒﺎﻴﺕ ﺃﻭ ﻜﻠﻤﺔ.
ﺍﻟﺘﻌﻠﻴﻤﺔ SCAS
ﺘﻁﺭﺡ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻋﻨﺼﺭ ﺍﻟﻭﺠﻬﺔ ﺍﻟﻤﻌﻨﻭﻥ ﺒـ DIﻤﻥ ﻤﺤﺘﻭﻯ ﺍﻟﻤﺭﺍﻜﻡ ،ﻭ ﹸﺘﺤـ ّﺩﺙ ﺍﻟﺘﻌﻠﻴﻤـﺔ DI
ﻟﻴﺅﺸﺭ ﺇﻟﻰ ﻋﻨﺼﺭ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﺘﺎﻟﻲ .ﻻ ﺘﻐﻴﻴﺭ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﻤﻥ ﻤﺤﺘﻭﻯ ﺍﻟﻭﺠﻬﺔ ﺃﻭ ﺍﻟﻤـﺭﺍﻜﻡ ﻭﺇﻨﻤـﺎ
35
ﹸﺘﺤ ّﺩﺙ ﻓﻘﻁ ﺤﺎﻟﺔ ﺍﻟﺭﺍﻴﺎﺕ ﺘﺒﻌ ﹰﺎ ﻟﻠﻌﻼﻗﺔ ﺒﻴﻥ ﻋﻨﺼﺭ ﺍﻟﻤﺼﺩﺭ ﻭﺍﻟﻤﺭﺍﻜﻡ .ﻴﺠﺭﻱ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﺭﺍﻜﻡ AL
ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﻁﻭل ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ 1ﺒﺎﻴﺕ ،ﻭ AXﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﻁﻭل ﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ 2ﺒﺎﻴﺕ.
ﺍﻟﺘﻌﻠﻴﻤﺔ LODS
ﺘﻨﺴﺦ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺒﺎﻴﺘﹰﺎ ﺃﻭ ﻜﻠﻤﺔ ﻤﻌﻨﻭﻨﺔ ﺒـ SIﺇﻟﻰ ALﺃﻭ ،AXﻭ ﹸﺘﺤ ّﺩﺙ SIﻟﻴﺅﺸﺭ ﺇﻟﻰ ﺍﻟﻌﻨﺼﺭ
ﺍﻟﺘﺎﻟﻲ ﻤﻥ ﺍﻟﺴﻠﺴﻠﺔ.
ﺍﻟﺘﻌﻠﻴﻤﺔ STOS
ﺘﻨﺴﺦ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺒﺎﻴﺘﹰﺎ ﺃﻭ ﻜﻠﻤﺔ ﻤﻥ ALﺃﻭ AXﺇﻟﻰ ﺍﻟﻌﻨﺼﺭ ﻤﻥ ﺴﻠـﺴﻠﺔ ﺍﻟﻤﺤـﺎﺭﻑ ﺍﻟﻤﻌﻨـﻭﻥ
ﺒـ ،SIﻜﻤﺎ ﹸﺘﺤ ﺩﺙ SIﻟﻴﺅﺸﺭ ﺇﻟﻰ ﺍﻟﻌﻨﺼﺭ ﺍﻟﺘﺎﻟﻲ ﻤﻥ ﺍﻟﺴﻠﺴﻠﺔ.
36
."J" " ﺒﺎﻟﻤﺤﺭﻑG" " ﻭﻴﺴﺘﻌﻴﺽ ﻋﻥ ﻜلMr.Gohns" ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﻘﺭﺃ ﺍﻻﺴﻡ:ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ
:ﺍﻟﺠﻭﺍﺏ
Data1 db 'Mr.Gones','$'
.code
MOV ES,DS
CLD ;set auto increment bit D=0
MOV DI, offset Data1
MOV CX,09 ; number of chars to be scanned
MOV AL,'G' ; char to be compared against
REPNE SCASB ; start scan AL =? ES[DI]
JNE Over ; if Z=0
DEC DI ; Z=1
MOV byte ptr[DI], 'J'
Over: MOV AH,09
MOV DX, offset Data1
INT 21h ; display the resulting String
37
ﺘﻤﺎﺭﻴﻥ:
ﺃﻭ ﹰﻻ :ﺃﺠﺏ ﺒـ ﺼﺢ ﺃﻭ ﺨﻁﺄ
-1ﻴﺤﻭل ﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺠﻤﻊ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻤﻜﺘﻭﺒﹰﺎ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﺇﻟﻰ ﺭﻤﺎﺯ ﺒﻠﻐﺔ ﺍﻵﻟﺔ.
-2ﻴﻭﻟﺩ ﺒﺭﻨﺎﻤﺞ ﺍﻟﺭﺍﺒﻁ ﻤﻠﻔﹰﺎ ﺘﻨﻔﻴﺫﻴﹰﺎ.
-3ﺇﻥ ﻻﺤﻘﺔ ﺍﻟﻤﻠﻑ ﺍﻟﺘﻨﻔﻴﺫﻱ ﻫﻲ ﺩﻭﻤﹰﺎ .exe
-4ﻴﺠﺏ ﺃﻥ ﺘﺤﺘﻭﻱ ﻜل ﺘﻌﻠﻴﻤﺔ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻋﻠﻰ ﻟﺼﺎﻗﺔ.
-5ﺘﺘﻀﻤﻥ ﻜل ﺘﻌﻠﻴﻤﺔ ﺒﻠﻐﺔ ﺍﻟﺘﺠﻤﻴﻊ ﻋﻠﻰ ﻤﻌﺎﻤل ﻭﺍﺤﺩ ﻋﻠﻰ ﺍﻷﻗل.
-6ﻴﻤﻜﻥ ﺘﻌﺭﻴﻑ ﺜﺎﺒﺕ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﻭﺠﻪ .EQU
-7ﻴﺴﺘﺨﺩﻡ ﺍﻟﻤﻭﺠﻪ DWﻟﻠﺘﺼﺭﻴﺢ ﻋﻥ ﻤﺘﺤﻭل ﺒﻁﻭل 2ﺒﺎﻴﺕ.
.K DB -8ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺘﺎﻟﻴﺔ ﺼﺤﻴﺤﺔ 126Fh
-9ﻴﺠﺏ ﺃﻥ ﻴﺒﺩﺃ ﻜل ﻤﻠﻑ ﺘﻨﻔﻴﺫﻱ ﺫﻭ ﺍﻟﻼﺤﻘﺔ exeﻋﻨﺩ ﺍﻟﻤﻭﻗﻊ 100hﻤﻥ ﻤﻘﺘﻁﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ.
-10ﻴﻤﻜﻥ ﺃﻥ ﻴﻜﻭﻥ ﺤﺠﻡ ﺍﻟﻤﻌﻁﻴﺎﺕ < 64ﻜﻴﻠﻭﺒﺎﻴﺕ ﻓﻲ ﻨﻤﻭﺫﺝ ﺍﻟﺫﺍﻜﺭﺓ .SMALL
-11ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﻨﻤﻭﺫﺝ ﺍﻟﺫﺍﻜﺭﺓ TINYﻓﺈﻥ ﺒﺭﻨﺎﻤﺞ ﺍﻟﺭﺍﺒﻁ ﻴﻭﻟﺩ ﺒﺭﻨﺎﻤﺠﹰﺎ ﺘﻨﻔﻴﺫﻴﹰﺎ ﻻﺤﻘﺘﻪ .com
-12ﻴﻤﻜﻥ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺔ MOVﺇﺴﻨﺎﺩ ﻗﻴﻤﺔ ﺇﻟﻰ ﺍﻟﺴﺠل .IP
-13ﻻ ﺘﻐ ّﻴﺭ ﺍﻟﺘﻌﻠﻴﻤﺔ MOVﻤﻥ ﺤﺎﻟﺔ ﺴﺠل ﺍﻟﺭﺍﻴﺔ.
-14ﻻ ﺘﻐ ّﻴﺭ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﻤﻥ ﺤﺎﻟﺔ ﺴﺠل ﺍﻟﺭﺍﻴﺔ.
-15ﺘﹸﻘﺴﻡ ﺍﻟﺘﻌﻠﻴﻤﺔ DIVﺍﻟﺴﺠل AHﻋﻠﻰ ﻤﻌﺎﻤل ﺍﻟﻤﺼﺩﺭ ﺍﻟﻤﺤﺩﺩ ﺒﺎﻟﺘﻌﻠﻴﻤﺔ.
-16ﺘﹸﻨﻘﺹ ﺍﻟﺘﻌﻠﻴﻤﺔ INCﻤﻌﺎﻤل ﺍﻟﻭﺠﻬﺔ ﺒﻤﻘﺩﺍﺭ .1
-17ﻴﺠﺭﻱ ﻓﻲ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔﺯ ﺘﺨﺯﻴﻥ CSﻭ IPﻓﻲ ﺍﻟﻤﻜﺩﺱ.
-18ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻋﻠﻰ 256ﻤﻘﺎﻁﻌﺔ ﺒﺭﻤﺠﻴﺔ.
38
-6ﺍﻜﺘﺏ ﺘﻌﻠﻴﻤﺎﺕ ﺘﺠﻤﻊ DL ،CL ،BL ،ALﻭ ،AHﻭﺘﻀﻊ ﺍﻟﻨﺎﺘﺞ ﻓﻲ .DH
-7ﻤﺎ ﻫﻭ ﺍﻟﺨﻁﺄ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤﺔ ]INC [BX؟
-8ﺃﻴﻥ ﻴﺠﺭﻱ ﺘﺨﺯﻴﻥ ﻨﺎﺘﺞ ﺠﺩﺍﺀ ﻜﻠﻤﺘﻴﻥ؟
-9ﻤﺎ ﻫﻭ ﺍﻟﻔﺭﻕ ﺒﻴﻥ ﺍﻟﺘﻌﻠﻴﻤﺘﻴﻥ MULﻭ IMUL؟
-10ﺍﻜﺘﺏ ﺘﻌﻠﻴﻤﺔ ﺘﻀﻊ ﺃﺼﻔﺎﺭﹰﺍ ﻓﻲ ﺍﻟﺒﺘﺎﺕ ﺍﻟﺜﻼﺜﺔ ﺍﻟﻌﻠﻴﺎ ﻤﻥ BHﺩﻭﻥ ﺃﻥ ﺘﺅﺜﺭ ﻋﻠﻰ ﺤﺎﻟﺔ ﺍﻟﺒﺘـﺎﺕ
ﺍﻟﺒﺎﻗﻴﺔ ؟
-11ﻤﺎ ﻫﻭ ﻤﺤﺘﻭﻯ ﺍﻟﺴﺠﻠﻴﻥ AXﻭ DXﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ:
MOV AL, 0A1h
CBW
CWD
-12ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﻘﺭﺃ ﻋﻠﻰ ﺍﻷﻜﺜﺭ 20ﻤﺤﺭﻓﹰﺎ ﻤﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﻭﻴﺨﺯﻨﻬﺎ ﻓﻲ ﻤﺼﻔﻭﻓﺔ ،ﺘﻨﺘﻬـﻲ
ﻋﻤﻠﻴﺔ ﺍﻹﺩﺨﺎل ﺒﺈﺩﺨﺎل ﻤﻔﺘﺎﺡ ﺍﻟﻌﻭﺩﺓ ﺇﻟﻰ ﺒﺩﺍﻴﺔ ﺍﻟﺴﻁﺭ .carriage return
-13ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﻁﺭﺡ ﺍﻟﻌﺩﺩ Yﻤﻥ Xﺤﻴﺙ ﻁﻭل ﻜل ﻤﻨﻬﻤﺎ 32ﺒﺕ .ﺒﻔﺭﺽ ﺃﻥ Xﺨﹸﺯﻥ ﻓـﻲ
ﻤﻭﺍﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ (DS:203h)(DS:202h)(DS:201h)(DS:200h) :ﻭ Yﻓﻲ ﻤﻭﺍﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ:
) .(DS:103h)(DS:102h)(DS:101h)(DS:100hﺨﺯﻥ ﻨﺎﺘﺞ ﺍﻟﻁﺭﺡ ﻓﻲ .X
-14ﺃﻭﺠﺩ ﻨﺎﺘﺞ ﻀﺭﺏ ﺍﻟﻤﺘﺤﻭﻟﻴﻥ DATAXﻭ DATAYﻭﻀﻊ ﺍﻟﻨﺎﺘﺞ ﻓﻲ ﺍﻟﻤﺘﺤـﻭل .RESULT
ﻋﻠﻤﹰﺎ ﺃﻥ ﻁﻭل DATAXﻴﺴﺎﻭﻱ ﺒﺎﻴﺕ ﻭﺍﺤﺩ ،ﻭﻁﻭل DATAYﻴﺴﺎﻭﻱ 2ﺒﺎﻴﺕ.
-15ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﺒﺤﺙ ﻋﻥ ﺍﻟﻌﻼﻤﺔ ﺍﻷﺼﻐﺭ ﻤﻥ ﺒﻴﻥ 5ﻋﻼﻤﺎﺕ ﻤﺨﺯﻨﺔ ﻓﻲ ﺍﻟـﺫﺍﻜﺭﺓ ،ﺍﻜﺘـﺏ
ﺍﻟﻨﺘﻴﺠﺔ ﻓﻲ .DL
-16ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﺠﻤﻊ ﺨﻤﺱ ﻗﻴﻡ ﻤﺨﺯﻨﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻜل ﻤﻨﻬﺎ ﻤﻤﺜل ﻋﻠﻰ ﺒﺎﻴﺕ ،ﻭﻟﺘﻜﻥ ﻫﺫﻩ ﺍﻟﻘﻴﻡ
ﻫﻲ .25,12,15,10,11 :ﺨﺯﻥ ﺍﻟﻨﺎﺘﺞ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ.
39
ﺍﻟﻔﺼل ﺍﻟﺨﺎﻤﺱ
ﺍﻟﺫﻭﺍﻜﺭ ﻭﺍﻟﺴﺠﻼﺕ
ﺘﻤﻬﻴﺩ
ﺍﻟﺫﺍﻜﺭﺓ ﻋﻨﺼﺭ ﺃﺴﺎﺴﻲ ﻓﻲ ﺃﻱ ﻨﻅﺎﻡ ﻤﻌﺎﻟﺠﺔ ،ﻴﺴﺘﺨﺩﻡ ﻟﺘﺨﺯﻴﻥ ﺘﻌﻠﻴﻤﺎﺕ ﻭﻤﻌﻁﻴﺎﺕ ﺍﻟﺒﺭﻨـﺎﻤﺞ ﻓـﻲ
ﺍﻟﻨﻅﺎﻡ ﺍﻟﺼﻐﺭﻱ .ﻴﻤﻜﻨﻨﺎ ﹶﺘﻘﺴﻴﻡ ﺍﻟﺫﻭﺍﻜﺭ ﺇﻟﻰ ﻤﺠﻤﻭﻋﺘﻴﻥ ﺃﺴﺎﺴﻴﺘﻴﻥ :ﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘـﻁ ﻭﺫﻭﺍﻜـﺭ
ﻟﻠﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ .ﺘﹸﺴﺘﺨﺩﻡ ﺍﻟﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ ﻟﺘﺨﺯﻴﻥ ﺒﺭﻨﺎﻤﺢ ﻭ/ﺃﻭ ﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﻨﺤﻭ ﻤـﺴﺘﺩﻴﻡ،
ﺒﻴﻨﻤﺎ ﺘﹸﺴﺘﺨﺩﻡ ﺍﻟﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ ﻟﺘﺨﺯﻴﻥ ﺍﻟﺒﺭﻨﺎﻤﺢ ﻭ/ﺃﻭ ﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﻨﺤﻭ ﻤﺅﻗﺕ.
ﺘﺘﻜﻭﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻥ ﻤﺠﻤﻭﻋﺔ ﺴﺠﻼﺕ ،ﻭﻴﻤﻜﻨﻨﺎ ﺍﻨﺘﺨﺎﺏ ﺃﺤﺩ ﻫﺫﻩ ﺍﻟﺴﺠﻼﺕ ﻤﻥ ﺨﻼل ﺃﻋﺩﺍﺩ ﺇﺜﻨﺎﻨﻴﺔ،
ﺘﹸﺴﻤﻰ ﻋﻨﺎﻭﻴﻥ ﺍﻟﺫﺍﻜﺭﺓ .memory addressesﻴﺨﺘﻠﻑ ﻁﻭل ﺍﻟﺴﺠل ﻤﻥ ﺫﺍﻜـﺭﺓ ﺇﻟـﻰ ﺃﺨـﺭﻯ،
ﻭﻨﹸﺴﻤﻲ ﻋﺩﺩ ﺍﻟﺒﺘﺎﺕ ﺍﻟﻤﻤﻜﻥ ﺘﺨﺯﻴﻨﻬﺎ ﻓﻲ ﺍﻟﺴﺠل ﺍﻟﻭﺍﺤﺩ ﺒﻜﻠﻤﺔ ﺍﻟﺫﺍﻜﺭﺓ .memory wordﻴﺨﺘﻠـﻑ
ﻋﺩﺩ ﺍﻟﺴﺠﻼﺕ ﻓﻲ ﺍﻟﺫﻭﺍﻜﺭ ﺃﻴﻀﹰﺎ ﻤﻥ ﺫﺍﻜﺭﺓ ﺇﻟﻰ ﺃﺨﺭﻯ ،ﻭﺘﺘﻭﺍﻓﺭ ﻓﻲ ﺍﻷﺴـﻭﺍﻕ ﺭﻗﺎﻗـﺎﺕ ﺫﻭﺍﻜـﺭ
ﺒﺄﺤﺠﺎﻡ ﻤﺨﺘﻠﻔﺔ ﻤﻥ ﺍﻟﻜﻠﻤﺎﺕ ﺘﺘﺭﺍﻭﺡ ﻤﻥ ﻋﺩﺓ ﺒﺎﻴﺘﺎﺕ ﺇﻟﻰ ﻋﺩﺓ ﻤﺌﺎﺕ ﻤﻴﻐﺎﺒﺎﻴﺘﺎﺕ.
ﹸﺘﻭﺼل ﺍﻟﺫﻭﺍﻜﺭ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ ﻋﺒﺭ ﻤﺴﺭﻯ ﺍﻟﻨﻅﺎﻡ ،ﺍﻟﺫﻱ ﻴﺘﻀﻤﻥ ﻤﺴﺭﻯ ﺍﻟﻌﻨﻭﻨﺔ ﻭﻤﺴﺭﻯ ﺍﻟﻤﻌﻁﻴﺎﺕ
ﻭﻤﺴﺭﻯ ﺍﻟﺘﺤﻜﻡ .ﻴﺴﺘﺨﺩﻡ ﻤﺴﺭﻯ ﺍﻟﻌﻨﻭﻨﺔ ﻻﻨﺘﺨﺎﺏ ﺃﺤﺩ ﻤﻭﺍﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ ،ﻭﻤﺴﺭﻯ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻟﺘﻤﺭﻴﺭ
ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻴﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻭﺍﻟﻤﻌﺎﻟﺞ ،ﺃﻤﺎ ﺍﻹﺸﺎﺭﺍﺕ ﻋﻠﻰ ﻤﺴﺭﻯ ﺍﻟﺘﺤﻜﻡ ﻓﺘﺴﺘﺨﺩﻡ ﻟﻤﺯﺍﻤﻨـﺔ ﻋﻤﻠﻴـﺎﺕ
ﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻜﻤﺎ ﻴﺤﺩﺩ ﻫﺫﺍ ﺍﻟﻤﺴﺭﻯ ﺍﺘﺠﺎﻩ ﺤﺭﻜﺔ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻴﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻭﺍﻟﺫﺍﻜﺭﺓ.
1
ﺒﻨﻴﺎﻥ ﺍﻟﺫﻭﺍﻜﺭ
ﻋﻨﺼﺭ ﺘﺨﺯﻴﻥ
ﺍﻟﺫﺍﻜﺭﺓ ﻫﻲ ﺩﺍﺭﺓ ﻤﺘﻜﺎﻤﻠﺔ ﻗﺎﺩﺭﺓ ﻋﻠﻰ ﺘﹸﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻻﺜﻨﺎﻨﻴﺔ .ﻴﺠﺭﻱ ،ﻓﻲ ﺍﻟـﺫﺍﻜﺭﺓ ،ﺘﺨـﺯﻴﻥ
2
ﺍﻟﻭﺍﺤﺩ ﺍﻟﻤﻨﻁﻘﻲ ﻜﻔﻠﻁﻴﺔ ﻋﺎﻟﻴﺔ 1ﻭﺍﻟﺼﻔﺭ ﺍﻟﻤﻨﻁﻘﻲ ﻜﻔﻠﻁﻴﺔ ﻤﻨﺨﻔﻀﺔ.
ﺇﻥ ﺍﻟﻌﻨﺼﺭ ﺍﻷﺴﺎﺴﻲ ﺍﻟﺫﻱ ﻴﺩﺨل ﻓﻲ ﺘﻜﻭﻴﻥ ﺍﻟﺫﻭﺍﻜﺭ ﻫـﻭ ﺍﻟﻘـﻼﺏ flip-flopﺃﻭ ﺍﻟﻤﺎﺴـﻙ .latch
ﻴﺴﺘﻁﻴﻊ ﺍﻟﻘﻼﺏ ﻤﺴﻙ ﺃﻭ ﺘﺨﺯﻴﻥ ﺒﺕ ﻭﺍﺤﺩﺓ ﻤﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻴﺠﺭﻱ ﻭﺼل ﺒﺕ ﺍﻟﻤﻌﻁﻴﺎﺕ Dinﺇﻟـﻰ
ﻤﺩﺨل ﺍﻟﻘﻼﺏ Dﻭﺇﺸﺎﺭﺓ ﺍﻟﺘﺄﻫﻴل 3ENﺍﻟﺨﺎﺭﺠﻴﺔ ﺇﻟﻰ ﺍﻟﻤﺩﺨل ) ENﺃﻭ (Clkﻟﻠﻘﻼﺏ ،ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ
ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ:
)ﺍﻟﺘﻲ ﻴﻭﻟﺩﻫﺎ ﺍﻟﻤﻌﺎﻟﺞ ﺃﻴﻀﹰﺎ( ،ﻭﻴﺠﺏ ﺘﻔﻌﻴل ﺍﻹﺸﺎﺭﺓ RD ﺍﻟﺤﺎﻻﺕ ﺁﺨﺭ ،ﻴﺘﺤﻜﻡ ﺒﻌﻤﻠﻪ ﺇﺸﺎﺭﺓ ﺍﻟﻘﺭﺍﺀﺓ
ﻋﻨﺩ ﻗﺭﺍﺀﺓ ﺍﻟﺒﺕ ﻋﻠﻰ ﻤﺨﺭﺝ ﺍﻟﻘﻼﺏ. RD
ﺍﻟﺴﺠﻼﺕ
2
ﻴﻤﻜﻨﻨﺎ ﺘﺨﺯﻴﻥ ﺒﺕ ﻭﺍﺤﺩﺓ ﻓﻘﻁ ﻓﻲ ﺍﻟﻘﻼﺏ ،ﺍﻟﺫﻱ ﻨﹸﺴﻤﻴﻪ ﺃﻴﻀﹰﺎ ﺨﻠﻴﺔ ﺫﺍﻜﺭﺓ .memory cellﻴﻤﻜﻨﻨـﺎ
ﺒﻭﻀﻊ ﺃﺭﺒﻊ ﺨﻼﻴﺎ ،ﻜﻤﺎ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ،ﺒﻨﺎﺀ ﺴﺠل ﺒﻁﻭل 4ﺒﺕ.
ﻨﻜﺘﺏ ﺤﺠﻡ ﻫﺫﺍ ﺍﻟﺴﺠل ﺇﻤﺎ 4-bitﺃﻭ ،1× 4-bitﻭﺍﻟﺫﻱ ﻴﻌﻨﻲ ﺴﺠل ﻭﺍﺤﺩ ﺒﻁﻭل 4ﺒﺘـﺎﺕ .ﻴﺒـﻴﻥ
ﺍﻟﺸﻜل ﻤﺨﻁﻁ ﺼﻨﺩﻭﻗﻲ ﻤﺒﺴﻁ ﻟﻬﺫﺍ ﺍﻟﺴﺠل.
ﺒﻨﻴﺔ ﺍﻟﺫﺍﻜﺭﺓ
ﺘﺘﻜﻭﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻥ ﻋﺩﺓ ﺴﺠﻼﺕ ،ﻭﻴﺤﺩﺩ ﻁﻭل ﻫﺫﻩ ﺍﻟﺴﺠﻼﺕ ﻁﻭل ﻜﻠﻤﺔ ﺍﻟﺫﺍﻜﺭﺓ .ﻴﺒـﻴﻥ ﺍﻟـﺸﻜل
ﺍﻟﺘﺎﻟﻲ ﺃﺭﺒﻊ ﺴﺠﻼﺕ ﻤﻭﻀﻭﻋﺔ ﻋﻠﻰ ﺍﻟﺘﺘﺎﻟﻲ ﻁﻭل ﻜل ﻤﻨﻬﺎ 8ﺒﺕ .ﻨﺤﺘﺎﺝ ﻋﻨﺩ ﺍﻟﻜﺘﺎﺒﺔ ﺃﻭ ﺍﻟﻘـﺭﺍﺀﺓ
ﻤﻥ ﺃﺤﺩ ﻫﺫﻩ ﺍﻟﺴﺠﻼﺕ ﺇﻟﻰ ﺍﺨﺘﻴﺎﺭ ﺃﻭ ﺘﺄﻫﻴل ﺫﻟﻙ ﺍﻟﺴﺠل .ﻴﻤﻜﻨﻨﺎ ﺘﺄﻫﻴل ﺃﺤﺩ ﺍﻟـﺴﺠﻼﺕ ﺒﺎﺴـﺘﺨﺩﺍﻡ
ﻤﻔﻜﻙ ﺘﺭﻤﻴﺯ 2 decoderﺇﻟﻰ .(2-to-4) 4ﻨﺤﺘـﺎﺝ
ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺇﻟﻰ ﻤـﺩﺨﻠﻴﻥ ﺇﻀـﺎﻓﻴﻴﻥ A0ﻭ ،A1
ﻴﺅﺨﺫﺍﻥ ﻤﻥ ﺨﻁﻭﻁ ﻋﻨﻭﻨﺔ address linesﺍﻟﻤﻌﺎﻟﺞ.
ﹸﺘﺸﻜل ﻗﻴﻤﺔ A0ﻭ A1ﺃﺭﺒﻊ ﺜﻨﺎﺌﻴـﺎﺕ ﻤﺨﺘﻠﻔـﺔ،00 :
10 ،01ﻭ ،11ﺘﹸﺤﺩﺩ ﺃﻭ ﺘﻌﻨﻭﻥ ﻜـل ﺘـﺸﻜﻴﻠﺔ ﺃﺤـﺩ
ﺍﻟـﺴﺠﻼﺕ register 0 :ﺇﻟـﻰ .register 3ﺠـﺭﻯ
ﺍﻻﺴﺘﻌﺎﻀﺔ ،ﻓﻲ ﺍﻟﺸﻜل ،ﻋـﻥ ENﺒـﺎﻟﺨﻁﻴﻥ A0ﻭ
.A1
3
ﻋﻨﺩ ﺯﻴﺎﺩﺓ ﻋﺩﺩ ﺍﻟﺴﺠﻼﺕ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺴﺎﺒﻕ ﺇﻟﻰ 8ﻓﺈﻨﻨﺎ ﻨﺼﺒﺢ ﺒﺤﺎﺠﺔ ﺇﻟﻰ 3ﺨﻁﻭﻁ ﻋﻨﻭﻨﺔ ﻟﻌﻨﻭﻨﺔ
ﺃﻱ ﺴﺠل ﺃﻭ ﻤﻭﻗﻊ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ .ﻭﻋﻠﻰ ﻨﺤﻭ ﻋﺎﻡ ﻴﻠﺯﻤﻨﺎ log 2 Lﺨﻁ ﻋﻨﻭﻨﺔ ﻓﻲ ﺤﺎﻟﺔ ﺫﺍﻜﺭﺓ ﺘﻀﻡ L
ﻼ.
ﺴﺠ ﹰ
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﻤﺎ ﻫﻭ ﻋﺩﺩ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﻼﺯﻤﺔ ﻟﻌﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺒﺤﺠﻡ 1024ﺒﺎﻴﺕ؟
ﺍﻟﺤل. log 2 1024 = 10 :
ﻻ ﻨﻤﻁﻴﹰﺎ ﻋﻥ ﺫﺍﻜﺭﺓ ﻟﻠﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ )ﺘﺴﻤﻰ ﺃﻴﻀﹰﺎ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺤﻴـﺔ( ﻭﻋﻠـﻰ
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻤﺜﺎ ﹰ
ﺍﻟﻤﻐﺎﺭﺯ ﺍﻟﺘﻲ ﺘﺘﻀﻤﻨﻬﺎ .ﺘﻀﻡ ﻤﻐﺎﺭﺯ ﺍﻟﺫﺍﻜﺭﺓ ،62256ﺍﻟﺘﻲ ﻴﺒﻠﻎ ﺤﺠﻤﻬﺎ 32K × 8ﺒﺕ ،ﺨﻁـﻭﻁ
ﺍﻟﻌﻨﻭﻨﺔ ﻭﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﺇﺸﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻡ ﺍﻟﺘﺎﻟﻴﺔ:
4
ﻤـﻥ ﺍﻟﻤﻌـﺎﻟﺞ ،ﻭﻴـﺴﺘﺨﺩﻡ WR ﻤُﺩﺨل ﺍﻟﻜﺘﺎﺒﺔ : WRﻴﻭﺼل ﻫﺫﺍ ﺍﻟﻤﺩﺨل ﺇﻟﻰ ﺇﺸﺎﺭﺓ ﺍﻟﻜﺘﺎﺒﺔ
ﻟﻜﺘﺎﺒﺔ ﺃﻭ ﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻓﻲ ﺍﻟﻤﻭﻗﻊ ﺍﻟﻤﺤﺩﺩ ﺒﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ.
ﺨﻁﻭﻁ ﺍﻟﺘﻐﺫﻴﺔ :ﻴﺤﺘﺎﺝ ﻋﻤل ﺃﻱ ﺫﺍﻜﺭﺓ ﺇﻟﻰ ﺘﻁﺒﻴﻕ ﹸﻓﻠﻁﻴﺔ ﻤﻭﺠﺒﺔ ﺒﻴﻥ ﻤﺩﺨل ﺍﻷﺭﻀـﻲ GND
ﻭﻤﺩﺨل ﺍﻟﺘﻐﺫﻴﺔ .VCC
ﺘﺨﺘﻠﻑ ﻤﻐﺎﺭﺯ ﺍﻟﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ )ﺃﻭ ﺍﻟﻤﻴﺘﺔ( ،ﻨﻭﻋﹰﺎ ﻤﺎ ،ﻋﻥ ﻤﻐﺎﺭﺯ ﺍﻟﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒـﺔ.
ﻓﺒﻴﻨﻤﺎ ﻻ ﺘﺤﺘﻭﻱ ﺍﻟﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ ﻋﻠﻰ ﻤﺩﺨل ﺍﻟﻜﺘﺎﺒﺔ ، WRﻓﺈﻥ ﺍﻟﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ ﻭﺍﻟﻘﺎﺒﻠـﺔ
ﻹﻋﺎﺩﺓ ﺍﻟﺒﺭﻤﺠﺔ ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﻤﺩﺨل ﺁﺨﺭ ﻭﻫﻭ .PGMﻴﺠﺭﻱ ﺘﻁﺒﻴﻕ ﻓﻠﻁﻴﺔ ﻤﻨﺎﺴـﺏ ﻋﻠـﻰ ﻫـﺫﺍ
ﺍﻟﻤﺩﺨل ﻋﻨﺩ ﺒﺭﻤﺠﺔ ﺍﻟﺫﺍﻜﺭﺓ .ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺘﻭﺯﻉ ﻤﻐﺎﺭﺯ ﺍﻟﺫﺍﻜﺭﺓ 2716ﻭﺍﻟﺘﻲ ﺘﺒﻠـﻎ ﺴـﻌﺘﻬﺎ
2K × 8ﺒﺕ.
2716 ﻣﻐﺎﺭﺯ ﺍﻟﺬﺍﻛﺮﺓ
ﺃﻨﻭﺍﻉ ﺍﻟﺫﻭﺍﻜﺭ
ﻴﻤﻜﻥ ﺘﺼﻨﻴﻑ ﺍﻟﺫﻭﺍﻜﺭ ﻋﻠﻰ ﻨﺤـﻭ ﺭﺌـﻴﺱ ﺇﻟـﻰ ﻤﺠﻤـﻭﻋﺘﻴﻥ ﺃﺴﺎﺴـﻴﺘﻴﻥ :ﺍﻟـﺫﻭﺍﻜﺭ ﺍﻟﺭﺌﻴـﺴﺔ
prime memoryﻭﺫﻭﺍﻜﺭ ﺍﻟﺘﺨﺯﻴﻥ .storage memoryﹸﺘﻌﺘﺒﺭ ﺍﻟﺫﻭﺍﻜﺭ ) RAMﻟﻠﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ(
ﻭ ) ROMﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ( ﺃﻤﺜﻠﺔ ﻋﻥ ﺍﻟﺫﻭﺍﻜﺭ ﺍﻟﺭﺌﻴﺴﺔ ﻓﻲ ﺍﻟﻨﻅﺎﻡ .ﻴﺴﺘﺨﺩﻡ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟـﺫﻭﺍﻜﺭ ﻟﻠﻘـﺭﺍﺀﺓ
ﻓﻘﻁ ﻟﺘﺨﺯﻴﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﺍﻟﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ ﻟﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﺅﻗﺘﺔ ،ﺨﻼل ﻤﺭﺤﻠﺔ
ﻑ ﻭﻤﺘﻭﺍﻓﻘﺔ ﻤﻊ ﺴـﺭﻋﺔ ﻋﻤـل
ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ .ﻴﺠﺏ ﺃﻥ ﺘﻜﻭﻥ ﻫﺫﻩ ﺍﻟﺫﻭﺍﻜﺭ ﺴﺭﻴﻌﺔ ﻋﻠﻰ ﻨﺤﻭ ﻜﺎ ٍ
ﺍﻟﻤﻌﺎﻟﺞ .ﻭﺒﺎﻟﺘﺎﻟﻲ ﻴﺠﺏ ﺃﻥ ﺘﻜﻭﻥ ﻤـﻥ ﺍﻟـﻨﻤﻁ ﺫﺍﺕ ﺍﻟﻭﺼـﻭل ﺍﻟﻌـﺸﻭﺍﺌﻲ Random Access
memory؛ ﺃﻱ ﻴﻤﻜﻥ ﻟﻠﻤﻌﺎﻟﺞ ﺃﻥ ﻴﺼل ﺃﻭ ﻴ ﹾﻨ ﹶﻔﺫ ﺇﻟﻰ ﻤﻌﻁﻴﺎﺕ ﺃﻱ ﺴﺠل ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺒﺎﻟﺴﺭﻋﺔ ﻨﻔﺴﻬﺎ
)ﺒﻐﺽ ﺍﻟﻨﻅﺭ ﻋﻥ ﺘﺭﺘﻴﺏ ﻤﻭﻗﻌﻬﺎ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ(.
ﹸﺘﺴﺘﺨﺩﻡ ﺫﻭﺍﻜﺭ ﺍﻟﺘﺨﺯﻴﻥ ﻟﺤﻔﻅ ﺍﻟﺒﺭﺍﻤﺞ ﻭﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻌﺩ ﺍﻻﻨﺘﻬﺎﺀ ﻤﻥ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﻨﺫﻜﺭ ﻜﺄﻤﺜﻠـﺔ
ﻋﻠﻰ ﻫﺫﻩ ﺍﻟﺫﻭﺍﻜﺭ :ﺍﻟﺴﻭﺍﻗﺎﺕ disksﻭﺍﻟﺸﺭﺍﺌﻁ ﺍﻟﻤﻐﻨﺎﻁﻴﺴﻴﺔ .magnetic tapesﹸﺘﻌﺘﺒﺭ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ
ﺍﻟﻤﺨﺯﻨﺔ ﻓﻲ ﻫﺫﻩ ﺍﻟﺫﻭﺍﻜﺭ ﻻﻤﺘﻼﺸﻴﺔ nonvolatile؛ ﺃﻱ ﺘﺒﻘﻰ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻤﺨﺯﻨﺔ ﻓﻲ ﺍﻟﺫﻭﺍﻜﺭ ﺤﺘـﻰ
5
ﺒﻌﺩ ﻓﺼل ﺘﻐﺫﻴﺔ ﺍﻟﻨﻅﺎﻡ turn offﻋﻨﻬﺎ .ﻨﻅﺭﹰﺍ ﻟﻠﺴﺭﻋﺎﺕ ﺍﻟﻤﻨﺨﻔﻀﺔ ﻟﻬﺫﻩ ﺍﻟـﺫﻭﺍﻜﺭ ﻓـﻼ ﻴـﺴﺘﻁﻴﻊ
ﺍﻟﻤﻌﺎﻟﺞ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻤﺨﺯﻨﺔ ﻓﻴﻬﺎ ﻤﺒﺎﺸﺭﺓ ،ﻟﺫﻟﻙ ﻓﻬﻭ ﻴﻨﻔﺫ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻤﺨﺯﻨﺔ ﻋﻠﻰ ﻫﺫﻩ ﺍﻟﺫﻭﺍﻜﺭ ﺒﻌﺩ
ﻨﺴﺨﻬﺎ ﺇﻟﻰ ﺫﻭﺍﻜﺭ ﺤﻴﺔ .RAMﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺼﻨﻔﻴﻥ ﻤﻥ ﺫﻭﺍﻜﺭ ﺍﻟﺘﺨﺯﻴﻥ :ﻭﺴﺎﺌﻁ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴـﺔ
secondary storageﻭﻭﺴﺎﺌﻁ ﺍﻟﺘﺨﺯﻴﻥ ﻟﺤﻔﻅ ﺍﻟﻨﺴﺦ ﺍﻻﺤﺘﻴﺎﻁﻴﺔ .5backup storage
ﺘﺘﻀﻤﻥ ﻭﺴﺎﺌﻁ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ ﻭﺍﻻﺤﺘﻴﺎﻁﻴـﺔ ﺘﺠﻬﻴـﺯﺍﺕ ﻤﺜـل ﺍﻟـﺴﻭﺍﻗﺎﺕ ،disksﺍﻟـﺸﺭﺍﺌﻁ
6
7
ﺍﻟﻤﻐﻨﺎﻁﻴﺴﻴﺔ ،ﺍﻟـﺫﺍﻜﺭﺓ ﺍﻟﻔﻘﺎﻋﻴـﺔ ،bubble memoryﻭ ﻋﻨـﺼﺭ ﻗـﺭﻥ ﺸِـﺤﻨﻲ charge-
) .coupled device (CCDﺘﺘﻤﻴﺯ ﻫﺫﻩ ﺍﻟﻭﺴﺎﺌﻁ ﺒﻜﻭﻨﻬﺎ ﻭﺍﺴﻌﺔ ﺍﻟﺤﺠﻡ ،ﺭﺨﻴﺼﺔ ﺍﻟﺜﻤﻥ ،ﻭﻟﻜـﻥ
ﺴﺭﻋﺔ ﺍﻟ ﹶﻨﻔﺎﺫ ﺇﻟﻴﻬﺎ ﺒﻁﻴﺌﺔ.
ﻻ ﻋﻠﻰ
ﻑ ﺍﻟﻀﻭﺌﻲ ﻓﻲ ﺍﻟ ﹶﻜﻤِﺭﺍﺕ ﺍﻟﺭﻗﻤﻴﺔ ،ﻭﺍﻟﻌﺩﻴﺩ ﻤﻥ ﹶﻜﻤِﺭﺍﺕ ﺍﻟﻔﻴﺩﻴﻭ ﻤﺜﺎ ﹰ
ل ﺍﻟﻤﻜﻭﻥ ﺍﻟﺘﺎﻟﻲ .ﻭﻴﻌ ﺩ ﻋﻨﺼ ﺭ ﺍﻟﻜﺸ ِ
ﺍﻟﻤﻜﻭﻨﺎﺕ ،ﺩﺨ َ
ﻋﻨﺎﺼﺭ ﺍﻟﻘﺭﻥ ﺍﻟﺸﺤﻨﻲ.
6
ﺇﻥ ﻁﺭﻴﻘﺔ ﺍﻟﻨﻔﺎﺫ ﺇﻟﻰ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻲ ﺍﻟﺴﻭﺍﻗﺎﺕ ﻫﻲ ﻤﻥ ﺍﻟﻨﻤﻁ ﻨﺼﻑ ﺍﻟﻌﺸﻭﺍﺌﻲ ،ﺒﻴﻨﻤﺎ ﻫﻲ ﺘﺴﻠـﺴﻠﻴﺔ
ﻓﻲ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻷﺨﺭﻯ؛ ﺃﻱ ﺇﺫﺍ ﻜﺎﻨﺕ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻤﺨﺯﻨﺔ ﻓﻲ ﻤﻨﺘﺼﻑ ﺍﻟـﺸﺭﻴﻁ ﻓﻴﺠـﺏ ﺘـﺩﻭﻴﺭ
ﺍﻟﺸﺭﻴﻁ ﺇﻟﻰ ﻤﻨﺘﺼﻔﻪ ﻗﺒل ﺍﻟﺘﻤﻜﻥ ﻤﻥ ﺍﻟﻨﻔﺎﺫ ﺇﻟﻰ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ.
7
ﺫﺍﻜﺭﺓ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ ROM
ﺇﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻥ ﻨﻭﻉ ROMﻻﻤﺘﻼﺸﻴﺔ nonvolatile؛ ﺃﻱ ﺘﺴﺘﻤﺭ ﺒﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺤﺘـﻰ ﺒﻌـﺩ
ﻓﺼل ﺘﻐﺫﻴﺔ ﺍﻟﻨﻅﺎﻡ .ﺘﹸﺴﺘﺨﺩﻡ ﺍﻟﺫﻭﺍﻜﺭ ROMﻟﺘﺨﺯﻴﻥ ﺍﻟﺒﺭﺍﻤﺞ ﻭﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘـﻲ ﻻ ﺘﺤﺘـﺎﺝ ﺇﻟـﻰ
ﺘﻐﻴﻴﺭ .ﻭﻜﻤﺎ ﻴﺒﻴﻥ ﺍﺴﻡ ﺍﻟﺫﺍﻜﺭﺓ ﻓﻴﻤﻜﻨﻨﺎ ﻓﻘﻁ ﻗﺭﺍﺀﺓ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ .ﺘﹸﺴﻤﻰ ﺍﻟﺫﻭﺍﻜﺭ ﺍﻟﺘـﻲ ﻻ
ﺘﺴﻤﺢ ﺒﺘﻐﻴﻴﺭ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻤﺨﺯﻨﺔ ﻓﻴﻬﺎ ﺒﺎﻟﻤﺴﺘﺩﻴﻤﺔ ،permanentﻭﺘﺘﻀﻤﻥ ﺍﻟـﺫﻭﺍﻜﺭ ﺍﻟﻤـﺴﺘﺩﻴﻤﺔ
ﺍﻟﺫﻭﺍﻜﺭ ROMﻭ .PROMﻭﺘﹸﺴﻤﻰ ﺍﻟﺫﻭﺍﻜﺭ ﺍﻟﺘﻲ ﺘﺴﻤﺢ ﺒﺘﻐﻴﻴﺭ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻴﻬﺎ ﺒـﺸﺒﻪ ﻤـﺴﺘﺩﻴﻤﺔ
semi-permanentﻭﺘﺘﻀﻤﻥ ﺍﻟﺼﻨﻔﻴﻥ EPROMﻭ ،EEPROMﻜﻤﺎ ﻫﻭ ﻤﺒـﻴﻥ ﻓـﻲ ﺍﻟـﺸﻜل
ﺍﻟﺴﺎﺒﻕ.
ﻴﻤﻜﻥ ﺸﺭﺡ ﺍﻟﻤﻔﻬﻭﻡ ﺍﻟﺭﺌﻴﺱ ﻟﻠﺫﺍﻜﺭﺓ ROMﺒﻭﺍﺴﻁﺔ ﺩﻴﻭﺩﺍﺕ ﻤﺭﺘﺒﺔ ﻋﻠﻰ ﺸﻜل ﻤﺼﻔﻭﻓﺔ ،ﻜﻤﺎ ﻫﻭ
ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ .ﻴﻤﻜﻥ ،ﻓﻲ ﻫﺫﺍ ﺍﻟﺸﻜل ،ﻓﻘﻁ ﻭﺼل ﺍﻟﺨﻁﻭﻁ ﺍﻷﻓﻘﻴﺔ ﻤﻊ ﺍﻟﺨﻁﻭﻁ ﺍﻟﺸﺎﻗﻭﻟﻴﺔ
ﺒﺩﻴﻭﺩﺍﺕ ،ﻭﺘﻜﻭﻥ ﻫﺫﻩ ﺍﻟﺨﻁﻭﻁ ﻏﻴﺭ ﻤﺘﺼﻠﺔ ﻓﻴﻤﺎ ﺒﻴﻨﻬﺎ ﻋﻨﺩﻤﺎ ﺘﺒﺩﻭ ﻤﺘﻘﺎﻁﻌﺔ .ﻴﻤﻜﻥ ﺍﻋﺘﺒﺎﺭ ﺍﻷﺴﻁﺭ
ﺍﻟﺜﻤﺎﻨﻴﺔ ﺍﻷﻓﻘﻴﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻭﻓﺔ ﺴﺠﻼﺕ ﺘﺘﺭﺍﻭﺡ ﻋﻨﺎﻭﻴﻨﻬﺎ ﺒﻴﻥ 000ﻭ .111ﺘﹸﺨﺯﻥ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓـﻲ
ﺍﻟﺩﻴﻭﺩﺍﺕ ﻋﻠﻰ ﺸﻜل ﺃﺼﻔﺎﺭ 0'sﻭﻭﺤﺩﺍﻥ ،1'sﻴﻌﺒﺭ ﻭﺠﻭﺩ ﺍﻟﺩﻴﻭﺩ ﻋﻥ ﺘﺨﺯﻴﻥ 1ﻤﻨﻁﻘﻲ ﻭﻏﻴﺎﺒـﻪ
ﻋﻥ ﺘﺨﺯﻴﻥ 0ﻤﻨﻁﻘﻲ .ﻋﻨﺩ ﻋﻨﻭﻨﺔ ﺃﺤﺩ ﺍﻟﺴﺠﻼﺕ ﺍﻟﺜﻤﺎﻨﻴﺔ ﺘﺼﺒﺢ ﻓﻠﻁﻴﺔ ﺫﻟﻙ ﺍﻟﺨﻁ ﻋﺎﻟﻴﺔ ،ﻤﻤﺎ ﻴﺅﺩﻱ
ﺇﻟﻰ ﻅﻬﻭﺭ ﻓﻠﻁﻴﺔ ﻋﺎﻟﻴﺔ ﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﺨﺭﺝ ﺍﻟﻤﻭﺼﻭﻟﺔ ﺒﺩﻴﻭﺩﺍﺕ .ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ،ﻴﻤﻜﻨﻨﺎ ﻋﻨﺩ
ﻋﻨﻭﻨﺔ ﺍﻟﺴﺠل 111ﻗﺭﺍﺀﺓ ﺍﻟﺒﺎﻴﺕ ) 0111 1000 (78hﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ .D0-D7
8
ﻴﻤﻜﻥ ﺃﻥ ﻨﻤﻴﺯ ،ﻋﻠﻰ ﻨﺤﻭ ﺭﺌﻴﺴﻲ ،ﻨﻭﻋﻴﻥ ﻤﻥ ﺍﻟﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ:
13 12
ﻭ PROM ﺫﻭﺍﻜﺭ ﺘﺒﺭﻤﺞ ﻟﻤﺭﺓ ﻭﺍﺤﺩﺓ ،ﻤﺜل ROM
15 14
ﻭ Flash ـل EE-PROM ، EPROM
ـﺔ ،ﻤﺜـ
ـﺎﺩﺓ ﺍﻟﺒﺭﻤﺠـ
ـﺔ ﻹﻋـ
ـﺭ ﻗﺎﺒﻠـ
ﺫﻭﺍﻜـ
16
Memory
12ﻤﺨﺘﺼﺭ ،Masked ROM :ﺫﺍﻜﺭﺓ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ ﻤﺤﺠﺒﺔ .ﺘﺠﺭﻱ ﻜﺘﺎﺒﺔ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻴﻬﺎ ﺒﻭﺍﺴﻁﺔ ﻋﻤﻠﻴﺎﺕ ﺘﺤﺠﻴﺏ
maskingﻭﻤﻌﺩﻨﺔ .metallizationﺘﻤﺘﻠﻙ ﺍﻟﺸﺭﻜﺎﺕ ﺍﻟﻤﺼﻨﻌﺔ ﻟﻠﺫﻭﺍﻜﺭ ROMﻋﻠﻰ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻀﺭﻭﺭﻴﺔ ﻟﺘﻨﻔﻴﺫ ﻫﺫﻩ
ﺍﻟﻌﻤﻠﻴﺎﺕ ،ﻭﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻤﻜﻠﻔﺔ ﻤﺎﺩﻴﹰﺎ ﻭﺘﺼﺒﺢ ﺍﻗﺘﺼﺎﺩﻴﺔ ﻓﻲ ﺍﻹﻨﺘﺎﺝ ﺍﻟﻜﻤﻲ ﺍﻟﻜﺒﻴﺭ.
ﻤﺨﺘﺼﺭ ،Programmable Read-Only Memory :ﺫﺍﻜﺭﺓ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ ﻗﺎﺒﻠﺔ ﻟﻠﺒﺭﻤﺠﺔ .ﺘﺤﺘﻭﻱ ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﻋﻠﻰ 13
ﺃﺴﻼﻙ ﻨﻴﻜﺭﻭﻥ nichromeﺃﻭ ﺒﻭﻟﻴﺴﻴﻠﻴﻜﻭﻥ polysiliconﻤﻨﻅﻤﺔ ﻋﻠﻰ ﺸﻜل ﻤﺼﻔﻭﻓﺔ؛ ﻴﻤﻜﻥ ﺍﻋﺘﺒﺎﺭ ﻭﻅﻴﻔﺔ ﺍﻷﺴﻼﻙ ﻤﺜل
ﺍﻟﺩﻴﻭﺩﺍﺕ ﺃﻭ ﺍﻟﻔﺎﺼﻤﺎﺕ .fusesﻴﻤﻜﻥ ﻟﻠﻤﺴﺘﺨﺩﻡ ﺒﺭﻤﺠﺔ ﻫﺫﻩ ﺍﻟﺫﻭﺍﻜﺭ ﺒﻭﺍﺴﻁﺔ ﻤﺒﺭﻤﺠﺎﺕ PROMﺨﺎﺼﺔ ﺘﻌﻤل ﻋﻠﻰ ﺤﺭﻕ
burnﺍﻷﺴﻼﻙ ﺘﺒﻌﹰﺎ ﻟﺒﺘﺎﺕ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻤﺭﺍﺩ ﺘﺨﺯﻴﻨﻬﺎ .ﺘﺒﻘﻰ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻤﺴﺘﺩﻴﻤﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺒﻌﺩ ﺒﺭﻤﺠﺘﻬﺎ.
ﻤﺨﺘﺼﺭ ،Erasable Programmable Read-Only Memory :ﺫﺍﻜﺭﺓ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ ﻗﺎﺒﻠﺔ ﻟﻠﺒﺭﻤﺠﺔ ﻭﺍﻟﻤﺤﻲ .ﺘﹸﺨـﺯﻥ 14
ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﺒﺕ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﻁﺭﻴﻕ ﺸﺤﻥ ﺍﻟﺒﻭﺍﺒﺔ ﺍﻟﻌﺎﺌﻤﺔ floating gateﻟﺘﺭﺍﻨﺯﺴﺘﻭﺭ ﺤﻘﻠـﻲ .FETﻴﻤﻜـﻥ ﻟﻠﻤﺒـﺭﻤﺞ
ﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻲ ﺫﺍﻜﺭﺓ EPROMﺒﺎﺴﺘﺨﺩﺍﻡ ﻤﺒﺭﻤﺠﺔ ﺨﺎﺼﺔ .ﻴﻤﻜﻨﻨﺎ ﻤﺤﻭ ﺠﻤﻴﻊ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻋـﻥ ﻁﺭﻴـﻕ
ﺘﹶﻌ ِﺭﻴﺽ ﺭﻗﺎﻗﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺇﻟﻰ ﺃﺸﻌﺔ ﻓﻭﻕ ﺍﻟﺒﻨﻔﺴﺠﻴﺔ ultravioletﻋﺒﺭ ﻨﺎﻓﺫﺘﻬﺎ ﺍﻟﺯﺠﺎﺠﻴﺔ ،ﻭﻴﻤﻜﻨﻨﺎ ﺒﻌﺩ ﺫﻟﻙ ﺇﻋـﺎﺩﺓ ﺘﺨـﺯﻴﻥ ﺃﻭ
ﺒﺭﻤﺠﺔ ﻤﻌﻁﻴﺎﺕ ﺠﺩﻴﺩﺓ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ .ﻭﺒﻤﺎ ﺃﻨﻨﺎ ﻗﺎﺩﺭﻴﻥ ﻋﻠﻰ ﺇﻋﺎﺩﺓ ﺒﺭﻤﺠﺔ ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﻋﺩﺓ ﻤﺭﺍﺕ ﻓﻬﻲ ﻤﻨﺎﺴﺒﺔ ﺒﺸﻜل ﺨـﺎﺹ
ﻟﻼﺴﺘﺨﺩﺍﻡ ﺨﻼل ﻤﺭﺤﻠﺔ ﺘﻁﻭﻴﺭ ﺍﻟﺒﺭﺍﻤﺞ ﻭﺍﻟﺘﺠﻬﻴﺯﺍﺕ .ﻭﻤﻥ ﻤﺴﺎﻭﺉ ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ،ﻨﺫﻜﺭ:
-1ﻀﺭﻭﺭﺓ ﺇﺯﺍﻟﺔ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻥ ﺍﻟﻨﻅﺎﻡ ﻤﻥ ﺃﺠل ﻤﺤﻭﻫﺎ ﻭﺇﻋﺎﺩﺓ ﺒﺭﻤﺠﺘﻬﺎ.
-2ﻀﺭﻭﺭﺓ ﻤﺤﻭ ﻜﺎﻤل ﺍﻟﺫﺍﻜﺭﺓ ﻗﺒل ﺇﻋﺎﺩﺓ ﺒﺭﻤﺠﺘﻬﺎ
-3ﺯﻤﻥ ﻤﺤﻭ ﻜﺒﻴﺭ ،ﺤﻭﺍﻟﻲ 15ﺩﻗﻴﻘﺔ.
ﻤﺨﺘﺼﺭ ،Electrical Erasable PROM :ﺫﺍﻜﺭﺓ PROMﻗﺎﺒﻠﺔ ﻟﻠﻤﺤﻭ ﻜﻬﺭﺒﺎﺌﻴﹰﺎ .ﻴﺸﺒِﻪ ﻋﻤل ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﻋﻤل ﺫﺍﻜﺭﺓ 15
،EPROMﻭﻴﻜﻤﻥ ﺍﻟﻔﺭﻕ ﺍﻟﺭﺌﻴﺱ ﺒﻴﻨﻬﻤﺎ ﺒﺈﻤﻜﺎﻥ ﺘﻐﻴﻴﺭ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻲ ﺃﻱ ﺴﺠل ﺒﻭﺍﺴﻁﺔ ﺇﺸﺎﺭﺍﺕ ﻜﻬﺭﺒﺎﺌﻴﺔ ،ﻋﻭﻀـﹰﺎ ﻋـﻥ
ﻀﺭﻭﺭﺓ ﻤﺤﻭ ﻜﺎﻤل ﺍﻟﺫﺍﻜﺭﺓ ﻓﻲ .EPROMﻴﺴﻤﺢ ﺍﺴﺘﺨﺩﺍﻡ EE-PROMﺒﺘﺤﺩﻴﺙ ﺒﺭﺍﻤﺞ ﻨﻅﻡ ﺘﻘﻊ ﻓﻲ ﺃﻤﺎﻜﻥ ﺒﻌﻴﺩﺓ ،ﻋﺒـﺭ
ﺍﻟﺨﻁﻭﻁ ﺍﻟﻬﺎﺘﻔﻴﺔ ،ﺒﺎﺴﺘﺨﺩﺍﻡ ﺤﺎﺴﻭﺏ ﻤﺭﻜﺯﻱ .ﻴﻤﻜﻥ ﻤﺤﻭ ﻜﺎﻤل ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻲ ﺫﺍﻜﺭﺓ EE-PROMﺨﻼل ﺯﻤﻥ ﺼﻐﻴﺭ ﻤﻥ
ﺭﺘﺒﺔ 10ﻤﻠﻲ ﺜﺎﻨﻴﺔ .ﺇﻥ ﻜﻠﻔﺔ ﺘﺼﻨﻴﻊ ﺫﺍﻜﺭﺓ EE-PROMﺃﻋﻠﻰ ﻤﻥ ﻜﻠﻔﺔ ﺘﺼﻨﻴﻊ ﺫﺍﻜـﺭﺓ EPROMﻭﺍﻟـﺫﺍﻜﺭﺓ ﺍﻟﻭﻤـﻀﻴﺔ
.Flash memory
ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻭﻤﻀﻴﺔ :Flash Memoryﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﻨﺴﺨﺔ ﻤﻌﺩﻟﺔ ﻋﻥ EE-PROMﻭﻫﻲ ﺃﻜﺜﺭ ﺍﻨﺘـﺸﺎﺭﹰﺍ ﻤﻨﻬـﺎ .ﻴﻜﻤـﻥ 16
ﺍﻻﺨﺘﻼﻑ ﺍﻟﺭﺌﻴﺱ ﺒﻴﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻭﻤﻀﻴﺔ ﻭ EE-PROMﻓﻲ ﺇﺠﺭﺍﺌﻴﺔ ﺍﻟﻤﺤﻭ :ﻴﻤﻜﻥ ﻓﻲ EE-PROMﻤﺤﻭ ﺴـﺠل ﻭﺍﺤـﺩ
ﺒﻴﻨﻤﺎ ﻴﺠﺭﻱ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻭﻤﻀﻴﺔ ﻤﺤﻭ ﻜﺎﻤل ﺍﻟﺫﺍﻜﺭﺓ ﺃﻭ ﻜﺘﻠﺔ blockﻤﻨﻬﺎ .ﻴﻤﻜﻥ ﻤﺤﻭ ﻭﺒﺭﻤﺠﺔ ﻫﺫﻩ ﺍﻟـﺫﺍﻜﺭﺓ ﻋﻠـﻰ ﺍﻷﻗـل
ﻤﻠﻴﻭﻥ ﻤﺭﺓ ،ﻭﻫﻲ ﺘﻨﺎﺴﺏ ﺍﻟﻨﻅﻡ ﺫﺍﺕ ﺍﻻﺴﺘﻬﻼﻙ ﺍﻟﻤﻨﺨﻔﺽ ﻟﻼﺴﺘﻁﺎﻋﺔ ﻟﻜﻭﻨﻬﺎ ﺘﺒﺭﻤﺞ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻓﻠﻁﻴﺔ ﻤﻨﺨﻔﻀﺔ 1.8 ،ﻓﻭﻟﻁ.
9
ﺘﻭﺍﺠﻪ ﺍﻟﺫﻭﺍﻜﺭ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ 88088/8086
ﻋﻨﺩ ﺘﻭﺍﺠﻪ ﺃﻭ ﺭﺒﻁ ﺍﻟﺫﻭﺍﻜﺭ ﻤﻊ ﻤﻌﺎﻟﺞ ﺼﻐﺭﻱ ﻴﺠﺏ ﻭﺼل:
ﺨﻁﻭﻁ ﻤﻌﻁﻴﺎﺕ ﺍﻟﺫﻭﺍﻜﺭ ﻤﻊ ﺨﻁﻭﻁ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ
ﺨﻁﻭﻁ ﻋﻨﻭﻨﺔ ﺍﻟﺫﻭﺍﻜﺭ ﻤﻊ ﺨﻁﻭﻁ ﻋﻨﻭﻨﺔ ﺍﻟﻤﻌﺎﻟﺞ
ﻤﻥ ﺍﻟﻤﻌﺎﻟﺞ RD ﻟﻠﺫﻭﺍﻜﺭ ﻤﻊ ﺇﺸﺎﺭﺓ ﺍﻟﻘﺭﺍﺀﺓ OE ﻤﺩﺨل ﺘﺄﻫﻴل ﻤﺨﺭﺝ ﺍﻟﻤﻌﻁﻴﺎﺕ
ﻟﻠﻤﻌﺎﻟﺞ )ﻓﻲ ﺍﻟﺫﻭﺍﻜﺭ ﺍﻟﺤﻴﺔ ﻓﻘﻁ( WR ﻟﻠﺫﺍﻜﺭﺓ ﻤﻊ ﺇﺸﺎﺭﺓ ﺍﻟﻜﺘﺎﺒﺔ WR ﻤﺩﺨل ﺍﻟﻜﺘﺎﺒﺔ
ﺇﻀﺎﻓﺔ ﺇﻟﻰ ﻤﺎ ﺴﺒﻕ ،ﻴﺠﺏ ﺍﺴﺘﺨﺩﺍﻡ ﺇﺸﺎﺭﺓ ﺍﻟﺘﺤﻜﻡ ، M/ IOﺍﻟﺘﻲ ﺘﺨﺘﺎﺭ ﺒﻴﻥ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻓـﻀﺎﺀ
ﺍﻟﺒﻭﺍﺒﺎﺕ ،ﻤﻊ ﺨﻁﻭﻁ ﻋﻨﻭﻨﺔ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺒﺎﻗﻴﺔ ﻏﻴﺭ ﺍﻟﻤﻭﺼﻭﻟﺔ ﻤﺒﺎﺸﺭﺓ ﻤﻊ ﺍﻟـﺫﻭﺍﻜﺭ ،ﻟﻔـﻙ ﺘﺭﻤﻴـﺯ
ﺍﻟﻌﻨﺎﻭﻴﻥ ﻭﺍﻨﺘﺨﺎﺏ ﺭﻗﺎﻗﺎﺕ ﺍﻟﺫﻭﺍﻜﺭ ﻋﻠﻰ ﻨﺤﻭ ﻭﺤﻴﺩ.
ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ 8086ﻋﻠﻰ 20ﺨﻁ ﻋﻨﻭﻨﺔ ،ﻤﻥ ﺒﻴـﻨﻬﻡ 16ﺨـﻁ
ﻤﺸﺘﺭﻙ ﻤﻊ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﹸﺘﺴﻤﻰ .AD0-AD15ﻜﻤﺎ ﺘﺸﺘﺭﻙ ﺃﻴﻀ ﹰﺎ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ A16-A19
ﻤﻊ ﺇﺸﺎﺭﺍﺕ ﺍﻟﺤﺎﻟﺔ S3-S6ﻋﻠﻰ ﺍﻟﻤﻐﺎﺭﺯ ﻨﻔﺴﻬﺎ .ﻭﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ 8086ﺃﻴﻀﹰﺎ ﻋﻠـﻰ ﺍﻹﺸـﺎﺭﺓ
ﺍﻟﺘﻲ ﹸﺘﺴﺘﺨﺩﻡ ﻻﻨﺘﺨﺎﺏ ﻤﻭﺍﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ ﺫﺍﺕ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﻔﺭﺩﻴﺔ. BHE
Power Supply
VCC GND
INT
AD0-AD15, A16/S3-A19/S6
Interrupt INTA
ALE
Interface TEST
BHE/S7
NMI
8086 M/IO
RESET
HOLD
MPU DT/R ﺍﻟﺬﻭﺍﻛﺮ
DMA
RD
Interface HLDA
WR
VCC DEN
Mode Select MN/MX READY
CLK
10
ﺩﻭﺭﺓ ﺁﻟﺔ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086
ﻴﻨﻔﺫ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺩﻭﺭﺓ ﺁﻟﺔ Bus Cycleﺃﻭ ﺩﻭﺭﺓ ﻤﺴﺭﻯ ﻓﻲ ﻜل ﻋﻤﻠﻴﺔ ﺘﺒﺎﺩل ﻤﻌﻁﻴـﺎﺕ
ﻤﻊ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻤﺤﻴﻁﻴﺔ .ﻴﻭﻟﺩ ﺍﻟﻤﻌﺎﻟﺞ ﺨﻼل ﺩﻭﺭﺓ ﺍﻵﻟﺔ ﺘﺘﺎﺒﻌﹰﺎ ﻤـﻥ ﺍﻹﺸـﺎﺭﺍﺕ ﺘـﺘﺤﻜﻡ ﺒﻌﻤـل
ﺍﻟﻤﺴﺭﻯ ﻭﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻤﺤﻴﻁﻴﺔ .ﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﺩﻭﺭﺓ ﺍﻵﻟﺔ ﺩﻭﺭﺓ ﻗﺭﺍﺀﺓ ﺃﻭ ﺩﻭﺭﺓ ﻜﺘﺎﺒﺔ ،ﻭﺘﺘﻜـﻭﻥ
ﻜل ﺩﻭﺭﺓ ﺁﻟﺔ ﻤﻥ ﺃﺭﺒﻊ ﺃﺩﻭﺍﺭ ﺴﺎﻋﺔ )ﺃﻭ ﺤﺎﻻﺕ( ،ﻋﻠﻰ ﺍﻷﻗل ،ﺘﺴﻤﻰ T3 ،T2 ،T1ﻭ .T4
ﺩﻭﺭﺓ ﻜﺘﺎﺒﺔ
ﻴﻀﻊ ﺍﻟﻤﻌﺎﻟﺞ -ﺨﻼل ﺩﻭﺭﺓ ﺍﻟﻜﺘﺎﺒﺔ -ﻋﻨﻭﺍﻥ ﻤﻭﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ ﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ،ﻭﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﺭﺍﺩ
ﻭ ﻴﺨﺘـﺎﺭ WR ﻜﺘﺎﺒﺘﻬﺎ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻭﻴﺨﺭﺝ ﻨﺒﻀﺔ ﺴﺎﻟﺒﺔ ﻋﻠـﻰ ﺍﻟﻤﺨـﺭﺝ
)ﻓﻲ ﻤﻌﺎﻟﺠﺎﺕ .(8086ﻴﺒـﻴﻥ (8088ﻭ M/ IO = 1 )ﻓﻲ ﻤﻌﺎﻟﺠﺎﺕ ﺒﺠﻌل IO/ M = 0 ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ
ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻤﺨﻁﻁﹰﺎ ﺯﻤﻨﻴﹰﺎ ﻤﺒﺴﻁﹰﺎ ﻟﺩﻭﺭﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ:
ﺩﻭﺭﺓ ﻗﺭﺍﺀﺓ
ﻴﻀﻊ ﺍﻟﻤﻌﺎﻟﺞ ،ﺨﻼل ﺩﻭﺭﺓ ﺍﻟﻘﺭﺍﺀﺓ ،ﻋﻨﻭﺍﻥ ﺍﻟﻤﻭﻗﻊ ﺍﻟﻤﺭﺍﺩ ﻗﺭﺍﺀﺘﻪ ﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ،ﺜﻡ ﻴﻨـﺘﺞ
ﻨﺒﻀﺔ ﺴﺎﻟﺒﺔ ﻋﻠﻰ ﺍﻟﻤﺨﺭﺝ ، RDﻭﺃﺨﻴﺭﹰﺍ ﻴﻘﺭﺃ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘﻲ ﺘـﻀﻌﻬﺎ ﺍﻟـﺫﺍﻜﺭﺓ ﻋﻠـﻰ ﺨﻁـﻭﻁ
(8088ﻭ M/ IO = 1 )ﻓﻲ ﻤﻌﺎﻟﺠﺎﺕ ﺒﺠﻌل IO/ M = 0 ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﻭﻫﻨﺎ ﺃﻴﻀﹰﺎ ،ﻴﺨﺘﺎﺭ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ
)ﻓﻲ ﻤﻌﺎﻟﺠﺎﺕ .(8086ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻤﺨﻁﻁﹰﺎ ﺯﻤﻨﻴﹰﺎ ﻤﺒﺴﻁﹰﺎ ﻟﺩﻭﺭﺓ ﺍﻟﻘﺭﺍﺀﺓ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ:
11
ﻋﻨﺩ ﻤﺎ ﺘﻜﻭﻥ ﺴﺭﻋﺔ ﻋﻤل ﺍﻟﺫﺍﻜﺭﺓ ،ﺍﻟﺘﻲ ﻴﺘﺒﺎﺩل ﺍﻟﻤﻌﺎﻟﺞ ﻤﻌﻬﺎ ﺍﻟﻤﻌﻁﻴﺎﺕ ،ﺃﻗل ﻤﻥ ﺴـﺭﻋﺔ ﻋﻤـل
ﺝ ﺩﻭﺭﺍﺕ ﺴـﺎﻋﺔ
ﺍﻟﻤﻌﺎﻟﺞ ﺘﻁﻠﺏ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺞ ،ﺒﻭﻀﻊ 0ﻋﻠـﻰ ﺍﻟﻤـﺩﺨل ،READYﺇﺩﺭﺍ
ﺇﻀﺎﻓﻴﺔ ﺒﻌﺩ ﺍﻟﺤﺎﻟﺔ ،T3ﺘﹸﺴﻤﻰ ﻫﺫﻩ ﺍﻟﺩﻭﺭﺍﺕ ﺒﺤﺎﻻﺕ ﺍﻨﺘﻅﺎﺭ .wait state
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘـﻲ :ﺒﻔﺭﺽ ﺃﻥ ﺘﺭﺩﺩ ﺴﺎﻋﺔ ﺍﻟﻤﻌﺎﻟﺞ ﻫﻲ 5ﻤﻴﻐﺎﻫﺭﺘﺯ ،ﻓﻤﺎ ﻫﻭ ﺍﻟﺯﻤﻥ ﺍﻷﺼﻐﺭﻱ ﻟـﺩﻭﺭ
ﺁﻟﺔ؟
ﺍﻟﺠﻭﺍﺏ :ﺘﺤﺘﺎﺝ ﺩﻭﺭﺓ ﺍﻵﻟﺔ ﺃﺭﺒﻊ ﺃﺩﻭﺍﺭ ﺴﺎﻋﺔ ﻋﻠﻰ ﺍﻷﻗـل ،ﻭﺒﻤـﺎ ﺃﻥ ﺘـﺭﺩﺩ ﻋﻤـل ﺍﻟﻤﻌـﺎﻟﺞ 5
1
= ، Tﻭﻤﻨﻪ ﻓﺈﻥ ﺃﺼﻐﺭ ﺯﻤﻥ ﺩﻭﺭﺓ ﺍﻵﻟـﺔ = 200 ns ﻤﻴﻐﺎﻫﺭﺘﺯ ﻓﺈﻥ ﺩﻭﺭ ﺍﻟﺴﺎﻋﺔ ﻴﺴﺎﻭﻱ
5000000
ﻫﻭ 4 × 200nsﻭﻫﻭ ﻴﺴﺎﻭﻱ 800ﻨﺎﻨﻭﺜﺎﻨﻴﺔ.
ﺃﻥ ﺃﻏﻠﺏ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺘﺘﻁﻠﺏ ﻭﺠﻭﺩ ﺍﻟﻌﻨﻭﺍﻥ ﻋﻠﻰ ﻤﺩﺍﺨﻠﻬﺎ ﺨﻼل ﻜﺎﻤل ﺩﻭﺭﺓ ﺍﻵﻟﺔ ﻓﺈﻨﻪ ﻴﺠـﺏ ﻓـﻙ
ﺘﻀﻤﻴﻡ ﻫﺫﻩ ﺍﻟﺨﻁﻭﻁ ،ﻭﺫﻟﻙ ﺒﻤﺴﻙ latchﺍﻟﻌﻨﻭﺍﻥ ﻋﻠﻰ ﻫﺫﻩ ﺍﻟﺨﻁﻭﻁ ﺨﻼل ﺍﻟﺤﺎﻟـﺔ .T1ﻴﻤﻜـﻥ
ﻤﺴﻙ ﺍﻟﻌﻨﻭﺍﻥ ﺒﺎﻟﺘﺯﺍﻤﻥ ﻤﻊ ﺍﻟﺠﺒﻬﺔ ﺍﻟﻬﺎﺒﻁﺔ ﻹﺸﺎﺭﺓ ﺍﻟﺘﺤﻜﻡ ALEﺍﻟﺘﻲ ﻴﻨﺘﺠﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ ﺨﻼل .T1
ﻴﻤﻜﻨﻨﺎ ﺍﺴﺘﺨﺩﻡ ﺍﻟﺭﻗﺎﻗﺔ 74373ﻟﻌﺯل ﻭﻤﺴﻙ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓـﻲ ﺍﻟـﺸﻜل ﺍﻟﺘـﺎﻟﻲ.
12
ﺘﺴﺘﻁﻴﻊ ﺍﻟﺭﻗﺎﻗﺔ 74373ﻤﺴﻙ ﻜﻠﻤﺔ ﻤﻥ 8ﺒﺕ ،ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻨﻨﺎ ﺒﺤﺎﺠﺔ ﺇﻟﻰ 3ﺭﻗﺎﻗﺎﺕ ﻤﻥ 74373
ﻟﻤﺴﻙ ﻜﺎﻤل ﺍﻟﻌﻨﻭﺍﻥ A0-A19ﻭ . BHE
ﺧﻄﻮﻁ ﺍﻟﻌﻨﻮﻧﺔ
ﺍﳌﻤﺴﻮﻛﺔ ﺃﻭ ﺍﳌﻌﺰﻭﻟﺔ
ﺇﻥ ﻋﺭﺽ ﻜﻠﻤﺔ ﺍﻟﺫﺍﻜﺭﺓ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ 8088ﺘﺴﺎﻭﻱ 8ﺒﺕ ،ﻭﺒﺎﻟﺘـﺎﻟﻲ ﺘﻜـﻭﻥ ﺨﻁـﻭﻁ ﺍﻟﻌﻨﻭﻨـﺔ
AD0-AD7ﻭ AD16/S3-AD19/S6ﻤﻀﻤﻤﺔ ﻓﻘﻁ ،ﻻ ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌـﺎﻟﺞ 8088ﻋﻠـﻰ ﺇﺸـﺎﺭﺓ
. BHEﻭﺒﺎﻟﺘﺎﻟﻲ ﻨﺤﺘﺎﺝ ،ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ ،8088ﻓﻘﻁ ﺇﻟﻰ ﺭﻗﺎﻗﺘﻴﻥ ﻤﻥ 74373ﻟﻤﺴﻙ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ.
ﺧﻄﻮﻁ ﺍﻟﻌﻨﻮﻧﺔ
ﺍﳌﻤﺴﻮﻛﺔ ﺃﻭ ﺍﳌﻌﺰﻭﻟﺔ
13
ﻓﻙ ﺘﺭﻤﻴﺯ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ Address Decoding
ﻤﻥ ﺍﻟﻀﺭﻭﺭﻱ ،ﻓﻲ ﺃﻱ ﻨﻅﺎﻡ ﺼﻐﺭﻱ ،ﻓﻙ ﺘﺭﻤﻴﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﻤﺭﺴﻠﺔ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺞ ﺇﻟﻰ ﺍﻟﺘﺠﻬﻴـﺯﺍﺕ
ﺍﻟﻤﺤﻴﻁﻴﺔ ،ﻤﺜل ﺍﻟﺫﻭﺍﻜﺭ .ﹶﺘﺴﻤﺢ ﻋﻤﻠﻴﺔ ﻓﻙ ﺘﺭﻤﻴﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﺨﺘﻴﺎﺭ ﺇﺤﺩﻯ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻤﺤﻴﻁﻴﺔ ﻓﻘﻁ
ﻓﻲ ﻋﻤﻠﻴﺔ ﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ .ﻻ ﻨﺴﺘﻁﻴﻊ ،ﺇﻥ ﻟﻡ ﻨﺴﺘﺨﺩﻡ ﺩﺍﺭﺓ ﻤﻔﻜﻙ ﺘﺭﻤﻴـﺯ ﺍﻟﻌﻨـﺎﻭﻴﻥ
،address decoderﺇﻻ ﺭﺒﻁ ﺘﺠﻬﻴﺯﺓ ﻭﺍﺤﺩﺓ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ ،ﻤﻤﺎ ﻴﺤﺩ ﻤﻥ ﻓﺎﺌﺩﺓ ﻭﺃﺩﺍﺀ ﻋﻤل ﺍﻟﻤﻌﺎﻟﺞ.
ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ،ﺘﻤﺘﻠﻙ ﺭﻗﺎﻗﺔ ﺍﻟﺫﺍﻜﺭﺓ 11، 2716ﺨﻁ ﻋﻨﻭﻨﺔ ،ﻓﻲ ﺤﻴﻥ ﺘﻤﺘﻠﻙ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺤﺎﻟﻴﺔ
16ﺨﻁ ﻋﻨﻭﻨﺔ ﻋﻠﻰ ﺍﻷﻗل .ﻴﻤﺘﻠﻙ ﺍﻟﻤﻌﺎﻟﺞ ،8085ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل 16 ،ﺨﻁ ﻋﻨﻭﻨﺔ ﺒﻴﻨﻤﺎ ﻴﻤﺘﻠـﻙ
ﺍﻟﻤﻌﺎﻟﺞ 20 ،8088/8086ﺨﻁﹰﺎ .ﺇﺫﺍ ﺭﺒﻁﻨﺎ ﺍﻟﺫﺍﻜﺭﺓ 2716ﻤﺒﺎﺸﺭﺓ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻓﺈﻨﻨﺎ
ﻨﻭﺼل ﺨﻁﻭﻁ ﻋﻨﻭﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ 2716ﺍﻟـ 11ﻤﻊ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﺩﻨﻴﺎ ﻟﻠﻤﻌﺎﻟﺞ ،A0-A10 ،ﻓﻤـﺎﺫﺍ
ﻨﻔﻌل ﺒﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﺒﺎﻗﻴﺔ A11-A20؟ ﹶﻨﻔﻙ ﺘﺭﻤﻴﺯ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﺒﺎﻗﻴﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺩﺍﺭﺓ ﻤﻔﻜـﻙ
ﺘﺭﻤﻴﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ ،ﻤﻤﺎ ﻴﺴﻤﺢ ﻟﻨﺎ ﺒﻭﺼل ﺃﻜﺜﺭ ﻤﻥ ﺭﻗﺎﻗﺔ ﺫﺍﻜﺭﺓ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ ﻭﻋﻨﻭﻨﺔ ﺃﻱ ﻤﻭﻗـﻊ ﻤـﻥ
ﺍﻟﺫﺍﻜﺭﺓ ﺒﻌﻨﻭﺍﻥ ﻭﺤﻴﺩ.
A0-A10
14
ﻴﺠﺭﻱ ﺍﻨﺘﺨﺎﺏ ﺍﻟﺩﺍﺭﺓ 2716ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﻤﺨﺭﺝ ﺍﻟﺩﺍﺭﺓ NANDﻤﺴﺎﻭﻴﹰﺎ ،0ﻭﻴﺘﺤﻘﻕ ﺫﻟﻙ ﻋﻨـﺩﻤﺎ
ﺘﻜﻭﻥ ﺠﻤﻴﻊ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ A11-A19ﺘﺴﺎﻭﻱ 1ﻤﻨﻁﻘﻲ ﻭ ، IO/M = 0ﺒﻘﻁﻊ ﺍﻟﻨﻅﺭ ﻋـﻥ ﺤﺎﻟـﺔ
ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ .A0-A10ﹶﺘﻨﺘﺨﺏ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ A11-A19ﺭﻗﺎﻗﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺒﻴﻨﻤﺎ ﺘﻨﺘﺨﺏ ﺍﻟﺨﻁﻭﻁ
A0-A10ﺃﺤﺩ ﺍﻟﻤﻭﺍﻗﻊ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ،ﻤﻤﺎ ﻴﺅﺩﻱ ﺇﻟﻰ ﻋﻨﻭﻨﺔ ﻜل ﻤﻭﻗﻊ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺒﻌﻨـﻭﺍﻥ ﻭﺤﻴـﺩ.
ﺘﹸﻌﺭﻑ ﻁﺭﻴﻘﺔ ﺍﻟﻌﻨﻭﻨﺔ ﻫﺫﻩ ﺒﺎﻟﻌﻨﻭﻨﺔ ﺍﻟﻤﻁﻠﻘﺔ .absolute addressing
ﻭﺒﺎﻟﻨﺘﻴﺠﺔ ﺘﺤﺘل ﺍﻟﺫﺍﻜﺭﺓ 2726ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ ﻤـﻥ ) 11111111100000000000ﺃﻭ (FF800h
ﺇﻟﻰ ) 11111111111111111111ﺃﻭ .(FFFFFhﻴ ﻤ ِﺜل ﺍﻟﻌﻨﻭﺍﻥ FF800hﺍﻟﻌﻨـﻭﺍﻥ ﺍﻟﻘﺎﻋـﺩﻱ
ﻟﻠﺫﺍﻜﺭﺓ ﻭﻫﻭ ﻋﻨﻭﺍﻥ ﺃﻭل ﻤﻭﻗﻊ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ.
ﻨﺎﺩﺭﹰﺍ ﻤﺎ ﻨﺴﺘﺨﺩﻡ ﻋﻤﻠﻴﹰﺎ ﺒﻭﺍﺒﺎﺕ NANDﻟﻔﻙ ﺘﺭﻤﻴﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ ،ﻷﻨﻨﺎ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺒﺤﺎﺠـﺔ ﺇﻟـﻰ
ﺒﻭﺍﺒﺔ NANDﻟﻜل ﺭﻗﺎﻗﺔ ﺫﺍﻜﺭﺓ .ﻨﺴﺘﺨﺩﻡ ،ﻋﺎﺩﺓ ،ﺩﺍﺭﺓ ﻤﻔﻜﻙ ﺘﺭﻤﻴﺯ ﺍﻟﻌﻨـﺎﻭﻴﻥ ﻤﺜـل 74LS138
ﻋﻭﻀﹰﺎ ﻋﻥ ﺒﻭﺍﺒﺎﺕ .NAND
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺒﻔﺭﺽ ﺃﻨﻨﺎ ﻨﺭﻴﺩ ﺘﻌﺩﻴل ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻘﺎﻋﺩﻱ ﻟﻠﺫﺍﻜﺭﺓ 2716ﻟﻴﺼﺒﺢ ﺒﺩﺀﹰﺍ ﻤـﻥ ﺍﻟﻌﻨـﻭﺍﻥ
F0000hﻤﺎ ﻫﻭ ﺍﻟﺘﻌﺩﻴل ﺍﻟﻭﺍﺠﺏ ﺇﺠﺭﺍﺅﻩ ﻋﻠﻰ ﺍﻟﺩﺍﺭﺓ ﺍﻟﺴﺎﺒﻘﺔ؟
ﺍﻟﺠﻭﺍﺏ :ﻴﺠﺏ ﻋﻜﺱ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ A11-A15ﻗﺒل ﻭﺼﻠﻬﺎ ﺇﻟﻰ ﺩﺍﺭﺓ ﺍﻟـ .NAND
ﻣﺪﺍﺧﻞ ﺍﻧﺘﺨﺎﺏ
ﳐﺎﺭﺝ
ﻣﺪﺍﺧﻞ ﺗﺄﻫﻴﻞ
)(G2A, G2B, G1 ﺘﺤﺘﻭﻱ ﻫﺫﻩ ﺍﻟﺩﺍﺭﺓ ﻋﻠﻰ ﺜﻼﺙ ﻤﺩﺍﺨل B ،Aﻭ Cﻋﻨﻭﻨﺔ ﻭﺜﻼﺙ ﻤﺩﺍﺨل ﺘﺤﻜـﻡ
17
ﻟﻠﺩﺍﺭﺓ 74LS138 ﻭﺜﻤﺎﻨﻲ ﻤﺨﺎﺭﺝ .ﺘﹸﻔﻌل ﺍﻟﻘﻴﻡ ﻋﻠﻰ ﺍﻟﻤﺩﺍﺨل B ،Aﻭ Cﺃﺤﺩ ﺍﻟﻤﺨﺎﺭﺝ ﺍﻟﺜﻤﺎﻨﻴﺔ
ﻋﻨـﺩﻤﺎ G2A = G2B = 0 ﻓﻌﺎﻟـﺔ؛ ﺃﻱ )(G2A, G2B, G1 ﻓﻲ ﺤﺎل ﻜﺎﻨﺕ ﺠﻤﻴـﻊ ﻤـﺩﺍﺨل ﺍﻟـﺘﺤﻜﻡ
15
ﻭ . G1 = 1
ﻻ ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ A=B=1ﻭ ،C=0ﺍﻨﻅﺭ ﺠـﺩﻭل ﺍﻟﺤﻘﻴﻘـﺔ
ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ،ﻴﻜﻭﻥ ﺍﻟﻤﺨﺭﺝ 3ﻓﻌﺎ ﹰ
ﺍﻟﺘﺎﻟﻲ.
ﻴﻤﻜﻥ ﺃﻴﻀﹰﺎ ﺍﺴﺘﺨﺩﺍﻡ ﺩﺍﺭﺓ ﻤﻔﻜﻙ ﺘﺭﻤﻴﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ 74LS139ﻓﻲ ﻓﻙ ﻋﻨﻭﻨﺔ ﺍﻟﺫﻭﺍﻜﺭ .ﺘﺘﺄﻟﻑ ﻫـﺫﻩ
ﺍﻟﺭﻗﺎﻗﺔ ﻤﻥ ﺩﺍﺭﺘﻲ ﻤﻔﻜﻙ ﺘﺭﻤﻴﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ ﻜل ﻤﻨﻬﺎ ﻤﻥ 2ﺇﻟﻰ ،4ﻭﺘﻤﺘﻠﻙ ﻜل ﻤﻨﻬﺎ ﺃﻴـﻀﹰﺎ ﻤـﺩﺨل
ﺘﺄﻫﻴل ﺨﺎﺹ ﺒﻬﺎ ،ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ:
ﻣﺪﺍﺧﻞ ﺍﻧﺘﺨﺎﺏ
ﳐﺎﺭﺝ
ﻣﺪﺧﻞ ﺗﺄﻫﻴﻞ
ﻣﺪﺍﺧﻞ ﺍﻧﺘﺨﺎﺏ
ﳐﺎﺭﺝ
ﻣﺪﺧﻞ ﺗﺄﻫﻴﻞ
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺠﺩﻭل ﺍﻟﺤﻘﻴﻘﺔ ﻟﻜل ﻤﻥ ﻤﻔﻜﻙ ﺘﺭﻤﻴﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ ﻓﻲ ﺍﻟﺭﻗﺎﻗﺔ :74LS139
16
ﻤﺜﺎل :ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻁﺭﻴﻘﺔ ﺍﺴﺘﺨﺩﺍﻡ ﺩﺍﺭﺓ ﻤﻔﻙ ﺍﻟﺘﺭﻤﻴﺯ 74LS138ﻟﻌﻨﻭﻨﺔ ﺜﻤﺎﻨﻲ ﺫﻭﺍﻜﺭ ﻤـﻥ
ﻁﺭﺍﺯ -8) 2764ﻜﻴﻠﻭﺒﺎﻴﺕ( .ﹶﺘﻨﺘﺨﺏ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ A13-A15ﺇﺤﺩﻯ ﺭﻗﺎﻗﺎﺕ ﺍﻟـﺫﻭﺍﻜﺭ ﻋﻨـﺩﻤﺎ
ﺘﻜﻭﻥ ﺍﻟﺩﺍﺭﺓ 74LS138ﻓﻌﺎﻟﺔ؛ ﺃﻱ ﻋﻨﺩﻤﺎ ﺘﺴﺎﻭﻱ ﺠﻤﻴـﻊ ﺨﻁـﻭﻁ ﺍﻟﻌﻨﻭﻨـﺔ A16-A19ﺍﻟﻭﺍﺤـﺩ
ﻤﻨﻁﻘﻲ .ﻴﺠﺭﻱ ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ﺍﻨﺘﺨﺎﺏ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻷﻭﻟﻰ ﻋﻨـﺩﻤﺎ ﻴﻜـﻭﻥ ،A13=A14=A15=0
ﻭﺒﺎﻟﺘﺎﻟﻲ ﻴﻜﻭﻥ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻘﺎﻋﺩﻱ ﻟﻠﺫﺍﻜﺭﺓ ﺍﻷﻭﻟﻰ ﻫﻭ ،F0000hﻭﺘﺤﺘل ﺍﻟـﺫﺍﻜﺭﺓ ﺍﻷﻭﻟـﻰ ﻓـﻀﺎﺀ
ﺍﻟﻌﻨﺎﻭﻴﻥ .F0000h-F1FFFhﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺃﻴﻀﹰﺎ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺘﻲ ﺘﺤﺘﻠﻪ ﺍﻟﺫﻭﺍﻜﺭ ﺍﻟﺒﺎﻗﻴﺔ.
17
ﺍﻟﻤﻌﺎﻟﺞ ،ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ:
BHE
ﻴﺠﺭﻱ ﺍﻨﺘﺨﺎﺏ ﺃﻱ ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ﻓﻲ ﺇﺤﺩﻯ ﺍﻟﻜﺘﻠﺘﻴﻥ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺨﻁـﻭﻁ ﺍﻟﻌﻨﻭﻨـﺔ ،A1-D19ﺒﻴﻨﻤـﺎ
ﻴﺠﺭﻱ ﺍﻨﺘﺨﺎﺏ ﺍﻟﻜﺘﻠﺔ ﺫﺍﺕ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﻔﺭﺩﻴﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ،A0ﻭﺍﻟﺯﻭﺠﻴﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ . BHE
ﻋﻨﺩﻤﺎ ﻴﺘﺒﺎﺩل ﺍﻟﻤﻌﺎﻟﺞ ﺒﺎﻴﺘﹰﺎ ﻤﻊ ﻤﻭﻗﻊ ﺯﻭﺠﻲ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻓﺈﻨﻪ ﻴﺠﻌل A0 =0ﻭ ، BHE = 1ﻻﻨﺘﺨﺎﺏ
ﺍﻟﻜﺘﻠﺔ ﺍﻟﺯﻭﺠﻴﺔ .ﻭﻋﻨﺩﻤﺎ ﻴﺭﻴﺩ ﺍﻟﻤﻌﺎﻟﺞ ﺘﺒﺎﺩل ﺒﺎﻴﺕ ﻤﻊ ﻤﻭﻗﻊ ﻓﺭﺩﻱ ﻓﺈﻨﻪ ﻴﺠﻌل A0 =1ﻭ ، BHE = 0
ﻋﻨﺩﻤﺎ ﻴﺘﺒﺎﺩل ﻜﻠﻤﺔ ﻤﻥ 2ﺒﺎﻴﺕ ﻤﻊ A0 =0ﻭ BHE = 0 ﻻﻨﺘﺨﺎﺏ ﺍﻟﻜﺘﻠﺔ ﺍﻟﻔﺭﺩﻴﺔ .ﺒﻴﻨﻤﺎ ﻴﺠﻌل ﺍﻟﻤﻌﺎﻟﺞ
ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ﻴﺒﺩﺃ ﺒﻌﻨﻭﺍﻥ ﺯﻭﺠﻲ .ﻭﻟﻜﻥ ﻋﻨﺩﻤﺎ ﻴﺘﺒﺎﺩل ﺍﻟﻤﻌﺎﻟﺞ ﻜﻠﻤﺔ ﻤﻥ 2ﺒﺎﻴﺕ ﻤﻊ ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ﻴﺒﺩﺃ
ﺒﻌﻨﻭﺍﻥ ﻓﺭﺩﻱ ﻓﺘﺠﺭﻱ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺒﺎﺩل ﻋﻠﻰ ﻤﺭﺤﻠﺘﻴﻥ ،ﻴﺠﺭﻱ ﻓﻲ ﺍﻷﻭﻟﻰ ﺘﺒﺎﺩل ﺍﻟﺒﺎﻴﺕ ﺍﻷﻭﻟـﻰ ﻤـﻥ
ﺍﻟﻜﻠﻤﺔ ﻤﻊ ﺍﻟﻤﻭﻗﻊ ﺫﻱ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﺭﺩﻱ ،ﻓﻲ ﺤﻴﻥ ﻴﺠﺭﻱ ﺘﺒﺎﺩل ﺍﻟﺒﺎﻴﺕ ﺍﻟﺜﺎﻨﻴﺔ ﻤﻥ ﺍﻟﻜﻠﻤﺔ ﻤﻊ ﺍﻟﻤﻭﻗـﻊ
ﺫﻱ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﺯﻭﺠﻲ.
ﺇﻥ ﺠﻤﻴﻊ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﺴﺎﺒﻘﺔ ﺸﻔﺎﻓﺔ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺒﺭﻤﺞ ،ﺤﻴﺙ ﻴﺭﻯ ﺍﻟﻤﺒـﺭﻤﺞ ﻓـﻀﺎﺀ ﺫﺍﻜـﺭﺓ
ﺍﻟﻤﻌﺎﻟﺞ 8086ﻜﺘﺘﺎﺒﻊ ﻤﻥ ﺍﻟﺒﺎﻴﺘﺎﺕ ﻋﺩﺩﻫﺎ 1ﻤﻴﻐﺎﺒﺎﻴﺕ ،ﺘﺒﺩﺃ ﺒﺎﻟﻌﻨﻭﺍﻥ 00000hﻭﺘﻨﺘﻬﻲ ﺒـﺎﻟﻌﻨﻭﺍﻥ
.FFFFFhﻴﺤﺘﻭﻱ ﻜل ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ﻤﻌﻁﻴﺎﺕ ﺒﻁﻭل 8ﺒﺕ ،ﻜﻤﺎ ﻴﻤﻜﻥ ﺃﻥ ﻴﺸﻜل ﺃﻱ ﺒﺎﻴﺘﻴﻥ ﻤﺘﺘﺎﻟﻴﻥ
ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻜﻠﻤﺔ ﺒﻁﻭل 16ﺒﺕ.
18
ﺨـﻼل ﺩﻭﺭﺓ A0ﻭ BHE ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺒﻔﺭﺽ ﺃﻥ ،BX=F000hﻤﺎ ﻫﻲ ﺤﺎﻟﺔ ﺨﻁـﻲ ﺍﻟﻌﻨﻭﻨـﺔ
ﺍﻟﻘﺭﺍﺀﺓ ﻋﻨﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ]MOV DH, [BX؟
ﺍﻟﺠﻭﺍﺏ :ﺒﻤﺎ ﺃﻥ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺘﻘﺭﺃ ﺒﺎﻴﺘﹰﺎ ﻤﻥ ﻋﻨﻭﺍﻥ ﺯﻭﺠﻲ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ،ﻓﺈﻨﻪ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻴﻜـﻭﻥ
A0 =0ﻭ . BHE = 1
ﺨـﻼل ﺩﻭﺭﺓ A0ﻭ BHE ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺒﻔﺭﺽ ﺃﻥ ،BX=A200hﻤﺎ ﻫﻲ ﺤﺎﻟﺔ ﺨﻁـﻲ ﺍﻟﻌﻨﻭﻨـﺔ
ﺍﻟﻘﺭﺍﺀﺓ ﻋﻨﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ MOV [BX], CX؟
ﺍﻟﺠﻭﺍﺏ :ﺘﻜﺘﺏ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ 2ﺒﺎﻴﺕ )ﻤﺤﺘﻭﻯ (CXﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ،ﻭﺒﻤﺎ ﺃﻨﻪ ﻴﺠﺭﻱ ﻜﺘﺎﺒﺔ ﻜﻠﻤﺔ ﻓـﻲ
ﻤﻭﻗﻊ ﺯﻭﺠﻲ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻓﺘﺠﺭﻱ ﻋﻤﻠﻴﺔ ﺍﻟﻜﺘﺎﺒﺔ ﺨﻼل ﺩﻭﺭﺓ ﻜﺘﺎﺒﺔ ﻭﺍﺤـﺩﺓ ،ﻴﻜـﻭﻥ ﻓﻴﻬـﺎ A0 =0
ﻭ . BHE = 0
ﻤﻊ ﻤﺩﺨل ﺇﺸﺎﺭﺓ WR ﻋﻨﺩ ﺘﻭﺍﺠﻪ ﺃﻭ ﺭﺒﻁ ﺍﻟﺫﻭﺍﻜﺭ ﻤﻊ ﻤﻌﺎﻟﺞ ﺼﻐﺭﻱ ﻨﻭﺼل ﺇﺸﺎﺭﺓ ﻜﺘﺎﺒﺔ ﺍﻟﻤﻌﺎﻟﺞ
ﺍﻟﻜﺘﺎﺒﺔ ﻟﻠﺫﻭﺍﻜﺭ .ﻭﻟﻜﻥ ﻨﻅﺭﹰﺍ ﻟﻜﻭﻥ ﺍﻟﻤﻌﺎﻟﺞ 8086ﻴﻤﻜﻥ ﺃﻥ ﻴﻜﺘﺏ ﻓﻲ ﺍﻟﻜﺘﻠﺔ ﺍﻟﺯﻭﺠﻴـﺔ ﺃﻭ ﺍﻟﻜﺘﻠـﺔ
ﻭﺃﺨﺭﻯ ﻟﻠﻜﺘﺎﺒـﺔ LWR ﺍﻟﻔﺭﺩﻴﺔ ﻋﻠﻰ ﻨﺤﻭ ﻤﻨﻔﺼل ،ﻓﻴﺠﺏ ﺍﺸﺘﻘﺎﻕ ﺇﺸﺎﺭﺓ ﻜﺘﺎﺒﺔ ﻓﻲ ﺍﻟﻜﺘﻠﺔ ﺍﻟﺯﻭﺠﻴﺔ
LWR ﻓﻲ ﺍﻟﻜﺘﻠﺔ ﺍﻟﻔﺭﺩﻴﺔ . HWRﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺇﺤﺩﻯ ﺍﻟﻁﺭﻕ ﺍﻟﻤﻤﻜﻨﺔ ﻻﺸـﺘﻘﺎﻕ ﺍﻹﺸـﺎﺭﺘﻴﻥ
ﻭﺇﺸﺎﺭﺓ ﺍﻟﻜﺘﺎﺒﺔ : WR A0ﻭ BHE ﻤﻥ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﻭ HWR
ﻤﺜﺎل :ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻨﻅﺎﻡ ﺫﺍﻜﺭﺓ ﻴﺤﻭﻱ 128ﻜﻴﻠﻭﺒﺎﻴﺕ ﺫﺍﻜـﺭﺓ EPROMﻭ 128ﻜﻴﻠﻭﺒﺎﻴـﺕ
ﺫﺍﻜﺭﺓ SRAMﻴﻤﻜﻥ ﺭﺒﻁﻪ ﻤﻊ ﻤﻌﺎﻟﺞ .8086ﻴﺘﻀﻤﻥ ﻫﺫﺍ ﺍﻟﻨﻅﺎﻡ:
• ﺃﺭﺒﻊ ﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ EPROMﻤﻥ ﻁﺭﺍﺯ ،27128ﻴﺒﻠﻎ ﺤﺠﻡ ﻜل ﻤﻨﻬـﺎ 16ﻜﻴﻠﻭﺒﺎﻴـﺕ.
ﺘﹸﻜﻭﻥ ﻫﺫﻩ ﺍﻟﺫﻭﺍﻜﺭ ﺒﻤﺠﻤﻭﻋﻬﺎ ﺫﺍﻜﺭﺓ EPROMﺒﺤﺠﻡ 32ﻜﻴﻠﻭ × 16ﺒﺕ ،ﻭﺘﺤﺘل ﺍﻟﻤﻭﺍﻗﻊ ﻤﻥ
.F0000h-FFFFFh
• ﺃﺭﺒﻊ ﺫﻭﺍﻜﺭ ﻟﻠﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ SRAMﻤﻥ ﻁﺭﺍﺯ ،62256ﻴﺒﻠﻎ ﺤﺠﻡ ﻜل ﻤﻨﻬﺎ 32ﻜﻴﻠﻭﺒﺎﻴـﺕ.
ﹸﺘﻜﻭﻥ ﻫﺫﻩ ﺍﻟﺫﻭﺍﻜﺭ ﺒﻤﺠﻤﻭﻋﻬﺎ ﺫﺍﻜﺭﺓ SRAMﺒﺤﺠﻡ 64ﻜﻴﻠﻭ × 16ﺒﺕ ،ﻭﺘﺤﺘل ﺍﻟﻤﻭﺍﻗﻊ ﻤـﻥ
.00000h-1FFFFh
19
ﻨﺴﺘﺨﺩﻡ ،ﻓﻲ ﻫﺫﺍ ﺍﻟﻨﻅﺎﻡ ،ﺠﺯﺀﹰﺍ ﻤﻥ ﺍﻟﺭﻗﺎﻗﺔ 74LS139ﻻﻨﺘﺨﺎﺏ ﺍﻟـﺫﻭﺍﻜﺭ ،EPROMﻭﺍﻟﺠـﺯﺀ
ﺍﻵﺨﺭ ﻤﻥ ﺍﻟﺭﻗﺎﻗﺔ ﻨﻔﺴﻬﺎ ﻻﻨﺘﺨﺎﺏ ﺍﻟﺫﻭﺍﻜﺭ .SRAMﻻﺤﻅ ﺃﻥ ﻜل ﻤﺨﺭﺝ ﻤﻥ ﻤﺨـﺎﺭﺝ ﺍﻟﺭﻗﺎﻗـﺔ
74LS139ﻴﻨﺘﺨﺏ ﺫﺍﻜﺭﺓ ﻋﺭﺽ ﻜﻠﻤﺘﻬﺎ 16ﺒﺕ.
ﺇﻟﻰ ﺍﻟﻤﺩﺨل WEﻟﻠﺫﻭﺍﻜﺭ ﺫﺍﺕ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﺯﻭﺠﻴﺔ ﺒﻴﻨﻤـﺎ LWR ﻴﺠﺭﻱ ﻓﻲ ﺍﻟﻨﻅﺎﻡ ﻭﺼل ﺍﻹﺸﺎﺭﺓ
ﺇﻟﻰ ﺍﻟﻤﺩﺨل WEﻟﻠﺫﻭﺍﻜﺭ ﺫﺍﺕ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﻔﺭﺩﻴﺔ. ﻭﺼل HWR ﻴﺠﺭﻱ
ﻻ ﺤﻅ ﺃﻴﻀﹰﺎ ﺃﻨﻨﺎ ﻟﻡ ﻨﺸﺘﻕ ﺇﺸﺎﺭﺓ ﻗﺭﺍﺀﺓ ﻟﻠﻜﺘﻠﺔ ﺍﻟﺯﻭﺠﻴﺔ ﻭﺃﺨﺭﻯ ﻟﻠﻜﺘﻠﺔ ﺍﻟﻔﺭﺩﻴﺔ ﻭﺇﻨﻤﺎ ﻭﺼﻠﻨﺎ ﺇﺸـﺎﺭﺓ
ﻟﻠﺫﻭﺍﻜﺭ EPROMﻭ !RAMﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟـﺔ OE ﻤﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻤﺒﺎﺸﺭﺓ ﺇﻟﻰ ﺍﻟﻤﺩﺨل RD ﺍﻟﻘﺭﺍﺀﺓ
ﻴﻘﺭﺃ ﺍﻟﻤﻌﺎﻟﺞ ﺩﻭﻤﹰﺎ 16ﺒﺕ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻴﺘﺠﺎﻫل ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺒﺎﻴﺕ ﺍﻟﺫﻱ ﻻ ﻴﺤﺘﺎﺠﻪ ﻋﻨﺩﻤﺎ ﻴﻘﺭﺃ ﺍﻟﻤﻌﺎﻟﺞ
ﺒﺎﻴﺘﹰﺎ ﻭﺍﺤﺩﹰﺍ ﻓﻘﻁ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ.
ﺃﺨﻴﺭﺍﹰ ،ﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ ﺍﻨﺘﺨﺎﺏ ﺍﻟﺫﻭﺍﻜﺭ EPEOMﺃﻭ SRAMﻤﺸﺭﻭﻁﹰﺎ ﺒﻜﻭﻥ ، M/ IO = 1ﻟﻜـﻭﻥ
ﻤﻊ ﺨﻁﻲ ﺍﻟﻌﻨﻭﻨـﺔ M/ IO ﺍﻟﺫﻭﺍﻜﺭ ﺘﻘﻊ ﻓﻲ ﻓﻀﺎﺀ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ .ﻭﺒﺎﻟﺘﺎﻟﻲ ،ﻴﺠﺭﻱ ﺘﻤﺭﻴﺭ ﺍﻹﺸﺎﺭﺓ
ﻻ )ﻴﺴﺎﻭﻱ 0ﻤﻨﻁﻘﻲ( ﻋﻨﺩﻤﺎ ﺘﻜـﻭﻥ
A18ﻭ A19ﺇﻟﻰ ﺒﻭﺍﺒﺔ .NANDﻴﻜﻭﻥ ﺨﺭﺝ ﻫﺫﻩ ﺍﻟﺒﻭﺍﺒﺔ ﻓﻌﺎ ﹰ
ﺠﻤﻴﻊ ﻤﺩﺍﺨﻠﻬﺎ ﺘﺴﺎﻭﻱ 1ﻤﻨﻁﻘﻲ.
20
ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ Cache Memory
ﺃﺼﺒﺤﺕ ﺴﺭﻋﺔ ﻋﻤل ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺤﺩﻴﺜﺔ ﺃﻜﺒﺭ ﺒﻜﺜﻴﺭ ﻤﻥ ﺴﺭﻋﺔ ﻋﻤل ﺍﻟﺫﻭﺍﻜﺭ ،ﻭﺒﺎﻟﺘﺎﻟﻲ ﺃﺼـﺒﺤﺕ
ﻋﻤﻠﻴﺎﺕ ﺍﻟﻨﻔﺎﺫ ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴﺴﺔ ﺘﺴﺘﻐﺭﻕ ﻭﻗﺘﹰﺎ ،ﻭﻫﺫﺍ ﻴﺒﻁﺊ ﻋﻤل ﺍﻟﻤﻌﺎﻟﺞ ﻭﺍﻟﻨﻅﺎﻡ ﻜﻜل .ﹸﺘﻌﺘﺒـﺭ
ﺘﻘﺎﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ ﺇﺤﺩﻯ ﺍﻟﻁﺭﻕ ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ،ﻓﻲ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﺍﻟﺤﺩﻴﺜﺔ ،ﻟﺯﻴـﺎﺩﺓ ﺴـﺭﻋﺔ ﻨﻔﺎﺫﻫـﺎ
ﺍﻟﻭﺴﻁﻴﺔ ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ.
ﺇﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ ﻫﻲ ﺫﺍﻜﺭﺓ ﺴﺭﻴﻌﺔ ،ﺼﻐﻴﺭﺓ ﺍﻟﺤﺠﻡ 18ﺘﺘﻭﻀﻊ ﺒﻴﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻭﺍﻟـﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴـﺴﺔ.
ﺘﹸﻭﻀﻊ ﻓﻲ ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭ/ﺃﻭ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘﻲ ﻴﺴﺘﺨﺩﻤﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ ﺒﻜﺜﺭﺓ ،ﻭﻓﻘـﹰﺎ ﻟﻤﻔﻬـﻭﻡ
ﺍﻟﻤﻭﻀﻌﻴﺔ ﺍﻟﺯﻤﺎﻨﻴﺔ ﻭﺍﻟﻤﻜﺎﻨﻴﺔ:
ﺍﻟﻤﻭﻀﻌﻴﺔ ﺍﻟﺯﻤﺎﻨﻴﺔ :ﻫﻨﺎﻙ ﺍﺤﺘﻤﺎل ﻜﺒﻴﺭ ﻓﻲ ﻨﻔﺎﺫ ﺍﻟﻤﻌﺎﻟﺞ ﻤﺭﺍﺕ ﻋﺩﻴﺩﺓ ﻤﺘﺘﺎﻟﻴﺔ ﺇﻟﻰ ﺍﻟﻤﻭﺍﻀﻊ
ﻨﻔﺴﻬﺎ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ.
ﺍﻟﻤﻭﻀﻌﻴﺔ ﺍﻟﻤﻜﺎﻨﻴﺔ :ﻫﻨﺎﻙ ﺍﺤﺘﻤﺎل ﻜﺒﻴﺭ ﻓﻲ ﻨﻔﺎﺫ ﺍﻟﻤﻌﺎﻟﺞ ﺇﻟﻰ ﻤﻭﺍﻗﻊ ﻗﺭﻴﺒﺔ ﻤﻥ ﺍﻟﻤﻭﺍﻗﻊ ﺍﻟﺘﻲ
ﻨﻔﺫ ﺇﻟﻴﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ ﺴﺎﺒﻘﹰﺎ.
ﻻ ﻓﻴﻤﺎ
ﻋﻨﺩﻤﺎ ﻴﺭﻴﺩ ﺍﻟﻤﻌﺎﻟﺞ ،ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ،ﻗﺭﺍﺀﺓ ﻤﻭﻗﻊ ﻤﺎ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴﺴﺔ ﻓﺈﻨﻪ ﻴﻔﺤﺹ ﺃﻭ ﹰ
ﺇﺫﺍ ﻜﺎﻥ ﻤﻭﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ ﻫﺫﺍ ﻤﻭﺠﻭﺩ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ ،ﺇﻥ ﻜﺎﻥ ﻤﻭﺠﻭﺩﹰﺍ ﻓﺈﻨﻪ ﻴﻘﺭﺃ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻭﺭﻴﹰﺎ
ﻓﻲ ﺍﻟﺨﺎﺒﻴﺔ .ﻭﻓﻲ ﺤﺎل ﻟﻡ ﺘﻜﻥ ﻫﺫﻩ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ ﻓﻴﺠـﺭﻱ ﺍﻟﻨﻔـﺎﺫ ﺇﻟـﻰ
ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴﺴﺔ ﻭﻭﻀﻊ ﻨﺴﺨﺔ ﻋﻨﻬﺎ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ .ﺘﺒﻁﺊ ﻋﻤﻠﻴﺔ ﺍﻟﻨﻔﺎﺫ ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴـﺴﺔ
ﻋﻤل ﺍﻟﻨﻅﺎﻡ ﻟﻜﻭﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴﺴﺔ ﺃﺒﻁﺄ ﺒﻜﺜﻴﺭ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ.
ﻨﻅﺭﹰﺍ ﻟﻠﻌﻼﻗﺔ ﺍﻟﻭﺜﻴﻘﺔ ﺒﻴﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ ﻭﺍﻟﻤﻌﺎﻟﺞ ،ﻋﻤ ﺩ ﺍﻟﻤﺼﻤﻤﻭﻥ ﻋﻠﻰ ﺩﻤﺞ ﻫﺫﻩ ﺍﻟـﺫﺍﻜﺭﺓ ﻤـﻊ
ﺍﻟﻤﻌﺎﻟﺞ ﻓﻲ ﺍﻟﺩﺍﺭﺓ ﺍﻟﻤﺘﻜﺎﻤﻠﺔ ﻨﻔﺴﻬﺎ ،ﺘﺴﻤﻰ ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﺒﺎﻟﻤﺴﺘﻭﻯ 1ﺃﻭ .L1ﻴﻜﻭﻥ ﺤﺠﻡ ﺍﻟـﺫﺍﻜﺭﺓ
ﺍﻟﺨﺎﺒﻴﺔ L1ﺼﻐﻴﺭﹰﺍ ،ﻓﻤﺜ ﹰ
ﻼ ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ 486ﻋﻠﻰ 16ﻜﻴﻠﻭﺒﺎﻴﺕ ﺫﺍﻜﺭﺓ ﺨﺎﺒﻴﺔ ﻤـﻥ ﺍﻟﻤـﺴﺘﻭﻯ
ﺍﻷﻭل .ﻭﻤﻥ ﺃﺠل ﺯﻴﺎﺩﺓ ﺴﺭﻋﺔ ﻋﻤل ﺍﻟﻨﻅﺎﻡ ﺃﻜﺜﺭ ﺘﺤﺘﻭﻱ ﺒﻌﺽ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻋﻠـﻰ ﺫﺍﻜـﺭﺓ ﺨﺎﺒﻴـﺔ
21
ﺃﺨﺭﻯ ﺘﻭﻀﻊ ﺨﺎﺭﺝ ﺩﺍﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ ﻭﺘﹸﺩﻋﻰ ﺒﺎﻟﻤﺴﺘﻭﻯ ﺍﻟﺜﺎﻨﻲ ﺃﻭ ،L2ﻭﻴﻜﻭﻥ ﺤﺠﻡ ﻫﺫﻩ ﺍﻟﺫﺍﻜﺭﺓ ﺃﻜﺒﺭ
ﺒﻜﺜﻴﺭ ﻤﻥ L1ﻭﺘﻭﻀﻊ ﺒﻴﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴﺴﺔ ﻭ .L1ﻓﻤﺜﻼﹰ ،ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ ﺒﻨﺘﻴﻭﻡ ﻋﻠﻰ 8ﻜﻴﻠﻭﺒﺎﻴﺕ
ﻤﻥ L1ﻭﺃﻜﺜﺭ ﻤﻥ 256ﻜﻴﻠﻭﺒﺎﻴﺕ ﻤﻥ .L2ﺍﻟﺠﺩﻴﺭ ﺒﺎﻟﺫﻜﺭ ﺃﻥ ﺍﻟﻤﻌـﺎﻟﺞ 8088/8086ﻻ ﻴﺤﺘـﻭﻱ
ﻋﻠﻰ ﺫﺍﻜﺭﺓ ﺨﺎﺒﻴﺔ ،ﺇﻻ ﺇﺫﺍ ﺍﻋﺘﺒﺭﻨﺎ ﺭﺘل ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺃﺤﺩ ﺃﻨﻭﺍﻉ ﺍﻟﺫﻭﺍﻜﺭ ﺍﻟﺨﺎﺒﻴﺔ.
ﺫﺍﻜﺭﺓ ﺭﺌﻴﺴﺔ
ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ
ﺍﻟﻤﺭﻜﺯﻱ CPU
ﺘﺤﺘﻭﻱ ﺒﻌﺽ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻋﻠﻰ ﻤﺴﺘﻭﻯ ﺜﺎﻟﺙ ﻤﻥ ﺍﻟـﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴـﺔ L3ﻴﺘﺠـﺎﻭﺯ ﺤﺠﻤﻬـﺎ ﻋـﺩﺓ
ﻤﻴﻐﺎﺒﺎﻴﺕ ،ﻤﺜل ﺍﻟﻤﻌﺎﻟﺞ Itanium IIﻤﻥ Intelﻭﺴﻠﺴﻠﺔ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ .IBM Power 4
22
ﺘﻤﺎﺭﻴﻥ
ﺃﻭ ﹰﻻ :ﺃﺠﺏ ﺒـ ﺼﺢ ﺃﻭ ﺨﻁﺄ
-1ﺍﻟﺫﻭﺍﻜﺭ ROMﻫﻲ ﻟﻠﻘﺭﺍﺀﺓ ﻓﻘﻁ.
-2ﺍﻟﺫﻭﺍﻜﺭ SRAMﻫﻲ ﻟﻠﻜﺘﺎﺒﺔ ﻓﻘﻁ.
-3ﺘﺤﺘﺎﺝ ﺍﻟﺫﻭﺍﻜﺭ DRAMﺇﻟﻰ ﻋﻤﻠﻴﺔ ﺇﻨﻌﺎﺵ.
-4ﺴﺭﻋﺔ ﻋﻤل DRAMﺃﺴﺭﻉ ﻤﻥ .SRAM
-5ﻴﻤﻜﻥ ﺇﻋﺎﺩﺓ ﺒﺭﻤﺠﺔ ﺍﻟﺫﻭﺍﻜﺭ .ROM
-6ﺯﻤﻥ ﺍﻟﻭﺼﻭل ﺇﻟﻰ ﺃﻱ ﻤﻭﻗﻊ ﻓﻲ ﺍﻟﺫﻭﺍﻜﺭ SRAMﻫﻲ ﻨﻔﺴﻬﺎ.
-7ﺴﻌﺔ ﺫﻭﺍﻜﺭ SRAMﺃﻜﺒﺭ ﻤﻥ .DRAM
-8ﻻ ﻴﻤﻜﻥ ﺇﻋﺎﺩﺓ ﺒﺭﻤﺠﺔ ﺍﻟﺫﻭﺍﻜﺭ .PROM
-9ﻴﻤﻜﻥ ﻤﺤﻭ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ EPROMﻋﻥ ﻁﺭﻴﻕ ﺘﹶﻌﺭِﻴﻀﻬﺎ ﺇﻟﻰ ﺃﺸﻌﺔ ﻓﻭﻕ ﺍﻟﺒﻨﻔﺴﺠﻴﺔ
ﻋﺒﺭ ﻨﺎﻓﺫﺘﻬﺎ ﺍﻟﺯﺠﺎﺠﻴﺔ.
-10ﻴﺠﺭﻱ ﻋﻨﺩ ﺭﺒﻁ ﺫﺍﻜﺭﺓ ﻤﻊ ﻤﻌﺎﻟﺞ ﻭﺼل ﺨﻁﻭﻁ ﻋﻨﻭﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻊ ﺨﻁﻭﻁ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ.
-11ﻴﻤﻜﻥ ﻓﻲ ﺍﻟﻌﻨﻭﻨﺔ ﺍﻟﻤﻁﻠﻘﺔ ﻋﻨﻭﻨﺔ ﻤﻭﻗﻊ ﺫﺍﻜﺭﺓ ﺒﺄﻜﺜﺭ ﻤﻥ ﻋﻨﻭﺍﻥ.
ﻟﻠﻤﻌﺎﻟﺞ 8086ﻻﻨﺘﺨﺎﺏ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ ﺃﻭ ﺍﻨﺘﺨﺎﺏ ﻓﻀﺎﺀ ﺒﻭﺍﺒﺎﺕ M/ IO -12ﺘﺴﺘﺨﺩﻡ ﺇﺸﺎﺭﺓ ﺍﻟﺘﺤﻜﻡ
ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ.
-13ﻴﻀﻊ ﺍﻟﻤﻌﺎﻟﺞ 8088ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺨﻼل ﺩﻭﺭﺓ ﻜﺘﺎﺒﺔ.
-14ﺇﻥ ﻋﺩﺩ ﺨﻁﻭﻁ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8088ﻫﻲ 8ﺒﺕ.
-15ﺇﻥ ﻋﺩﺩ ﺨﻁﻭﻁ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8086ﻫﻲ 16ﺒﺕ.
-16ﻴﺠﺭﻱ ﺘﻘﺴﻴﻡ ﻓﻀﺎﺀ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ 8086ﺇﻟﻰ ﻜﺘﻠﺘﻴﻥ ﺯﻭﺠﻴﺔ ﻭﻓﺭﺩﻴﺔ.
-17ﺘﺘﻜﻭﻥ ﺩﻭﺭﺓ ﺍﻵﻟﺔ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ 8086ﻤﻥ 4ﺤﺎﻻﺕ ﻋﻠﻰ ﺍﻷﻗل.
-18ﺇﻥ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﻀﻤﻤﺔ ﻤﻊ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ .8086
-19ﻨﺴﺘﺨﺩﻡ ﺇﺸﺎﺭﺓ ﺍﻟﻤﻌﺎﻟﺞ ALEﻟﻌﺯل ﺨﻁﻭﻁ ﻋﻨﻭﻨﺔ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﻤﻀﻤﻤﺔ.
ﺍﻟﻤﻭﺍﻗﻊ ﺫﺍﺕ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﺯﻭﺠﻴﺔ .ﺍﻟﺠﻭﺍﺏ :ﺨﻁﺄ BHE -20ﺘﻨﺘﺨﺏ
-21ﻴﻤﻜﻥ ﻟﻠﻤﻌﺎﻟﺞ 8088ﻜﺘﺎﺒﺔ ﻜﻠﻤﺔ ﺒﻁﻭل 2ﺒﺎﻴﺕ ﺨﻼل ﺩﻭﺭﺓ ﻜﺘﺎﺒﺔ ﻭﺍﺤﺩﺓ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ.
-22ﻴﺤﺘﺎﺝ ﺍﻟﻤﻌﺎﻟﺞ 8086ﺩﻭﻤﹰﺎ ﺇﻟﻰ ﺩﻭﺭﺘﻲ ﻗﺭﺍﺀﺓ ﻟﻘﺭﺍﺀﺓ ﻜﻠﻤﺔ ﻤﻥ 2ﺒﺎﻴﺕ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ.
-23ﺘﺴﺘﺨﺩﻡ ﺩﺍﺭﺍﺕ ﻓﻙ ﺍﻟﻌﻨﻭﻨﺔ ﻻﻨﺘﺨﺎﺏ ﺭﻗﺎﻗﺎﺕ ﺍﻟﺫﻭﺍﻜﺭ.
-24ﺴﻌﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ L2ﺃﻜﺒﺭ ﻤﻥ ﺴﻌﺔ ﺍﻟﺫﺍﻜﺭﺓ .L1
23
-25ﺘﻀﻊ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺨﺎﺒﻴﺔ L1ﻀﻤﻥ ﺭﻗﺎﻗﺔ ﺍﻟﻤﻌﺎﻟﺞ ﻨﻔﺴﻬﺎ.
24
-5ﻤﺎ ﻫﻲ ﻤﻭﺍﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺘﻲ ﺘﺤﺘﻠﻬﺎ ﻜل ﻤﻥ ﺍﻟﺫﻭﺍﻜﺭ ﻓﻲ ﺍﻟﻨﻅﺎﻡ ﺍﻟﺼﻐﺭﻱ ﺍﻟﺘﺎﻟﻲ ﺍﻟﻤﺒﻨﻲ ﺤـﻭل
ﺍﻟﻤﻌﺎﻟﺞ .8086
A0
25
ﺍﻟﻔﺼل ﺍﻟﺴﺎﺩﺱ
ﺘﻭﺍﺠﻪ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻤﻊ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻤﺤﻴﻁﻴﺔ
ﺘﻤﻬﻴﺩ
ﻨﺸﺭﺡ ،ﻓﻲ ﻫﺫﺍ ﺍﻟﻔﺼل ،ﻁﺭﻕ ﻋﻨﻭﻨﺔ ﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ ،8088/8086ﻭﺒﻌـﺽ ﺍﻟﻁـﺭﻕ
ﺍﻟﻤﻤﻜﻨﺔ ﻟﺘﺼﻤﻴﻡ ﻫﺫﻩ ﺍﻟﺒﻭﺍﺒﺎﺕ .ﺜﻡ ﻨﺸﺭﺡ ﺒﻨﻴﺎﻥ ﺭﻗﺎﻗﺔ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﺍﻟﻤﺒﺭﻤﺠﺔ 8255Aﻭﺃﻨﻤﺎﻁ ﻋﻤﻠﻬﺎ.
ﻜﻤﺎ ﻨﺒﻴﻥ ﺁﻟﻴﺔ ﺭﺒﻁ ﺍﻟﻤﺒﺩل ﺍﻟﺭﻗﻤﻲ/ﺍﻟﺘﻤﺎﺜﻠﻲ DAC0830ﻭﺍﻟﻤﺒﺩل ﺍﻟﺘﻤـﺎﺜﻠﻲ/ﺍﻟﺭﻗﻤـﻲ ADC0804ﻤـﻊ
ﺍﻟﻤﻌﺎﻟﺞ .ﻭﻨﺸﺭﺡ ،ﺃﺨﻴﺭﺍﹰ ،ﺘﻘﻨﻴﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻭﺃﻨﻭﺍﻋﻬﺎ ﺍﻟﻤﺨﺘﻠﻔﺔ.
1
ﻓﻀﺎﺀ ﺩﺧﻞ/ﺧﺮﺝ ﺟﺰﺀ ﻣﻦ ﻓﻀﺎﺀ ﺍﻟﺬﺍﻛﺮﺓ
2
ﻴﺠﺏ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺍﺴﺘﺨﺩﺍﻡ ﺘﻌﻠﻴﻤﺔ ﺍﻟﺩﺨل INﻭﺘﻌﻠﻴﻤﺔ ﺍﻟﺨﺭﺝ OUTﻟﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻴﻥ ﺍﻟﺒﻭﺍﺒـﺎﺕ
ﻭﺍﻟﻤﺭﺍﻜﻡ ) ALﻟﻠﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﺒﺎﻴﺕ ﻭ AXﻟﻠﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ 2ﺒﺎﻴﺕ( .ﻴﻤﻜﻥ ﺃﻥ ﺘﺘﻀﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ INﺃﻭ
ﺍﻟﺘﻌﻠﻴﻤﺔ OUTﻋﻨﻭﺍﻥ ﺍﻟﺒﻭﺍﺒﺔ ﺃﻭ ﺭﻗﻤﻬﺎ ﻋﻨﺩ ﺍﻟﻨﻔﺎﺫ ﺇﻟﻰ ﺒﻭﺍﺒﺔ ﺘﺤﺘل ﺃﺤﺩ ﺍﻟﻌﻨﺎﻭﻴﻥ ،00h-FFhﻜﻤﺎ ﻴﻤﻜﻨﻨﺎ
ﺒﻭﻀﻊ ﻋﻨﻭﺍﻥ ﺍﻟﺒﻭﺍﺒﺔ ﻓﻲ ﺍﻟﺴﺠل DXﺍﻟﻨﻔﺎﺫ ﺇﻟﻰ ﺃﻱ ﺒﻭﺍﺒﺔ ﺘﻘﻊ ﻀﻤﻥ ﻜﺎﻤل ﻓﻀﺎﺀ ﻋﻨﻭﻨـﺔ ﺍﻟﺒﻭﺍﺒـﺎﺕ
.0000h-FFFFh
ﻤﺜﺎل :ﺘﻘﺭﺃ ﺍﻟﺘﻌﻠﻴﻤﺔ IN AL, 38hﺍﻟﻘﻴﻤﺔ ﻋﻠﻰ ﺍﻟﺒﻭﺍﺒﺔ ﺫﺍﺕ ﺍﻟﻌﻨﻭﺍﻥ 0038hﻭﺘﻀﻌﻬﺎ ﻓﻲ ﺍﻟـﺴﺠل ،AL
ﻓﻲ ﺤﻴﻥ ﺘﻘﺭﺃ ﺍﻟﺘﻌﻠﻴﻤﺘﻴﻥ ﺍﻟﺘﺎﻟﻴﺘﻴﻥ ﺍﻟﻘﻴﻤﺔ ﻋﻠﻰ ﺍﻟﺒﻭﺍﺒﺔ ﺍﻟﺘﻔﺭﻋﻴـﺔ 1 LTP1ﻓـﻲ ﺍﻟﺤﺎﺴـﻭﺏ ﺍﻟﺸﺨـﺼﻲ
ﻭﺘﻀﻌﻬﺎ ﻓﻲ ﺍﻟﺴﺠل :AL
ﻫﻨﺎﻙ ﺘﺸﺎﺒﻪ ﻜﺒﻴﺭ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﻌﺎﻟﺞ ﺒﻴﻥ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻓﻀﺎﺀ ﺍﻟﺒﻭﺍﺒﺎﺕ ،ﺤﻴﺙ ﻴﺴﺘﺨﺩﻡ ﺍﻟﻤﻌﺎﻟﺞ ﻤـﺴﺭﻯ
ﺍﻟﻨﻅﺎﻡ ﻨﻔﺴﻪ ﻟﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﻊ ﻜل ﻤﻥ ﺍﻟﺒﻭﺍﺒﺎﺕ ﻭﺍﻟﺫﻭﺍﻜﺭ .ﻭﻤﻊ ﺫﻟﻙ ،ﻴﻭﺠﺩ ﺜﻼﺙ ﺍﺨﺘﻼﻓﺎﺕ ﺃﺴﺎﺴﻴﺔ
ﺒﻴﻥ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻓﻀﺎﺀ ﺍﻟﺒﻭﺍﺒﺎﺕ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﻌﺎﻟﺞ ﻭﻫﻲ:
ﻓﻲ ﺍﻟﻤﻌﺎﻟﺞ (8088ﻟﻠﺘﻤﻴﻴﺯ ﺒﻴﻥ ﻓﻀﺎﺀ ﺍﻟـﺫﺍﻜﺭﺓ ) M/ IOﺃﻭ IO/ M ﻴﺴﺘﺨﺩﻡ ﺍﻟﻤﻌﺎﻟﺞ 8086ﺍﻹﺸﺎﺭﺓ
ﻭﻓﻀﺎﺀ ﺍﻟﺒﻭﺍﺒﺎﺕ.
ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﻌﺎﻟﺞ ﻋﻨﻭﻨﺔ 1ﻤﻴﻐﺎﺒﺎﻴﺕ ﻤﻥ ﺍﻟﺫﻭﺍﻜﺭ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ ،A0-A19ﻓـﻲ ﺤـﻴﻥ
ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﻌﺎﻟﺞ ﻓﻘﻁ ﻋﻨﻭﻨﺔ 64ﻜﻴﻠﻭﺒﺎﻴﺕ ﺃﻭ 32ﻜﻴﻠﻭ ﻜﻠﻤﺔ ﻤﻥ ﺒﻭﺍﺒﺎﺕ ﺍﻟـﺩﺨل/ﺍﻟﺨـﺭﺝ ﻭﺫﻟـﻙ
ﺒﺎﺴﺘﺨﺩﺍﻡ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ .A0-A15
ﻻ ﻴﺴﺘﺨﺩﻡ ﺍﻟﻤﻌﺎﻟﺞ ﻓﻲ ﻋﻨﻭﻨﺔ ﺍﻟﺒﻭﺍﺒﺎﺕ ﺍﻟﺘﻲ ﺘﻘﻊ ﻓﻲ ﻓﻀﺎﺀ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻨﻅﺎﻡ ﺍﻟﻤﻘﺘﻁﻌﺎﺕ
ﺍﻟﻤﺴﺘﺨﺩﻡ ﻓﻲ ﻓﻀﺎﺀ ﺍﻟﺫﺍﻜﺭﺓ.
ﻴﻤﻜﻨﻨﺎ ﻋﻨﻭﻨﺔ ﺍﻟﺒﻭﺍﺒﺎﺕ ﺍﻟﺘﻲ ﺘﻘﻊ ﻓﻲ ﻓﻀﺎﺀ ﺍﻟﺒﻭﺍﺒﺎﺕ ﺒﺎﻟﻁﺭﻴﻘﺔ ﻨﻔﺴﻬﺎ ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ﻓﻲ ﻋﻨﻭﻨـﺔ ﺍﻟـﺫﻭﺍﻜﺭ
ﺒﺎﺴﺘﺨﺩﺍﻡ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ A0-A15ﻓﻘﻁ .ﻨﺫﻜﺭ ﻫﻨﺎ ﺃﻨﻪ ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﺭﻗﻡ ﺍﻟﺒﻭﺍﺒﺔ ﻤﻀﻤﻨﻨﹰﺎ ﻓﻲ ﺍﻟﺘﻌﻠﻴﻤـﺔ
INﺃﻭ ﺍﻟﺘﻌﻠﻴﻤﺔ OUTﻓﺈﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻴﻀﻊ ﺃﺼﻔﺎﺭﹰﺍ ﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ .A8-A15
3
ﺨﺭﻴﻁﺔ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻓﻲ ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺸﺨﺼﻲ
ﺠﺭﻯ ﺤﺠﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ 00000h-03FFhﻤﻥ ﻓﻀﺎﺀ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻓﻲ ﺍﻟﺤﺎﺴـﻭﺏ ﺍﻟﺸﺨـﺼﻲ
ﻟﻭﻅﺎﺌﻑ ﻤﺤﺩﺩﺓ ،ﻭﺘﺭﻜﺕ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﺒﺎﻗﻴﺔ 0400h-FFFFhﻤﺘﺎﺤﺔ ﻟﺘﻁﺒﻴﻘﺎﺕ ﺍﻟﻤﺴﺘﺨﺩﻡ .ﻓﻤـﺜ ﹰ
ﻼ ﺠـﺭﻯ
ﺤﺠﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ 03F0-03FFhﻟﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﻊ ﺍﻟﺒﻭﺍﺒﺔ ﺍﻟﺘﺴﻠﺴﻴﺔ ،COM1ﻭﺍﻟﻌﻨﺎﻭﻴﻥ 0378-037Fh
ﻟﻠﺒﻭﺍﺒﺔ ﺍﻟﺘﻔﺭﻋﻴﺔ ﻭ 0060-0063hﻟﻠﺘﻌﺎﻤل ﻤﻊ ﺍﻟﺭﻗﺎﻗﺔ .8255ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘـﺎﻟﻲ ﺨﺭﻴﻁـﺔ ﺒﻭﺍﺒـﺎﺕ
ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻟﻠﺤﺎﺴﻭﺏ ﺍﻟﺸﺨﺼﻲ.
ﺧﺮﻳﻄﺔ ﺍﻟﺪﺧﻞ/ﺍﳋﺮﺝ
ﻟﻠﺤﺎﺳﻮﺏ ﺍﻟﺸﺨﺼﻲ
4
ﺘﺤﺘل ﺍﻟﻌﻨﻭﺍﻥ 9Chﻤﻥ ﻓﻀﺎﺀ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻟﻠﻤﻌﺎﻟﺞ ،8088ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺭﻗﺎﻗﺔ .74LS24
ﹸﻨﻭﺼل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺨﺎﺭﺠﻴﺔ ﺇﻟﻰ ﻤﺩﺨل ﺭﻗﺎﻗﺔ ﺍﻟﻌﺯل ،74LS244ﻓﻲ ﺤﻴﻥ ﹸﻨﻭﺼل ﻤﺨﺎﺭﺝ ﺭﻗﺎﻗﺔ ﺍﻟﻌﺯل
ﺇﻟﻰ ﺨﻁﻭﻁ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ .ﻋﻨﺩ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺔ ﻗﺭﺍﺀﺓ INﻤﻥ ﺍﻟﻤﻭﻗﻊ ،9Chﺘﹸﻨﺘﺨﺏ ﺍﻟﺭﻗﺎﻗﺔ 74LS244
ﻟﻠﺭﻗﺎﻗﺔ .ﹸﺘﻤﺭﺭ ﺩﺍﺭﺓ ﺍﻟﻌﺯل ﻋﻨﺩ G2 ﻭ G1 ﻋﺒﺭ ﻤﻔﻜﻙ ﺘﺭﻤﻴﺯ ﺍﻟﻌﻨﺎﻭﻴﻥ ﻭﺫﻟﻙ ﺒﻭﻀﻊ 0ﻋﻠﻰ ﺍﻟﻤﺩﺍﺨل
ﺍﻨﺘﺨﺎﺒﻬﺎ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺘﻲ ﻋﻠﻰ ﻤﺩﺍﺨﻠﻬﺎ ﺇﻟﻰ ﺨﻁﻭﻁ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ ،ﻭﻤﻥ ﺜﻡ ﻴﻌﻤـل ﺍﻟﻤﻌـﺎﻟﺞ ﻋﻠـﻰ
ﻗﺭﺍﺀﺘﻬﺎ ﻭﻭﻀﻌﻬﺎ ﻓﻲ ﺍﻟﺴﺠل .ALﻭﻋﻨﺩﻤﺎ ﻻ ﺘﻜﻭﻥ ﺍﻟﺭﻗﺎﻗﺔ 74LS244ﻤﻨﺘﺨﺒﺔ ،ﺃﻱ ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﺃﺤـﺩ
ﻤﺴﺎﻭﻴﹰﺎ ،1ﻓﺈﻥ ﻤﺨﺎﺭﺝ ﺍﻟﺭﻗﺎﻗﺔ ﺘﻜﻭﻥ ﻓـﻲ ﺤﺎﻟـﺔ ﻤﻤﺎﻨﻌـﺔ G2 ﻭ G1 ﺃﻭ ﻜﻼ ﻤﺩﺨﻠﻲ ﺍﻨﺘﺨﺎﺏ ﺍﻟﺩﺍﺭﺓ
ﻋﺎﻟﻴﺔ ،ﻤﻤﺎ ﻴﻌﻨﻲ ﻋﺯل ﻤﺩﺍﺨل ﺭﻗﺎﻗﺔ ﺍﻟﻌﺯل ﻋﻥ ﺨﻁﻭﻁ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ.
ﻻﺤﻅ ﺃﻨﻨﺎ ﻟﻡ ﻨﺴﺘﺨﺩﻡ ،ﻓﻲ ﺍﻟﻤﺜﺎل ﺍﻟﺴﺎﺒﻕ ،ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ A8-A15ﻓﻲ ﻋﻨﻭﻨﺔ ﺍﻟﺒﻭﺍﺒﺔ ﻟﻜﻭﻨﻬﺎ ﺘﻘﻊ ﻓـﻲ
ﺍﻟﺤﻴﺯ 00-FFhﻤﻥ ﻓﻀﺎﺀ ﺍﻟﺒﻭﺍﺒﺎﺕ .ﻭﻴﻤﻜﻨﻨﺎ ﺒﺎﻟﺘﺎﻟﻲ ﺘﻀﻤﻴﻥ ﺭﻗﻡ ﺍﻟﺒﻭﺍﺒﺔ ﻓﻲ ﺘﻌﻠﻴﻤﺔ ﺍﻹﺩﺨﺎل INﻨﻔﺴﻬﺎ،
ﻭﺘﺴﺎﻭﻱ ﺠﻤﻴﻊ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ A8-A15ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺍﻟﺼﻔﺭ.
ﺇﻥ ﺩﺍﺭﺓ ﺍﻟﺩﺨل ﺍﻷﺴﺎﺴﻴﺔ ﺍﻟﺴﺎﺒﻘﺔ ﺘﻅﻬﺭ ﺒﺸﻜل ﻭﺍﻀﺢ ﻋﻨﺩﻤﺎ ﻨﺤﺘﺎﺝ ﺇﺩﺨﺎل ﻤﻌﻁﻴﺎﺕ ﺇﻟـﻰ ﺍﻟﻤﻌـﺎﻟﺞ ﺃﻭ
ﺘﻅﻬﺭ ﻜﺠﺯﺀ ﻤﻥ ﺘﺼﻤﻴﻡ ﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ ﺍﻟﻤﺒﺭﻤﺠﺔ.
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﺍﻜﺘﺏ ﺘﻌﻠﻴﻤﺎﺕ ﺘﺘﻘﺼﻰ ﺤﺎﻟﺔ ﺍﻟﻤﺩﺨل ،D7ﻤﻥ ﺒﻭﺍﺒﺔ ﺘﺤﺘل ﺍﻟﻌﻨﻭﺍﻥ ،9Chﺤﺘﻰ ﻴـﺴﺎﻭﻱ
.0
5
ﺍﻟﺠﻭﺍﺏ:
POLL: IN Al, 9Ch ; read data
SHL AL, 1 ; put D7 in AC
JC POLL ; re-read data if AC ==1
ﹸﺘﺤﺎﻓﻅ ﻤﺨﺎﺭﺝ ﺍﻟﺩﺍﺭﺓ ،74LS373ﻋﻨﺩﻤﺎ ﻻ ﺘﻜﻭﻥ ﺍﻟﺩﺍﺭﺓ ﻤﻨﺘﺨﺒﺔ ،ﻋﻠﻰ ﺁﺨﺭ ﻗﻴﻤﺔ ﺠﺭﻯ ﻤـﺴﻜﻬﺎ ،ﻭﻻ
ﺘﺘﻐﹼﻴﺭ ﻤﺨﺎﺭﺝ ﺍﻟﺩﺍﺭﺓ ﺇﻻ ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺔ ﺇﺨﺭﺍﺝ ﺠﺩﻴﺩﺓ ﻋﻠﻰ ﻋﻨﻭﺍﻥ ﺍﻟﺒﻭﺍﺒﺔ ﻨﻔﺴﻪ.
6
ﺭﻗﺎﻗﺔ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﺍﻟﻤﺒﺭﻤﺠﺔ 8255A
ﹸﺘﺴﺘﺨﺩﻡ ﺭﻗﺎﻗﺔ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﺍﻟﻤﺒﺭﻤﺠﺔ ،8255Aﻋﻠﻰ ﻨﺤﻭ ﺨﺎﺹ ،ﻟﺭﺒﻁ ﻤﻌﺎﻟﺠﺎﺕ Intelﻤﻊ ﺘﺠﻬﻴﺯﺍﺕ
ﻤﺤﻴﻁﻴﺔ ﻤﺘﻭﺍﻓﻘﺔ ﻤﻊ ﺘﻘﺎﻨﺔ .TTLﻟﻘﺩ ﺍﺴﺘﺨﺩﻤﺕ ﻫﺫﻩ ﺍﻟﺭﻗﺎﻗﺔ ﻓﻲ ﺍﻟﺤﻭﺍﺴﻴﺏ ﺍﻟﺸﺨﺼﻴﺔ ﺍﻷﻭﻟﻰ ﻜﻭﺍﺠﻬـﺔ
ﺭﺒﻁ ﻤﻊ ﻁﺎﺒﻌﺔ ﺘﻔﺭﻋﻴﺔ ﻭﻤﻊ ﻟﻭﺤﺔ ﻤﻔﺎﺘﻴﺢ.
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺍﻟﺒﻨﻴﺔ ﺍﻟﺩﺍﺨﻠﻴﺔ ﻟﻠﺭﻗﺎﻗﺔ .8255A
ﺘﺤﺘﻭﻱ ﺍﻟﺭﻗﺎﻗﺔ 8255Aﻋﻠﻰ ﺜﻼﺙ ﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ B ،A :ﻭ Cﻁﻭل ﻜل ﻤﻨﻬﺎ 1ﺒﺎﻴﺕ .ﻗﹸـﺴﻤﺕ
ﻫﺫﻩ ﺍﻟﺒﻭﺍﺒﺎﺕ ﻜﻤﺠﻤﻭﻋﺘﻴﻥ Aﻭ .Bﺘﻀﻡ ﺍﻟﻤﺠﻤﻭﻋﺔ Aﺍﻟﺒﻭﺍﺒﺔ Aﻭﺍﻟﻨﺼﻑ ﺍﻷﻋﻠﻰ ﻤـﻥ ﺍﻟﺒﻭﺍﺒـﺔ C
) ،(PC4-PC7ﻓﻲ ﺤﻴﻥ ﺘﻀﻡ ﺍﻟﻤﺠﻤﻭﻋﺔ Bﺍﻟﺒﻭﺍﺒﺔ Bﻭﺍﻟﻨﺼﻑ ﺍﻷﺩﻨﻰ ﻤـﻥ ﺍﻟﺒﻭﺍﺒـﺔ .(PC0-PC3) C
ﻴﻤﻜﻥ ﺒﺭﻤﺠﺔ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺍﺭﺓ ،8255Aﻋﺒﺭ ﺴﺠل ﺘﺤﻜﻡ ﺩﺍﺨﻠﻲ ،ﻟﺘﻌﻤل ﺠﻤﻴﻌﻬﺎ ﻜﺒﻭﺍﺒﺎﺕ ﺩﺨـل/ﺨـﺭﺝ
ﻤﺴﺘﻘﻠﺔ ﺒﻌﻀﻬﺎ ﻋﻥ ﺒﻌﺽ ،ﺃﻭ ﺃﻥ ﻴﻌﻤل ﺠﺯﺀ ﻤﻨﻬﺎ ﻜﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ ﻓﻲ ﺤﻴﻥ ﻴﺴﺘﺨﺩﻡ ﺍﻟﺠﺯﺀ ﺍﻵﺨﺭ
ﻜﺨﻁﻭﻁ ﺘﺤﻜﻡ ﻟﻬﺫﻩ ﺍﻟﺒﻭﺍﺒﺎﺕ .ﻴﻤﻜﻨﻨﺎ ﺍﻨﺘﺨﺎﺏ ﺇﺤﺩﻯ ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﺍﻟﺜﻼﺜـﺔ ﺃﻭ ﺴـﺠل ﺍﻟـﺘﺤﻜﻡ
ﺍﻟﺩﺍﺨﻠﻲ ﻋﺒﺭ ﻤﻐﺭﺯﻱ ﺍﻟﻌﻨﻭﻨﺔ A0ﻭ A1ﻟﻠﺭﻗﺎﻗﺔ ،ﻜﻤﺎ ﻴﻠﻲ:
7
ﺍﻟﻭﻅﻴﻔﺔ A1 A0
ﻻ ﻋﻠﻰ ﻁﺭﻴﻘﺔ ﺭﺒﻁ ﺭﻗﺎﻗﺔ 8255Aﻤﻊ ﻤﻌﺎﻟﺞ .8086ﻨﻭﺼل ،ﻓﻲ ﻫﺫﺍ ﺍﻟﻤﺜﺎل:
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻤﺜﺎ ﹰ
ﻤﻐﺎﺭﺯ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻟﻠﺭﻗﺎﻗﺔ ،D0-D7ﺇﻟﻰ ﻤﺴﺭﻯ ﻤﺴﺭﻯ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﻤﻌﺯﻭل .D0-D7
ﻟﻨﻅﺎﻡ ﺍﻟﻤﻌﺎﻟﺞ ،ﻋﻠﻰ ﺍﻟﺘﺘﺎﻟﻲ. ﺍﻟﻤﺨﺭﺠﻴﻥ IORﻭ IOW ﺇﻟﻰ WR ﻭ RD ﻤﻐﺭﺯﻱ ﺍﻟﺭﻗﺎﻗﺔ
ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ A0ﻭ A3-A7ﺇﻟﻰ ﺩﺍﺭﺓ ﻤﻔﻜﻙ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ 74LS138ﻻﻨﺘﺨﺎﺏ ﺍﻟﺭﻗﺎﻗﺔ ،ﺒﻴﻨﻤﺎ
ﻨﻭﺼل ﻤﻐﺭﺯﻱ ﺍﻟﻌﻨﻭﻨﺔ ﻟﻠﺭﻗﺎﻗﺔ A0ﻭ A1ﺇﻟﻰ ﺨﻁﻲ ﺍﻟﻌﻨﻭﻨﺔ A1ﻭ A2ﻟﻠﻤﻌﺎﻟﺞ ﻻﻨﺘﺨﺎﺏ ﺇﺤـﺩﻯ
ﺒﻭﺍﺒﺎﺕ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﺍﻟﺜﻼﺜﺔ ﺃﻭ ﺴﺠل ﺍﻟﺘﺤﻜﻡ ﺍﻟﺩﺍﺨﻠﻲ.
ﻴﻤﻜﻨﻨﺎ ﺃﺨﻴﺭﹰﺍ ﻭﺼل ﻤﻐﺎﺭﺯ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻟﻠﺭﻗﺎﻗﺔ ﺇﻟﻰ ﺘﺠﻬﻴﺯﺍﺕ ﺨﺎﺭﺠﻴﺔ ﻤﻨﺎﺴﺒﺔ.
8
ﺘﺤﺘل ﺍﻟﺒﻭﺍﺒﺎﺕ ﻭﺴﺠل ﺍﻟﺘﺤﻜﻡ ﻟﻠﺭﻗﺎﻗﺔ ﻓﻲ ﺍﻟﻨﻅﺎﻡ ﺍﻟﺴﺎﺒﻕ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﺘﺎﻟﻴﺔ:
ﺍﻟﻭﻅﻴﻔﺔ ﺍﻟﻌﻨﻭﺍﻥ
ﺍﻟﺒﻭﺍﺒﺔ A C0h
ﻴﻤﻜﻥ ﺍﺸﺘﻘﺎﻕ ﺇﺸﺎﺭﺓ ﺍﻟﻘﺭﺍﺀﺓ ﻤﻥ ﺍﻟﺒﻭﺍﺒﺎﺕ ، IORCﻭﺇﺸﺎﺭﺓ ﺍﻟﻜﺘﺎﺒﺔ ﻓﻲ ﺍﻟﺒﻭﺍﺒﺎﺕ ، IOWCﻤـﻥ ﺇﺸـﺎﺭﺍﺕ
ﻭ ، WRﻜﻤﺎ ﻴﻠﻲ: RD ﺍﻟﺘﺤﻜﻡ ﻟﻠﻤﻌﺎﻟﺞ، IO/ M :
OR
IORC
IO/M
OR IOWC
9
ﺒﺭﻤﺠﺔ ﺍﻟﺭﻗﺎﻗﺔ 8255A
ﻴﻤﻜﻨﻨﺎ ﺒﺭﻤﺠﺔ ﺍﻟﺭﻗﺎﻗﺔ 8255Aﻋﺒﺭ ﺴﺠﻠﻲ ﺘﺤﻜﻡ ﺩﺍﺨﻠﻴﻴﻥ ﻟﻬﻤﺎ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ ﻨﻔﺴﻪ ،ﻴﺠﺭﻱ ﺍﻨﺘﺨﺎﺏ
ﺃﺤﺩ ﻫﺫﻴﻥ ﺍﻟﺴﺠﻠﻴﻥ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺒﺕ ﺍﻷﺨﻴﺭﺓ ﻤﻥ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ،ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ:
ﻛﻠﻤﺔ ﲢﻜﻢ
ﻭﻇﻴﻔﺔ ﻛﻞ ﺑﺖ ﻣﻦ
ﺳﺠﻞ ﺍﻟﺘﺤﻜﻢ
10
ﻴ ﻤﻜﱢﻨﻨﺎ ﻭﻀﻊ 1ﻤﻨﻁﻘﻲ ﻓﻲ ﺍﻟﺒﺕ ﺍﻷﺨﻴﺭﺓ ﻤﻥ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ،ﻤﻥ ﺒﺭﻤﺠﺔ ﺍﻟﻤﺠﻤﻭﻋﺔ Aﻭ Bﻋﻠﻰ ﻨﺤـﻭ
ﻤﺴﺘﻘل ﻟﺘﻌﻤل ﺒﻌﺩﺓ ﺃﻨﻤﺎﻁ ،ﺍﻨﻅﺭ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ:
ﻴﻤﻜﻨﻨﺎ ﺒﺭﻤﺠﺔ ﺍﻟﻤﺠﻤﻭﻋﺔ Bﻓﻲ ﺍﻟﻨﻤﻁ 0ﻟﺘﻌﻤل ﻜﺒﻭﺍﺒﺎﺕ ﺩﺨل/ﺨﺭﺝ ﺒﺴﻴﻁﺔ ،ﺃﻭ ﺒﺭﻤﺠﺘﻬﺎ ﻓﻲ ﺍﻟﻨﻤﻁ
1ﻟﺘﻌﻤل ﻓﻲ ﻨﻤﻁ ﺍﻟﻘﺩﺡ strobedﺤﻴﺙ ﻴﺠﺭﻱ ﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﻊ ﺍﻟﺘﺠﻬﻴﺯﺍﺕ ﺍﻟﻤﺤﻴﻁﻴـﺔ ﻋﺒـﺭ
ﺍﻟﺒﻭﺍﺒﺔ Bﻓﻲ ﺤﻴﻥ ﻨﺴﺘﺨﺩﻡ ﺍﻟﺠﺯﺀ ﺍﻷﺩﻨﻰ ﻤﻥ ﺍﻟﺒﻭﺍﺒﺔ ،PCL ،Cﻟﺘﺄﻤﻴﻥ ﺇﺸﺎﺭﺍﺕ ﺍﻟﻤﺼﺎﻓﺤﺔ.
ﻴﻤﻜﻨﻨﺎ ﺒﺭﻤﺠﺔ ﺍﻟﻤﺠﻤﻭﻋﺔ Aﻟﺘﻌﻤل ﻓﻲ ﺍﻟﻨﻤﻁ 0ﺃﻭ 1ﻜﻤﺎ ﻫﻭ ﺍﻟﺤﺎل ﻓﻲ ﺍﻟﻤﺠﻤﻭﻋﺔ .Bﻋﻨﺩ ﺒﺭﻤﺠﺔ
ﺍﻟﻤﺠﻤﻭﻋﺔ Aﻓﻲ ﺍﻟﻨﻤﻁ 1ﻨﺴﺘﺨﺩﻡ ﺍﻟﺠﺯﺀ ﺍﻷﻋﻠـﻰ ﻤـﻥ ﺍﻟﺒﻭﺍﺒـﺔ ،PCU ،Cﻟﺘـﺄﻤﻴﻥ ﺇﺸـﺎﺭﺍﺕ
ﺍﻟﻤﺼﺎﻓﺤﺔ .ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻙ ،ﻴﻤﻜﻨﻨﺎ ﺒﺭﻤﺠﺔ ﺍﻟﻤﺠﻤﻭﻋﺔ Aﻓﻲ ﺍﻟﻨﻤﻁ 2ﺤﻴﺙ ﺘـﺼﺒﺢ ﺍﻟﺒﻭﺍﺒـﺔ A
ﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ .bidirectional
11
ﻴﻤ ِﻜﻨﻨﺎ ﻋﻨﺩ ﻭﻀﻊ 0ﻤﻨﻁﻘﻲ ﻓﻲ ﺍﻟﺒﺕ ﺍﻷﺨﻴﺭﺓ ﻤﻥ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ،ﺘﻐﻴﻴﺭ ﺤﺎﻟﺔ ﻜل ﺒﺕ ﻤﻥ ﺒﺘﺎﺕ ﺍﻟﺒﻭﺍﺒﺔ C
ﻋﻨﺩﻤﺎ ﺘﻜﻭﻥ ﺍﻟﺭﻗﺎﻗﺔ 8255Aﻤﺒﺭﻤﺠﺔ ﻓﻲ ﺍﻟﻨﻤﻁ 0ﺃﻭ ،1ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ:
ﻤﺜﺎل:ﺍﻜﺘﺏ ﺘﻌﻠﻴﻤﺎﺕ ﺘﻀﻊ 1ﻓﻲ ﺍﻟﺒﺘﺘﻴﻥ PC3ﻭ ،PC7ﺒﻔﺭﺽ ﺃﻥ ﻋﻨﻭﺍﻥ ﺴﺠل ﺍﻟﺘﺤﻜﻡ ﻓـﻲ ﺍﻟـﺩﺍﺭﺓ
8255Aﻫﻭ .83h
ﺍﻟﺤل:
12
ﻭﻀﻊ 0ﻓﻲ D2ﻤﻥ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ،ﻓﻲ ﺤﻴﻥ ﻴﺠﺏ ﻭﻀﻊ 0ﻓﻲ D5ﻭ D6ﻤﻥ ﻜﻠﻤﺔ ﺍﻟـﺘﺤﻜﻡ ﻟﺒﺭﻤﺠـﺔ
ﺍﻟﻤﺠﻤﻭﻋﺔ Aﻓﻲ ﺍﻟﻨﻤﻁ .0ﻭﻴﻤﻜﻨﻨﺎ ﺒﺘﻐﻴﻴﺭ ﻗﻴﻡ ﺍﻟﺒﺘﺎﺕ D3 ،D1 ،D0ﻭ D4ﺒﺭﻤﺠﺔ ﻜل ﻤﻥ ﺍﻟﺒﻭﺍﺒـﺎﺕ
A ،PCL ،Bﻭ PCHﻋﻠﻰ ﺤﺩﻩ ﺩﺨل ﺃﻭ ﺨﺭﺝ ﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ،ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل.
ﻤﺜﺎل:
ﻤﺎ ﻫﻲ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ﺍﻟﺘﻲ ﺘﺒﺭﻤﺞ :ﺍﻟﺒﻭﺍﺒﺔ Aﺨﺭﺝ ،ﺍﻟﺒﻭﺍﺒﺔ Bﺩﺨل PCL ،ﺩﺨل ﻭ PCUﺨﺭﺝ ،ﻜﻤـﺎ
ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ؟ ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﻘﺭﺃ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﻥ ﺍﻟﺒﻭﺍﺒﺔ Bﻭﻴﺭﺴﻠﻬﺎ ﺇﻟﻰ ﺍﻟﺒﻭﺍﺒﺔ Aﻭﻴﻘﺭﺃ
ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﺍﻟﺒﻭﺍﺒﺔ PCLﻭﻴﺭﺴﻠﻬﺎ ﺇﻟﻰ ﺍﻟﺒﻭﺍﺒﺔ ،PCHﺒﻔﺭﺽ ﺃﻥ ﻋﻨﻭﺍﻥ ﺍﻟﺒﻭﺍﺒﺔ Aﻟﻠﺭﻗﺎﻗﺔ 8255A
ﻫﻭ .300h
ﺍﻟﺤل:
ﺇﻥ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻫﻲ:
13
ﻴﻌﻤل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺘﺎﻟﻲ ﺃﻭﻻﹰ ،ﻋﻠﻰ ﻜﺘﺎﺒﺔ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ﺍﻟﻤﻨﺎﺴﺒﺔ ﻓﻲ ﺴﺠل ﺍﻟﺘﺤﻜﻡ ،ﺜﻡ ﻴﻨﻔﺫ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻘﺭﺍﺀﺓ
ﻭﺍﻟﻜﺘﺎﺒﺔ ﺍﻟﻤﻁﻠﻭﺒﺔ.
B8255 EQU 300h ; address of port A
CNTL EQU 83h ; control word
14
ﺘﺠﺭﻱ ﻋﻤﻠﻴﺔ ﺍﻹﺩﺨﺎل ﺒﺎﻟﻘﺩﺡ ﻜﻤﺎ ﻴﻠﻲ ،ﺍﻨﻅﺭ ﺍﻟﻤﺨﻁﻁ ﺍﻟﺯﻤﻨﻲ:
-1ﺘﻀﻊ ،ﺃﻭﻻﹰ ،ﺘﺠﻬﻴﺯﺓ ﺍﻟﺩﺨل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﺍﻟﺒﻭﺍﺒﺔ.
-2ﺘﻭﻟﺩ ﺘﺠﻬﻴﺯﺓ ﺍﻟﺩﺨل ﻨﺒﻀﺔ ﺴﺎﻟﺒﺔ ﻋﻠﻰ ﺍﻟ ﻤﺩﺨل . STBﹸﺘﻤﺴﻙ ﺒﻭﺍﺒﺔ ﺍﻟﺩﺨل ،ﻨﺘﻴﺠﺔ ﻟﻬﺫﻩ ﺍﻟﻨﺒـﻀﺔ،
ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﺘﻭﺍﺠﺩﺓ ﻋﻠﻰ ﻤﺩﺍﺨﻠﻬﺎ ،ﻭﻤﻥ ﺜﻡ ﺘﻔﻌل ﺇﺸﺎﺭﺓ ﺼﻭﺍﻥ ﺍﻟﺩﺨل ﻤﻤﺘﻠﺊ (input buffer IBF
) ،fullﺃﻱ ﺘﺠﻌﻠﻪ ﻴﺴﺎﻭﻱ ِ ،1ﻟ ﹸﺘﻌﻠﻡ ﺍﻟﺭﻗﺎﻗﺔ 8255Aﺘﺠﻬﻴﺯﺓ ﺍﻟﺩﺨل ﺃﻨﻪ ﺠـﺭﻯ ﻤـﺴﻙ ﺍﻟﻤﻌﻁﻴـﺎﺕ
ﺍﻟﻤﻭﻀﻭﻋﺔ ﻋﻠﻰ ﺍﻟﺒﻭﺍﺒﺔ .ﻭﻴﺠﺭﻱ ﺃﺨﻴﺭﹰﺍ ﺘﻔﻌﻴل ﺇﺸﺎﺭﺓ ﻁﻠﺏ ﺍﻟﻤﻘﺎﻁﻌﺔ (interrupt request) IRﺇﺫﺍ
ﻜﺎﻨﺕ ﻤﺅﻫﻠﺔ.
-3ﻋﻨﺩﻤﺎ ﻴﻌﻠﻡ ﺍﻟﻤﻌﺎﻟﺞ ﺃﻨﻪ ﺠﺭﻯ ﻗﺩﺡ ﻤﻌﻁﻴﺎﺕ ﻓﻲ ﺍﻟﺒﻭﺍﺒﺔ ،ﺇﻤﺎ ﺒﺭﻤﺠﻴﹰﺎ ﻋﻥ ﻁﺭﻴﻕ ﺘﻔﺤﺹ ﺃﻭ ﺘﻘﺼﻲ
ﺤﺎﻟﺔ ،IBFﺃﻭ ﻋﺘﺎﺩﻴﹰﺎ ﻋﻥ ﻁﺭﻴﻕ ﻤﻘﺎﻁﻌﺔ ﺍﻟﻤﻌﺎﻟﺞ ﺒﺈﺸﺎﺭﺓ ،INTRﻴﻨﻔﺫ ﺍﻟﻤﻌﺎﻟﺞ ﺘﻌﻠﻴﻤﺔ INﻟﻘـﺭﺍﺀﺓ
ﻭ INTRﺇﻟـﻰ ﺤﺎﻟﺘﻬﻤـﺎ ﻏﻴـﺭ STB ﻜل ﻤﻥ RD ﺍﻟﻤﻌﻁﻴﺎﺕ .ﺃﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻟﻘﺭﺍﺀﺓ ﺘﻌﻴﺩ ﺍﻹﺸﺎﺭﺓ
15
ﺍﻟﻔﻌﺎﻟﺔ ﺒﺎﻨﺘﻅﺎﺭ ﺤﺩﻭﺙ ﻋﻤﻠﻴﺔ ﻗﺩﺡ ﻤﻌﻁﻴﺎﺕ ﺠﺩﻴﺩﺓ ﻓﻲ ﺍﻟﺒﻭﺍﺒﺔ.
ﻴﺠﺭﻱ ﺘﺄﻫﻴل ﺃﻭ ﺤﺠﺏ ﺇﺸﺎﺭﺓ ﺘﻭﻟﻴﺩ ﺍﻟﻤﻘﺎﻁﻌﺔ INTRAﺍﻟﺨﺎﺼـﺔ ﺒﺎﻟﺒﻭﺍﺒـﺔ Aﻭ INTRBﺍﻟﺨﺎﺼـﺔ
ﺒﺎﻟﺒﻭﺍﺒﺔ Bﺒﻭﻀﻊ 0ﺃﻭ 1ﻓﻲ ﺍﻟﺒﺕ PC4ﻭﻓﻲ ﺍﻟﺒﺕ PC2ﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ،ﻭﻴﺘﻡ ﺫﻟﻙ ﺒﻜﺘﺎﺒﺔ ﻜﻠﻤﺔ ﺘﺤﻜـﻡ
ﻤﻨﺎﺴﺒﺔ ﻓﻲ ﺴﺠل ﺍﻟﺘﺤﻜﻡ ﻤﻊ ﻭﻀﻊ 0ﻓﻲ ﺍﻟﺒﺕ ﺍﻷﺨﻴﺭ ﻤﻥ ﺍﻟﻜﻠﻤﺔ .ﻴﻤﻜﻥ ﻓﻲ ﻨﻤـﻁ ﺍﻹﺩﺨـﺎل ﺒﺎﻟﻘـﺩﺡ
ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺒﺘﺘﻴﻥ PC6ﻭ PC7ﻜﺒﻭﺍﺒﺎﺕ ﺩﺨل ﺃﻭ ﺨﺭﺝ.
ﻤﺜﺎل :ﺍﻜﺘﺏ ﺇﺠﺭﺍﺌﻴﺔ ﺘﻌﻤل ﻋﻠﻰ ﻗﺭﺍﺀﺓ ﻤﻌﻁﻴﺎﺕ ﻤﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﻜﻠﻤﺎ ﺠﺭﻯ ﺍﻟـﻀﻐﻁ ﻋﻠـﻰ ﺃﺤـﺩ
ﻤﻔﺎﺘﻴﺤﻬﺎ ،ﺒﻔﺭﺽ ﺃﻥ ﻋﻨﻭﺍﻥ ﺍﻟﺒﻭﺍﺒﺔ Aﻟﻠﺩﺍﺭﺓ 8255Aﻫﻭ ،20hﻋﻠﻤﹰﺎ ﺃﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﺘـﻀﻊ ﻋﻠـﻰ
ﻤﺨﺎﺭﺠﻬﺎ ﺘﺭﻤﻴﺯ ASCIIﻟﻠﻤﻔﺘﺎﺡ ﺍﻟﻤﻀﻐﻭﻁ ﻭﻤﻥ ﺜﻡ ﺘﻭﻟﺩ ﻨﺒﻀﺔ ﺴـﺎﻟﺒﺔ ﻤـﺩﺘﻬﺎ ِ 1ﻤﻜﺭﻭﺜﺎﻨﻴـﺔ ﻋﻠـﻰ
ﻜﻠﻤﺎ ﺠﺭﻯ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﺃﺤﺩ ﻤﻔﺎﺘﻴﺤﻬﺎ. DAV ﺍﻟﻤﺨﺭﺝ
ﺇﻟﻰ PC4ﻭﻤﺨﺎﺭﺝ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﺇﻟﻰ ﺍﻟﺒﻭﺍﺒﺔ ،Aﻜﻤﺎ ﻫﻭ ﻤﺒـﻴﻥ ﻓـﻲ ﺍﻟـﺸﻜل. ﻨﻭﺼل DAV ﺍﻟﺤل:
ﻨﻔﺤﺹ ﻓﻲ ﺍﻹﺠﺭﺍﺌﻴﺔ ،ﻋﻠﻰ ﻨﺤﻭ ﻤﺴﺘﻤﺭ ،ﻗﻴﻤﺔ PC5ﺤﺘﻰ ﺘﺼﺒﺢ 1ﻋﻨﺩﻫﺎ ﻨﻘﺭﺃ ﺘﺭﻤﻴﺯ ASCIIﻟﻠﻤﻔﺘﺎﺡ
ﺍﻟﻤﻀﻐﻭﻁ.
BIT5 EQU 20h
PORTC EQU 22h
PORTA EQU 20h
16
ﺒﻭﺍﺒﺎﺕ ﺨﺭﺝ ﺘﻌﻤل ﺒﺎﻟﻘﺩﺡ
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺍﻟﺘﻭﺼﻴﻑ ﺍﻟﺩﺍﺨﻠﻲ ﻟﻠﺒﻭﺍﺒﺔ Aﻭﺍﻟﺒﻭﺍﺒﺔ Bﻋﻨﺩﻤﺎ ﺘﻌﻤل ﻜل ﻤﻨﻬﻤﺎ ﻜﺒﻭﺍﺒﺔ ﺨﺭﺝ ﺘﻌﻤل
ﺒﺎﻟﻘﺩﺡ ،ﻜﻤﺎ ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﻨﻔﺴﻪ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ﺍﻟﻼﺯﻤﺔ ﻟﺒﺭﻤﺠﺔ ﻜل ﻤﻥ ﺍﻟﺒﻭﺍﺒﺔ Aﻭﺍﻟﺒﻭﺍﺒﺔ Bﻜﺒﻭﺍﺒﺔ ﺨﺭﺝ
ﻓﻲ ﺍﻟﻨﻤﻁ .1
17
ﺘﺠﺭﻱ ﻋﻤﻠﻴﺔ ﺍﻹﺨﺭﺍﺝ ﻓﻲ ﺍﻟﻨﻤﻁ 1ﻜﻤﺎ ﻴﻠﻲ ،ﺍﻨﻅﺭ ﺍﻟﻤﺨﻁﻁ ﺍﻟﺯﻤﻨﻲ:
ﺍﻟ ﻤﺨﺭﺝ ﺼﻨﻭﺍﻥ ﺍﻟﺨﺭﺝ ﻤﻤﺘﻠﺊ WR -1ﻋﻨﺩﻤﺎ ﻴﻜﺘﺏ ﺍﻟﻤﻌﺎﻟﺞ ﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﺍﻟﺒﻭﺍﺒﺔ ،ﺘﻔ ﻌل ﺇﺸﺎﺭﺓ ﺍﻟﻘﺭﺍﺀﺓ
OBF ) ،(output buffer fullﺃﻱ ﺘﺠﻌﻠﻪ ﻴﺴﺎﻭﻱ .0ﺘﺘﻘﺼﻰ ﺘﺠﻬﻴﺯﺓ ﺍﻟﺨـﺭﺝ ﺤﺎﻟـﺔ ﺍﻟﻤﺨـﺭﺝ OBF
ﻭﻋﻨﺩﻤﺎ ﺘﺠﺩﻩ ﻤﺴﺎﻭﻴﹰﺎ ﺍﻟـ 0ﹶﺘﻌﻠﻡ ﺒﺠﺎﻫﺯﻴﺔ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﻤﺨﺎﺭﺝ ﺍﻟﺒﻭﺍﺒﺔ.
-2ﻋﻨﺩﻤﺎ ﹶﺘﻘﺒل ﺘﺠﻬﻴﺯﺓ ﺍﻟﺨﺭﺝ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﺘﻘﺭﺅﻫﺎ ،ﺘﻭﻟﺩ ﻨﺒﻀﺔ ﺇﺸﻌﺎﺭ acknowledgeﺴﺎﻟﺒﺔ ﻋﻠﻰ ﺍﻟﻤﺩﺨل
. ACK
-3ﺘﻌﻴﺩ ﺍﻟﻨﺒﻀﺔ ﻋﻠﻰ ﺍﻟ ﻤﺩﺨل ACKﺍﻟ ﻤﺨﺭﺝ OBFﺇﻟﻰ ﺍﻟﺤﺎﻟﺔ ﻏﻴﺭ ﺍﻟﻔﻌﺎﻟﺔ ،ﺃﻱ ،1ﻭﺘﻭﻟﺩ ﺍﻟﺩﺍﺭﺓ 8255A
ﺠﺒﻬﺔ ﺼﺎﻋﺩﺓ ﻋﻠﻰ ﺍﻟﻤﺨﺭﺝ ، INTRﺇﺫﺍ ﻜﺎﻥ ﻁﻠﺏ ﺍﻟﻤﻘﻁﻌﺔ ﻤﺅﻫل .ﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺠﺒﻬﺔ ﺍﻟـﺼﺎﻋﺩﺓ
ﻋﻠﻰ ﺍﻟﻤﺨﺭﺝ INTRﻟﻤﻘﺎﻁﻌﺔ ﻋﻤل ﺍﻟﻤﻌﺎﻟﺞ.
ﻴﺠﺭﻱ ﺘﺄﻫﻴل ﺃﻭ ﺤﺠﺏ ﺇﺸﺎﺭﺓ ﺘﻭﻟﻴﺩ ﺍﻟﻤﻘﺎﻁﻌﺔ INTRAﺍﻟﺨﺎﺼﺔ ﺒﺎﻟﺒﻭﺍﺒﺔ Aﻭﺇﺸﺎﺭﺓ INTRBﺍﻟﺨﺎﺼـﺔ
ﺒﺎﻟﺒﻭﺍﺒﺔ Bﺒﻭﻀﻊ 1ﺃﻭ 0ﻓﻲ ﺍﻟﺒﺕ PC6ﻭﻓﻲ ﺍﻟﺒﺕ PC2ﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ،ﻭﻴﺘﻡ ﺫﻟﻙ ﺒﻜﺘﺎﺒﺔ ﻜﻠﻤﺔ ﺘﺤﻜـﻡ
ﻤﻨﺎﺴﺒﺔ ﻓﻲ ﺴﺠل ﺍﻟﺘﺤﻜﻡ ﻤﻊ ﻭﻀﻊ 0ﻓﻲ ﺍﻟﺒﺕ ﺍﻷﺨﻴﺭ ﻤﻥ ﺍﻟﻜﻠﻤﺔ .ﻴﻤﻜﻥ ﻓﻲ ﻨﻤﻁ ﺍﻹﺨـﺭﺍﺝ ﺒﺎﻟﻘـﺩﺡ
ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺒﺘﺘﻴﻥ PC3ﻭ PC4ﻜﺒﻭﺍﺒﺎﺕ ﺩﺨل ﺃﻭ ﺨﺭﺝ.
ﻤﺜﺎل :ﺒﻔﺭﺽ ﺃﻥ ﺍﻟﺒﻭﺍﺒﺔ Aﻤﻥ ﺍﻟﺩﺍﺭﺓ 8255Aﻤﻭﺼﻭﻟﺔ ﺇﻟﻰ ﻁﺎﺒﻌﺔ ،ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠـﹰﺎ ﻴﻌﻤـل ﻋﻠـﻰ
ﻁﺒﺎﻋﺔ ﺍﻟﻨﺹ ﺍﻟﺘﺎﻟﻲ:
?Hi, how are you
?I am fine, How are you
18
:ﺍﻟﺤل
19
ﺍﻟﻌﻤل ﻓﻲ ﺍﻟﻨﻤﻁ 2
ﻴﻤﻜﻥ ﻓﻘﻁ ﺒﺭﻤﺠﺔ ﺍﻟﻤﺠﻤﻭﻋﺔ Aﻟﺘﻌﻤل ﻓﻲ ﺍﻟﻨﻤﻁ ،2ﻋﻨﺩﻫﺎ ﺘﺼﺒﺢ ﺍﻟﺒﻭﺍﺒﺔ Aﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ﻤﻤﺎ ﻴـﺴﻤﺢ
ﻟﻨﺎ ﺒﺈﺩﺨﺎل ﻭﺇﺨﺭﺍﺝ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻨﻔﺴﻬﺎ ﻟﻠﺒﻭﺍﺒﺔ .A
ﹸﺘﻤﺴﻙ ﺍﻟﺒﻭﺍﺒﺔ ﻓﻲ ﻫﺫﺍ ﺍﻟﻨﻤﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟ ﻤﺩﺨﻠﺔ ﺇﻟﻴﻬﺎ ﻤﻥ ﺍﻟﺘﺠﻬﻴﺯﺓ ﺍﻟﺨﺎﺭﺠﻴﺔ ﺃﻭ ﺍﻟ ﻤﺨﺭﺠﺔ ﻋﻠﻴﻬـﺎ ﻤـﻥ
ﺍﻟﻤﻌﺎﻟﺞ .ﻭﻴﺠﺭﻱ ،ﻓﻲ ﻫﺫﺍ ﺍﻟﻨﻤﻁ ،ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺒﺘﺎﺕ PC3-PC7ﻤﻥ ﺍﻟﺒﻭﺍﺒﺔ Cﻜﺈﺸﺎﺭﺍﺕ ﺘﺤﻜﻡ ﺃﻭ ﺤﺎﻟـﺔ
ﻹﺘﻤﺎﻡ ﻋﻤﻠﻴﺔ ﺍﻟﻨﻘل ﺒﺎﻟﻤﺼﺎﻓﺤﺔ ،ﺒﻴﻨﻤﺎ ﻴﻤﻜﻥ ﺒﺭﻤﺠﺔ ﺍﻟﻤﻐﺎﺭﺯ PC0-PC2ﻟﺘﻌﻤل ﻜﻤﻐﺎﺭﺯ ﺩﺨل ﺃﻭ ﺨﺭﺝ.
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺍﻟﺘﻭﺼﻴﻑ ﺍﻟﺩﺍﺨﻠﻲ ﻟﻠﺩﺍﺭﺓ 8255Aﻋﻨﺩﻤﺎ ﺘﻌﻤل ﺍﻟﻤﺠﻤﻭﻋﺔ Aﻓﻲ ﺍﻟﻨﻤﻁ .2
ﻛﻠﻤﺔ ﲢﻜﻢ
20
ﺘﺠﺭﻱ ﻋﻤﻠﻴﺔ ﺇﺭﺴﺎل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﺒﺭ ﺍﻟﺒﻭﺍﺒﺔ Aﻓﻲ ﺍﻟﻨﻤﻁ 2ﻜﻤﺎ ﻴﻠﻲ ،ﺍﻨﻅﺭ ﺍﻟﻤﺨﻁﻁ ﺍﻟﺯﻤﻨﻲ:
ﻓﺈﺫﺍ ﻜﺎﻥ ﻤﺴﻭﻴﹰﺎ 1ﻓﻬﺫﺍ ﻴﻌﻨﻲ ﺃﻥ ﺼﻭﺍﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻓﺎﺭﻏﹰﺎ ،ﻴﻜﺘﺏ OBF ﻻ ﺍﻟﻤﻌﺎﻟﺞ ﺤﺎﻟﺔ
-1ﻴﻔﺤﺹ ﺃﻭ ﹰ
ﺘﺴﺎﻭﻱ ﺍﻟـ .0 OBF ﺍﻟﻤﻌﺎﻟﺞ ﺤﻴﻨﺌﺫ ﻤﻌﻁﻴﺎﺘﻪ ﻓﻲ ﺍﻟﺒﻭﺍﺒﺔ ،Aﻭﺍﻟﺫﻱ ﻴﺅﺩﻱ ﺇﻟﻰ ﺠﻌل
ﻟﺘﺤﺩﺩ ﻓﻴﻤﺎ ﺇﺫﺍ ﻗﺎﻡ ﺍﻟﻤﻌﺎﻟﺞ ﺒﻜﺘﺎﺒﺔ ﻤﻌﻁﻴـﺎﺕ ﺠﺩﻴـﺩﺓ OBF -2ﺘﺭﺍﻗﺏ ﺍﻟﺘﺠﻬﻴﺯﺓ ﺍﻟﺨﺎﺭﺠﻴﺔ ﺃﻴﻀﹰﺎ ﺤﺎﻟﺔ
ﺘﺭﺴل ﻨﺒﻀﺔ ﺴﺎﻟﺒﺔ ﻋﻠﻰ ﺍﻟﻤـﺩﺨل . ACK OBF ﻋﻠﻰ ﺍﻟﺒﻭﺍﺒﺔ .ﻋﻨﺩﻤﺎ ﺘﻜﺘﺸﻑ ﺍﻟﺘﺠﻬﻴﺯﺓ ﻭﺠﻭﺩ 0ﻋﻠﻰ
ﺼﻭﺍﻥ ﺍﻟﺨﺭﺝ ﺍﻟﺜﻼﺜﻲ ﺍﻟﺤﺎﻻﺕ ﻟﻠﺒﻭﺍﺒـﺔ ،Aﻭﺘﻅﻬـﺭ ACK ﻴﺅﻫل ﺍﻟﻤﺴﺘﻭﻯ 0ﻟﻠﻨﺒﻀﺔ ﻋﻠﻰ ﺍﻟﻤﺩﺨل
ﺒﺎﻟﺘﺎﻟﻲ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍﻟﺼﻭﺍﻥ ﻋﻠﻰ ﻤﺨﺭﺝ ﺍﻟﺒﻭﺍﺒﺔ Aﻤﻤـﺎ ﻴـﺴﻤﺢ ﻟﻠﺘﺠﻬﻴـﺯﺓ ﺍﻟﺨﺎﺭﺠﻴـﺔ
ﻤﺴﺎﻭﻴﹰﺎ ،1ﻜﻤـﺎ ACK ﺒﻘﺭﺍﺀﺘﻬﺎ .ﻭﺘﻌﻭﺩ ﻤﺨﺎﺭﺝ ﺍﻟﺒﻭﺍﺒﺔ Aﺇﻟﻰ ﺍﻟﺤﺎﻟﺔ ﺍﻟﻌﺎﺌﻤﺔ ﻋﻨﺩﻤﺎ ﻴﺼﺒﺢ ﺍﻟﻤﺩﺨل
ﺇﻟﻰ ﺤﺎﻟﺘﻬﺎ ﻏﻴﺭ ﺍﻟﻔﻌﺎﻟﺔ ﻭﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ .1 OBF ﺃﻴﻀﹰﺎ ﺍﻟﺒﺕ ACK ﺘﻌﻴﺩ ﺍﻟﻨﺒﻀﺔ ﻋﻠﻰ ﺍﻟﻤﺩﺨل
ﻤﺜﺎل :ﺘﻌﻤل ﺍﻹﺠﺭﺍﺌﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻋﻠﻰ ﺇﺭﺴﺎل ﻤﺤﺘﻭﻯ AHﻋﺒﺭ ﺍﻟﺒﻭﺍﺒﺔ Aﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ:
21
ﻭﻻﺴﺘﻘﺒﺎل ﻤﻌﻁﻴﺎﺕ ﻋﺒﺭ ﺍﻟﺒﻭﺍﺒﺔ Aﻓﻲ ﺍﻟﻨﻤﻁ 2ﻴﺠﺭﻱ ﺘﻨﻔﻴﺫ ﻤﺎ ﻴﻠﻲ ،ﺍﻨﻅﺭ ﺍﻟﻤﺨﻁﻁ ﺍﻟﺯﻤﻨﻲ ﺍﻟﺴﺎﺒﻕ:
ﻻ ﺘﺠﻬﻴﺯﺓ ﺍﻹﺩﺨﺎل ﻤﻌﻁﻴﺎﺘﻬﺎ ﻋﻠﻰ ﺍﻟﺒﻭﺍﺒﺔ ،ﻭﻤﻥ ﺜﻡ ﺘﻭﻟﺩ ﺇﺸﺎﺭﺓ ﺍﻟﻘﺩﺡ ﻋﻠﻰ . STBﺘﺄﺨـﺫ
-1ﺘﻀﻊ ﺃﻭ ﹰ
ﺍﻟﺒﺕ ،IBFﻨﺘﻴﺠﺔ ﻹﺸﺎﺭﺓ ﺍﻟﻘﺩﺡ ،ﺍﻟﻘﻴﻤﺔ 1ﻭﻴﺠﺭﻱ ﻤﺴﻙ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻓﻲ ﺼﻭﺍﻥ ﻀﻤﻥ ﺍﻟﺭﻗﺎﻗﺔ .8255A
-2ﻴﺘﻘﺼﻰ ﺍﻟﻤﻌﺎﻟﺞ ﺒﺭﻤﺠﻴﹰﺎ ﺤﺎﻟﺔ IBFﺤﺘﻰ ﺘﺼﺒﺢ ﻤﺴﺎﻭﻴﺔ ،1ﻭﺍﻟﺫﻱ ﻴﻌﻨﻲ ﻭﺠﻭﺩ ﻤﻌﻁﻴﺎﺕ ﺠﺩﻴﺩﺓ ﻓﻲ
ﺼﻭﺍﻥ ﺍﻟﺩﺨل .ﻴﻨﻔﺫ ﺍﻟﻤﻌﺎﻟﺞ ﺤﻴﻨﺌﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ INﻟﻘﺭﺍﺀﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﻥ ﺍﻟﺼﻭﺍﻥ .ﻴﺠـﺭﻱ ﺨـﻼل ﺘﻨﻔﻴـﺫ
ﺘﻌﻠﻴﻤﺔ ﺍﻟﻘﺭﺍﺀﺓ ﺇﻋﺎﺩﺓ ﻗﻴﻤﺔ ﺍﻟﺒﺕ IBFﺇﻟﻰ 0ﻭﻨﻘل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺇﻟﻰ .AL
ﻤﺜﺎل :ﺘﻌﻤل ﺍﻹﺠﺭﺍﺌﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻋﻠﻰ ﻗﺭﺍﺀﺓ ﻤﻌﻁﻴﺎﺕ ﻤﻥ ﺍﻟﺒﻭﺍﺒﺔ Aﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ﻭﺘﻀﻌﻬﺎ ﻓﻲ : AL
ﻴﻤﻜﻨﻨﺎ ﹶﺘﻔﻌﻴل ﺇﺸﺎﺭﺓ ﺍﻟﻤﻘﺎﻁﻌﺔ INTRﻋﺒﺭ ﺍﻟﻤﻐﺭﺯ PC3ﻟﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﺎﻻﺘﺠـﺎﻫﻴﻥ ﺒـﻴﻥ ﺍﻟﻤﻌـﺎﻟﺞ
ﻭﺘﺠﻬﻴﺯﺓ ﺨﺎﺭﺠﻴﺔ.
ﻋﻨﺩ ﻭﻀﻊ 1ﻓﻲ INTE 1ﻓﺈﻨﻪ ﻴﺠﺭﻱ ﺘﻭﻟﻴﺩ ﻤﻘﺎﻁﻌﺔ ﻋﻨﺩﻤﺎ ﺘﻘﺭﺃ ﺘﺠﻬﻴﺯﺓ ﺨﺎﺭﺠﻴـﺔ ﺍﻟﻤﻌﻁﻴـﺎﺕ ﻤـﻥ
ﺼﻭﺍﻥ ﺍﻟﺨﺭﺝ .ﻭﻋﻨﺩ ﻭﻀﻊ 1ﻓﻲ INTE 2ﻓﺈﻨﻪ ﻴﺠﺭﻱ ﺘﻭﻟﻴﺩ ﻤﻘﺎﻁﻌﺔ ﻋﻨﺩﻤﺎ ﺘﻘﺩﺡ ﺘﺠﻬﻴﺯﺓ ﺨﺎﺭﺠﻴـﺔ
ﻤﻌﻁﻴﺎﺕ ﺠﺩﻴﺩﺓ ﻓﻲ ﺼﻭﺍﻥ ﺍﻟﺩﺨل .ﻴﻤﻜﻨﻨﺎ ﺘﻐﻴﻴﺭ ﺤﺎﻟﺔ ﺍﻟﺒﺘﺘﻴﻥ INTE 1ﻭ INTE 2ﻤﻥ ﺨﻼل ﻜﺘﺎﺒـﺔ 0
ﺃﻭ 1ﻓﻲ PC6ﻭ PC4ﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ،ﻭﻴﺘﻡ ﺫﻟﻙ ﺒﻜﺘﺎﺒﺔ ﻜﻠﻤﺔ ﺘﺤﻜﻡ ﻤﻨﺎﺴﺒﺔ ﻓﻲ ﺴﺠل ﺍﻟﺘﺤﻜﻡ ﻤﻊ ﻭﻀﻊ
0ﻓﻲ ﺍﻟﺒﺕ ﺍﻷﺨﻴﺭ ﻤﻥ ﺍﻟﻜﻠﻤﺔ.
22
ﻓﻲ ﻁﺒﻴﻌﺘﻬﺎ .ﺘﺘﻨﻭﻉ ﺍﻟﻅﻭﺍﻫﺭ ﺍﻟﺘﻲ ﻴﻤﻜﻥ ﺃﻥ ﻴﺘﻌﺎﻤل ﻤﻌﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ ﻤﻥ ﻤﺭﺍﻗﺒﺔ ﺍﻟﻜﻼﻡ ﺇﻟﻰ ﺍﻟﺘﺤﻜﻡ ﺒﻌﻤـل
ﺍﻟﻤﺤﺭﻜﺎﺕ ﻭﻏﻴﺭﻫﺎ.
ﻴﻨﺘﺞ ﺍﻟﻤﺒﺩل ﻋﻠﻰ ﺍﻟﻤﺨﺭﺠﻴﻥ IOUT1ﻭ ،IOUT2ﺍﻟﻤﺼﻤﻤﻴﻥ ﻟﻴﻜﻭﻨﺎ ﻤﺩﺨﻠﻴﻥ ﻟﻤﻜﺒﺭ ﻋﻤﻠﻴﺎﺕ ﺨﺎﺭﺠﻲ،
ﹸﻓﻠﻁﻴﺔ ﺘﻤﺎﺜﻠﻴﺔ ﺘﻜﺎﻓﺊ ﺍﻟﺩﺨل ﺍﻟﺭﻗﻤﻲ ﻋﻠﻰ ﺍﻟﻤﺩﺍﺨل .DI0-DI7
ﺘﺤﺩﺩ VREFﺍﻟﻔﻠﻁﻴﺔ ﺍﻟﻌﻅﻤﻰ ﻟﺨﺭﺝ ﺍﻟﻤﺒﺩل ﻭﺍﻟﺘﻲ ﹶﺘﻨﺘﺞ ﻤﻥ ﺃﺠل ﻗﻴﻤﺔ ﻋﻅﻤﻰ ﻋﻠﻰ ﺍﻟ ﻤﺩﺨل ﺍﻟﺭﻗﻤـﻲ
ﻭﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ .1111 1111bﻨﹸﻌﺭﻑ ﺨﻁﻭﺓ ﺍﻟﺘﻜﻤﻴﺔ ﺃﻭ ﺘﻤﻴﺯﻴﺔ ﺍﻟﻤﺒﺩل ﺒﺄﻨﻪ ﺃﺼـﻐﺭ ﻓﻠﻁﻴـﺔ ﻴﻤﻜـﻥ ﺃﻥ
ﻴﻨﺘﺠﻬﺎ ﺍﻟﻤﺒﺩل ﻏﻴﺭ ﺍﻟﺼﻔﺭ ،ﻭﺘﺴﺎﻭﻱ . − VREF :ﺘﺴﺎﻭﻱ ﺍﻟﻔﻠﻁﻴﺔ ﻋﻠﻰ ﻤﺨﺭﺝ ﺍﻟﻤﺒﺩل ﻨﺎﺘﺞ ﺠﺩﺍﺀ ﺨﻁﻭﺓ
255
ﺍﻟﺘﻜﻤﻴﺔ ﺒﺎﻟﻘﻴﻤﺔ ﻋﻠﻰ ﺍﻟﻤﺩﺍﺨل ﺍﻟﺭﻗﻤﻴﺔ ﻟﻠﻤﺒﺩل .ﺒﻔﺭﺽ ﺃﻥ VREF = -5.0 vﻓﺈﻥ ﺨﻁﻭﺓ ﺍﻟﺘﻜﻤﻴﺔ ﺘـﺴﺎﻭﻱ
0.0196ﹸﻓﻠﻁ ،ﻭﺇﺫﺍ ﻁﺒﻘﻨﺎ ﺍﻟﻘﻴﻤﺔ 1001 0110bﻋﻠﻰ ﺍﻟ ﻤﺩﺍﺨل ﺍﻟﺭﻗﻤﻴﺔ ﻟﻠﻤﺒﺩل ﻓﺈﻥ ﻓﻠﻁﻴﺔ ﺍﻟﺨﺭﺝ ﺘﺴﺎﻭﻱ
ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ 0.0196 × 150ﺃﻭ +2.94ﻓﻠﻁ.
23
ﺍﻟﺒﻨﻴﺔ ﺍﻟﺩﺍﺨﻠﻴﺔ ﻟﻠﻤﺒﺩل DAC0830
ﺴﻙ ﻁﻭل ﻜل ﻤﻨﻬﺎ 8ﺒﺕ ،ﻴﺴﻤﺢ ﻜل ﻤﻨﻬﻤﺎ ﺒﻤﺴﻙ ﺒﺎﻴﺕ ﺒﻴﻨﻤﺎ
ﻴﺤﺘﻭﻱ ﺍﻟﻤﺒﺩل DAC0830ﻋﻠﻰ ﺩﺍﺭﺘﻲ ﻤ ْ
ﻴﺠﺭﻱ ﺘﺒﺩﻴل ﺒﺎﻴﺕ ﺃﺨﺭﻯ .ﻓﻲ ﺍﻟﻜﺜﻴﺭ ﻤﻥ ﺍﻟﺤﺎﻻﺕ ﻨﻌﻤل ﻋﻠﻰ ﻋﺩﻡ ﺘﺄﻫﻴل ﺍﻟﻤﺎﺴﻙ ﺍﻷﻭل ﻭﻨﺴﺘﺨﺩﻡ ﻓﻘﻁ
ﺍﻟﻤﺎﺴﻙ ﺍﻟﺜﺎﻨﻲ ﻹﺩﺨﺎل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺇﻟﻰ ﺍﻟﻤﺒﺩل ،ﻭﻴﺠﺭﻱ ﺫﻟﻙ ﺒﺘﻁﺒﻴﻕ ﺍﻟﻤﻨﻁﻕ 1ﻋﻠﻰ ILEﻭﺍﻟﻤﻨﻁـﻕ 0
ﻋﻠﻰ . CS
16L8 2هﻲ دارة ﻣﻨﻄﻘﻴﺔ ﻣﺘﻜﺎﻣﻠﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻟﺒﻮاﺑﺎت اﻟﻤﻨﻄﻘﻴﺔ اﻟﺘﻲ ﻳﻤﻜﻦ ﺑﺮﻣﺠﺘﻬﺎ ﻟﺘﺤﻘﻴﻖ ﺗﺎﺑﻊ أو ﻋﺪة
ﺗﻮاﺑﻊ ﻣﻨﻄﻘﻴﺔ ﻣﺤﺪدة.
24
ﺍﻟﻤﺒﺩل ﺍﻟﺘﻤﺎﺜﻠﻲ/ﺍﻟﺭﻗﻤﻲ ADC0804
ﺇﻥ ﻁﻭل ﻜﻠﻤﺔ ﺍﻟﻤﺒﺩل ADC0804ﻫﻭ ﺃﻴﻀﹰﺎ -8ﺒﺕ ،ﻭﻫﻭ ﻤﺒﺩل ﺭﺨﻴﺹ ﺍﻟﺜﻤﻥ ﻤﻥ ﺸـﺭﻜﺔ National
Instrumentﻤﺘﻭﺍﻓﻕ ﻤﻊ ﻁﻴﻑ ﻭﺍﺴﻊ ﻤﻥ ﺍﻟﻤﻌﺎﻟﺠﺎﺕ ﻤﺜل ﻋﺎﺌﻠﺔ .Intelﻴﻼﺌﻡ ﺍﻟﻤﺒﺩل ADC0804ﺍﻟﻜﺜﻴﺭ
ﻤﻥ ﺍﻟﺘﻁﺒﻴﻘﺎﺕ ﺍﻟﺘﻲ ﻻ ﺘﺤﺘﺎﺝ ﺇﻟﻰ ﺩﻗﺔ ﺘﺒﺩﻴل ﻋﺎﻟﻴﺔ.
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺘﻭﺯﻉ ﻤﻐﺎﺭﺯ ﺍﻟﻤﺒﺩل .ADC0804
ﻴﺒﺩﺃ ﺍﻟﻤﺒﺩل ﺒﺘﺤﻭﻴل ﻋﻴﻨﺔ ﻤﻥ ﺍﻹﺸﺎﺭﺓ ﺍﻟﻤﻁﺒﻘﺔ ﻋﻠﻰ ﻤﺩﺨﻠﻪ ﺍﻟﺘﻤﺎﺜﻠﻲ ﺇﻟﻰ ﻗﻴﻤﺔ ﺭﻗﻤﻴﺔ ﺒﺎﻟﺘﺯﺍﻤﻥ ﻤﻊ ﻜـل
25
ﻭ . CSﻭﺒﺎﻟﺭﺠﻭﻉ ﺇﻟﻰ ﺍﻟﻤﺨﻁﻁ ﺍﻟﺯﻤﻨﻲ ﺍﻟﺘﺎﻟﻲ ،ﻨﺠـﺩ WR ﻨﺒﻀﺔ ﺴﺎﻟﺒﺔ ﻤﻭﻟﺩﺓ ﻋﻠﻰ ﻜل ﻤﻥ ﺍﻟ ﻤﺩﺨﻠﻴﻥ
ﺃﻥ ﺍﻟﻤﺒﺩل ﻴﻨﺘﺞ ﻨﺒﻀﺔ ﻤﻭﺠﺒﺔ ﻋﻠﻰ ﻤﺨﺭﺠﻪ INTRﺨﻼل ﻤﺩﺓ ﺍﻟﺘﺒﺩﻴل .ﻭﺒﺎﻟﺘﺎﻟﻲ ﻴﺠﺏ ﻋﻠﻴﻨﺎ ﺍﻻﻨﺘﻅـﺎﺭ
ﺤﺘﻰ ﺘﻌﻭﺩ ﺤﺎﻟﺔ INTRﺇﻟﻰ ﺍﻟﻤﻨﻁﻕ 0ﺤﺘﻰ ﻨﺘﻤﻜﻥ ﻤﻥ ﻗﺭﺍﺀﺓ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺼﺤﻴﺤﺔ ﻋﻠﻰ ﺍﻟﻤﺨﺎﺭﺝ ﺍﻟﺭﻗﻤﻴﺔ
ﻟﻠﻤﺒﺩل ،ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺔ .INﻴﻤﻜﻨﻨﺎ ﺃﻴﻀﹰﺎ ﻭﺼل ﺍﻟﻤﺨﺭﺝ INTRﺇﻟﻰ ﻤﺩﺨل ﻤﻘﺎﻁﻌﺔ ﺍﻟﻤﻌﺎﻟﺞ ،ﺤﻴـﺙ
ﻴﺠﺭﻱ ﺘﻭﻟﻴﺩ ﻁﻠﺏ ﻤﻘﺎﻁﻌﺔ ﺒﻌﺩ ﺍﺴﺘﻜﻤﺎل ﻜل ﻋﻤﻠﻴﺔ ﺘﺒﺩﻴل.
ﻣﺪﺧﻞ ﲤﺎﺛﻠﻲ
26
ﺘﻭﻟﻴﺩ ﺇﺸﺎﺭﺓ ﺍﻟﺴﺎﻋﺔ
ﻴﺤﺘﺎﺝ ﻋﻤل ﺍﻟﻤﺒﺩل ADC0804ﺇﻟﻰ ﻨﺒﻀﺎﺕ ﺴﺎﻋﺔ .ﻴﻤﻜﻨﻨﺎ ﺘﻭﻟﻴﺩ ﺍﻟﻨﺒﻀﺎﺕ ﺨﺎﺭﺠﻴـﹰﺎ ﻭﻭﺼـﻠﻬﺎ ﺇﻟـﻰ
ﺍﻟﻤﺒﺩل ﻋﺒﺭ ﻤﺩﺨﻠﻪ ،CLK INﻜﻤﺎ ﻴﻤﻜﻨﻨﺎ ﺘﻭﻟﻴﺩﻫﺎ ﻋﺒﺭ ﺩﺍﺭﺓ ،RCﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟـﺸﻜل ﺍﻟﺘـﺎﻟﻲ.
ﻴﻌﻁﻰ ﺘﺭﺩﺩ ﺴﺎﻋﺔ ﺍﻟﻤﻬﺘﺯ ﺍﻟﺩﺍﺨﻠﻲ ﺒﺎﻟﻌﻼﻗﺔ:
1
= Fclk
1.1 RC
ﻴﺠﺏ ﺃﻥ ﻴﺴﺎﻭﻱ ﺘﺭﺩﺩ ﻨﺒﻀﺎﺕ ﺍﻟﺴﺎﻋﺔ ﺒﻴﻥ 100ﻭ 1460ﻜﻴﻠﻭﻫﺭﺘﺯ ،ﻭﺤﺘﻰ ﻨﺠﻌـل ﺯﻤـﻥ ﺍﻟﺘﺒـﺩﻴل
ﺃﺼﻐﺭﻱ ﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ ﻫﺫﺍ ﺍﻟﺘﺭﺩﺩ ﺃﻗﺭﺏ ﻤﺎ ﻴﻜﻭﻥ ﺇﻟﻰ 1460ﻜﻴﻠﻭﻫﺭﺘﺯ.
27
ﻨﻔﺘﺭﺽ ،ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺴﺎﺒﻕ ،ﺃﻥ ﺍﻟﻤﺒﺩل ﻴﺤﺘل ﺍﻟﻌﻨﻭﺍﻥ ،40hﻓﻲ ﺤﻴﻥ ﻴﻤﻜﻨﻨﺎ ﻗـﺭﺍﺀﺓ ﺤﺎﻟـﺔ ﺍﻟﻤﺨـﺭﺝ
INTRﺒﻘﺭﺍﺀﺓ ﺍﻟﺒﻭﺍﺒﺔ ﺫﺍﺕ ﺍﻟﻌﻨﻭﺍﻥ .42hﺍﻋﺘﻤﺎﺩﹰﺍ ﻋﻠﻰ ﻤﺎ ﺴﺒﻕ ،ﻓﺈﻥ ﺍﻹﺠﺭﺍﺌﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺘﻘﺭﺃ ﻋﻴﻨـﺔ ﻤـﻥ
ﺨﺭﺝ ﺍﻟﻤﺒﺩل ﻭﺘﻀﻌﻬﺎ ﻓﻲ :AL
ﺍﻟﻐﺎﻴﺔ ﻤﻥ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ
ﻻ ﻋﻠﻰ ﺭﺒﻁ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﻤﻊ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺭﻗﺎﻗﺔ .82C55ﻴﺘﻘـﺼﻰ
ﺒﻴﻨﺎ ﺴﺎﺒﻘﹰﺎ ﻤﺜﺎ ﹰ
ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﻓﻲ ﺫﻟﻙ ﺍﻟﻤﺜﺎل ،ﺤﺎﻟﺔ ﺍﻟﺒﺕ IBFﻟﻠﺩﺍﺭﺓ 8255ﻤﻥ ﺃﺠل ﻤﻌﺭﻓﺔ ﻓﻴﻤﺎ ﺇﺫﺍ ﻀﻐﻁ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻋﻠﻰ
ﺃﺤﺩ ﺍﻟﻤﻔﺎﺘﻴﺢ .ﺒﻔﺭﺽ ﺃﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻴﻀﻐﻁ ﻋﻠﻰ ﺃﺤﺩ ﺍﻟﻤﻔﺎﺘﻴﺢ ﻤﺭﺓ ﻜل ﺜﺎﻨﻴﺔ ،ﻓﺴﻭﻑ ﻴﻨﺘﻅﺭ ﺍﻟﺒﺭﻨـﺎﻤﺞ
ﺜﺎﻨﻴﺔ ﻜﺎﻤﻠﺔ ﺤﺘﻰ ﻴﻀﻐﻁ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻋﻠﻰ ﻤﻔﺘﺎﺡ ﺁﺨﺭ .ﻭﻫﺫﺍ ﺒﺎﻟﻁﺒﻊ ﻤﻀﻴﻌﺔ ﻜﺒﻴﺭﺓ ﻟﻠﻭﻗﺕ ﻷﻨﻪ ﻓﻲ ﻫـﺫﻩ
ﺍﻟﺤﺎﻟﺔ ﻻ ﻴﻤﻜﻥ ﻟﻠﻤﻌﺎﻟﺞ ﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺎﺕ ﺃﺨﺭﻯ ﺒﺎﻨﺘﻅﺎﺭ ﺃﻥ ﻴﻨﻬﻲ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺇﺩﺨﺎل ﻜل ﻤﺎ ﻴﺭﻴـﺩ .ﻴﻤﻜـﻥ
ﺘﺠﺎﻭﺯ ﻫﺫﻩ ﺍﻟﻤﺴﺄﻟﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ.
ﻋﻠﻰ ﻋﻜﺱ ﻁﺭﻴﻘﺔ ﺍﻟﺘﻘﺼﻲ pollingﺍﻟﺴﺎﺒﻘﺔ ،ﺘﺴﻤﺢ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﻟﻠﻤﻌﺎﻟﺞ ،ﻤﺜﻼﹰ ،ﺒﺘﻨﻔﻴﺫ ﺒﺭﻨـﺎﻤﺞ ﺁﺨـﺭ
ﺒﻴﻨﻤﺎ ﻴﻔﻜﺭ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺒﺎﻟﻤﻔﺘﺎﺡ ﺍﻟﺫﻱ ﺴﻴﻀﻐﻁ ﻋﻠﻴﻪ ﻻﺤﻘﹰﺎ .ﻋﻨﺩ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﺃﺤﺩ ﺍﻟﻤﻔﺎﺘﻴﺢ ﹸﺘﻭﻟﺩ ﻟﻭﺤـﺔ
ﺍﻟﻤﻔﺎﺘﻴﺢ ﻨﺒﻀﺔ ﺘﻘﺎﻁﻊ ﻋﻤل ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺫﻱ ﻴﻨﻔﺫ ﺒﺭﻨﺎﻤﺠﹰﺎ ﺁﺨﺭﹰﺍ .ﻴﻘﺭﺃ ﺍﻟﻤﻌـﺎﻟﺞ ﻀـﻤﻥ ﺒﺭﻨـﺎﻤﺞ ﺨﺩﻤـﺔ
ﺍﻟﻤﻘﺎﻁﻌﺔ ﺭﻤﺎﺯ ASCIIﻟﻠﻤﻔﺘﺎﺡ ﺍﻟﻤﻀﻐﻭﻁ ﺜﻡ ﻴﻌﻭﺩ ﻟﻴﺘﺎﺒﻊ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨـﺎﻤﺞ ﺍﻟـﺫﻱ ﺠـﺭﻯ ﻤﻘﺎﻁﻌﺘـﻪ.
ﻭﺒﺎﻟﻨﺘﻴﺠﺔ ﻴﻤﻜﻥ ﻁﺒﺎﻋﺔ ﺘﻘﺭﻴﺭ ﺃﻭ ﺘﻨﻔﻴﺫ ﻤﻬﺎﻡ ﺃﺨﺭﻯ ﺒﻴﻨﻤﺎ ﻴﺩﺨل ﺍﻟﻤﺴﺘﺨﺩﻡ ﻭﺜﻴﻘﺔ ﻤﺴﺘﻘﻠﺔ ،ﺁﺨﺫﹰﺍ ﻭﻗﺘﻪ ﻓﻲ
ﺍﻟﺘﻔﻜﻴﺭ ﻓﻴﻤﺎ ﻴﺭﻴﺩ ﺃﻥ ﻴﻜﺘﺏ ﺘﺎﻟﻴﹰﺎ.
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻤﺨﻁﻁﹰﺎ ﺯﻤﻨﻴﹰﺎ ﻴﻭﻀﺢ ﻜﻴﻑ ﻴﻘﺭﺃ ﺍﻟﻤﻌﺎﻟﺞ ﺃﺤﺩ ﺍﻟﻤﻔﺎﺘﻴﺢ ﺃﻭ ﻴﻁﺒﻊ ﻤﺤﺭﻓﹰﺎ ﺒﻴﻨﻤـﺎ ﻴﻨﻔـﺫ
ﺒﺭﻨﺎﻤﺠﹰﺎ ﺭﺌﻴﺴﺎﹰ ،ﺒﺎﺴﺘﺨﺩﺍﻡ ﺇﺠﺭﺍﺌﻴﺔ ﺨﺎﺼﺔ ﺒﺨﺩﻤﺔ ﻤﻘﺎﻁﻌﺔ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﻭﺇﺠﺭﺍﺌﻴـﺔ ﺨﺎﺼـﺔ ﺒﺨﺩﻤـﺔ
28
ﻤﻘﺎﻁﻌﺔ ﺍﻟﻁﺒﺎﻋﺔ.
ﺍﻟﱪﻧﺎﻣﺞ ﺍﻟﺮﺋﻴﺲ
ﻣﻘﺎﻃﻌﺔ ﺍﻟﻄﺎﺑﻌﺔ
ﹸﺘﺴﺘﺨﺩﻡ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﻓﻲ ﺍﻟﺤﻭﺍﺴﻴﺏ ﺍﻟﺸﺨﺼﻴﺔ ﻋﻠﻰ ﻨﺤﻭ ﻜﺜﻴﻑ ﻟﻴﺘﻤﻜﻥ ﻤﻥ ﺘﻨﻔﻴﺫ ﻋﺩﺓ ﻤﻬﺎﻡ ﻋﻠﻰ ﺍﻟﺘﻔﺭﻉ.
ﺃﻨﻭﺍﻉ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ
ﻴﺤﺘــﻭﻱ ﺍﻟﻤﻌــﺎﻟﺞ 8088/8086ﻋﻠــﻰ 256ﻤﻘﺎﻁﻌــﺔ ﻤﺨﺘﻠﻔــﺔ ﻟﻜــل ﻤﻨﻬــﺎ ﺇﺠﺭﺍﺌﻴــﺔ ﺨﺩﻤــﺔ
ﺹ ﺒﻬﺎ .ﻴﻤﻜﻥ ﻤﻘﺎﻁﻌﺔ ﻋﻤل ﺍﻟﻤﻌﺎﻟﺞ ﺇﻤﺎ:
ﻤﻘﺎﻁﻌﺔ Interrupt Service Procedureﺨﺎ ٌ
ﺩﺍﺨﻠﻴﹰﺎ ،ﻋﻨﺩﻤﺎ ﻴﺤﺩﺙ ﻁﻔﺢ ﻓﻲ ﻋﻤﻠﻴﺔ ﺤﺴﺎﺒﻴﺔ ﺃﻭ ﻋﻨﺩﻤﺎ ﻴﺤﺩﺙ ﺨﻁﺄ ﻓﻲ ﻋﻤﻠﻴﺔ ﺘﻘﺴﻴﻡ.
ﺒﺭﻤﺠﻴﹰﺎ ،ﻋﻥ ﻁﺭﻴﻕ ﺘﻨﻔﻴﺫ ﺃﺤﺩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ INTOﺃﻭ INT 3ﺃﻭ INT nnﺤﻴﺙ nnﻨﻤﻁ ﺍﻟﻤﻘﺎﻁﻌـﺔ
ﻭﺘﺘﺭﺍﻭﺡ ﻗﻴﻤﺘﻪ ﺒﻴﻥ 00hﻭ .FFh
ﺃﻭ ﻋﻥ ﻁﺭﻴﻕ ﺍﻟﻜﻴﺎﻥ ﺍﻟﺼﻠﺏ ،ﻭﺫﻟﻙ ﺒﺘﻭﻟﻴﺩ ﻨﺒﻀﺔ ﻤﻨﺎﺴﺒﺔ ﻋﻠﻰ ﺍﻟﻤـﺩﺨل INTAﺃﻭ .NMIﻜﻤـﺎ
ﻴﻤﻜﻨﻨﺎ ﺍﻋﺘﺒﺎﺭ ﺍﻟﻤﺩﺨل Resetﺃﻴﻀﹰﺎ ﻤﺩﺨل ﻤﻘﺎﻁﻌﺔ ﻟﻪ ﺍﻷﻭﻟﻭﻴﺔ ﻋﻠﻰ ﺠﻤﻴﻊ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻷﺨﺭﻯ.
ﻟﻜل ﻨﻤﻁ ﻤﻘﺎﻁﻌﺔ ﺇﺠﺭﺍﺌﻴﺔ ﺨﺩﻤﺔ ﺨﺎﺼﺔ ﺒﻬﺎ ،ﻴﺠﺭﻱ ﻭﻀﻊ ﻋﻨﻭﺍﻥ ﺃﻭل ﺘﻌﻠﻴﻤﺔ ﻟﻜل ﺇﺠﺭﺍﺌﻴـﺔ ﻀـﻤﻥ
29
ﺠﺩﻭل ﺃﺸﻌﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ .Interrupt Vector Tableﻴﺘﻜﻭﻥ ﺠﺩﻭل ﺃﺸﻌﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻤﻥ 256ﻗﻴﻤﺔ ﻜل ﻤﻨﻬﺎ
ﻤﻤﺜﻠﺔ ﻋﻠﻰ 4ﺒﺎﻴﺕ؛ ﺒﺎﻴﺘﺎﻥ ﻟﺘﺨﺯﻴﻥ ﻋﻨﻭﺍﻥ ﺍﻻﻨﺯﻴﺎﺡ offset addressﻭﺒﺎﻴﺘﺎﻥ ﻟﺘﺨﺯﻴﻥ ﻋﻨﻭﺍﻥ ﺍﻟﻤﻘﺘﻁـﻊ
3
ﻤﻥ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌـﺎﻟﺞ 8088/8086؛ ﺃﻱ .segment addressﻴﺤﺘل ﺍﻟﺠﺩﻭل ﺃﻭل 1024ﺒﺎﻴﺕ )ﻟﻤﺎﺫﺍ؟(
ﻴﺤﺘل ﺍﻟﻌﻨﺎﻭﻴﻥ ).(000000h-003FFh
ﺘﺤﺘﻭﻱ ﺍﻟﻤﻭﺍﻗﻊ ﺍﻷﺭﺒﻌﺔ ﺍﻷﻭﻟﻰ ﻤﻥ ﺍﻟﺠﺩﻭل 000000h-000003hﻋﻨﻭﺍﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻷﻭﻟﻰ ﻤﻥ ﺇﺠﺭﺍﺌﻴـﺔ
ﺨﺩﻤﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺼﻔﺭ 00hﺒﻴﻨﻤﺎ ﺘﺤﺘﻭﻱ ﺍﻟﻤﻭﺍﻗﻊ ﺍﻷﺭﺒﻌﺔ ﺍﻟﺘـﻲ ﺘﻠﻴﻬـﺎ 000004h-000007hﻋﻨـﻭﺍﻥ
ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻷﻭﻟﻰ ﻤﻥ ﺇﺠﺭﺍﺌﻴﺔ ﺨﺩﻤﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ،01hﻭﻫﻜﺫﺍ .ﻭﺒﺎﻟﻨﺘﻴﺠﺔ ،ﻓﺈﻥ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﺫﻱ ﻴـﺫﻫﺏ ﺇﻟﻴـﻪ
ﺍﻟﻤﻌﺎﻟﺞ ﻟﺸﺤﻥ ﻋﻨﻭﺍﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻷﻭﻟﻰ ﻤﻥ ﺇﺠﺭﺍﺌﻴﺔ ﺨﺩﻤﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻴﺴﺎﻭﻱ ﻨﻤﻁ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻀﺭﺏ .4
ﺇﻥ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺫﺍﺕ ﺍﻟﺸﻌﺎﻉ 0ﻟﻬﺎ ﺃﻭﻟﻭﻴﺔ ﻋﻠﻰ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺫﺍﺕ ﺍﻟﺸﻌﺎﻉ 1ﻭﺍﻟﺘﻲ ﺒﺩﻭﺭﻫﺎ ﻟﻬﺎ ﺃﻭﻟﻭﻴﺔ ﻋﻠـﻰ
ﺍﻟﻤﻘﺎﻁﻌﺔ ﺫﺍﺕ ﺍﻟﺸﻌﺎﻉ ،3ﺃﻱ ﻜﻠﻤﺎ ﺍﺯﺩﺍﺩ ﺭﻗﻡ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻨﺨﻔﻀﺕ ﺃﻭﻟﻭﻴﺘﻬﺎ.
30
ﻋﻨﻮﺍﻥ ﺍﻟﺬﺍﻛﺮﺓ ﳏﺘﻮﻯ ﺍﳉﺪﻭﻝ ﺗﻌﺮﻳﻒ ﺍﻷﺷﻌﺔ
ﻣﺘﺎﺣﺔ ﻟﻠﻤﺴﺘﺨﺪﻡ
ﳏﺠﻮﺯﺓ
ﺍﻟﻄﻔﺢ
ﻧﻘﻄﺔ ﺍﻟﺘﻮﻗﻒ
ﻣﻘﺎﻃﻌﺔ ﻏﲑ ﻗﺎﺑﻠﺔ ﻟﻠﺤﺠﺐ
ﺍﳋﻄﻮﺓ ﺍﻟﻮﺍﺣﺪﺓ
ﺧﻄﺄ ﺗﻘﺴﻴﻢ
31
ﻴﻌﻤل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺘﺎﻟﻲ ﻋﻠﻰ ﺘﺨﺯﻴﻥ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻤﻨﻁﻘﻲ ﻟﺒﺩﺍﻴﺔ ﺍﻹﺠﺭﺍﺌﻴﺔ NEW40ﻓﻲ ﺸـﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌـﺔ
ﻻ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﻘـﺩﻴﻡ
،40hﺃﻱ ﻓﻲ ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﻔﻴﺯﻴﺎﺌﻴﺔ ﺃﻭ ﺍﻟﺤﻘﻴﻘﺔ .100h-103hﻴﺨﺯﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺃﻭ ﹰ
ﻓﻲ ﺍﻟﻤﺘﺤﻭل ِ ،OLDﻟﻨﺘﻤﻜﻥ ﻤﻥ ﺍﺴﺘﻌﺎﺩﺓ ﻫﺫﺍ ﺍﻟﺸﻌﺎﻉ ﻋﻨﺩ ﺍﻨﺘﻬﺎﺀ ﻋﻤل ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﺜـﻡ ﹸﻨﺨـﺯﻥ ﺍﻨﺯﻴـﺎﺡ
ﻭﻤﻘﺘﻁﻊ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻷﻭﻟﻰ ﻟﻺﺠﺭﺍﺌﻴﺔ NEW40ﻓﻲ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ .40hﻋﻨﺩ ﺍﻻﻨﺘﻬﺎﺀ ﻤﻥ ﺘﺨﺯﻴﻥ ﺸﻌﺎﻉ
ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﺠﺩﻴﺩ ،ﻴﺠﺭﻱ ﺘﻨﻔﻴﺫ ﺍﻹﺠﺭﺍﺌﻴﺔ NEW40ﻤﻥ ﺃﺠل ﻜل ﻁﻠﺏ ﻤﻘﺎﻁﻌﺔ ﻤﻥ ﺍﻟـﻨﻤﻁ ،40hﻤﺜـل
.INT 40h
.MODEL TINY
.CODE
JMP START
OLD DD ? ; space for old vector
NEW40 PROC FAR
;
; interrupt software for INT 40h
;
IRET
NEW40 ENDP
ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﺩﺍﺨﻠﻴﺔ
ﻴﻭﻟﺩ ﺍﻟﻤﻌﺎﻟﺞ ﺁﻟﻴﹰﺎ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ:
ﺍﻟﻤﻘﺎﻁﻌﺔ ﻨﻤﻁ :0ﺨﻁﺄ ﺘﻘﺴﻴﻡ ،Divide Errorﺘﺤﺩﺙ ﻫﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺩﺍﺨﻠﻴﹰﺎ ﻋﻨﺩﻤﺎ ﻴﻜﻭﻥ ﻨﺎﺘﺞ ﻋﻤﻠﻴـﺔ
ﺍﻟﻘﺴﻤﺔ ﺃﻜﺒﺭ ﻤﻥ ﺴﻌﺔ ﺴﺠل ﺍﻟﻭﺠﻬﺔ ﺃﻭ ﻋﻨﺩ ﻤﺤﺎﻭﻟﺔ ﺍﻟﻘﺴﻤﺔ ﻋﻠﻰ .0
ﺍﻟﻤﻘﺎﻁﻌﺔ ﻨﻤﻁ :1ﻤﻘﺎﻁﻌﺔ ﺍﻟﺨﻁﻭﺓ ﺍﻟﻭﺍﺤﺩﺓ ،Single Step Interruptﻴﻭﻟﺩ ﺍﻟﻤﻌـﺎﻟﺞ ﻤﻘﺎﻁﻌـﺔ ﻤـﻥ
32
ﺍﻟﻨﻤﻁ 1ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﻜل ﺘﻌﻠﻴﻤﺔ ،ﺇﺫﺍ ﻜﺎﻥ .،TF=0ﻴﺴﺘﺨﺩﻡ ﻫﺫﺍ ﻨﻤﻁ ﻤﻥ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻋﺎﺩﺓ ﻓﻲ ﺘﻨﻘﻴﺢ debug
ﺍﻟﺒﺭﻨﺎﻤﺞ .ﻴﻤﻜﻨﻨﺎ ،ﻤﺜﻼﹰ ،ﺇﻅﻬﺎﺭ ﺃﻭ ﻁﺒﺎﻋﺔ ﺴﺠﻼﺕ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻟﺩﺍﺨﻠﻴﺔ ،ﻀـﻤﻥ ﺇﺠﺭﺍﺌﻴـﺔ ﺨﺩﻤـﺔ ﻫـﺫﻩ
ﺍﻟﻤﻘﺎﻁﻌﺔ.
ﺍﻟﻤﻘﺎﻁﻌﺔ ﻨﻤﻁ :3ﻤﻘﺎﻁﻌﺔ ﻨﻘﻁﺔ ﺍﻟﺘﻭﻗﻑ ،Breakpoint Interruptﻴﺠﺭﻱ ﻋﺎﺩﺓ ﺇﻗﺤﺎﻡ ﻁﻠـﺏ ﻫـﺫﻩ
ﺍﻟﻤﻘﺎﻁﻌﺔ ﺒﻜﺘﺎﺒﺔ ﺍﻟﺘﻌﻠﻴﻤﺔ INT 3ﻋﻨﺩ ﻨﻘﻁﺔ ﺤﺭﺠﺔ ﻓﻲ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺨﻼل ﻤﺭﺤﻠﺔ ﺘﻨﻘﻴﺤﻪ ،ﻹﻅﻬﺎﺭ ﻤﺤﺘﻭﻯ
ﺴﺠﻼﺕ ﺍﻟﻤﻌﺎﻟﺞ ﺃﻭ ﺍﻟﺫﺍﻜﺭﺓ ﺃﻭ ﻏﻴﺭ ﺫﻟﻙ.
ﺍﻟﻤﻘﺎﻁﻌﺔ ﻨﻤﻁ :4ﻤﻘﺎﻁﻌﺔ ﺍﻟﻁﻔﺢ ،Overflowﺘﺴﺒﺏ ﺍﻟﻤﻘﺎﻁﻌﺔ INTOﻤﻘﺎﻁﻌﺔ ﻤـﻥ ﺍﻟـﻨﻤﻁ 4ﺒﻌـﺩ
ﺍﻻﻨﺘﻬﺎﺀ ﻤﻥ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺤﺎﻟﻴﺔ ﺇﺫﺍ ﻜﺎﻥ .OF=1
ﻟﻠﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﺩﺍﺨﻠﻴﺔ )ﻤﺎ ﻋﺩﺍ ﻤﻘﺎﻁﻌﺔ ﺍﻟﺨﻁﻭﺓ ﺍﻟﻭﺍﺤﺩﺓ( ﺃﻭﻟﻭﻴﺔ ﻋﻠﻰ ﺍﻟﻤﻘﺎﻁﻌـﺎﺕ ﺍﻟﺨﺎﺭﺠﻴـﺔ ،ﻜﻤـﺎ ﻻ
ﻴﻤﻜﻨﻨﺎ ،ﺒﺎﺴﺘﺜﻨﺎﺀ ﻤﻘﺎﻁﻌﺔ ﺍﻟﺨﻁﻭﺓ ﺍﻟﻭﺍﺤﺩﺓ ،ﺘﺤﺠﻴﺏ ﻫﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ.
ﻤﺜﺎل :ﺘﻨﺘﺞ ﺍﻟﺘﻌﻠﻴﻤﺔ DIVﻓﻲ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺘﺎﻟﻲ ﻤﻘﺎﻁﻌﺔ ﻤﻥ ﻨﻤﻁ 0ﻷﻨﻬﺎ ﺘﻘﺴﻡ ﻤﺤﺘﻭﻯ CLﻋﻠﻰ ﺼﻔﺭ.
MOV AL,92
SUB CL, CL
DIV CL ; 92/0 undefined
33
ﻜﻠﻤﺎ ﺠـﺭﺕ ﻤﺤﺎﻭﻟـﺔ ‘Division by zero attempted’ ﺍﻜﺘﺏ ﺇﺠﺭﺍﺌﻴﺔ ﺘﻁﺒﻊ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ:ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ
.ﺍﻟﻘﺴﻤﺔ ﻋﻠﻰ ﺍﻟﺼﻔﺭ
:ﺍﻟﺠﻭﺍﺏ
.MODEL TINY
.CODE
JMP START
OLD DD ? ; space for old vector
Prompt DB 'Division by zero attempted$'
; start installation
START:
MOV AX,0 ; address segment 0000h
MOV DS, AX
MOV AX, DS:[00h] ; get INT 00h offset
MOV WORD PTR CS:OLD,AX ; save it
MOV AX, DS:[02h] ; get INT 00h
MOV WORD PTR CS:OLD+2,AX ; save it
MOV DS:[100], OFFSET Diverr ; save offset
MOV DS:[102], CS ; save segment
.
34
ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺨﺎﺼﺔ ﺒﺎﻟﻤﻘﺎﻁﻌﺎﺕ
ﺘﺘﻀﻤﻥ ﻤﺤﻤﻭﻋﺔ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺘﻌﻠﻴﻤﺎﺕ ﺨﺎﺼﺔ ﺒﺎﻟﻤﻘﺎﻁﻌﺎﺕ ،ﻭﻫﻲ:
:CLIﹶﺘﻀﻊ ﺼﻔﺭﹰﺍ ﻓﻲ ﺍﻟﺭﺍﻴﺔ ،IFﻭﺘﺴﺘﺨﺩﻡ ﻟﺤﺠﺏ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﺨﺎﺭﺠﻴﺔ.
:STIﹶﺘﻀﻊ ﻭﺍﺤﺩﹰﺍ ﻓﻲ ﺍﻟﺭﺍﻴﺔ ،IFﻭﺘﺴﺘﺨﺩﻡ ﻟﺘﺄﻫﻴل ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﺨﺎﺭﺠﻴﺔ
:INT nnﹶﺘﻁﻠﺏ ﺒﺭﻤﺠﻴﹰﺎ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺫﺍﺕ ﺍﻟﻨﻤﻁ .nn
:IRETﹸﺘﻨﻬﻲ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺇﺠﺭﺍﺌﻴﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ .ﻴﺠﺏ ﺍﻻﻨﺘﺒﺎﻩ ﻫﻨﺎ ﺇﻟﻰ ﺃﻨﻪ ﻴﺠﺏ ﺍﺴـﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤـﺔ
IRETﻭﻟﻴﺱ RETﻹﻨﻬﺎﺀ ﺇﺠﺭﺍﺌﻴﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻭﺍﻟﻌﻭﺩﺓ ﺇﻟﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟ ﻤﻘﺎﻁﻊ ،ﻷﻥ ﺍﻟﺘﻌﻠﻴﻤـﺔ IRET
ﺘﻌﻴﺩ ﺘﺤﻤﻴل ﺴﺠل ﺍﻟﺭﺍﻴﺔ ﻗﺒل ﺍﻟﻌﻭﺩﺓ ﺇﻟﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﻘﺎﻁﻊ ﺒﻴﻨﻤﺎ ﻻ ﺘﻔﻌل ﺫﻟﻙ ﺍﻟﺘﻌﻠﻴﻤﺔ .RET
:INTOﹸﺘﻨﻔﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺫﺍﺕ ﺍﻟﻨﻤﻁ 4ﻓﻲ ﺤﺎل ﺤﺩﻭﺙ ﻁﻔﺢ ﻨﺘﻴﺠ ﹰﺔ ﻟﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺔ ﺴﺎﺒﻘﺔ
ﺃﺩﺕ ﺇﻟﻰ ﻭﻀﻊ 1ﻓﻲ ﺍﻟﺭﺍﻴﺔ .OFﻴﻔﻀل ﺍﺴﺘﺨﺩﺍﻡ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺒﻌﺩ ﻜل ﻋﻤﻠﻴﺔ ﺤﺴﺎﺒﻴﺔ ﻴﻤﻜـﻥ ﺃﻥ
ﹸﺘﻨﺘﺞ ﻁﻔﺤﹰﺎ.
:HLTﻴﻨﺘﻅﺭ ﺍﻟﻤﻌﺎﻟﺞ ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺤﺩﻭﺙ ﻤﻘﺎﻁﻌﺔ ﺨﺎﺭﺠﻴﺔ ﺃﻭ ﺇﻋﺎﺩﺓ ﺘﺸﻐﻴل .reset
TEST :WAITﻴﻨﺘﻅﺭ ﺍﻟﻤﻌﺎﻟﺞ ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺤﺘﻰ ﻴﺼﺒﺢ ﺍﻟﺩﺨل ﻋﻠﻰ ﻤﻐـﺭﺯ ﺍﻟﻤﻌـﺎﻟﺞ
ﻤﺴﺎﻭﻴﹰﺎ .1
ﺍﺨﺘﺒﺎﺭ ﺫﺍﺘﻲ :ﻻ ﺘﺘﻀﻤﻥ ﻤﺠﻤﻭﻋﺔ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺘﻌﻠﻴﻤﺔ ﺘﺴﻤﺢ ﺒﺘﻐﻴﻴﺭ ﺤﺎﻟﺔ ﺍﻟﺭﺍﻴﺔ ،TF
ﺍﻜﺘﺏ ﺘﻌﻠﻴﻤﺎﺕ ﺘﹸﻌﻜﺱ ﺤﺎﻟﺔ ﺍﻟﺭﺍﻴﺔ .TF
ﺍﻟﺠﻭﺍﺏ:
PUSHF
POP A
XOR AX, 0000000100000000B
PUSH AX
POPF
ﺃﻭﻟﻭﻴﺎﺕ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ
ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ ﻋﻠﻰ ﺨﻤﺴﺔ ﺃﻨﻭﺍﻉ ﻤﻥ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ:
Reset .1
.2ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﺩﺍﺨﻠﻴﺔ
.3ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﺒﺭﻤﺠﻴﺔ
.4ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﺨﺎﺭﺠﻴﺔ ﻏﻴﺭ ﻗﺎﺒﻠﺔ ﻟﻠﺤﺠﺏ NMI
35
.5ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﺨﺎﺭﺠﻴﺔ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ INTR
ﻭﻫﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﻤﺭﺘﺒﺔ ﺒﺤﺴﺏ ﺃﻭﻟﻭﻴﺘﻬﺎ ﻤﻥ ﺍﻷﻋﻠﻰ ﺇﻟﻰ ﺍﻷﺩﻨﻰ .ﻓﺈﺫﺍ ﺤﺩﺙ ﺃﻜﺜﺭ ﻤﻥ ﻤﻘﺎﻁﻌﺔ ﺒﺂﻥ ﻭﺍﺤﺩ
ﻓﺈﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻴﺨﺩﻡ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻷﻋﻠﻰ ﺃﻭﻟﻭﻴﺔ ﺜﻡ ﺍﻷﻗل ﻭﻫﻜﺫﺍ .ﻴﻤﻜﻥ ﻟﻤﻘﺎﻁﻌﺔ ﺃﻥ ﺘﻘـﺎﻁﻊ ﻤﻘﺎﻁﻌـﺔ ﻟﻬـﺎ
ﺃﻭﻟﻭﻴﺔ ﺃﺩﻨﻰ ﻤﻨﻬﺎ ،ﺒﻴﻨﻤﺎ ﻋﻠﻰ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻨﺘﻅﺎﺭ ﺍﻨﺘﻬﺎﺀ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻷﻋﻠﻰ ﻤﻨﻬﺎ ﺃﻭﻟﻭﻴـﺔ ﺤﺘـﻰ ﻴﺠـﺭﻱ
ﺘﺨﺩﻴﻤﻬﺎ.
ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﺨﺎﺭﺠﻴﺔ
ﻴﺤﺘﻭﻱ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﻋﻠﻰ ﺜﻼﺙ ﻤﻘﺎﻁﻌﺎﺕ ﺨﺎﺭﺠﻴﺔ :ﺇﻋﺎﺩﺓ ﺘﺸﻐﻴل ﺍﻟﻨﻅﺎﻡ ،RESETﻤﻘﺎﻁﻌـﺔ
ﻏﻴﺭ ﻗﺎﺒﻠﺔ ﻟﻠﺤﺠﺏ NMIﻭﺍﻟﻤﻘﺎﻁﻌﺔ .INTR
ﺇﻋﺎﺩﺓ ﺘﺸﻐﻴل ﺍﻟﻨﻅﺎﻡ :System Resetﻴﻤﻜﻥ ﺍﻋﺘﺒﺎﺭ ﻤﻐﺭﺯ ﺇﻋـﺎﺩﺓ ﺘـﺸﻐﻴل ﺍﻟﻨﻅـﺎﻡ RESETﺇﺤـﺩﻯ
ﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﻤﻌﺎﻟﺞ ﻏﻴﺭ ﺍﻟﻘﺎﺒﻠﺔ ﻟﻠﺤﺠﺏ .ﻋﻨﺩﻤﺎ ﻴﻜﺘﺸﻑ ﺍﻟﻤﻌﺎﻟﺞ 8088/8086ﺠﺒﻬﺔ ﺼﺎﻋﺩﺓ ﻤﻭﺠﺒﺔ ﻋﻠﻰ
ﺍﻟﻤﻐﺭﺯ RESETﻓﺈﻨﻪ ﻴﻨﻬﻲ ﻜل ﻨﺸﺎﻁ ﻟﻠﻤﻌﺎﻟﺞ ﺒﺎﻨﺘﻅﺎﺭ ﺃﻥ ﺘﻌﻭﺩ ﺍﻹﺸﺎﺭﺓ ﻋﻠﻰ ﺍﻟﻤﻐـﺭﺯ RESETﺇﻟـﻰ
ﺼ ﱠﻔﺭ ﺭﺘل ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭ ﻴﺸﺤﻥ ﺍﻟﻘﻴﻡ ﺍﻻﺒﺘﺩﺍﺌﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻓﻲ ﺴﺠﻼﺘﻪ ﺍﻟﺩﺍﺨﻠﻴﺔ.
ﺍﻟـ .0ﻋﻨﺩﻫﺎ ﻴ
ﺍﻟﻘﻴﻤﺔ ﺍﻟﺴﺠل
00h ﺍﻟﺭﺍﻴﺎﺕ
0000h IP
FFFFh CS
0000H DS
0000H SS
0000H ES
ﻭﺒﺎﻟﺘﺎﻟﻲ ،ﻓﺈﻥ ﺃﻭل ﺘﻌﻠﻴﻤﺔ ﻴﻨﻔﺫﻫﺎ ﺍﻟﺒﺭﻨﺎﻤﺞ ،ﺒﻌﺩ ﺇﻋﺎﺩﺓ ﺍﻟﺘﺸﻐﻴل ،ﺘﺒﺩﺃ ﺒﺎﻟﻤﻭﻗﻊ ﺍﻟﻔﻴﺯﻴﺎﺌﻲ .FFFF0h
ﺍﻟﻤﻘﺎﻁﻌﺔ :NMIﻻ ﻴﻤﻜﻥ ﺤﺠﺏ ﻫﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻭ ﹶﺘﺤﺩﺙ ﻤﻥ ﺃﺠل ﻜل ﺠﺒﻬﺔ ﺼﺎﻋﺩﺓ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ NMI
ﻟﻠﻤﻌﺎﻟﺞ .ﻋﻨﺩﻤﺎ ﻴﺴﺘﺠﻴﺏ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻬﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻓﺈﻨﻪ ﻴﻨﻔﺫ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺫﺍﺕ ﺍﻟﻨﻤﻁ .2
ﹸﺘﺴﺘﺨﺩﻡ ﻫﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻹﻋﻼﻡ ﺍﻟﻤﻌﺎﻟﺞ ﻋﻥ ﺤﺩﻭﺙ ﺨﻁﺄ ﻓﺎﺩﺡ ﻓﻲ ﺍﻟﻨﻅﺎﻡ ﻤﺜل ﺍﻨﻘﻁﺎﻉ ﺍﻟﻜﻬﺭﺒﺎﺀ ،ﻭﺒﺎﻟﺘﺎﻟﻲ
ﹸﺘﻤ ﱢﻜﻥ ﺍﻟﻤﻌﺎﻟﺞ ﻤﻥ ﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻀﺭﻭﺭﻴﺔ ﻀﻤﻥ ﺫﺍﻜﺭﺓ ،EEPROMﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜـﺎل .ﻴﺒـﻴﻥ
ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺩﺍﺭ ﹰﺓ ﺘﻭﻟﺩ ﻨﺒﻀﺔ ﻤﻭﺠﺒﺔ ﻋﻨﺩﻤﺎ ﻴﺤﺩﺙ ﺍﻨﻘﻁﺎﻉ ﻓﻲ ﺍﻟﺘﻴﺎﺭ ﺍﻟﻜﻬﺭﺒﺎﺌﻲ.
36
ﺍﻟﻤﻘﺎﻁﻌﺔ :INTRﻴﺴﺘﺠﻴﺏ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻠﻤﻘﺎﻁﻌﺎﺕ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ INTRﺇﺫﺍ ﻜﺎﻥ .IF=1ﻴﻤﻜﻨﻨﺎ ﺘﺄﻫﻴل ﻫﺫﻩ
ﺍﻟﻤﻘﺎﻁﻌﺔ ﺒﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ،STIﻜﻤﺎ ﻴﻤﻜﻨﻨﺎ ﺤﺠﺒﻬﺎ ﺒﺘﺼﻔﻴﺭ ﺍﻟﺭﺍﻴﺔ IFﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤـﺔ .CLIﻋﻨـﺩﻤﺎ
ﻴﺴﺘﺠﻴﺏ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻬﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻴﺤﺠﺏ ﻫﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻋﻥ ﻁﺭﻴﻕ ﺘﺼﻔﻴﺭ ،IFﻭﻤﻥ ﺜﻡ ﻴﻌﻴـﺩ ﺘﺄﻫﻴﻠﻬـﺎ
ﺒﺎﻟﺘﻌﻠﻴﻤﺔ IRETﻤﻊ ﻨﻬﺎﻴﺔ ﺇﺠﺭﺍﺌﻴﺔ ﺨﺩﻤﺔ ﻫﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺔ.
ﻋﺎﺩ ﹰﺓ ﻤﺎ ﺘﻜﻭﻥ ﻫﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻤﺸﺘﺭﻜﺔ ﺒﻴﻥ ﻋﺩﺓ ﺘﺠﻬﻴﺯﺍﺕ ﻤﺤﻴﻁﻴﺔ ﻓﻲ ﻨﻅﺎﻡ ﺼﻐﺭﻱ ﺃﻭ ﻓﻲ ﺍﻟﺤﺎﺴـﻭﺏ
ﺍﻟﺸﺨﺼﻲ .ﻴﺴﻨﺩ ﻟﻜل ﺘﺠﻬﻴﺯﺓ ﻨﻤﻁ ﻤﻘﺎﻁﻌﺔ ﺨﺎﺹ ﻴﻘﺭﺅﻩ ﺍﻟﻤﻌﺎﻟﺞ ﻤﻥ ﻤﺴﺭﻯ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻌﺩ ﺍﻻﺴﺘﺠﺎﺒﺔ
ﻤﺒﺎﺸﺭﺓ ﻟﻬﺫﻩ ﺍﻟﻤﻘﺎﻁﻌﺔ.
ﻋﻨﺩﻤﺎ ﻴﻘﺭﺭ ﺍﻟﻤﻌﺎﻟﺞ ﺍﻻﺴﺘﺠﺎﺒﺔ ﻟﻁﻠﺏ ﻤﻘﺎﻁﻌﺔ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ INTRﻓﺈﻨﻪ ﻴﻭﻟﺩ ﺩﻭﺭﺓ ﺁﻟﺔ ﻤﺴﺭﻯ ﻤﻘﺎﻁﻌﺔ،
ﻟﻴﻌﻠﻡ ﺍﻟﺘﺠﻬﻴﺯﺓ ﺍﻟﺨﺎﺭﺠﻴﺔ ،ﺍﻟﺘﻲ ﻁﻠﺒﺕ ﺍﻟﻤﻘﺎﻁﻌﺔ، INTR ﻴﻭﻟﺩ ﺨﻼﻟﻬﺎ ﺍﻟﻤﻌﺎﻟﺞ ﻨﺒﻀﺔ ﺴﺎﻟﺒﺔ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ
ﺃﻨﻪ ﻗﺩ ﺠﺭﻯ ﺍﻻﺴﺘﺠﺎﺒﺔ ﻟﻬﺫﺍ ﺍﻟﻁﻠﺏ .ﺜﻡ ﻴﻭﻟﺩ ﺍﻟﻤﻌﺎﻟﺞ ،ﻤﺭ ﹰﺓ ﺃﺨﺭﻯ ،ﻨﺒﻀﺔ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ ﻨﻔـﺴﻪ ﻟﻘـﺭﺍﺀﺓ
ﺭﻗﻡ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﺫﻱ ﺘﻀﻌﻪ ﺍﻟﺘﺠﻬﻴﺯﺓ ﺍﻟﺨﺎﺭﺠﻴﺔ .ﻴﺠﺏ ﻋﻠﻰ ﺍﻟﺘﺠﻬﻴﺯﺓ ﺍﻟﺨﺎﺭﺠﻴﺔ ﻭﻀﻊ ﺭﻗﻡ ﺸﻌﺎﻉ
ﺍﻟﻤﻘﺎﻁﻌﺔ ﻋﻠﻰ ﻤﺴﺭﻯ ﺍﻟﻤﻌﻁﻴﺎﺕ D0-D7ﻤﻊ ﺒﺩﺍﻴﺔ ﺍﻟﻨﺒﻀﺔ ﺍﻟﺜﺎﻨﻴﺔ ﻋﻠﻰ ﺍﻟﻤﺨﺭﺝ ، INTRﺍﻨﻅﺭ ﺍﻟﻤﺨﻁﻁ
ﺍﻟﺯﻤﻨﻲ .ﻴﻤﻜﻨﻨﺎ ﺍﺴﺘﺨﺩﺍﻡ ﺃﻱ ﺸﻌﺎﻉ ﻤﻘﺎﻁﻌﺔ ﻤﻥ 00hﻭﺤﺘﻰ ،FFhﻭﻟﻜﻨﻨﺎ ﻋﺎﺩﺓ ﻤﺎ ﹶﻨﺴﺘﺨﺩﻡ ﺍﻟﻤﻘﺎﻁﻌـﺎﺕ
] [20h-FFhﻟﻜﻭﻥ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ] [00h-1Fhﻤﺤﺠﻭﺯﺓ ﺇﻤﺎ ﺩﺍﺨﻠﻴﹰﺎ ﺃﻭ ﻤﻥ ﺃﺠل ﺍﻟﺘﻁﻭﻴﺭ ﺍﻟﻤﺴﺘﻘﺒﻠﻲ ﻟﻠﻤﻌﺎﻟﺞ.
37
ﺭﻗﻢ ﺷﻌﺎﻉ ﺍﳌﻘﺎﻃﻌﺔ
ﻁﹸﺭﻕ ﺇﺩﺨﺎل ﺭﻗﻡ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ
-1ﺍﻟﻁﺭﻴﻘﺔ ﺍﻷﺒﺴﻁ
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺩﺍﺭﺓ ﺒﺴﻴﻁﺔ ﺘﻌﻤل ﻋﻠﻰ ﻭﻀﻊ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ FFhﻋﻠﻰ ﻤﺴﺭﻯ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻌـﺎﻟﺞ
D0-D7ﻋﻨﺩ ﺍﻻﺴﺘﺠﺎﺒﺔ ﻟﻁﻠﺏ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ .INTRﻻ ﺩﺍﻋﻲ ،ﻓﻲ ﻫـﺫﺍ ﺍﻟﻤﺜـﺎل ،ﺍﺴـﺘﺨﺩﺍﻡ
ﺍﻟ ﻤﺨﺭﺝ . INTAﺒﻤﺎ ﺃﻨﻨﺎ ﻭﺼﻠﻨﺎ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺇﻟﻰ ﺍﻟﺘﻐﺫﻴﺔ ﻋﺒﺭ ﻤﻘﺎﻭﻤﺎﺕ ﺭﻓﻊ ﻓﺈﻥ ﺍﻟﻤﻌﺎﻟﺞ ﺴﻭﻑ
ﻴﻘﺭﺃ ﺍﻟﻘﻴﻤﺔ FFhﻋﻨﺩﻤﺎ ﻴﺴﺘﺠﻴﺏ ﻟﻠﻤﻘﺎﻁﻌﺔ ﻋﻠﻰ ﺍﻟﻤﻐﺭﺯ .INTR
38
-2ﺍﺴﺘﺨﺩﺍﻡ ﻋﺎﺯل ﺜﻼﺜﻲ ﺍﻟﺤﺎﻻﺕ
ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻜﻴﻔﻴﺔ ﺍﺴﺘﺨﺩﺍﻡ ﺩﺍﺭﺓ ﻋﺯل ﺜﻼﺜﻲ ﺍﻟﺤﺎﻻﺕ 74LS244ﻟﺘﻁﺒﻴﻕ ﺸﻌﺎﻉ ﻤﻘﺎﻁﻌـﺔ ﺭﻗـﻡ
80hﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻨﺩﻤﺎ ﻴﺴﺘﺠﻴﺏ ﺍﻟﻤﻌﺎﻟﺞ ﻟﻠﻤﻘﺎﻁﻌﺔ ﻋﻠﻰ ﺍﻟﻤﻐـﺭﺯ .INTRﺘـﻀﻊ ﺍﻟـﺩﺍﺭﺓ
74LS244ﺭﻗﻡ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﺎﻟﺘﺯﺍﻤﻥ ﻤﻊ ﺍﻟﻨﺒﻀﺔ ﻋﻠﻰ ﺍﻟﻤﺨـﺭﺝ . INTA
ﻴﻤﻜﻨﻨﺎ ﻤﻥ ﺨﻼل ﺍﻟﺒﺩﺍﻟﺔ DIPﺘﻐﻴﻴﺭ ﻨﻤﻁ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺒﺴﻬﻭﻟﺔ.
39
-3ﺘﻭﺴﻌﺔ ﺒﻨﻴﺎﻥ ﺍﻟﻤﻘﺎﻁﻌﺔ
ﺒﻴﻨﺎ ﺴﺎﺒﻘﹰﺎ ﻁﺭﻴﻘﺘﻴﻥ ﻹﺩﺨﺎل ﺭﻗﻡ ﺸﻌﺎﻉ ﻤﻘﺎﻁﻌﺔ ﻭﺤﻴﺩ .ﻴﻤﻜﻨﻨﺎ ﻋﻤﻠﻴﹰﺎ ﺘﻭﺴﻌﺔ ﻋﻤـل ﻤﻘﺎﻁﻌـﺔ ﺍﻟﻤﻌـﺎﻟﺞ
8088/8086ﺒﺤﻴﺙ ﻴﻘﺒل ﺍﻟﻤﺩﺨل INTRﺴﺒﻊ ﻤﻘﺎﻁﻌﺎﺕ ﻤﺨﺘﻠﻔﺔ ﻟﻜل ﻤﻨﻬﺎ ﺭﻗﻡ ﺸﻌﺎﻉ ﻤﻘﺎﻁﻌﺔ ﻤﺨﺘﻠـﻑ،
ﻜﻤﺎ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ.
40
ﻋﺒﺭ ﺒﻭﺍﺒﺔ NANDﻟﻬﺎ ﺴﺒﻊ ﻤﺩﺍﺨل )ﻴﻤﻜﻨﻨﺎ ﺍﺴـﺘﺨﺩﺍﻡ IR0 − IR6 ﻨﹸﺭﺒﻁ ﻓﻲ ﻫﺫﺍ ﺍﻟﺒﻨﻴﺎﻥ ﺴﺒﻊ ﻤﻘﺎﻁﻌﺎﺕ
ﺍﻟﺩﺍﺭﺓ ﺍﻟﻤﺘﻜﺎﻤﻠﺔ 74LS30ﻟﻬﺫﺍ ﺍﻟﻐﺭﺽ( .ﻴﺠﺭﻱ ﺘﻭﻟﻴﺩ ﻁﻠﺏ ﻤﻘﺎﻁﻌﺔ ﻋﺒﺭ ﺍﻟﻤﺩﺨل INTRﺇﺫﺍ ﺃﺼـﺒﺢ
ﻴﺴﺎﻭﻱ ﺍﻟـ .0ﻴﻘﺭﺃ ﺍﻟﻤﻌﺎﻟﺞ ﺭﻗﻡ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺒـﺎﻟﺘﺯﺍﻤﻥ ﻤـﻊ IR0 − IR6 ﻋﻠﻰ ﺍﻷﻗل ﺃﺤﺩ ﺍﻟﻤﺩﺍﺨل
ﺍﻟﻨﺒﻀﺔ ﻋﻠﻰ ﺍﻟﻤﺨﺭﺝ . INTAﺘﺘﻐﻴﺭ ﻗﻴﻤﺔ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺘﺒﻌﹰﺎ ﻟﻠﻤـﺩﺨل ﺍﻟـﺫﻱ ﻁﻠـﺏ ﺍﻟﻤﻘﺎﻁﻌـﺔ.
ﻴﺒﻴﻥ ﺍﻟﺠﺩﻭل ﺍﻟﺘﺎﻟﻲ ﺭﻗﻡ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻓﻲ ﺤﺎل ﻭﺠﻭﺩ ﻁﻠﺏ ﻤﻘﺎﻁﻌﺔ ﻭﺍﺤﺩ ﺒﺂﻥ ﻭﺍﺤﺩ.
ﻭﻟﻜﻥ ﻋﻨﺩﻤﺎ ﺘﻁﻠﺏ ﺃﻜﺜﺭ ﻤﻥ ﺘﺠﻬﻴﺯﺓ ﻤﻘﺎﻁﻌﺔ ﺍﻟﻤﻌﺎﻟﺞ ﺒﺂﻥ ﻭﺍﺤﺩ ﻓﺈﻨﻪ ﻴﺠﺭﻱ ﺘﻭﻟﻴﺩ ﺭﻗﻡ ﺸﻌﺎﻉ ﻤﻘﺎﻁﻌـﺔ
ﻭ IR0 ﺠﺩﻴﺩ )ﻏﻴﺭ ﻤﺘﻀﻤﻥ ﻓﻲ ﺍﻟﺠﺩﻭل( .ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ،ﺇﺫﺍ ﺠﺭﻯ ﻁﻠﺏ ﻤﻘﺎﻁﻌﺔ ﻋﻠﻰ ﺍﻟﻤـﺩﺨﻠﻴﻥ
4
، IR1ﻓﺈﻨﻪ ﻴﺠﺭﻱ ﺘﻭﻟﻴﺩ ﺭﻗﻡ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ ،FCHﻟﻤﺎﺫﺍ؟
ﻓـﻲ ﺍﻟﻤﻭﻗـﻊ IR0 ﺍﻷﻭﻟﻭﻴﺔ ﺍﻷﻋﻠﻰ ،ﻓﺈﻨﻪ ﻴﺠﺏ ﺘﺨﺯﻴﻥ ﻋﻨﻭﺍﻥ ﺸﻌﺎﻉ ﻤﻘﺎﻁﻌﺔ IR0 ﺇﺫﺍ ﻜﺎﻥ ﻟﻠﻤﻘﺎﻁﻌﺔ
FCHﻤﻥ ﺠﺩﻭل ﺃﺸﻌﺔ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ .ﻭﻴﺠﺏ ،ﻓﻲ ﻫﺫﻩ ﺍﻟﻁﺭﻴﻘﺔ ،ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻨﺼﻑ ﺍﻷﻋﻠﻰ ﻤـﻥ ﺍﻟﺠـﺩﻭل
ﺍﻟﻤﻜﻭﻥ ﻤﻥ 128ﻤﻭﻗﻊ ﻟﻸﺨﺫ ﺒﺎﻟﺤﺴﺒﺎﻥ ﺠﻤﻴﻊ ﺍﻟﺘﺭﺍﻜﻴﺏ ﺍﻟﻤﻤﻜﻨﺔ ﻟﻁﻠﺒﺎﺕ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ .ﺒـﺎﻟﻁﺒﻊ
ﻼ ﻭﺴﻁﹰﺎ ﺒﻴﻥ ﺘﻌﻘﻴﺩ ﺍﻟﻨﻅﺎﻡ ﻭﻜﻠﻔﺘﻪ.
ﻫﺫﻩ ﺍﻟﻁﺭﻴﻘﺔ ﻟﻴﺴﺕ ﺍﻟﻤﺜﻠﻰ ﻭﻤﻊ ﺫﻟﻙ ﻓﺈﻥ ﻫﺫﻩ ﺍﻟﻁﺭﻴﻘﺔ ﺘﻤﺜل ﺤ ﹰ
ﻻ ﻋﻠﻰ ﺭﺒﻁ ﻟﻭﺤﺔ ﻤﻔﺎﺘﻴﺢ ﻤﻊ ﺍﻟﺭﻗﺎﻗﺔ 8255Aﻓﻲ ﻨﻅﺎﻡ ﺼـﻐﺭﻱ ﻤﺒﻨـﻲ
ﻤﺜﺎل :ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﻤﺜﺎ ﹰ
ﺤﻭل ﺍﻟﻤﻌﺎﻟﺞ .8086ﻴﺴﺒﺏ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﺃﻱ ﻤﻔﺘﺎﺡ ﻤﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﺘﻭﻟﻴﺩ ﻤﻘﺎﻁﻌﺔ ﺫﺍﺕ ﺍﻟـﻨﻤﻁ 40h
ﻋﺒﺭ ﻤﺩﺨل ﺍﻟﻤﻘﺎﻁﻌﺔ .INTR
ﺘﺤﺘل ﺴﺠﻼﺕ ﺍﻟﺭﻗﺎﻗﺔ 8255Aﻓﻲ ﻫﺫﺍ ﺍﻟﻤﺜﺎل ﺍﻟﻌﻨﺎﻭﻴﻥ 0504h ،0502h ،0500h :ﻭ ،0506hﺠـﺭﻯ
ﻭﺑﺎﻟﺘﺎﱄ ﻓﺈﻥ ﻗﻴﻤﺔ ﺷﻌﺎﻉ ﺍﳌﻘﺎﻃﻌﺔ ﰲ IR1 ﻭ IR0 4ﻷﻥ ﲨﻴﻊ ﻣﺪﺍﺧﻞ ﺍﳌﻘﺎﻃﻌﺔ ﺗﺴﺎﻭﻱ 1ﻣﻨﻄﻘﻲ ﻣﺎ ﻋﺪﺍ
ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﻳﺴﺎﻭﻱ 11111100bﺃﻭ FCh
41
ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺭﻗﺎﻗﺔ 16L8ﻟﻔﻙ ﺘﺭﻤﻴﺯ ﺨﻁﻭﻁ ﺍﻟﻌﻨﻭﻨﺔ .ﺘﻌﻤل ﺍﻟﺭﻗﺎﻗﺔ 8255Aﺒـﺎﻟﻨﻤﻁ ) 1ﻨﻤـﻁ ﺩﺨـل
ﻤﻘﺩﻭﺡ( ،ﻟﺫﻟﻙ ﻜﻠﻤﺎ ﺠﺭﻯ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﺃﺤﺩ ﺍﻟﻤﻔﺎﺘﻴﺢ ﻴﺼﺒﺢ ﺍﻟﻤﺨﺭﺝ (PC3) INTRﻟﻠﺭﻗﺎﻗـﺔ 8255A
ﻤﺴﺎﻭﻴﹰﺎ ﺍﻟـ ،1ﻭﻴﺠﺭﻱ ﺒﺎﻟﺘﺎﻟﻲ ﺘﻭﻟﻴﺩ ﻁﻠﺏ ﻤﻘﺎﻁﻌﺔ ﻤﻥ ﺍﻟﻨﻤﻁ 40hﻋﺒﺭ ﺍﻟﻤﺩﺨل INTRﻟﻠﻤﻌﺎﻟﺞ .ﻴﺒﻘﻰ
ﺍﻟﻤﺨﺭﺝ INTRﻟﻠﺭﻗﺎﻗﺔ 8255Aﻤﺴﺎﻭﻴﹰﺎ ﺍﻟـ 1ﺤﺘﻰ ﻴﻘﺭﺃ ﺍﻟﻤﻌﺎﻟﺞ ﺘﺭﻤﻴـﺯ ASCIIﻟﻠﻤﻌﻁﻴـﺎﺕ ﻋﻠـﻰ
ﻤﻥ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﺘﹸﻤﺴﻙ ﺍﻟﺒﻭﺍﺒـﺔ Aﺍﻟﻤﻌﻁﻴـﺎﺕ ﺍﻟﻤﺨﺭﺝ DAV ﻤﺩﺨل ﺍﻟﺒﻭﺍﺒﺔ .Aﻨﺘﻴﺠﺔ ﻟﻠﻨﺒﻀﺔ ﻋﻠﻰ
ﻋﻠﻰ ﻤﺩﺍﺨﻠﻬﺎ ﻜﻠﻤﺎ ﺠﺭﻯ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﺃﺤﺩ ﺍﻟﻤﻔﺎﺘﻴﺢ ﻭﺘﺠﻌل .INTR=1
42
ﺘﺭﻤﻴـﺯ، ﻓﻲ ﻜل ﻤﺭ ٍﺓ ﻴﺠﺭﻱ ﻓﻴﻬﺎ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﺃﺤـﺩ ﻤﻔـﺎﺘﻴﺢ ﺍﻟﻠﻭﺤـﺔ،ﻴﻘﺭﺃ ﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﺘﺎﻟﻲ
256 ﻴﻜﺘﺸﻑ ﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺒﻌﺩ ﻗـﺭﺍﺀﺓ .FIFO ﻟﻠﻤﻔﺘﺎﺡ ﺍﻟﻤﻀﻐﻭﻁ ﻭﻴﻀﻌﻪ ﻓﻲ ﺍﻟﻤﺼﻔﻭﻓﺔASCII
. ﻟﻠﻤﻌﺎﻟﺞINTR ﺩﺨلﻴﺠﺏ ﺒﺎﻟﺘﺎﻟﻲ ﺍﻟﻤﻘﺎﻁﻌﺔ ﻋﻠﻰ ﺍﻟﻤ ﻗﺩ ﺍﻤﺘﻸﺕ ﹶﻓFIFO ﺒﺎﻴﺕ ﺃﻥ ﺍﻟﻤﺼﻔﻭﻓﺔ
43
ﺘﻤﺎﺭﻴﻥ
ﺃﺠﺏ ﻋﻠﻰ ﺍﻷﺴﺌﻠﺔ ﺍﻟﺘﺎﻟﻴﺔ:
-1ﺃﻴﻥ ﻴﻤﻜﻨﻨﺎ ﺘﺨﺯﻴﻥ ﺭﻗﻡ ﺍﻟﺒﻭﺍﺒﺔ ﻋﻨﺩﻤﺎ ﻨﺘﻌﺎﻤل ﻤﻊ ﺒﻭﺍﺒﺔ ﺘﺤﺘل ﺍﻟﻌﻨﻭﺍﻥ 20h؟
-2ﺃﻴﻥ ﻴﻤﻜﻨﻨﺎ ﺘﺨﺯﻴﻥ ﺭﻗﻡ ﺍﻟﺒﻭﺍﺒﺔ ﻋﻨﺩﻤﺎ ﻨﺘﻌﺎﻤل ﻤﻊ ﺒﻭﺍﺒﺔ ﺘﺤﺘل ﺍﻟﻌﻨﻭﺍﻥ 120h؟
-3ﺃﻴﻥ ﺘﹸﺨﺯﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻨﺩ ﻗﺭﺍﺀﺓ ﺒﻭﺍﺒﺔ ﺒﻁﻭل 16ﺒﺕ؟
-4ﺃﻴﻥ ﺘﹸﺨﺯﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻨﺩ ﺇﺨﺭﺍﺠﻬﺎ ﻋﻠﻰ ﺒﻭﺍﺒﺔ ﺒﻁﻭل 8ﺒﺕ؟
-5ﻤﺎ ﻫﻲ ﺍﻟﺩﺍﺭﺓ ﺍﻷﺴﺎﺴﻴﺔ ﺍﻟ ﻤﺴﺘﺨﺩﻤﺔ ﻓﻲ ﺘﺼﻤﻴﻡ ﺒﻭﺍﺒﺔ ﺩﺨل؟
-6ﻤﺎ ﻫﻲ ﺍﻟﺩﺍﺭﺓ ﺍﻷﺴﺎﺴﻴﺔ ﺍﻟ ﻤﺴﺘﺨﺩﻤﺔ ﻓﻲ ﺘﺼﻤﻴﻡ ﺒﻭﺍﺒﺔ ﺨﺭﺝ؟
-7ﻤﺎ ﻫﻲ ﻋﺩﺩ ﻤﻐﺎﺭﺯ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﺍﻟﻘﺎﺒﻠﺔ ﻟﻠﺒﺭﻤﺠﺔ ﻓﻲ ﺍﻟﺩﺍﺭﺓ 8255A؟
-8ﻤﺎ ﻫﻲ ﻤﻐﺎﺭﺯ ﺍﻟﺩﺍﺭﺓ 8255Aﺍﻟﺘﻲ ﺘﻨﺘﻤﻲ ﻟﻠﻤﺠﻤﻭﻋﺔ A؟ ﻭﻤﺎ ﻫﻲ ﺍﻟﻤﻐﺎﺭﺯ ﺍﻟﺘﻲ ﺘﻨﺘﻤﻲ ﻟﻠﻤﺠﻤﻭﻋﺔ
B؟
-9ﻤﻊ ﺃﻱ ﻤﻐﺭﺯ ﻤﻥ ﻤﻐﺎﺭﺯ ﻤﺴﺭﻯ ﺍﻟﻨﻅﺎﻡ ﻴﺠﺏ ﻭﺼل ﺍﻟﻤﻐﺭﺯ RDﻟﻠﺩﺍﺭﺓ 8255A؟
-10ﻤﺎ ﻫﻲ ﺃﻨﻤﺎﻁ ﺍﻟﻌﻤل ﺍﻟﻤﺘﺎﺤﺔ ﻟﻠﺩﺍﺭﺓ 8255A؟
-11ﻤﺎ ﻫﻲ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ﺍﻟﺘﻲ ﺘﺒﺭﻤﺞ ﺍﻟﻤﺠﻤﻭﻋﺔ Aﺩﺨل ﻭﺍﻟﻤﺠﻤﻭﻋﺔ Bﺨﺭﺝ ،ﻓﻲ ﺍﻟﺩﺍﺭﺓ 8255A؟
-12ﻤﺎ ﻫﻲ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ﺍﻟﺘﻲ ﺘﺒﺭﻤﺞ ﺍﻟﻤﺠﻤﻭﻋﺔ Aﺩﺨل ﻭﺍﻟﻤﺠﻤﻭﻋﺔ Bﺨﺭﺝ ،ﻓﻲ ﺍﻟﺩﺍﺭﺓ 8255A؟
-13ﻤﺎ ﻫﻲ ﻜﻠﻤﺔ ﺍﻟﺘﺤﻜﻡ ﺍﻟﺘﻲ ﺘﺒﺭﻤﺞ ﺍﻟﺒﻭﺍﺒﺔ Aﻓﻲ ﺍﻟﻨﻤﻁ ،2ﻭﺍﻟﺒﻭﺍﺒﺔ Bﺨﺭﺝ ﻭﺍﻟﻤﻐـﺎﺭﺯ PC0-PC2
ﺩﺨل ﻓﻲ ﺍﻟﻨﻤﻁ ،0ﻓﻲ ﺍﻟﺩﺍﺭﺓ 8255A؟
-14ﻫل ﺘﻭﻟﺩ ﺍﻟﺘﻌﻠﻴﻤﺔ DIVﻓﻲ ﺍﻟﻤﺜﺎل ﺍﻟﺘﺎﻟﻲ ﻤﻘﺎﻁﻌﺔ؟
MOV AL,192
SUB CL, CL
DIV CL
-15ﻫل ﺘﻭﻟﺩ ﺍﻟﺘﻌﻠﻴﻤﺔ DIVﻓﻲ ﺍﻟﻤﺜﺎل ﺍﻟﺘﺎﻟﻲ ﻤﻘﺎﻁﻌﺔ؟
MOV AX,0FFFh
MOV BL,2
DIV BL
-16ﻤﺎ ﻫﻲ ﺍﻟﻤﻭﺍﻗﻊ ﺍﻟﺘﻲ ﻴﺠﺭﻱ ﻓﻴﻬﺎ ﺘﺨﺯﻴﻥ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ 10h؟ ﺍﻟﺠﻭﺍﺏ.00040h-00043h :
-17ﻤﺎ ﺍﻟﻔﺭﻕ ﺒﻴﻥ ﺍﻟﺘﻌﻠﻴﻤﺔ IRETﻭﺍﻟﺘﻌﻠﻴﻤﺔ RET؟
-18ﺼﻤﻡ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺩﺍﺭﺓ 74LS138ﺩﺍﺭﺓ ﻤﻔﻜﻙ ﻋﻨﺎﻭﻴﻥ ،ﻓﻲ ﻨﻅﺎﻡ ﺼﻐﺭﻱ ﻤﺒﻨﻲ ﺤـﻭل ﺍﻟﻤﻌـﺎﻟﺞ
44
،8086ﺘﻨﺘﺨﺏ 8ﺒﻭﺍﺒﺎﺕ ﺘﺤﺘل ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﺘﺎﻟﻴﺔ.1Eh ،1Ch ،1Ah ،18h ،16h ،14h ،12h ،10h :
-19ﺼﻤﻡ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺩﺍﺭﺓ 74LS138ﺩﺍﺭﺓ ﻤﻔﻜﻙ ﻋﻨﺎﻭﻴﻥ ،ﻓﻲ ﻨﻅﺎﻡ ﺼﻐﺭﻱ ﻤﺒﻨﻲ ﺤـﻭل ﺍﻟﻤﻌـﺎﻟﺞ
،8086ﺘﻨﺘﺨﺏ 8ﺒﻭﺍﺒﺎﺕ ﺘﺤﺘل ﺍﻟﻌﻨﺎﻭﻴﻥ ﺍﻟﺘﺎﻟﻴﺔ.1Fh ،1Dh ،1Bh ،19h ،17h ،15h ،13h ،11h :
-20ﺍﻜﺘﺏ ﺘﻌﻠﻴﻤﺎﺕ ﺘﹸﺨﺭﺝ ﻤﺤﺘﻭﻯ ﻤﻭﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ DATAﻋﻠﻰ ﺒﻭﺍﺒﺔ ﺒﻁﻭل 8-bitﻋﻨﻭﺍﻨﻬﺎ .50h
-21ﺍﻜﺘﺏ ﺘﻌﻠﻴﻤﺎﺕ ﺘﻘﺭﺃ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻠﻰ ﺒﻭﺍﺒﺔ ﻋﻨﻭﺍﻨﻬﺎ 800Ehﻭﺘﻀﻌﻬﺎ ﻓﻲ ﻤﻭﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ .DATA
-22ﺒﻴﻥ ﻜﻴﻑ ﻴﻤﻜﻥ ﺭﺒﻁ ﺍﻟﻤﺒﺩل DAC0830ﻤﻊ ﻤﻌﺎﻟﺞ 8086ﺒﺤﻴﺙ ﻴﺤﺘل ﺍﻟﻌﻨﻭﺍﻥ 400hﻤﻥ ﻓﻀﺎﺀ
ﺍﻟﺒﻭﺍﺒﺎﺕ.
-23ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﺨﺭﺝ ﺇﺸﺎﺭﺓ ﺴﻥ ﻤﻨﺸﺎﺭ ﻋﻠﻰ ﻤﺨﺭﺝ ﺍﻟﻤﺒﺩل DAC0830ﻓﻲ ﺍﻟﻁﻠﺏ ﺍﻟﺴﺎﺒﻕ.
-24ﺒﻴﻥ ﻜﻴﻑ ﻴﻤﻜﻥ ﺭﺒﻁ ﺍﻟﻤﺒﺩل ADC804ﻤﻊ ﻤﻌﺎﻟﺞ 8086ﺒﺤﻴﺙ ﺘﺤﺘل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻌﻨﻭﺍﻥ 0260h
ﻭﻴﺤﺠﺯ ﺍﻟﻌﻨﻭﺍﻥ 0270hﻟﻘﺭﺍﺀﺓ ﺤﺎﻟﺔ ﺍﻟﻤﻐﺭﺯ INTRﻟﻠﻤﺒﺩل.
-25ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﻘﺭﺃ ﻋﻴﻨﺔ ﻤﻥ ﺇﺸﺎﺭﺓ ﺍﻟﺩﺨل ﻜل 100ﻤﻠﻲ ﺜﺎﻨﻴﺔ ﻭﻴﻀﻊ ﺍﻟﻘﻴﻡ ﺍﻟﻤﻘﺭﻭﺀﺓ ﻓﻲ ﻤﺼﻔﻭﻓﺔ
ﻁﻭﻟﻬﺎ 100hﺒﺎﻴﺕ.
ﺼﻤﻡ ﺩﺍﺭ ﹰﺓ ﺘﻀﻊ ﺸﻌﺎﻉ ﺍﻟﻤﻘﺎﻁﻌﺔ 86hﻋﻠﻰ ﺨﻁﻭﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻋﻨﺩ ﺍﻻﺴﺘﺠﺎﺒﺔ ﻟﻤﻘﺎﻁﻌـﺔ ﻋﻠـﻰ
-26
ﺍﻟﻤﺩﺨل .INTR
-27ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﻁﺒﻊ ﺍﻟﺭﺴﺎﻟﺔ ' 'Overflow errorﻜﻠﻤﺎ ﺤﺩﺙ ﻁﻔﺢ ﻓﻲ ﻋﻤﻠﻴﺔ ﺤﺴﺎﺒﻴﺔ ﻤﺎ.
45