全ROMチェックサム計算プログラム

全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
  • みなさん、ご回答ありがとうございました。
    (アセンブラの回答まで)
    ポインタで「__far」を付けたりして試してたんですが、
    コンパイラの仕様で下位2byteでしかやってくれないとは・・・
    やられました。。。
Reply
  • みなさん、ご回答ありがとうございました。
    (アセンブラの回答まで)
    ポインタで「__far」を付けたりして試してたんですが、
    コンパイラの仕様で下位2byteでしかやってくれないとは・・・
    やられました。。。
Children
No Data