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

📄 main.asm

📁 用凌阳的十六位单片机SPCE061A做得语音开发板,可以录播WMA格式的音乐,外挂ST39VF040存储,可以存几十首歌,有音频编解码代码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
LM45:
	call _SACM_DVR1600_ServiceLoop	// call without return value
.debug
	.dw '.stabn 0x44,0,72,',0,0
	.dd LM46-_PlayRecord
	.dw 0x0d,0x0a
.code
LM46:
	pc=L17	// Indirect jump
L18:
.debug
	.dw '.stabn 0x44,0,73,',0,0
	.dd LM47-_PlayRecord
	.dw 0x0d,0x0a
.code
LM47:
	R1=[_loopflag]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L20	//QImode EQ
.debug
	.dw '.stabn 0x44,0,74,',0,0
	.dd LM48-_PlayRecord
	.dw 0x0d,0x0a
.code
LM48:
	R1=[_SndIdx]	// QImode move
	R2=1	// QImode move
	[_SndIdx]=R1+R2  //addqi3_Qrr
.debug
	.dw '.stabn 0x44,0,75,',0,0
	.dd LM49-_PlayRecord
	.dw 0x0d,0x0a
.code
LM49:
	R1=[_SndIdx]	// QImode move
	CMP R1,[_SOUND_NUM]	// QImode compare
	NSJNZ L20	//QImode NE
.debug
	.dw '.stabn 0x44,0,76,',0,0
	.dd LM50-_PlayRecord
	.dw 0x0d,0x0a
.code
LM50:
	R1=0	// QImode move
	[_SndIdx]=R1	// QImode move
L21:
L20:
.debug
	.dw '.stabn 0x44,0,78,',0,0
	.dd LM51-_PlayRecord
	.dw 0x0d,0x0a
.code
LM51:
.debug
	.dw '.stabn 0x44,0,78,',0,0
	.dd LM52-_PlayRecord
	.dw 0x0d,0x0a
.code
LM52:
L16:

	sp+=1
	pop bp from [sp]
	retf
	.endp	// end of PlayRecord

.debug
	.dw '.stabf ',0,0
	.dd LME4-_PlayRecord
	.dw 0x0d,0x0a
.code
LME4:
.code
.debug
	.dw '.stabs "main:F1",36,0,0,',0,0,offset _main,seg _main,0x0d,0x0a
.CODE
.public _main
_main:	.proc
.debug
	.dw '.stabn 0x44,0,84,',0,0
	.dd LM53-_main
	.dw 0x0d,0x0a
.code
LM53:
	// total=1, vars=1
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=1
	bp=sp+1

	R1=BP+4
	[BP]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,85,',0,0
	.dd LM54-_main
	.dw 0x0d,0x0a
.code
LM54:
	call _Initial	// call without return value
.debug
	.dw '.stabn 0x44,0,86,',0,0
	.dd LM55-_main
	.dw 0x0d,0x0a
