• 締切済み

PICでのアセンブリで、データレジスタについて教えて!

PICでのアセンブリについて教えてください! 使用してるPICは18f452です。 PICのデータメモリを全部使いたいんです。 たとえばソースの冒頭で data_1 equ 0x00 data_2 equ 0x01 ・ ・ ・ data_n equ 0x0x とすべて宣言する方法がありますが、452のメモリは1500バイト以上あるのでこれを千行以上かくのは疲れます。。 そこでC言語で書くところの int data [1500]; for(,,,){ data[i] = xx; } という風に大容量のメモリを作り それに値をいれたり読み出したりしたいのですが・・。 これをアセンブラで書くにはどうしたらよいでしょうか?。

みんなの回答

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

data equ 0x100 other equ data+1500*2 とやって添え字の値を、そのアドレス=dataに加算するだけです。 1500は個数。2は2バイトのintとして書いています。

moris999
質問者

お礼

ありがとうございます、解決しました。 間接アドレッシングFSRで無事解決しました。

moris999
質問者

補足

ありがとうございます。 知りたかった情報かもしれません、、 >>とやって添え字の値を、そのアドレス=dataに加算するだけです。 この辺もう少し詳しく教えていただけませんか?。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

宣言する必要ってありますか? わざわざequで名前をつけずに、 直接0x01などのアドレスを使うわけにはいかないの?

moris999
質問者

お礼

ありがとうございます、 解決しました。

moris999
質問者

補足

ありがとうございます。 そうですよね、宣言する必要はないですね。。 そのままレジスタアドレス使ってみます!。 あと、00~FFまでの256個のレジスタに値をぶち込みたいんですが これはもうシコシコとmovするしかないんでしょうか?。(256回)

関連するQ&A