📜  8085程序,用于访问并与寄存器B交换标志寄存器的内容

📅  最后修改于: 2021-06-28 15:42:06             🧑  作者: Mango

问题–在8085微处理器中编写汇编语言程序以访问标志寄存器,并与寄存器B交换标志寄存器F的内容。

例子 –

假设–标志寄存器,寄存器B和堆栈指针的初始值分别为00、3F和3FFF。

PSW代表PROGRAM STATUS WORD(程序状态字) 。 PSW将累加器A和标志寄存器F组合在一起。

算法 –

  1. 通过PUSH指令将PSW的值压入存储器堆栈
  2. 弹出标志寄存器的值,并借助POP指令将其存储在寄存器H中
  3. 将寄存器H的值移到寄存器C中
  4. 将寄存器B的值移到寄存器H中
  5. 将寄存器C的值移到寄存器B中
  6. 通过PUSH指令将寄存器H的值压入存储器堆栈
  7. 使用POP指令从存储器堆栈中弹出PSW的值

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
2000 PUSH PSW Push value of accumulator and flag in stack
2001 POP H Pop value from TOP of memory stack in H
2002 MOV C, H C <- H
2003 MOV H, B H <- B
2004 MOV B, C B <- C
2005 PUSH H Push the value of register H
2006 POP PSW Pop value of flag register and Accumulator
2007 HLT END

说明–使用的寄存器A,B,C,H,F

  1. PUSH PSW指令执行以下任务:
    SP <- SP - 1
        M[SP] <- A
        SP <- SP - 1
        M[SP] <- F
  2. POP H指令执行以下任务:
    H <- M[SP]
        SP <- SP + 1
  3. MOV C,H –将H的值移动到寄存器C中
  4. MOV H,B –将B的值移动到寄存器H中,因此H被更新
  5. MOV B,C –移动寄存器B中C的值,因此B被更新
  6. PUSH H执行以下任务:
    SP <- SP - 1
        M[SP] <- H
  7. POP PSW执行以下任务:
    F <- M[SP]
        SP <- SP + 1
        A <- M[SP]
        SP <- SP + 1
  8. HLT –停止执行程序,并停止任何进一步的执行