[H8-ML(1071)] Re: "MOV.L @H’100000:16, ER1"の" :16"って何
From: 廣田 正孝 <mhirota@xxxxxxxxxxxxx>
Date: 2001年04月07日(土)15時26分38秒
  廣田@本庄です。 後藤さんのもう一つのご質問に応えていませんでしたね。
Kohya Gotoh wrote:
> > > ■"コピー"ってER1にコピーされるんじゃないんですか?

 H8が MOV.L @H'8000:16,ER1 を実行する時を考えてみましょう。

H8が MOV.L @H'8000:16 を解釈します。
「32ビットロングワードアクセスだな。」 
「16ビット絶対アドレス指定か。 与えられた16ビットデータのMSBを符号拡張
して 24ビットのアドレス指定/出力レジスタに拡張されたアドレスデータを用意
しよう。」
(このアドレス指定/出力レジスタなるものはマニュアルには有りません。
 架空のレジスタです。でも機構的には持っていると思います。)
「このアドレス指定/出力レジスタの値はH'FF8000になるね。」
,ER1を解釈します。
「次は、,ER1か。 ER1にデータを入れるんだな。」
「アドレス指定/出力レジスタの値をアドレスバスに出力してっと。」
「制御線を出力して、アドレスバスの値が有効であることを周りに知らせてっと。」
「/RDを落として、FF8000番地のデータを読み込むよと知らせて。」
「そろそろデータがデータラインに乗ったかな?(WAITやその他の信号をチェック
 します。)/RDを上げよう。」
「入ってきたデータをER1に格納しよう。」
「一命令終わった、さて、次の命令はなに?」

このように MOV.L @H'8000:16,ER1 は、FF8000番地に入っているデータをER1に
コピーするのです。ただ、マイコン関係ではコピーするという言葉は意識的に
使われない様です。だいたい「MOVEする」とか「LOADする。」「READする」「STOREす
る。」なんて言い方が多いです。Windowsの「コピー」と同じです。WindowsではMOVEは
「移動する」って意味ですから混乱しちゃうかもしれません。Windowsでは移動すると
データがもと有った場所には無くなってしまいますよね。
Windowsのコマンド的に命令を書いたら
  COPY.L @H'8000:16,ER1 となるのかな?

混乱しないように書いたつもりですが、不明点は遠慮なくどうぞ。
-- 
/******************************************************************************
Name: 廣田 正孝 "Masataka Hirota"
E-mail address:  mhirota@xxxxxxxxxxxxx
******************************************************************************/

スレッド概略
[1062(R)](起点)
 └[1069(U)]
   └[表示中]
     └[1072(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]