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 ******************************************************************************/