问题–在8085微处理器中编写汇编语言程序,以查找标志寄存器内容的2的补码。
例子 –
算法 –
- 初始化堆栈指针(SP)的值为3999
- 将PSW(由累加器和标志寄存器组成的寄存器对)的内容压入存储器堆栈
- 将堆栈中的内容弹出到寄存器对BC中
- 将寄存器C的内容移至A
- 取A的内容的1的补码
- 将A的内容加1
- 将A的内容移到C
- 将寄存器对BC的内容推入堆栈
- 将堆栈内容弹出到PSW中
- 停止
程序 –
MEMORY ADDRESS | MNEMONICS | COMMENT | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2000 | LXI SP 3999 | SP <- 3999 | |||||||||||||||||||||
2003 | PUSH PSW | PUSH value of Accumulator and Flag into the stack | |||||||||||||||||||||
2004 | POP B | POP value from Top of stack into register pair BC | 2005 | MOV A, C | A <- C | 2006 | CMA | A = 1’S complement of A | 2007 | INR A | A = A + 1 | 2008 | MOV C, A | C <- A | 2009 | PUSH B | PUSH value of register pair BC into stack | 200A | POP PSW | POP value from Top of stack into Accumulator and Flag | 200B | HLT | Stop |
解释 –
- LXI SP 3999用于将堆栈指针(SP)的值初始化为3999。
- PUSH PSW用于将PSW的内容压入存储器堆栈。
- POP B用于将堆栈顶部的内容弹出到寄存器对BC中。
- MOV A,C将寄存器C的内容移至A。
- CMA采用A的内容的1的补码。
- INR A将A的内容增加1。
- MOV C,A将A的内容移动到C。
- PUSH B用于将寄存器对BC的内容压入堆栈。
- POP PSW用于将堆栈的内容弹出到PSW中。
- HLT用于结束程序。