⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selfboot.asm

📁 C5402DSP汇编编写的C5402的自举程序
💻 ASM
字号:
	.mmregs
	.def _c_int00
	
	.text
_c_int00:
		;初始化DSP
		SSBX	INTM		;close interrupt
		RSBX    CPL
		NOP
		NOP
		NOP
		NOP
		LD		#0,DP		;reset DP
		ORM		2b00h,ST1	;set XF,OVM,SXM
		ORM		20h,PMST	;set OVLY
		ANDM    0fff7h,PMST	;set DROM=0:make *(fffeh:ffffh) accessible
		STM     110h,SP		;set SP
		
		;寻找boot表地址(0ffffh)
		STM 	0ffffh,AR1
		NOP
		NOP
		LDU     *AR1,A
		NOP
		NOP
		STLM 	A,AR1
		NOP
		NOP
		;判断16为Boot表标志
		LD		*AR1+,A
		SUB		#0x10aa,0,A,A
		BC		b_end,ANEQ
		;设置寄存器:SWWSR,BSCR
		LD		*AR1+,A
		STLM	A,SWWSR
		LD		*AR1+,A
		STLM	A,BSCR
		;将入口地址XPC保存于*(61h),将PC保存于*(62h)
	    LD    	*AR1+,A
		STL   	A,61h
		LD    	*AR1+,A
		STL   	A,62h
		;将每一段大小保存于BRC
loop_SEC:		
		LD    	*AR1+,A
		BCD   	b_entry,AEQ
		SUB   	#1h,0,A,B
		STLM  	B,BRC
		;保存每一段目的地址
		;A = XPC << 16  + PC
		LD    	*AR1+,A
		STL   	A,66h
		LD    	*AR1+,A
		ADD   	66h,16,A,A
		;引导程序
		RPTB  	b_run+1
		LD    	*AR1+,B
		RPT   	#0ah
		NOP   
		WRITA 	BL			;save data(in BL) in *A 
b_run:  ADD   	#1h,0,A,A
		B     	loop_SEC
b_entry:LDU     62h,A
        ADD     61h,16,A,A
;set options:project menu,option... submenu,compiler tab,Advanced selection,Use Farcalls(-mf) checkbox
        BACC    A 		
b_end:  B		b_end
	.end
	
		
		
		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -