• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CPU、Z80からステート数から命令時間を求める)

CPU、Z80からステート数から命令時間を求める方法

このQ&Aのポイント
  • CPUはZ-80、クロック周期4MHzを用いて以下のプログラムの実行回数とステート数を求めた結果、命令時間を計算したいです。
  • 実験にはマイコンボードACT-ZIIを使用しましたが、ステート数を用いて命令時間の求め方がわかりません。
  • もし間違っていた場合は、詳しく説明していただけると嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#195576
noname#195576
回答No.2

Z80 ですか。気付いた点を。 数字がくっついていて見づらい(HTMLで半角スペースは画面に出ません)ので手を加えると LD A, 0FFH  7 1 7   ←(1) OUT (00H), A 10 1 10 LD B, 0EH   7 1 7 L1:LD C, 0B1H 7 1 7 L2:DEC C   4 3 12 JP NZ, L2  10 3 30   ←(2) DEC B    4 3  12 JP NZ, L1  10 10 100   ←(3) LD A, 00H  4  1 4    ←(4) OUT (00H), A 10 1 10 LD B, 0EH   4  1 4   ←(5) L3:LD C, 0B1H 4 1 4    ←(6) L4:DEC C   4 3  12 JP NZ, L4   10 3 30   ←(7) DEC B     4 3  12 JP NZ, L3   10 10 100    ←(8) JP 8000H    10 46 460 というところでしょうか。 >LD A, 0FFH 7 1 7   ←(1) とは、「Reg.A に値0FFHをロード」、ステート数 7、 実行回数1、計7ステート数7 ということですね。 因みにマシンコードは 3E,FF(計2Byte) の方だと思います。 >JP NZ, L2  10 3 30   ←(2) >JP NZ, L1  10 10 100   ←(3) >JP NZ, L4   10 3 30   ←(7) >JP NZ, L3   10 10 100    ←(8) は、回数が変です。 (2)(7)は事前に Reg.C に値 0B1H をセットしてるので 0B1H=177回、 (3)(8)は同様に Reg.B に値 0EH をセットしてるので 0EH=14回のはず。 >LD A, 00H  4  1 4    ←(4) >LD B, 0EH   4  1 4   ←(5) >L3:LD C, 0B1H 4 1 4    ←(6) はステート数は4じゃないでしょ。 命令第1バイトは読込むだけで4ステート、第2バイト以降は3ステート要ります。 一部例外ありますが。 (ここでは蛇足でしょうが、ハードがウェイトステートを挿入してればその分プラス) それ以上の合計数などは検証してません。 話のついでに。 Reg.A に値00Hをセットする場合に限り、 XOR A を使う手があります。これだと1Byte命令でその分「高速」で「メモリ節約」になります。 ただしフラグが影響受けます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

>LD A, 0FFH717 は多分 LD A,(nn) コード 3A×××× クロック13 の事を言っているんだと思います、4MHzですから1/4μSでクロック13ですから13/4μSが命令時間です717って何なのか判りません。 Z80が出た時にしばらく使っていただけなのでだいぶ忘れています、こちらを参照したほうが良いと思います。 http://www.alles.or.jp/~thisida/nd3setumeisyo/nd3_z80meirei.pdf

すると、全ての回答が全文表示されます。

関連するQ&A