WHAT IS A STACK:
- The stack is a part of read/write memory which is used for the purpose of storing information temporarily.
- When the information is written on the stack, the operation is called PUSH.
- When the information is read from the stack, the operation is called POP.
- The stack is operated with the help of special memory pointer register called stack pointer (SP).
- Stack pointer (SP) gives the address of the memory location where the information is to written or to be read.
PUSH Rp:
- This instruction is used to write 16-bit data on the stack.
- It decrements stack pointer by one.
- Then the contents of higher order register of Rp are copied to the memory location pointed by stack pointer.
- Then stack pointer is again decremented by one.
- The contents of lower order register of Rp are copied to the memory location pointed by stack pointer.
- Rp can by BC, DE, HL or PSW.
NOTE: PSW stands for program status word. It has accumulator (A register) as higher order register and flag register as lower order register.
- Only higher order register is specified in the instruction for Rp.
- No flags are affected.
- It is a one byte instruction.
- Register indirect addressing mode is used.
Example:
If SP = 2000H, DE = 4320H, then
PUSH D ; This instruction will decrement SP by one (SP = 1FFFH) and will copy the contents of D (43H) into memory location 1FFFH. Then it will decrement SP again by one (SP = 1FFEH) and will copy the contents of E (20H) into memory location 1FFEH.
Before execution:
Before execution:
After execution:
POP Rp:
- This instruction copies the contents of the memory location pointed by stack pointer into the lower order register of Rp.
- Then stack pointer is incremented by one.
- The contents of the memory location pointed by stack pointer are copied to the higher order register of Rp.
- Then stack pointer is again incremented by one.
- Rp can be BC, DE, HL or PSW.
- Only higher order register is specified in the instruction for Rp.
- No flags are affected.
- It is a one byte instruction.
- Register indirect addressing mode is used.
If SP = 2000H, (2000H) = 10H and (2001H) = 13H, then
POP B ; This instruction will copy the contents of the memory location pointed by SP i.e. 2000H into C register i.e. C = 10H. Then it will increment SP by one (SP = 2001H) and will copy the contents of the memory location pointed by SP i.e. 2001H into B register i.e. B = 13H. Then it will increment SP again by one (SP = 2002H).
Before execution:
After execution:
Before execution:
After execution:
Comments
Post a Comment