You are on page 1of 4

‫‪Interrupts‬‬ ‫‪ 2‬ﺍﻹﻋﺗﺭﺍﺿﺎﺕ‬

‫ﻣﻘﺩﻣﺔ‬

‫ﺍﻻﻋﺗﺭﺍﺿﺎﺕ ﻋﺑﺎﺭﺓ ﻋﻥ ﺁﻟﻳﺎﺕ ﻓﻲ ﻣﺳﺗﻭﻯ ﺍﻟﻣﻌﺎﻟﺞ ﺗﺳﺗﻌﻣﻝ ﻋﺎﻣﺔ ﻟﻠﺣﻭﺍﺭ ﺍﻟﻠﻭﺍﺣﻖ ﻭ ﺍﻟﻣﻌﺎﻟﺞ‪ ,‬ﺍﻟﻌﺑﻭﺭ ﻣﻥ‬
‫ﻣﺳﺗﻭﻯ ﺑﺭﺍﻣﺞ ﺇﻟﻰ ﻣﺳﺗﻭﻯ ﺁﺧﺭ‪ ,‬ﻭ ﻣﻌﺎﻟﺟﺔ ﺍﻷﺧﻁﺎء ﺍﻟﺩﺍﺧﻠﻳﺔ ﻟﻠﻣﻌﺎﻟﺞ ﺃﺛﻧﺎء ﺍﻟﺗﻧﻔﻳﺫ ﺃﻭ ﺗﺩﻋﻰ ﺍﻻﺳﺗﺛﻧﺎءﺍﺕ ﺃﻭ‬
‫‪:exceptions‬‬

‫• ﺍﻋﺗﺭﺍﺿﺎﺕ ﻋﺗﺎﺩ‬
‫• ﺍﻋﺗﺭﺍﺿﺎﺕ ﺑﺭﻣﺟﻳﺔ‬
‫• ﺍﻋﺗﺭﺍﺿﺎﺕ ﺩﺍﺧﻠﻳﺔ ﺃﻭ ﺇﺳﺗﺛﻧﺎءﺍﺕ‬

‫ﻓﻌﻝ ﺍﻹﻋﺗﺭﺍﺽ ﺍﻷﺳﺎﺳﻲ ﻣﻬﻣﺎ ﻛﺎﻧﺕ ﻁﺑﻳﻌﺗﻪ ﻫﻭ ﺇﻳﻘﺎﻑ ﺍﻟﺑﺭﻧﺎﻣﺞ ﺍﻟﺟﺎﺭﻱ ﺗﻧﻔﻳﺫﻩ ﺑﻁﺭﻳﻘﺔ ﻋﺷﻭﺍﺋﻳﺔ ﻓﻲ ﺣﺎﻟﺔ‬
‫ﺇﻋﺗﺭﺍﺽ ﻋﺗﺎﺩ‪ ,‬ﺃﻭ ﻣﻧﺗﻅﺭﺓ ﻓﻲ ﺣﺎﻟﺔ ﺍﻟﺑﺭﻣﺟﻲ ﺃﻭ ﺍﻹﺳﺗﺛﻧﺎء‪ ,‬ﻭ ﺫﻟﻙ ﻟﺗﻐﻳﻳﺭ ﻣﺳﺎﺭ ﺍﻟﻣﻌﺎﻟﺞ ﺇﻟﻰ ﺑﺭﻧﺎﻣﺞ ﺁﺧﺭ‪.‬‬

