Renesas Community
Search Community
User
Join or sign in
Site
Search Community
User
Renesas Engineering Community
FAQ
HELP
More
Cancel
Forums & Groups
English Community
中文社区(Chinese Community)
More
Cancel
かふぇルネ
forums-groups
Microcontrollers and Microprocessors
RL78 MCU
More
Cancel
RL78 MCU
Forum
全ROMチェックサム計算プログラム
Home
Forum
Tags
More
Cancel
New
Replies
6 replies
Subscribers
446 subscribers
Views
16287 views
Users
0 members are here
char
unsigned
define
adr
sum
rom_end
0x00000#define
beginner
ROM_START
short
Options
Share
More
Cancel
Related
全ROMチェックサム計算プログラム
yamamoto
over 11 years ago
全ROMデータを加算したチェックサム計算プログラムを作りたいのですが、16bitCPUのためかアドレスインクリメントで0xFFFFの次が0x0000に戻ってしまい、全ROM領域を加算することができません。
ここで聞くことではないかもしれませんが、分かる方いたら御教示お願いいたします。
【やりたいこと】
アドレス0x00000~0x1FFFF(128KB)のROMデータを1byte単位で加算した下位2byteのチェックサム値を算出する
(Cソースでもアセンブラでも可)
【試したCソース】
#define ROM_START 0x00000
#define ROM_END 0x1FFFF
main()
{
unsigned char *adr;
unsigned char *rom_end;
unsigned short sum;
adr = (unsigned char *)ROM_START;
rom_end = (unsigned char *)ROM_END;
sum = 0;
while(adr <= rom_end) {
sum += *adr;
adr ++;
};
}
Parents
TOYKEY
over 11 years ago
yamamotoさん
こんにちはTOYKEYと申します。
現在の問題は20bitアドレスを扱いたいのに、
16bitアドレスを使用したコードが出力される為に
起こる問題ですね。
このような場合対象となる変数に__farをつけるとそのポインタは20bitフルでアクセスできるようなコードになるはずです。
__far unsigned long adr;
__far unsigned long rom_end;
こうしたら望み通りの動作になりませんか?
試してみてください。
Cancel
Up
0
Down
Reply
Cancel
Reply
TOYKEY
over 11 years ago
yamamotoさん
こんにちはTOYKEYと申します。
現在の問題は20bitアドレスを扱いたいのに、
16bitアドレスを使用したコードが出力される為に
起こる問題ですね。
このような場合対象となる変数に__farをつけるとそのポインタは20bitフルでアクセスできるようなコードになるはずです。
__far unsigned long adr;
__far unsigned long rom_end;
こうしたら望み通りの動作になりませんか?
試してみてください。
Cancel
Up
0
Down
Reply
Cancel
Children
No Data