.code
LM55:
	R1=0	// QImode move
	[_ext2flag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,87,',0,0
	.dd LM56-_main
	.dw 0x0d,0x0a
.code
LM56:
	R1=0	// QImode move
	[_playflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,88,',0,0
	.dd LM57-_main
	.dw 0x0d,0x0a
.code
LM57:
	R1=1	// QImode move
	[_loopflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,89,',0,0
	.dd LM58-_main
	.dw 0x0d,0x0a
.code
LM58:
	R1=0	// QImode move
	[_playstate]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,90,',0,0
	.dd LM59-_main
	.dw 0x0d,0x0a
.code
LM59:
	//split R1, 4
	R1=4	// QImode move
	R2=0	// QImode move
	//split [_flashaddr], R1
	[_flashaddr]=R1	// QImode move
	[_flashaddr+1]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,96,',0,0
	.dd LM60-_main
	.dw 0x0d,0x0a
.code
LM60:
	//split R1, [_flashaddr]
	R1=[_flashaddr]	// QImode move
	R2=[_flashaddr+1]	// QImode move
	push R1,R2 to [sp]	// pushhi
	call _Read_ST39VF040_One_Word	// call with return value
	SP = SP + 2	//SP
	[_SOUND_NUM]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,97,',0,0
	.dd LM61-_main
	.dw 0x0d,0x0a
.code
LM61:
	R1=[_SOUND_NUM]	// QImode move
	CMP R1,30	// QImode compare
	NSJNA L26	//QImode LEU
.debug
	.dw '.stabn 0x44,0,98,',0,0
	.dd LM62-_main
	.dw 0x0d,0x0a
.code
LM62:
	R1=30	// QImode move
	[_SOUND_NUM]=R1	// QImode move
L26:
.debug
	.dw '.stabn 0x44,0,99,',0,0
	.dd LM63-_main
	.dw 0x0d,0x0a
.code
LM63:
	R1=8	// QImode move
	[_VolumeIdx]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,100,',0,0
	.dd LM64-_main
	.dw 0x0d,0x0a
.code
LM64:
	R1=0	// QImode move
	[_SndIdx]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,101,',0,0
	.dd LM65-_main
	.dw 0x0d,0x0a
.code
LM65:
	call _SACM_DVR1600_Initial	// call without return value
.debug
	.dw '.stabn 0x44,0,102,',0,0
	.dd LM66-_main
	.dw 0x0d,0x0a
.code
LM66:
	R1=[_VolumeIdx]	// QImode move
	[SP--]=R1	// QImode move
	call _SACM_DVR1600_Volume	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,103,',0,0
	.dd LM67-_main
	.dw 0x0d,0x0a
.code
LM67:
L27:
	pc=L29	// Indirect jump
	pc=L28	// Indirect jump
L29:
.debug
	.dw '.stabn 0x44,0,105,',0,0
	.dd LM68-_main
	.dw 0x0d,0x0a
.code
LM68:
	R1=[_ext2flag]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L30	//QImode EQ
.debug
	.dw '.stabn 0x44,0,107,',0,0
	.dd LM69-_main
	.dw 0x0d,0x0a
.code
LM69:
	R1=[_playflag]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L31	//QImode EQ
.debug
	.dw '.stabn 0x44,0,108,',0,0
	.dd LM70-_main
	.dw 0x0d,0x0a
.code
LM70:
	call _PlayRecord	// call without return value
L31:
.debug
	.dw '.stabn 0x44,0,109,',0,0
	.dd LM71-_main
	.dw 0x0d,0x0a
.code
LM71:
	R1=[28717]	// QImode move
	R2=R1|512
	[28717]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,110,',0,0
	.dd LM72-_main
	.dw 0x0d,0x0a
.code
LM72:
	R1=0	// QImode move
	[_ext2flag]=R1	// QImode move
L30:
.debug
	.dw '.stabn 0x44,0,112,',0,0
	.dd LM73-_main
	.dw 0x0d,0x0a
.code
LM73:
	R1=1	// QImode move
	[28690]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,113,',0,0
	.dd LM74-_main
	.dw 0x0d,0x0a
.code
LM74:
	pc=L27	// Indirect jump
L28:
.debug
	.dw '.stabn 0x44,0,114,',0,0
	.dd LM75-_main
	.dw 0x0d,0x0a
.code
LM75:
.debug
	.dw '.stabn 0x44,0,114,',0,0
	.dd LM76-_main
	.dw 0x0d,0x0a
.code
LM76:
L25:

	sp+=1
	pop bp from [sp]
	retf
	.endp	// end of main

.debug
	.dw '.stabf ',0,0
	.dd LME5-_main
	.dw 0x0d,0x0a
.code
LME5:
// ISR ATTRIBUTE FUNCTION, LOCATE in .text SECTION
.text
.debug
	.dw '.stabs "FIQ:F19",36,0,0,',0,0,offset _FIQ,seg _FIQ,0x0d,0x0a
.TEXT
.public _FIQ
_FIQ:	.proc
.debug
	.dw '.stabn 0x44,0,122,',0,0
	.dd LM77-_FIQ
	.dw 0x0d,0x0a
.text
LM77:
	// ISR ATTRIBUTE FUNCTION, PUSH r1,bp
	push r1,bp to [sp]

	// total=1, vars=1
	// frame_pointer_needed: 1
	sp-=1
	bp=sp+1

	R1=BP+4
	[BP]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,123,',0,0
	.dd LM78-_FIQ
	.dw 0x0d,0x0a
.text
LM78:
	R1=8192	// QImode move
	[28689]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,124,',0,0
	.dd LM79-_FIQ
	.dw 0x0d,0x0a
.text
LM79:
	call _SACM_DVR1600_ISR	// call without return value
.debug
	.dw '.stabn 0x44,0,125,',0,0
	.dd LM80-_FIQ
	.dw 0x0d,0x0a
.text
LM80:
.debug
	.dw '.stabn 0x44,0,125,',0,0
	.dd LM81-_FIQ
	.dw 0x0d,0x0a
.text
LM81:
L35:

	sp+=1
	// ISR ATTRIBUTE FUNCTION, POP r1,bp
	pop r1,bp from [sp]
	reti
	.endp	// end of FIQ

.debug
	.dw '.stabf ',0,0
	.dd LME6-_FIQ
	.dw 0x0d,0x0a
.text
LME6:
// ISR ATTRIBUTE FUNCTION, LOCATE in .text SECTION
.text
.debug
	.dw '.stabs "IRQ3:F19",36,0,0,',0,0,offset _IRQ3,seg _IRQ3,0x0d,0x0a
.TEXT
.public _IRQ3
_IRQ3:	.proc
.debug
	.dw '.stabn 0x44,0,128,',0,0
	.dd LM82-_IRQ3
	.dw 0x0d,0x0a
.text
LM82:
	// ISR ATTRIBUTE FUNCTION, PUSH r1,bp
	push r1,bp to [sp]

	// total=0, vars=0
	// frame_pointer_needed: 1
	bp=sp+1

	R1=BP+3
.debug
	.dw '.stabn 0x44,0,129,',0,0
	.dd LM83-_IRQ3
	.dw 0x0d,0x0a
.text
LM83:
	R2=1	// QImode move
	[_ext2flag]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,130,',0,0
	.dd LM84-_IRQ3
	.dw 0x0d,0x0a
.text
LM84:
	R2=512	// QImode move
	[28689]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,131,',0,0
	.dd LM85-_IRQ3
	.dw 0x0d,0x0a
.text
LM85:
.debug
	.dw '.stabn 0x44,0,131,',0,0
	.dd LM86-_IRQ3
	.dw 0x0d,0x0a
.text
LM86:
L36:

	// ISR ATTRIBUTE FUNCTION, POP r1,bp
	pop r1,bp from [sp]
	reti
	.endp	// end of IRQ3

.debug
	.dw '.stabf ',0,0
	.dd LME7-_IRQ3
	.dw 0x0d,0x0a
.text
LME7:
// ISR ATTRIBUTE FUNCTION, LOCATE in .text SECTION
.text
.debug
	.dw '.stabs "IRQ5:F19",36,0,0,',0,0,offset _IRQ5,seg _IRQ5,0x0d,0x0a
.TEXT
.public _IRQ5
_IRQ5:	.proc
.debug
	.dw '.stabn 0x44,0,134,',0,0
	.dd LM87-_IRQ5
	.dw 0x0d,0x0a
.text
LM87:
	// ISR ATTRIBUTE FUNCTION, PUSH r1,bp
	push r1,bp to [sp]

	// total=0, vars=0
	// frame_pointer_needed: 1
	bp=sp+1

	R1=BP+3
.debug
	.dw '.stabn 0x44,0,135,',0,0
	.dd LM88-_IRQ5
	.dw 0x0d,0x0a
.text
LM88:
L37:

	// ISR ATTRIBUTE FUNCTION, POP r1,bp
	pop r1,bp from [sp]
	reti
	.endp	// end of IRQ5

.debug
	.dw '.stabf ',0,0
	.dd LME8-_IRQ5
	.dw 0x0d,0x0a
.text
LME8:
// ISR ATTRIBUTE FUNCTION, LOCATE in .text SECTION
.text
.debug
	.dw '.stabs "IRQ7:F19",36,0,0,',0,0,offset _IRQ7,seg _IRQ7,0x0d,0x0a
.TEXT
.public _IRQ7
_IRQ7:	.proc
.debug
	.dw '.stabn 0x44,0,138,',0,0
	.dd LM89-_IRQ7
	.dw 0x0d,0x0a
.text
LM89:
	// ISR ATTRIBUTE FUNCTION, PUSH r1,bp
	push r1,bp to [sp]

	// total=1, vars=1
	// frame_pointer_needed: 1
	sp-=1
	bp=sp+1

	R1=BP+4
	[BP]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,139,',0,0
	.dd LM90-_IRQ7
	.dw 0x0d,0x0a
.text
LM90:
	R1=0	// QImode move
	[_writeflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,140,',0,0
	.dd LM91-_IRQ7
	.dw 0x0d,0x0a
.text
LM91:
	R1=0	// QImode move
	[28705]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,142,',0,0
	.dd LM92-_IRQ7
	.dw 0x0d,0x0a
.text
LM92:
	R1=_recvdata1	// QImode move
	[SP--]=R1	// QImode move
	call _uartrecvchar	// call with return value
	SP = SP + 1	//SP
	CMP R1,0	// QImode test
	NSJNZ L39	//QImode NE
.debug
	.dw '.stabn 0x44,0,143,',0,0
	.dd LM93-_IRQ7
	.dw 0x0d,0x0a
.text
LM93:
	pc=L38	// Indirect jump
L39:
.debug
	.dw '.stabn 0x44,0,144,',0,0
	.dd LM94-_IRQ7
	.dw 0x0d,0x0a
.text
LM94:
	R1=[_recvdata1]	// QImode move
	CMP R1,1	// QImode compare
	NSJNZ L40	//QImode NE
.debug
	.dw '.stabn 0x44,0,146,',0,0
	.dd LM95-_IRQ7
	.dw 0x0d,0x0a
.text
LM95:
	call _SACM_DVR1600_Stop	// call without return value
.debug
	.dw '.stabn 0x44,0,147,',0,0
	.dd LM96-_IRQ7
	.dw 0x0d,0x0a
.text
LM96:
	R1=1	// QImode move
	[_playflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,148,',0,0
	.dd LM97-_IRQ7
	.dw 0x0d,0x0a
.text
LM97:
	R1=1	// QImode move
	[_loopflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,149,',0,0
	.dd LM98-_IRQ7
	.dw 0x0d,0x0a
.text
LM98:
	R1=[_playstate]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L41	//QImode EQ
.debug
	.dw '.stabn 0x44,0,150,',0,0
	.dd LM99-_IRQ7
	.dw 0x0d,0x0a
.text
LM99:
	R1=(-1)	// QImode move
	[_SndIdx]=R1	// QImode move
	pc=L42	// Indirect jump
L41:
.debug
	.dw '.stabn 0x44,0,152,',0,0
	.dd LM100-_IRQ7
	.dw 0x0d,0x0a
.text
LM100:
	R1=0	// QImode move
	[_SndIdx]=R1	// QImode move
L42:
.debug
	.dw '.stabn 0x44,0,153,',0,0
	.dd LM101-_IRQ7
	.dw 0x0d,0x0a
.text
LM101:
	R1=128	// QImode move
	[28705]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,154,',0,0
	.dd LM102-_IRQ7
	.dw 0x0d,0x0a
.text
LM102:
	pc=L38	// Indirect jump
.debug
	.dw '.stabn 0x44,0,155,',0,0
	.dd LM103-_IRQ7
	.dw 0x0d,0x0a
.text
LM103:
	pc=L43	// Indirect jump
L40:
.debug
	.dw '.stabn 0x44,0,156,',0,0
	.dd LM104-_IRQ7

⌨️ 快捷键说明

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