正在加载图片...
Chinaopub.com 第9章两种典型的微处理199 下载 ·堆栈指针减1至7FFEH ·寄存器C的内容保存在堆栈指针所指的地址处,即7FFEh处 当堆栈指针仍然为7FFEh时, POP BC指令执行,用来反向执行每一步 从堆栈指针所指的地址(即7FFEh)处装载数据到寄存器C中 堆栈指针增1至7FFh 从堆栈指针所指的地址(即7FFFh)处装载数据到寄存器B中 堆栈指针增1至8000h 对每个PUSH指令,堆栈都会增加2个字节,这可能导致程序出现小毛病一堆栈可能会 变得很大以致会覆盖掉程序所需的一些代码和数据。这就是堆栈上溢问题。同样,过多的 OP指令会过早用光堆栈内容,这就是堆栈下溢问题 如果8080同一个64KB的存储器连接,你可能想把初始堆栈指针置为0000h。第一条PUSl 指令使地址减1变为 FFFFh,这时堆栈占用了存储器的最高地址。如果你的程序放在从0000h 处开始的存储器区域,则它和堆栈离的就太远了 对堆栈寄存器进行赋值的指令是LXI,即 load extended immediate(装载扩展的立即数)。 下面这些操作码后的指令也是把两个字节装载到16位寄存器 操作码 指令 LXI BC, xxy LXI DE, xXXX LXI HL, xxxX 指令 LXI BC. 527Ah 等价于 MVI B, 52 VI C LXI指令保存一个字节。另外,上表中最后一条LⅪI指令用来对堆栈指针赋值。微处理器 复位后,这条指令并不常用来作为首先执行的指令之一: 也可以对寄存器对和堆栈指针执行加1和减1操作,就好像它们是16位寄存器一样 操作码 指令 操作码 指令 NX BC DCX BC INX DE 1B DCX DE INX HL 2B DCX HI 即然是在讨论16位指令,可以看看更多一些这样的指令。下面的指令是把16位寄存器对 的内容加到寄存器对H中 操作码 指令 DAD HL, BC DAD HL, DE DAD HL, HI DAD HL. SP第19章 两种典型的微处理器 199 下载 • 堆栈指针减1至7 F F E H • 寄存器C的内容保存在堆栈指针所指的地址处,即 7 F F E h处 当堆栈指针仍然为7 F F E h时,POP BC指令执行,用来反向执行每一步: • 从堆栈指针所指的地址(即 7 F F E h)处装载数据到寄存器C中 • 堆栈指针增1至7 F F F h • 从堆栈指针所指的地址(即 7 F F F h)处装载数据到寄存器B中 • 堆栈指针增1至8 0 0 0 h 对每个P U S H指令,堆栈都会增加 2个字节,这可能导致程序出现小毛病—堆栈可能会 变得很大以致会覆盖掉程序所需的一些代码和数据。这就是堆栈上溢问题。同样,过多的 P O P指令会过早用光堆栈内容,这就是堆栈下溢问题。 如果8 0 8 0同一个6 4 K B的存储器连接,你可能想把初始堆栈指针置为 0 0 0 0 h。第一条P U S H 指令使地址减 1变为F F F F h,这时堆栈占用了存储器的最高地址。如果你的程序放在从 0 0 0 0 h 处开始的存储器区域,则它和堆栈离的就太远了。 对堆栈寄存器进行赋值的指令是 L X I,即load extended immediate(装载扩展的立即数)。 下面这些操作码后的指令也是把两个字节装载到 1 6位寄存器: 操作码 指令 0 1 LXI BC,x x x x 11 LXI DE,x x x x 2 1 LXI HL,x x x x 3 1 LXI SP,x x x x 指令: LXI BC,527Ah 等价于 MVI B,52 MVI C,7A h L X I指令保存一个字节。另外,上表中最后一条 L X I指令用来对堆栈指针赋值。微处理器 复位后,这条指令并不常用来作为首先执行的指令之一: 0000 h: LXI SP,0000 h 也可以对寄存器对和堆栈指针执行加 1和减1操作,就好像它们是1 6位寄存器一样: 操作码 指令 操作码 指令 0 3 INX BC 0 B DCX BC 1 3 INX DE 1 B DCX DE 2 3 INX HL 2 B DCX HL 3 3 INX SP 3 B DCX SP 即然是在讨论 1 6位指令,可以看看更多一些这样的指令。下面的指令是把 1 6位寄存器对 的内容加到寄存器对H L中: 操作码 指令 0 9 DAD HL,B C 1 9 DAD HL,D E 2 9 DAD HL,H L 3 9 DAD HL,S P
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有