Kohya Gotoh wrote:
> > つまり、H'100000:16,ER1という記述自体が間違っているのです。
> □そうなんですか。
> 日立マイクロコンピューター H8/300Hシリーズ
> CPU編 第2版 p.11 にある記述なんですけど誤植ですか。
> 日立さ〜ん!
確かに誤植ですね。
> > 指定時のMSBが2^23〜2^16にコピーされて"00000000"か"11111111"に
> > なるからです。
> ええ?、これ分からないです。
> ■2^23は、H'800000だし 2^16は、H'FFFFですよね。
> 2^24だと、H'FFFFで 2^15だったら、H'8000なんですが?
> ■"コピー"ってER1にコピーされるんじゃないんですか?
> ■"00000000"か"11111111"になるからです。
> さっぱり分かりません。(・・;)
H8/300HではPCは24ビット持っているとしましょう。(16Mモード時)
16ビットでアドレスを指定すると、16ビットのMSBは2の15乗の位置です
これを(2^15)と表記します。私だけか? HEXで考えるとわかりにくいかもしれ
ませんのでバイナリで考えましょう。
16ビットでH'8000としてしたら24ビットのバイナリで考えると
"00000000000000001000000000000000"です。
"1"になっている場所が(2^15)の位置です。これが符号拡張される(=上位ビット
全てにコピーされると、
"11111111111111111000000000000000"
となります。(2^23)の位置から(2^16)の位置まで全て'1'で埋められます。
では、(2^15)の位置が'0'だったら、どうなるかもうおわかりですね。
では、では。
--
/******************************************************************************
Name: 廣田 正孝 "Masataka Hirota"
E-mail address: mhirota@xxxxxxxxxxxxx
GCD03040@xxxxxxxxxxx
******************************************************************************/