忍者ブログ
ようこそ!JQ2RVNのブログです。 PICを使っていろいろな物を作ろうと画策中です。
[1] [2] [3]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

16bit の PICマイコンのデータメモリーには
Near と Farの2種類あることは、
データシートや後閑さんの本に書かれています。

しかし、何が違うのかよくわからん。
また、どういうデータはNearか?Farか?もわかりません。
ということで、前回紹介したアセンブラのリファレンスを読んでみました。

まず、Near領域とは
13ビットのアドレス指定で直接アクセスできる領域
となってます。
16進数でいえば0x0000~0x1FFFに相当します。

一方、16bit PICのデータメモリーは16bitで構成されています。
よって、0x2000~0xFFFFはFar領域となります。
(実際にメモリーがあるかどうかは、PICによって違う)


さて、今回もADD命令で比較してみたいと思います。
前回とは書き方が違うので注意してください。
(シンタックスは、マニュアルに合わせました)


ADD{.B} #lit10, Wn
(Wn = lit10 + Wn)
このニーモニックに対応する機械語を見てみましょう。
1011 0000 0Bkk kkkk kkkk dddd
B: バイトモードとワードモードの切り替え
k: lit10
d: どのWレジスタをつかうか(0~15)
これを見れば、前回不明だったWnがポインタ指定できるかどうかわかります。
ポインタ動作させるかというビットがないので、できないということになります。
この動作をみると、
Wレジスタはどれも、16bit幅がありますから、
データメモリー全域にアクセスできる

ことがわかりました。


ADD{.B} f {,WREG}
( f or wreg = wreg + f )
同様に機械語を見てみます。
1011 0100 0BDf ffff ffff ffff
ここで、f は13bit分しか確保されていません。
つまり、この命令ではNear領域にしかアクセスできないことになります。
ちなみにDは格納先( f か wregか)を変えるスイッチです。



他の命令もWレジスタによるポインタアクセスですから、
NearかFarかが影響されるのは ADD f 形式のみです。


結論:
これらのことから、配列や文字列などを連続的にアクセスする場合は、
Far領域にマッピング
しても、あまり問題になりません。
(多くの場合、ポインタでアクセスするから)

一方、スカラー変数の場合、Far領域に配置してしまうと、
Wレジスタにアドレスをコピーしてから
ADD命令を出さないといけなくなります。
したがって、Near領域に配置しないといけないことがわかります。



また、
大きな配列をNearとFarをまたがって確保しても問題ありません。
(どのみちポインタでやってるから)

ここのところが8bit PICとの大きな違いで
8bitのときは、バンクをまたがった大きなデータは、
各バンクの終端を判断し、次のバンクの先頭を変換し・・・
というややこしい処理が必要でした。
しかも、CコンパイラではRAM不足のエラーになったり・・・
このため、なるべく1つのバンクに収まるよう配置してました。

しかし、16bit PICではWレジスタからのポインタ指定ができるので
簡単に処理ができます。

PR

前回書いたけれど、アセンブラの詳細がみつからない・・・
と思って、Microchip社のドキュメントを見ていたら、
何とか見つけることができました。

ただし、めっちゃわかりにくい(>_<)

http://ww1.microchip.com/downloads/en/DeviceDoc/sect3_x.pdf

というURLで、最後のxが1~7まであります。
(なんで1つにしてくれないのかね~~)
一応、アルファベット順のようです

http://ww1.microchip.com/downloads/en/DeviceDoc/sect3_1.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/sect3_2.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/sect3_3.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/sect3_4.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/sect3_5.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/sect3_6.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/sect3_7.pdf



忍者ブログ [PR]
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
プロフィール
コールサイン:
JQ2RVN
性別:
男性
自己紹介:
PICの開発を勉強中です。
目標はPICTNCの高性能版を作ること。
まずは、本家を解析しています。
最新コメント
[04/23 Eolande]
[04/16 太田和巳(JF2UJG)]
[09/10 je7ifp]
[08/06 JQ2RVN]
[08/03 OVC]
最新トラックバック
バーコード
ブログ内検索
アクセス解析