0% found this document useful (0 votes)
99 views

2 Interrupts

The document discusses interrupts in three sentences: Interrupts are mechanisms at the processor level that are generally used for communication between peripherals and the processor. They allow transitioning between program levels and handling internal processor errors during execution, also called exceptions. Processors like Intel 8x86 have internal mechanisms that allow them to identify the source of an interrupt and direct the processor to a new program by extracting the interrupt program address.

Uploaded by

Oumima Touami
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
99 views

2 Interrupts

The document discusses interrupts in three sentences: Interrupts are mechanisms at the processor level that are generally used for communication between peripherals and the processor. They allow transitioning between program levels and handling internal processor errors during execution, also called exceptions. Processors like Intel 8x86 have internal mechanisms that allow them to identify the source of an interrupt and direct the processor to a new program by extracting the interrupt program address.

Uploaded by

Oumima Touami
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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