Related Articles
8085 program to access and exchange the content of Flag register with register B
• Last Updated : 22 May, 2018

Problem – Write an assembly language program in 8085 microprocessor to access Flag register and exchange the content of flag register F with register B.

Example – Assumptions – Initial values of flag register, register B and stack pointer are is 00, 3F, and 3FFF respectively.

PSW stands for PROGRAM STATUS WORD. PSW combines accumulator A and flag register F.

Algorithm –

1. Push the value of PSW in memory stack by help of PUSH instruction
2. Pop the value of Flag register and store it in register H by help of POP instruction
3. Move the value of register H in register C
4. Move the value of register B in register H
5. Move the value of register C in register B
6. Push the value of register H in memory stack by help of PUSH instruction
7. Pop the value of PSW from memory stack using POP instruction

Program –

2000PUSH PSWPush value of accumulator and flag in stack
2001POP HPop value from TOP of memory stack in H
2002MOV C, HC <- H
2003MOV H, BH <- B
2004MOV B, CB <- C
2005PUSH HPush the value of register H
2006POP PSWPop value of flag register and Accumulator
2007HLTEND

Explanation – Registers used A, B, C, H, F

1. PUSH PSW instruction performs the following task:
```    SP <- SP - 1
M[SP] <- A
SP <- SP - 1
M[SP] <- F```
2. POP H instruction performs the following task:
```    H <- M[SP]
SP <- SP + 1```
3. MOV C, H – moves the value of H in register C
4. MOV H, B – moves the value of B in register H, hence H is updated
5. MOV B, C – moves the value of C in register B, hence B is updated
6. PUSH H performs the following task:
```    SP <- SP - 1
M[SP] <- H```
7. POP PSW performs the following task:
```
F <- M[SP]
SP <- SP + 1
A <- M[SP]
SP <- SP + 1```
8. HLT – stops executing the program and halts any further execution
My Personal Notes arrow_drop_up