
Overview of Interrupts
M30240 Group
Rev.1.00 Sep 24, 2003 Page 341 of 360
Figure 4.5:
State of stack before and after acceptance of interrupt request
The operation of saving registers carried out in the interrupt sequence is dependent on whether the
content of the stack pointer, at the time of acceptance of an interrupt request, is even or odd. If the
content of the stack pointer (Note) is even, the content of the flag register (FLG) and the content of the
program counter (PC) are saved, 16 bits at a time. If odd, their contents are saved in two steps, 8 bits
at a time.
Figure 4.6 shows the operation of the saving registers.
Note: Stack pointer indicated by U flag.
Figure 4.6:
Operation of saving registers
Address
Content of previous stack
Stack area
[SP]
Stack pointer
value before
interrupt occurs
m
m – 1
m – 2
m – 3
m – 4
Stack status before interrupt request
is acknowledged
Stack status after interrupt request
is acknowledged
Content of previous stack
m + 1
MSB
LSB
m
m – 1
m – 2
m – 3
m – 4
Address
Flag register (FLG L)
Content of previous stack
Stack area
Flag register
(FLGH)
Program
counter (PCH)
[SP]
New stack
pointer value
Content of previous stack
m + 1
MSB
LSB
Program counter (PC L)
Program counter (PC M)
(1) Saved simultaneously,
all 16 bits
(1) Stack pointer (SP) contains even number
[SP]
(Even)
[SP] – 1(Odd)
[SP] – 2 (Even)
[SP] – 3(Odd)
[SP] – 4 (Even)
[SP] – 5 (Odd)
Address
Program counter (PC M)
Stack area
Flag register (FLG L)
Program counter (PC L)
Sequence in which order
registers are saved
(2) Saved simultaneously,
all 16 bits
Finished saving registers
in two operations.
Flag register
(FLGH)
Program
counter (PCH)
(2) Stack pointer (SP) contains odd number
[SP]
(Odd)
[SP] – 1 (Even)
[SP] – 2(Odd)
[SP] – 3 (Even)
[SP] – 4(Odd)
[SP] – 5 (Even)
Address
Sequence in which order
registers are saved
(2)
(1)
Finished saving registers
in four operations.
(3)
(4)
Program counter (PC M)
Stack area
Flag register (FLG L)
Program counter (PC L)
Saved simultaneously,
all 8 bits
Flag register
(FLGH)
Program
counter (PCH)
Note: [SP] denotes the initial value of the stack pointer (SP) when interrupt request is acknowledged.
After registers are saved, the SP content is [SP] minus 4.
(1) Saved simultaneously,
all 16 bits
(1) Stack pointer (SP) contains even number
[SP]
(Even)
[SP] – 1(Odd)
[SP] – 2 (Even)
[SP] – 3(Odd)
[SP] – 4 (Even)
[SP] – 5 (Odd)
Address
Program counter (PC M)
Stack area
Flag register (FLG L)
Program counter (PC L)
Sequence in which order
registers are saved
(2) Saved simultaneously,
all 16 bits
Finished saving registers
in two operations.
Flag register
(FLGH)
Program
counter (PCH)
(2) Stack pointer (SP) contains odd number
[SP]
(Odd)
[SP] – 1 (Even)
[SP] – 2(Odd)
[SP] – 3 (Even)
[SP] – 4(Odd)
[SP] – 5 (Even)
Address
Sequence in which order
registers are saved
(2)
(1)
Finished saving registers
in four operations.
(3)
(4)
Program counter (PC M)
Stack area
Flag register (FLG L)
Program counter (PC L)
Saved simultaneously,
all 8 bits
Flag register
(FLGH)
Program
counter (PCH)
Note: [SP] denotes the initial value of the stack pointer (SP) when interrupt request is acknowledged.
After registers are saved, the SP content is [SP] minus 4.