[H8-ML(837)] 日立製モニタのバッファオーバーフロー
From: KenjiNishimura <k_nishimura@xxxxxxxxxxxxxxx>
Date: 2000年10月28日(土)11時26分03秒
こんにちは、西村@中央大学です。
日立製モニタデバッガに関して質問です。
最後にプログラムを添付しているので長文になってます、すみません。

AKI-H8に増設RAM128KBをエリア1につないでいます。
そして、ポートに接続されたスイッチを押しているときは
モニタを実行、押されていないときは増設RAMのアドレスH'20000
からプログラムを実行するようにモニタデバッガ(バージョン2.1)をカスタマイズ
したつもりなのですが、モニタプログラムを動かすとコマンド入力待ちの時に

: ;;;;;;;;;;;;;;;;;;
  BufferOverflow!
: ;;;;;;;;;;;;;;;;;;
  BufferOverflow!

という、というエラーが連続してでてしまいます。RAMのプログラムは実行
されるので分岐が間違えているとは思えません。
H8からPCに向けて変なデータを送信しているようですが、その辺は
いじったつもりはありません。
分岐の部分をなくすとモニタプログラムは正常に実行されるので
やはり分岐の部分がおかしいのかもしれませんが、わかりません。
どなたか心当たりのあるかたがいらっしゃいましたら教えていただけると
助かります。以下に分岐の部分のソースと、サブコマンドファイルを添付します。


;ソースファイル

;************************************************************************
;*	H8/300H Monitor Program (Advanced Mode)		Ver. 2.0A	*
;*		Copyright (C) Hitachi, Ltd. 1995			*
;*		Copyright (C) Hitachi Microcomputer System, Ltd. 1995	*
;************************************************************************
		.PROGRAM  INITIALIZE    	; Program Name
		.CPU      300HA			; CPU is H8/300H Advanced
		.SECTION  ROM,CODE,ALIGN=2	; ROM Area Section
;************************************************************************
;*	Export Define							*
;************************************************************************
		.EXPORT	INITIALIZE		; User Initialize Module
;************************************************************************
;*	User Initialize Module						*
;*		Input	ER6 <-- Return Address				*
;*		Output	Nothing						*
;*		Used Stack Area --> 0(0) Byte				*
;************************************************************************
INITIALIZE:	; Line 19
		MOV.L #H'000FFF00:32,ER7	; Init Stack ptr.CHECK!!!
;ここからはバスの設定です。
	;アドレスの設定
		MOV.B #H'FF:8,R0L		;  Setup,
		MOV.B R0L,@H'0FFFFC0	;  A0-A7  Port1 ; Output
		mov.b R0L,@H'0FFFFC1	;  A8-A15 Port2 ; Output
		mov.b #h'f1:8,r0l		;  Also setup,
		mov.b r0l,@H'0FFFFC8	;  A16    Port5 ; Output
	;チップセレクトの設定
		mov.b #h'e8:8,r0l		; Set RAM 111 CS0 - CS1 CS2 CS3 0
		mov.b r0l,@H'0FFFFCD	;  to CS1
	;バスコントローラの設定
	;バス幅コントロールレジスタ ABWCR
		mov.b #h'ff:8,r0l		; Set all areas,
		mov.b r0l,@H'0FFFFEC	;  to 8bit access.
	;アクセスステートコントロールレジスタ ASTCR 00-2state  ff-3state
		mov.b #h'00:8,r0l		; Set all areas,
		mov.b r0l,@H'0FFFFED	;  to 2 wait state access.
	;ウェイトコントロールレジスタ WCR 
	;ウェイトステートコントローラ WSC
		mov.b #h'f0:8,r0l		; WSC is programmable,
		mov.b r0l,@H'0FFFFEE		;  wait state is 0.
	;ウェイトステートコントローラレジスタ WCER
		mov.b #h'ff:8,r0l		; In all areas
		mov.b r0l,@H'0FFFFEF	;  use WSC.
	
;ここからがスイッチによる条件分岐の部分です。
P5DR: 	.EQU	H'FFFFCA
P5PCR:	.EQU	H'FFFFDB
	MOV.B	#H'FF,R0L
	MOV.B	R0L,@P5PCR	;pullup MOS -> ON
	MOV.B	@P5DR,R0L	;input data -> R0L
	AND.B	#H'08 , R0L
	CMP.B	#H'08 , R0L
	BNE	MON
	JMP	@H'020000

MON:
		JMP	@ER6		; Goto Monitor Program
		.END			;

;ソース部分はここまで
;ここからサブコマンドファイル

INPUT ADVANCED
INPUT CMD01,CMD02      ,CMD04,CMD05,            CMD08,CMD09,CMD10
INPUT CMD11,      CMD13,CMD14      ,CMD16,CMD17,      CMD19,CMD20
INPUT CMD21,            CMD24,CMD25,      CMD27,CMD28,      CMD30
INPUT CMD31,CMD32,CMD33,CMD34,CMD35,CMD36,CMD37
INPUT DMY03,DMY06,DMY07,DMY12,DMY15,DMY18,DMY23,DMY26,DMY29,DMY38
INPUT int03,int04,int05,int06,int08,int09,int10
INPUT int11,int12,int13,int14,int15,int16,int17,int18,int19,int20
INPUT int21,int22,int23,int24,int25,int26,int27,int28,int29,int30
INPUT int31,int32,int33,int34,int35,int36,int37,int38,int39,int40
INPUT int41,int42,int43,int44,int45,int46,int47,int48,int49,int50
INPUT int51,int52,int53,int54,int55,int56,int57,int58,int59,int60
INPUT int61,int62,int63
INPUT mod01,mod02,mod03,mod04,mod05,mod06,mod07,mod08,mod09,mod10
INPUT mod11,mod12,mod13,mod14,mod15,mod16,mod17,mod18,mod19,mod20
INPUT mod21,mod22,mod23,mod24,mod25,mod26,mod27,mod28,mod29,mod30
INPUT mod31,mod32,mod33,mod34,mod35,mod36,      mod38,mod39,mod40
INPUT cpu01,cpu02,cpu03,cpu04
INPUT MONITOR
DEFINE  $BRR(0C)
DEFINE  $STACK(0FFF00)
PRINT   MONITOR.MAP
OUTPUT  MONITOR.ABS
START   VECTOR(0),ROM(100),RAM(0FEF10),USER(0FF000),SCI(0FFFFB8)
EXIT

♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪
    中央大学理工学部精密機械工学科4年 
          西村賢治        
     k_nishimura@xxxxxxxxxxxxxxx    
♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪

スレッド概略
[表示中](起点)
 └[840(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]