私の質問は、8085 マイクロプロセッサの他の命令に 4 つあるのに、CALL 命令のオペコード フェッチに 6T 状態があるのはなぜですか。私はたくさん検索しましたが、満足のいく答えは見つかりませんでした。
ここ: http://www.edaboard.com/thread201650.html CALL の場合に使用されるデュアル アドレッシング モードと関係があると書かれています。しかし、なぜ 6T が述べられているのかを実際には説明していません。
何か案が?
編集
この疑問は、CALL が 18 の T ステートを取ることを知ったときに生じました。
私の計算によると、次のようになります: 4 (オペコード フェッチの場合) + 3 + 3 (サブルーチン アドレスを読み取るための 2 回のメモリ読み取り) + 3 + 3 (スタックへの 2 回のメモリ書き込みの場合) = 16
そのため、インターネットを検索すると、CALL の場合のオペコード フェッチ部分が 4 ではなく 6T 状態を取ることがわかりました。
アップデート
コメントを読んで再考した後、PUSH は通常、命令として 12 個の T ステートを取ることを知りました。明示的な PUSH 命令がないため、CALL の場合は PUSH のオペコード フェッチ部分を無視できます。したがって、8 (12 - 4) になります。それで、スタックポインタのデクリメントのせいでしょうか?プッシュでも 6 (メモリ書き込みの場合は 3 + 3) のはずだったのに、ここでは 8 (4 + 4) になっているからです。