Assembly 8085; 为什么RET不';不需要像调用一样的6个t状态获取周期?

Assembly 8085; 为什么RET不';不需要像调用一样的6个t状态获取周期?,assembly,call,cpu-architecture,8085,micro-architecture,Assembly,Call,Cpu Architecture,8085,Micro Architecture,调用指令需要5个机器周期,即操作码取数、内存读取、内存读取、内存写入、内存写入。调用的操作码提取周期有6个T状态 RET指令、OPCODE-FETCH、内存读取、内存读取,即使在这里,微处理器也必须像以前一样将堆栈指针增加两次才能弹出。但是,操作码获取周期只有4个T状态,这是为什么 我有一个模糊的想法,关于为什么;与RET或POP不同,在CALL和PUSH中,必须先减小SP。在FETCH循环的最后两个T状态中,仅此第一个减量就得到了注意。但为什么这需要两个T型国家呢。再说一次,我真的不确定。请提

调用
指令需要5个机器周期,即操作码取数、内存读取、内存读取、内存写入、内存写入。调用的操作码提取周期有6个T状态

RET
指令、
OPCODE-FETCH、内存读取、内存读取
,即使在这里,微处理器也必须像以前一样将堆栈指针增加两次才能弹出。但是,操作码获取周期只有4个T状态,这是为什么


我有一个模糊的想法,关于为什么;与
RET
POP
不同,在
CALL
PUSH
中,必须先减小SP。在
FETCH
循环的最后两个T状态中,仅此第一个减量就得到了注意。但为什么这需要两个T型国家呢。再说一次,我真的不确定。请提供帮助。

解释每个T周期发生的情况的文档不容易找到。但是增加/减少堆栈指针并不是唯一的事情。我的猜测是,这个调用很特殊,因为PC的值需要在堆栈上结束,并重置为分支地址。可能存在额外的状态,因为这些操作共享一条总线,因此必须是顺序的。对于RET,堆栈中的值只会传到PC。这是一个更简单的操作。@Gene是的,我同意,我也找不到任何东西。“PC的价值需要在堆栈上结束”这不是
调用
两个独立的机器周期的原因吗?
ret
更短,对吗?只是一个单字节的操作码,而不是像8086一样立即执行移位?或者“内存读取”机器周期可以用来获取操作数吗?@PeterCordes是的,它比较短,很抱歉我还没有学会8086。我不明白最后一句话,它有两个内存读取来将数据指向的SP放在PC上,对吗?对不起,我指的是
调用16位目标的内存读取周期。这是在看到我假设的
调用后获取目标地址的解码的一部分。除此之外,
调用
不需要读取内存。