‫ﺍﻟﻣﻌﺎﻟﺞ ﻣﺟﻬﺯ ﺑﺂﻟﻳﺎﺕ ﺩﺍﺧﻠﺑﺔ )ﻣﺛﻝ ‪ (Intel8x86‬ﺗﻣﻛﻧﻪ ﻣﻥ ﺍﻟﺗﻌﺭﻑ ﻟﻰ ﻣﺻﺩﺭ ﺍﻻﻋﺗﺭﺍﺽ ﻭ ﻁﺭﻳﻘﺔ‬
‫ﺍﻟﺗﻭﺟﻪ ﺇﻟﻰ ﺍﻟﺑﺭﻧﺎﻣﺞ ﺍﻟﺟﺩﻳﺩ ﻭ ﺫﻟﻙ ﺑﺈﺳﺗﺧﺭﺍﺝ ﻋﻧﻭﺍﻥ ﺑﺭﻧﺎﻣﺞ ﺍﻹﻋﺗﺭﺍﺽ ﺍﻟﻣﻭﺍﻓﻖ‪.‬‬

‫‪ 2.1‬ﻧﻣﻭﺫﺝ ﺇﻋﺗﺭﺍﺿﺎﺕ ﻣﻌﺎﻟﺟﺎﺕ ‪Intel 80x86‬‬

‫ﺗﺣﺗﻭﻱ ﻫﺫﻩ ﺍﻟﻣﻌﺎﻟﺟﺎﺕ ﻋﻠﻰ ‪ 256‬ﻣﺳﺗﻭﻯ ﺇﻋﺗﺭﺍﺽ ﺑﻳﻥ ﺍﻋﺗﺭﺍﺿﺎﺕ ﻋﺗﺎﺩ‪ ,‬ﺑﺭﻣﺟﻳﺔ ﻭ ﺇﺳﺗﺛﻧﺎءﺍﺕ‪.‬‬

‫‪ 2.1.1‬ﺍﻋﺗﺭﺍﺿﺎﺕ ﻋﺗﺎﺩ‬

‫ﻳﺣﺗﻭﻱ ﻣﻌﺎﻟﺞ ‪ 80x86‬ﻋﻠﻰ ﻣﺩﺧﻠﻳﻥ ﺃﺳﺎﺳﻳﻳﻥ ﺃﻭ‬


‫ﺇﺷﺎﺭﺗﻳﻥ‪:‬‬

‫• ‪Non Masquable Interrupt NMI‬‬


‫• ‪Interrupt Request INTR‬‬
‫• ﻣﺧﺭﺝ ‪Interrupt Acknowledge INTA‬‬

‫ﺇﻋﺗﺭﺍﺽ ‪ NMI‬ﻋﺑﺎﺭﺓ ﻋﻥ ﺇﺷﺎﺭﺓ ﺧﺎﺻﺔ ﺑﺎﻹﺳﺗﻌﺟﺎﻻﺕ‬


‫ﺍﻟﻣﺣﻳﻁﺔ ﺑﺎﻟﻣﻌﺎﻟﺞ ‪ .80x86‬ﻧﺫﻛﺭ ﻣﻥ ﺑﻳﻥ ﻫﺫﻩ‬
‫ﺑﺎﻹﺳﺗﻌﺟﺎﻻﺕ ﺧﻠﻝ ﻓﻲ ﺍﻟﺫﺍﻛﺭﺓ ‪ ,RAM‬ﻋﻁﻝ ﻓﻲ ﺑﻁﺎﺭﻳﺔ‬
‫ﺍﻟﺑﻁﺎﻗﺔ ﺍﻷﻡ‪ ,‬ﻫﻭﺍﺋﻲ ﺍﻟﻣﻌﺎﻟﺞ‪...‬ﺇﻟﺦ‪ .‬ﻳﻘﻭﻡ ﺍﻟﻣﻌﺎﻟﺞ ﺇﺛﺭﻫﺎ‬
‫ﺑﺗﻧﻔﻳﺫ ﺑﺭﻧﺎﻣﺞ ﺧﺎﺹ ﻣﺛﻝ ﺇﺻﺩﺍﺭ ﺻﻭﺕ ‪ bip‬ﻣﺗﻭﺍﺻﻝ‪.‬‬

‫ﺇﻋﺗﺭﺍﺽ ‪ INTR‬ﻫﻭ ﺍﻟﻣﺩﺧﻝ ﺍﻷﺳﺎﺳﻲ ﻹﻋﺗﺭﺍﺿﺎﺕ‬


‫ﺍﻟﻌﺗﺎﺩ ﺍﻟﻣﺧﺗﻠﻔﺔ ﻭ ﺍﻟﺻﺎﺩﺭﺓ ﻣﻥ ﻣﺭﺍﻗﺑﺎﺕ ﺍﻟﻠﻭﺍﺣﻖ ‪I/O‬‬
‫‪ .controlers‬ﻋﻠﻣﺎ ﺑﺄﻥ ﻫﻧﺎﻙ ﻋﺩﺓ ﺇﻋﺗﺭﺍﺿﺎﺕ ﻋﺗﺎﺩ‬
‫ﻓﻧﺟﺩ ﻋﺎﺩﺓ ﻓﻲ ﺗﺻﻣﻳﻡ ﺍﻟﺑﻁﺎﻗﺔ ﺍﻷﻡ ﻣﺭﺍﻗﺏ )ﺃﻭ ﺃﻛﺛﺭ(‬
‫ﺇﻋﺗﺭﺍﺿﺎﺕ ‪.Interrupts Controler‬‬
‫ﺇﺷﺎﺭﺓ ‪ INTA‬ﻳﺻﺩﺭﻫﺎ ﺍﻟﻣﻌﺎﻟﺞ‪ ,‬ﺑﻌﺩ ﺇﻧﻬﺎء ﺗﻧﻔﻳﺫ ﺗﻌﻠﻳﻣﺔ ﺍﻟﺑﺭﻧﺎﻣﺞ ﺍﻟﻣﺗﻭﻗﻑ‪ ,‬ﻟﻳﻌﻠﻡ ﻣﺭﺍﻗﺏ ﺍﻹﻋﺗﺭﺍﺿﺎﺕ ﺃﻧﻪ‬
‫ﻗﺩ ﺗﻡ ﺍﻟﺗﻌﺭﻑ ﻋﻠﻰ ﺍﻹﻋﺗﺭﺍﺽ‪ ,‬ﻭ ﻫﺫﺍ ﺍﻷﺧﻳﺭ ﻳﻌﻠﻡ ﻣﺭﺍﻗﺏ ﺍﻻﺣﻖ ‪ I/O controler‬ﻭ ﺫﻟﻙ ﻹﻧﻬﺎء ﻁﻠﺏ‬
‫ﺍﻹﻋﺗﺭﺍﺽ ﺃﻱ ﻟﺳﺣﺏ ﺇﺷﺎﺭﺓ ‪ .INTR‬ﻳﻌﺗﺑﺭ ﻫﺫﺍ ﺍﻟﺗﺯﺍﻣﻥ ﺑﻳﻥ ﺍﻹﺷﺎﺭﺍﺕ ‪ protocole‬ﺃﻭ "ﺣﻭﺍﺭ" ﺑﻳﻥ‬
‫ﺍﻟﻣﻌﺎﻟﺞ ﻭ ﺍﻟﻠﻭﺍﺣﻖ‪.‬‬

‫‪ 2.1.2‬ﺍﻹﻋﺗﺭﺍﺿﺎﺕ ﺑﺭﻣﺟﻳﺔ ‪Software Interrupts‬‬

‫ﻋﺑﺎﺭﺓ ﻋﻥ ﺗﻌﻠﻳﻣﺔ ‪ Int n°‬ﺗﻐﻳﺭ ﻣﺳﺎﺭ ﺗﻧﻔﻳﺫ ﺍﻟﻣﻌﺎﻟﺞ ﺇﻟﻰ ﺑﺭﻧﺎﻣﺞ ﺧﺎﺹ‪ .‬ﺗﺣﺩﺩ ﺃﺭﻗﺎﻡ ﻫﺫﻩ ﺍﻟﺗﻌﻠﻳﻣﺔ ﻣﻥ‬
‫ﻁﺭﻑ ﻧﻅﺎﻡ ﺍﻟﺗﺷﻐﻳﻝ ﻋﺎﺩﺓ ﻹﺳﺗﻌﻣﺎﻟﻬﺎ ﻛﻧﺩﺍءﺍﺕ ﺇﻟﻰ ﻭﻅﺎﺋﻑ ﻧﻅﺎﻡ ﺍﻟﺗﺷﻐﻳﻝ ‪Operating System Calls‬‬
‫ﻣﺛﻝ ‪ Int 21h‬ﺍﻟﺧﺎﺻﺔ ﺑــ ‪ ,MSDOS‬ﻭ ﻛﺫﻟﻙ ﻧﺩﺍءﺍﺕ )‪BIOS(Basic Input/Output System‬‬
‫ﺍﻟﺧﺎﺻﺔ ﺑﺟﻬﺎﺯ ﺍﻟــ )‪ PC(IBM compatible‬ﻭ ﺍﻟﻣﻧﺟﺯﺓ ﻣﻥ ﻁﺭﻑ ﻣﺻﻣﻡ ﺍﻟﺑﻁﺎﻗﺔ ﺍﻷﻡ‪.‬‬

‫‪ 3.1.2‬ﺍﻹﺳﺗﺛﻧﺎءﺍﺕ ‪Exceptions‬‬

‫ﻫﺫﻩ ﺍﻹﻋﺗﺭﺍﺿﺎﺕ ﺍﻟﺩﺍﺧﻠﻳﺔ ﻧﺎﺗﺟﺔ ﻋﻧﺩ ﺗﻧﻔﻳﺫ ﺑﻌﺽ ﺍﻟﺗﻌﻠﻳﻣﺎﺕ ﻓﻲ ﺣﺎﻻﺕ ﺧﺎﺻﺔ ﻣﺛﻝ ﺍﻟﻘﺳﻣﺔ ﻋﻠﻰ ‪ .0‬ﺑﺭﺍﻣﺞ‬
‫ﻫﺫﻩ ﺍﻻﺳﺗﺛﻧﺎءﺍﺕ ﺗﺧﺭﺝ ﻋﺎﺩﺓ ﺇﻣﺎ ﺻﻭﺕ ‪ bip‬ﺃﻭ ﻧﺹ ﻓﻲ ﺍﻟﺷﺎﺷﺔ ﻣﺛﻝ ‪ divide/0‬ﺍﻟﺗﻲ ﺗﺳﺎﻋﺩ ﻓﻲ ﺇﻋﺎﺩﺓ‬
‫ﺿﺑﻁ ﺍﻟﺑﻳﺎﻧﺎﺕ ﺍﻟﺑﺭﻧﺎﻣﺞ ﺍﻟﻣﺗﻭﻗﻑ ﺃﻭ ﺇﻋﺎﺩﺓ ﺍﻟﻧﻅﺭ ﻓﻲ ﺗﺻﻣﻳﻡ ﺍﻟﺑﺭﻧﺎﻣﺞ‪.‬‬

‫‪ 4.1.2‬ﻣﺳﺗﻭﻳﺎﺕ ﺍﻹﻋﺗﺭﺍﺿﺎﺕ ‪Interrupts Levels‬‬

‫ﻳﻭﺟﺩ ‪ 256‬ﻣﺳﺗﻭﻯ ﺇﻋﺗﺭﺍﺽ ﻓﻲ ﻣﻌﺎﻟﺟﺎﺕ ‪Intel80x86‬‬


‫ﻣﻣﻛﻥ ﺗﻭﺯﻳﻌﻬﺎ ﺑﻳﻥ ﻣﺧﺗﻠﻑ ﺃﻧﻭﺍﻉ ﺍﻻﻋﺗﺭﺍﺿﺎﺕ ﻣﺎ ﻋﺩﺍ‬
‫ﺍﻹﺳﺗﺛﻧﺎءﺍﺕ ﺍﻟﺧﺎﺹ ﺑﻧﻭﻉ ﺍﻟﻣﻌﺎﻟﺞ ﻭ ﺗﻌﻠﻳﻣﺎﺗﻪ‪ ,‬ﺣﻳﺙ ﺃﺭﻗﺎﻣﻬﺎ‬
‫ﻣﻌﺭﻓﺔ ﻣﺳﺑﻘﺎ‪.‬‬

‫‪Int 00‬‬ ‫‪div/0‬‬

‫‪Int 01‬‬ ‫‪step by step‬‬

‫‪Int 02‬‬ ‫‪NMI‬‬

‫‪Int 03‬‬ ‫‪break point‬‬

‫‪Int 04‬‬ ‫‪overflow‬‬

‫‪.‬‬

‫‪.‬‬

‫‪Int FF‬‬
‫ﻟﻛﻝ ﻣﺳﺗﻭﻯ ﺍﻋﺗﺭﺍﺽ ﻳﺳﺗﻭﺟﺏ ﻭﺟﻭﺩ ﺃﻭ ﺗﺣﺩﻳﺩ ﻋﻧﻭﺍﻥ ﺑﺭﻧﺎﻣﺟﻪ ﺍﻟﺧﺎﺹ‪ .‬ﻋﻠﻣﺎ ﺑﺄﻥ ﻋﻧﻭﺍﻥ ﺑﺭﻧﺎﻣﺞ ﻋﺑﺎﺭﺓ‬
‫ﻋﻥ ﻗﻳﻣﺗﻳﻥ ‪ CS :IP 16bits‬ﻳﺷﻳﺭﺇﻟﻰ ﻣﻭﻗﻊ ﻓﻲ ﻣﺟﺎﻝ ﻋﻧﺎﻭﻳﻥ ﺍﻟﻣﻌﺎﻟﺞ‪ .‬ﻓﻲ ﻫﻧﺩﺳﺔ ‪ 80x86‬ﺗﺧﺻﺹ‬
‫ﻣﻧﻁﻘﺔ ﻹﺣﺗﻭﺍء ﻋﻧﺎﻭﻳﻥ ﺑﺭﺍﻣﺞ ﺍﻻﻋﺗﺭﺍﺿﺎﺕ ﺍﻟﻣﺧﺗﻠﻔﺔ‪ .‬ﺗﺑﺩﺃ ﻫﺫﻩ ﺍﻟﻣﻧﻁﻘﺔ ﻓﻲ ﺍﻟﻌﻧﻭﺍﻥ ‪ 0000:0000‬ﻭ‬
‫ﺗﺧﺯﻥ ﻓﻳﻬﺎ ‪ CS :IP‬ﻟﻛﻝ ﺑﺭﻧﺎﻣﺞ ﺣﺳﺏ ﺍﻟﺷﻛﻝ ﺍﻟﺳﺎﺑﻖ‪.‬‬

‫ﺑﺎﻗﻲ ﻣﺳﺗﻭﻳﺎﺕ ﺍﻻﻋﺗﺭﺍﺿﺎﺕ ﺗﻭﺯﻉ ﻏﻠﻰ ﺍﻋﺗﺭﺍﺿﺎﺕ ﺍﻟﻌﺗﺎﺩ ﺣﺳﺏ ﺗﺻﻣﻳﻡ ﻫﻧﺩﺳﺔ ‪ PC‬ﺍﻟﺗﻲ ﺗﺣﺩﺩ ﻋﺩﺩﻫﺎ ﻭ‬
‫ﺃﻭﻟﻭﻳﺎﺗﻬﺎ ﻣﻥ ﺟﻬﺔ‪ ,‬ﻭ ﺍﻻﻋﺗﺭﺍﺿﺎﺕ ﺍﻟﺑﺭﻣﺟﻳﺔ ﺍﻟﻣﺣﺩﺩﺓ ﻣﻥ ﻁﺭﻑ ﻧﻅﺎﻡ ﺍﻟﺗﺷﻐﻳﻝ ﻭ ﻣﻥ ﺑﺭﺍﻣﺞ ﺍﻟﺑﻁﺎﻗﺔ ﺍﻷﻡ‬
‫)‪.(RomBIOS‬‬

‫ﺁﻟــﻳﺔ ﺍﻻﻋﺗﺭﺍﺿــﺎﺕ‬ ‫‪5.1.2‬‬

‫ﻋﻧﺩ ﺻﺩﻭﺭ ﺇﻋﺗﺭﺍﺽ ﻋﺗﺎﺩ ﺃﻭ ﺑﺭﻣﺟﻲ ﻳﻘﻭﻡ ﺍﻟﻣﻌﺎﻟﺞ ‪ 80x86‬ﺑﺎﻟﺧﻁﻭﺍﺕ ﺍﻟﺗﺎﻟﻳﺔ‪:‬‬

‫ﺍﻧﻬﺎء ﺗﻧﻔﻳﺫ ﺍﻟﺗﻌﻠﻳﻣﺔ ﺍﻟﺣﺎﻟﻳﺔ )ﻓﻲ ﺣﺎﻟﺔ ﺍﻋﺗﺭﺍﺽ ﻋﺗﺎﺩ(‪.‬‬ ‫‪-‬‬


‫ﺗﺧﺯﻳﻥ ﻣﺣﺗﻭﻯ ﺳﺟﻝ ﺍﻟﺣﺎﻻﺕ ‪ CPU Flags‬ﻓﻲ ﺍﻟﻣﻛﺩﺱ‪.‬‬ ‫‪-‬‬
‫ﺗﺧﺯﻳﻥ ﻋﻧﻭﺍﻥ ‪ CS,IP‬ﺍﻟﺗﻌﻠﻳﻣﺔ ﺍﻟﻣﻭﺍﻟﻳﺔ ﻟﻠﺗﻌﻠﻳﻣﺔ ﺍﻟﻣﻧﺗﻬﻳﺔ‬ ‫‪-‬‬
‫ﺍﻟﺗﻌﺭﻑ ﻋﻠﻰ ﻣﺻﺩﺭ ﺍﻻﻋﺗﺭﺍﺽ ﻓﻲ ﺣﺎﻟﺔ ﻋﺗﺎﺩ ﻟﺗﺣﺩﻳﺩ ﺭﻗﻡ ﺍﻻﻋﺗﺭﺍﺽ ﻓﻲ ﺟﺩﻭﻝ ﺍﻋﺗﺭﺍﺿﺎﺕ‪.‬‬ ‫‪-‬‬
‫ﺇﻋﺗﻣﺎﺩﺍ ﻋﻠﻰ ﺭﻗﻡ ﺍﻻﻋﺗﺭﺍﺽ )ﻋﺗﺎﺩ ﺃﻭ ﺑﺭﻣﺟﻲ( ﻳﻧﻭﺟﻪ ﺍﻟﻣﻌﺎﻟﺞ ﺇﻟﻰ ﺟﺩﻭﻝ ﻣﺅﺷﺭﺍﺕ ﺍﻻﻋﺗﺭﺍﺿﺎﺕ‬ ‫‪-‬‬
‫ﻻﺳﺗﺧﻠﺭﺍﺝ ﻋﻧﻭﺍﻥ ﺑﺭﻧﺎﻣﺞ ﺍﻻﻋﺗﺭﺍﺽ ﺍﻟﻣﻧﺎﺳﺏ ﻭ ﻭﺿﻌﻪ ﻓﻲ ﺳﺟﻠﻲ ‪ CS,IP‬ﺩﺍﺧﻝ ﺍﻟﻣﻌﺎﻟﺞ‪.‬‬
‫ﻳﻐﻳﺭ ﺍﻟﻣﻌﺎﻟﺞ ﻣﺳﺎﺭ ﺍﻟﺗﻧﻔﻳﺫ ﺇﻟﻰ ﺍﻟﻌﻧﻭﺍﻥ ﺍﻟﺟﺩﻳﺩ‪.‬‬ ‫‪-‬‬
‫ﺑﻌﺩ ﺇﻧﻬﺎء ﺗﻧﻘﻳﺫ ﺑﺭﻧﺎﻣﺞ ﺍﻻﻋﺗﺭﺍﺽ‪ ,‬ﺍﻟﺫﻱ ﻳﻧﺗﻬﻲ ﻋﺎﺩﺓ ﺑﺗﻌﻠﻳﻣﺔ ﺭﺟﻭﻉ ‪,iret :interrupt return‬‬ ‫‪-‬‬
‫ﻳﻧﺗﺞ ﻋﻥ ﺗﻧﻔﻳﺫﻫﺎ ﺇﺳﺗﺧﺭﺍﺝ ﺍﻟﻌﻧﻭﺍﻥ ﺍﻟﻣﻭﺍﻟﻲ ﻟﻠﺗﻌﻠﻳﻣﺔ ﺍﻟﻣﺗﻭﻗﻔﺔ ﻓﻲ ﺍﻟﺑﺭﻧﺎﻣﺞ ﺍﻟﻣﺗﻭﻗﻑ ﻣﻥ ﺍﻟﻣﻛﺩﺱ‪.‬‬
‫ﻣﻭﺍﺻﻠﺔ ﺗﻧﻔﻳﺫ ﺍﻟﺑﺭﻧﺎﻣﺞ ﺍﻟﻣﺗﻭﻗﻑ‪.‬‬ ‫‪-‬‬

‫ﺷﻛﻝ ﺑﺭﻧﺎﻣﺞ ﺍﻻﻋﺗﺭﺍﺽ‬ ‫‪2.2‬‬

‫ﺗﻌﺗﺑﺭ ﺑﺭﺍﻣﺞ ﺍﻻﻋﺗﺭﺍﺿﺎﺕ ﻛﺑﺭﺍﻣﺞ "ﻗﺻﻳﺭﺓ" ﺧﺎﺻﺔ ﻷﺩﺍء ﻣﻬﻣﺔ ﻣﺣﺩﺩﺓ‪ ,‬ﺃﻭ ﻛﺑﺭﺍﻣﺞ ﻓﺭﻋﻳﺔ ﺃﺳﺎﺳﻳﺔ‬
‫ﻛﺧﺩﻣﺎﺕ ﻟﺑﻘﻳﺔ ﺍﻟﺑﺭﺍﻣﺞ‪ ,‬ﻛﻣﺎ ﺫﻛﺭ ﻓﻲ ﺑﺩﺍﻳﺔ ﺍﻟﻔﺻﻝ‪.‬‬

‫ﻛﻝ ﺑﺭﻧﺎﻣﺞ ﺇﻋﺗﺭﺍﺽ ﻳﺳﺗﻌﻣﻝ ﻋﺩﺩ ﻣﺣﺩﺩ ﻣﻥ ﺍﻟﺳﺟﻼﺕ ﺣﺳﺏ ﺩﻭﺭﻩ‪ .‬ﻗﺑﻝ ﺑﺩﺍﻳﺔ ﻣﻌﺎﻟﺟﺔ ﺍﻹﻋﺗﺭﺍﺽ‬ ‫•‬
‫ﻳﺟﺏ ﺗﺧﺯﻳﻥ ﻣﺣﺗﻭﻯ ﺍﻟﺳﺟﻼﺕ ﺍﻟﻣﺳﺗﻌﻣﻠﺔ‪ ,‬ﺃﺛﻧﺎء ﺍﻟﻣﻌﺎﻟﺟﺔ‪ ,‬ﻓﻲ ﺍﻟﻣﻛﺩﺱ ﻣﺅﻗﺗﺎ‪ .‬ﻳﺳﺗﻌﻣﻝ ﺍﻟﻣﺑﺭﻣﺞ‬
‫ﺗﻌﻠﻳﻣﺔ ‪ push‬ﻟﻬﺫﺍ ﺍﻟﻐﺭﺽ‪ ,‬ﻣﺭﻓﻘﺔ ﺑﺈﺳﻡ ﻟﺳﺟﻝ)…‪.(push ax, push dx, push cx‬‬
‫ﺑﻌﺩ ﺍﻟﺗﺧﺯﻳﻥ ﻳﻭﺍﺻﻝ ﺍﻟﺑﺭﻧﺎﻣﺞ ﻣﻌﺎﻟﺟﺔ ﺍﻹﻋﺗﺭﺍﺽ ‪.‬‬ ‫•‬
‫ﻗﺑﻝ ﺍﻹﻧﺗﻬﺎء ﻳﺟﺏ ﺇﺭﺟﺎﻉ ﻗﻳﻡ ﺍﻟﺳﺟﻼﺕ ﺍﻟﻣﺧﺯﻧﺔ ﻓﻲ ﺍﻟﺑﺩﺍﻳﺔ )‪ ,(push..‬ﺑﻭﺍﺳﻁﺔ ﺗﻌﻠﻳﻣﺔ ‪pop reg‬‬ ‫•‬
‫ﻣﺭﻓﻘﺔ ﺑﺈﺳﻡ ﺍﻟﺳﺟﻝ‪,‬ﻭ ﻟﻛﻥ ﺑﺎﻟﺗﺭﺗﻳﺏ ﺍﻟﻌﻛﺳﻲ )…‪ (push cx, push dx, push ax‬ﻧﻅﺭﺍ ﻟﺧﺎﺻﻳﺔ‬
‫ﺍﻟﻣﻛﺩﺱ ﺍﻷﺳﺎﺳﻳﺔ‪ ,‬ﺧﻳﺙ ﺁﺧﺭ ﺩﺍﺧﻝ ﻟﻠﻣﻛﺩﺱ ﻫﻭ ﺃﻭﻝ ﺧﺭﺝ ﻣﻧﻪ )‪.(LIFO Last In First Out‬‬
‫ﻹﺳﺗﺈﻧﺎﻑ ﺍﻟﺑﺭﻧﺎﻣﺞ ﺍﻟﻣﺗﻭﻗﻑ ﻟﻺﻋﺗﺭﺍﺽ ﻳﺟﺏ ﺇﺿﺎﻓﺔ ﺗﻌﻠﻳﻣﺔ )‪iret (return from interrupt‬‬ ‫•‬

‫ﺑﺣﻳﺙ ﺗﻧﻔﻳﺫ ‪ iret‬ﻳﻘﻭﻡ ﺑﺎﻟﻔﻌﻝ ﺍﻟﻌﻛﺳﻲ ﻟﻺﻋﺗﺭﺍﺽ‪ ,‬ﻫﻭ ﺇﺳﺗﺧﺭﺍﺝ ﺣﺎﻟﺔ ﺍﻟﺑﺭﻧﺎﻣﺞ ﺍﻟﻣﺗﻭﻗﻑ ﺑﺎﻟﺗﺭﺗﻳﺏ‬
‫ﺍﻟﻌﻛﺳﻲ‪ ,‬ﺃﻱ ﺳﺟﻝ ﺍﻟﺣﺎﻻﺕ ﺛﻡ ﻋﻧﻭﺍﻥ ‪ cs,ip‬ﻟﻠﺗﻌﻠﻳﻣﺔ ﺍﻟﻣﻭﺍﻟﻳﺔ ﻟﻺﻋﺗﺭﺍﺽ‪.‬‬
‫ﻣﻼﺣﻅﺔ‪:‬‬

‫• ﻓﻲ ﺣﺎﻻﺕ ﺧﺎﺻﺔ )ﺑﻌﺽ ﺑﺭﺍﻣﺞ ﻧﻅﺎﻡ ﺍﻟﺗﺷﻐﻳﻝ( ﻟﻺﻋﺗﺭﺍﺿﺎﺕ‪ ,‬ﺣﻳﺙ ﻳﺗﻭﺟﺏ ﻋﺩﻡ ﺗﻭﻗﻳﻑ ﺑﺭﻧﺎﻣﺞ‬
‫ﺍﻹﻋﺗﺭﺍﺽ‪ ,‬ﻳﺳﺗﻠﺯﻡ ﺗﺣﻳﺩ ﺃﻭ "ﺇﺧﻔﺎء" ﺍﻹﻋﺗﺭﺍﺿﺎﺕ ﺑﻭﺍﺳﻁﺔ ﺗﻌﻠﻳﻣﺔ )‪ cli(clear interrpt‬ﻓﻲ ﺑﺩﺍﻳﺔ‬
‫ﺍﻟﺑﺭﻧﺎﻣﺞ‪ .‬ﻗﺑﻝ ﺇﻧﻬﺎء ﺑﺭﻧﺎﻣﺞ ﺍﻹﻋﺗﺭﺍﺽ ﻳﺟﺏ ﺣﺗﻣﺎ ﺇﺭﺟﺎﻉ ﺍﻟﺣﺎﻟﺔ ﻵﺻﻠﻳﺔ‪ ,‬ﺃﻱ ﺗﻔﻌﻳﻝ ﻣﺩﺧﻝ ‪intr‬‬
‫ﺑﻭﺍﺳﻁﺔ ﺗﻌﻠﻳﻣﺔ )‪.sti(set interrupt‬‬
‫• ﺟﻣﻳﻊ ﺁﻟﻳﺎﺕ ﺍﻹﻋﺗﺭﺍﺽ‪ ,‬ﻣﺎ ﻋﺩﺍ ﻣﺭﺣﻠﺔ ﺍﻟﺗﻌﺭﻑ ﻋﻥ ﺭﻗﻡ ﺍﻹﻋﺗﺭﺍﺽ ﻣﻥ ﻣﺭﺍﻗﺏ ﺍﻹﻋﺗﺭﺍﺿﺎﺕ‪,‬‬
‫ﺗﻛﻭﻥ ﻣﻣﺎﺛﻠﺔ ﻟﻛﻝ ﺃﻧﻭﺍﻉ ﺍﻹﻋﺗﺭﺍﺿﺎﺕ‪.‬‬

‫‪ 3.2‬ﻣﺛﺎﻝ ﻋﻣﻠﻲ ﻟﻺﻋﺗﺭﺍﺿﺎﺕ‪ :‬ﻟﻭﺣﺔ ﺍﻟﻣﻔﺎﺗﻳﺢ ‪Keyboard interrupts‬‬

You might also like