正在加载图片...
198编的奥移 China°dCo 下 OP B 记住是后进先出。如果用错了POP语句的顺序,就会引起错误。 堆栈机制的一个好处在于一个程序的不同部分都可以使用堆栈而不会出现问题。例如 在把A、B、C压入堆栈中后,程序的其他部分还可能需要把寄存器C、D、E的内容压入堆栈: PUSH cDE PUSH 接着,这一部分程序所要做的就是在第一部分弹出C、B和A之前,用下述方法恢复寄存 器的值: 堆栈是怎样实现的呢?首先,堆栈只是不被别的东西使用的正常的RAM的一部分。8080 微处理器包含一个特殊的16位寄存器来对这一部分存储器进行寻址,这个16位寄存器叫作堆 栈指针。 这里举的压入和弹出寄存器的例子对于8080来说不太准确。8080的PUSH指令实际上是存 储16位的值到堆栈,POP指令用来恢复它们。因此8080不用像 PUSH C和POPC这样的指令, 它有下述8条指令: 操作码 操作码 指令 PUSH BC POP BC PUSH DE DI POP DE POP HL PUSH BO指令把寄存器B和C的内容保存到堆栈中, POP BO指令恢复它们。最后一行的 缩写PSW指的是程序状态字,前面讲过,它是包含有标志位的8位寄存器。最后一行的两条指 令实际上是把累加器和PSW都压入和弹出堆栈。如果你想保存所有寄存器和标志位的内容, 可以使用 PUSH BC PUSH PUSH 当以后想恢复这些寄存器的内容时,按相反的顺序使用POP指令: POP POP 堆栈是怎样工作的呢?假设堆栈指针为8000h, PUSH BC指令将引起下面这些情况发生 ·堆栈指针减1至7FFFH ·寄存器B的内容保存在堆栈指针所指的地址处,即7FFFh处198 编码的奥秘 下载 POP C POP B POP A 记住是后进先出。如果用错了 P O P语句的顺序,就会引起错误。 堆栈机制的一个好处在于一个程序的不同部分都可以使用堆栈而不会出现问题。例如, 在把A、B、C压入堆栈中后,程序的其他部分还可能需要把寄存器 C、D、E的内容压入堆栈: PUSH C PUSH D PUSH E 接着,这一部分程序所要做的就是在第一部分弹出 C、B和A之前,用下述方法恢复寄存 器的值: POP E POP D POP C 堆栈是怎样实现的呢?首先,堆栈只是不被别的东西使用的正常的 R A M的一部分。8 0 8 0 微处理器包含一个特殊的 1 6位寄存器来对这一部分存储器进行寻址,这个 1 6位寄存器叫作堆 栈指针。 这里举的压入和弹出寄存器的例子对于 8 0 8 0来说不太准确。8 0 8 0的P U S H指令实际上是存 储1 6位的值到堆栈, P O P指令用来恢复它们。因此 8 0 8 0不用像PUSH C和POP C这样的指令, 它有下述8条指令: 操作码 指令 操作码 指令 C 5 PUSH BC C 1 POP BC D 5 PUSH DE D 1 POP DE E 5 PUSH HL E 1 POP HL F 5 PUSH PSW F 1 POP PSW PUSH BC指令把寄存器B和C的内容保存到堆栈中,POP BC指令恢复它们。最后一行的 缩写P S W指的是程序状态字,前面讲过,它是包含有标志位的 8位寄存器。最后一行的两条指 令实际上是把累加器和 P S W都压入和弹出堆栈。如果你想保存所有寄存器和标志位的内容, 可以使用: PUSH PSW PUSH BC PUSH DE PUSH HL 当以后想恢复这些寄存器的内容时,按相反的顺序使用 P O P指令: POP HL POP DE POP BC POP PSW 堆栈是怎样工作的呢?假设堆栈指针为 8 0 0 0 h,PUSH BC指令将引起下面这些情况发生: • 堆栈指针减1至7 F F F H • 寄存器B的内容保存在堆栈指针所指的地址处,即 7 F F F h处
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有