CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

メモリアクセス不調?

CプログラムをLSIC-86でコンパイル
ボードのRAMに転送して実行できるのですが
なぜかsprintf()を使用したプログラムが正常に動きません

次のような簡単なプログラムが実行するとむちゃくちゃな文字列を吐き出して
ロックしてしまいます

#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdrom.h>
#include <machine.h>
#include "386lib.h"

void main(void)
{
  int i;
  char buf[32];
	
  for(i=0;i<100;i++){
    sprintf(buf,"%d\n\r",i);
    putstr(buf);
  }
	
  while(1){	/* リセット待ち	*/
  }
}

スタックサイズや配列の大きさを変えると症状が変わるのでメモリの特定の領域
のアクセスがうまく行かない?

出力する文字列がsprintf(buf,"Hello C World!\n\r";);のように固定文字列だと
全く問題ないのが不思議です


・・・あ 半角の「);」が化ける~