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

📄 main.asm

📁 凌阳61单片机实现的多功能电子琴源程序代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
.code
LM39:
L29:
	call _Key_Get	// call with return value
	[BP]=R1	// QImode move
	R1=1	// QImode move
	[28690]=R1	// QImode move
L31:
.debug
	.dw '.stabn 0x44,0,78,',0,0
	.dd LM40-_main
	.dw 0x0d,0x0a
.code
LM40:
	R1=[BP]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L32	//QImode EQ
	pc=L30	// Indirect jump
L32:
	pc=L29	// Indirect jump
L30:
.debug
	.dw '.stabn 0x44,0,79,',0,0
	.dd LM41-_main
	.dw 0x0d,0x0a
.code
LM41:
	R1=[BP]	// QImode move
	CMP R1,33	// QImode compare
	NSJZ L36	//QImode EQ
	CMP R1,33	// QImode compare
	NSJA L40	//QImode GTU
	CMP R1,17	// QImode compare
	NSJZ L37	//QImode EQ
	pc=L38	// Indirect jump
L40:
	CMP R1,65	// QImode compare
	NSJZ L35	//QImode EQ
	CMP R1,129	// QImode compare
	NSJZ L34	//QImode EQ
	pc=L38	// Indirect jump
.debug
	.dw '.stabn 0x44,0,81,',0,0
	.dd LM42-_main
	.dw 0x0d,0x0a
.code
LM42:
L34:
	R1=0	// QImode move
	[_mode]=R1	// QImode move
	call _Clear_S	// call without return value
	call _display_mode_0	// call without return value
	pc=L33	// Indirect jump
L35:
.debug
	.dw '.stabn 0x44,0,82,',0,0
	.dd LM43-_main
	.dw 0x0d,0x0a
.code
LM43:
	pc=L33	// Indirect jump
L36:
.debug
	.dw '.stabn 0x44,0,83,',0,0
	.dd LM44-_main
	.dw 0x0d,0x0a
.code
LM44:
	pc=L33	// Indirect jump
L37:
.debug
	.dw '.stabn 0x44,0,84,',0,0
	.dd LM45-_main
	.dw 0x0d,0x0a
.code
LM45:
	pc=L33	// Indirect jump
L38:
.debug
	.dw '.stabn 0x44,0,86,',0,0
	.dd LM46-_main
	.dw 0x0d,0x0a
.code
LM46:
	R1=[BP]	// QImode move
	[SP--]=R1	// QImode move
	call _code_to_delay	// call with return value
	SP = SP + 1	//SP
	R2=BP	// QImode move
	R3=BP+1
	R2=R3	// QImode move
	[R2]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,87,',0,0
	.dd LM47-_main
	.dw 0x0d,0x0a
.code
LM47:
	R1=[BP]	// QImode move
	[SP--]=R1	// QImode move
	call _code_to_note	// call with return value
	SP = SP + 1	//SP
	R2=BP	// QImode move
	R3=BP+3
	R2=R3	// QImode move
	[R2]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,88,',0,0
	.dd LM48-_main
	.dw 0x0d,0x0a
.code
LM48:
	R1=BP	// QImode move
	R2=BP+3
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	[SP--]=R1	// QImode move
	call _display_add	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,89,',0,0
	.dd LM49-_main
	.dw 0x0d,0x0a
.code
LM49:
	R1=BP	// QImode move
	R2=BP+1
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	[SP--]=R1	// QImode move
	call _sound	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,90,',0,0
	.dd LM50-_main
	.dw 0x0d,0x0a
.code
LM50:
	pc=L33	// Indirect jump
L33:
.debug
	.dw '.stabn 0x44,0,92,',0,0
	.dd LM51-_main
	.dw 0x0d,0x0a
.code
LM51:
	R1=[BP]	// QImode move
	CMP R1,129	// QImode compare
	NSJNZ L41	//QImode NE
.debug
	.dw '.stabn 0x44,0,94,',0,0
	.dd LM52-_main
	.dw 0x0d,0x0a
.code
LM52:
	R1=0	// QImode move
	[BP]=R1	// QImode move
	pc=L27	// Indirect jump
.debug
	.dw '.stabn 0x44,0,95,',0,0
	.dd LM53-_main
	.dw 0x0d,0x0a
.code
LM53:
	pc=L42	// Indirect jump
L41:
.debug
	.dw '.stabn 0x44,0,96,',0,0
	.dd LM54-_main
	.dw 0x0d,0x0a
.code
LM54:
	R1=0	// QImode move
	[BP]=R1	// QImode move
L42:
.debug
	.dw '.stabn 0x44,0,97,',0,0
	.dd LM55-_main
	.dw 0x0d,0x0a
.code
LM55:
	pc=L26	// Indirect jump
L27:
.debug
	.dw '.stabn 0x44,0,98,',0,0
	.dd LM56-_main
	.dw 0x0d,0x0a
.code
LM56:
	pc=L6	// Indirect jump
L43:
.debug
	.dw '.stabn 0x44,0,101,',0,0
	.dd LM57-_main
	.dw 0x0d,0x0a
.code
LM57:
L44:
	pc=L46	// Indirect jump
	pc=L45	// Indirect jump
L46:
.debug
	.dw '.stabn 0x44,0,103,',0,0
	.dd LM58-_main
	.dw 0x0d,0x0a
.code
LM58:
	R1=1	// QImode move
	[28690]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,104,',0,0
	.dd LM59-_main
	.dw 0x0d,0x0a
.code
LM59:
L47:
	call _Key_Get	// call with return value
	[BP]=R1	// QImode move
	R1=1	// QImode move
	[28690]=R1	// QImode move
L49:
.debug
	.dw '.stabn 0x44,0,105,',0,0
	.dd LM60-_main
	.dw 0x0d,0x0a
.code
LM60:
	R1=[BP]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L50	//QImode EQ
	pc=L48	// Indirect jump
L50:
	pc=L47	// Indirect jump
L48:
.debug
	.dw '.stabn 0x44,0,106,',0,0
	.dd LM61-_main
	.dw 0x0d,0x0a
.code
LM61:
	R1=[BP]	// QImode move
	CMP R1,65	// QImode compare
	NSJZ L53	//QImode EQ
	CMP R1,65	// QImode compare
	NSJA L57	//QImode GTU
	CMP R1,33	// QImode compare
	NSJZ L54	//QImode EQ
	pc=L55	// Indirect jump
L57:
	CMP R1,129	// QImode compare
	NSJZ L52	//QImode EQ
	pc=L55	// Indirect jump
.debug
	.dw '.stabn 0x44,0,108,',0,0
	.dd LM62-_main
	.dw 0x0d,0x0a
.code
LM62:
L52:
	R1=0	// QImode move
	[_mode]=R1	// QImode move
	call _Clear_S	// call without return value
	call _display_mode_0	// call without return value
	pc=L51	// Indirect jump
L53:
.debug
	.dw '.stabn 0x44,0,109,',0,0
	.dd LM63-_main
	.dw 0x0d,0x0a
.code
LM63:
	call _display_del	// call without return value
	call _del_note	// call without return value
	pc=L51	// Indirect jump
L54:
.debug
	.dw '.stabn 0x44,0,110,',0,0
	.dd LM64-_main
	.dw 0x0d,0x0a
.code
LM64:
	call _store_end	// call without return value
	R1=3	// QImode move
	[_mode]=R1	// QImode move
	call _Clear_S	// call without return value
	call _display_mode_3	// call without return value
	pc=L51	// Indirect jump
L55:
.debug
	.dw '.stabn 0x44,0,113,',0,0
	.dd LM65-_main
	.dw 0x0d,0x0a
.code
LM65:
	R1=[BP]	// QImode move
	[SP--]=R1	// QImode move
	call _code_to_delay	// call with return value
	SP = SP + 1	//SP
	R2=BP	// QImode move
	R3=BP+1
	R2=R3	// QImode move
	[R2]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,114,',0,0
	.dd LM66-_main
	.dw 0x0d,0x0a
.code
LM66:
	R1=[BP]	// QImode move
	[SP--]=R1	// QImode move
	call _code_to_note	// call with return value
	SP = SP + 1	//SP
	R2=BP	// QImode move
	R3=BP+3
	R2=R3	// QImode move
	[R2]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,115,',0,0
	.dd LM67-_main
	.dw 0x0d,0x0a
.code
LM67:
	R1=[BP]	// QImode move
	[SP--]=R1	// QImode move
	call _code_to_num	// call with return value
	SP = SP + 1	//SP
	R2=BP	// QImode move
	R3=BP+2
	R2=R3	// QImode move
	[R2]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,116,',0,0
	.dd LM68-_main
	.dw 0x0d,0x0a
.code
LM68:
	R1=BP	// QImode move
	R2=BP+2
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	[SP--]=R1	// QImode move
	call _store_note	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,117,',0,0
	.dd LM69-_main
	.dw 0x0d,0x0a
.code
LM69:
	R1=BP	// QImode move
	R2=BP+3
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	[SP--]=R1	// QImode move
	call _display_add	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,118,',0,0
	.dd LM70-_main
	.dw 0x0d,0x0a
.code
LM70:
	R1=BP	// QImode move
	R2=BP+1
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	[SP--]=R1	// QImode move
	call _sound	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,119,',0,0
	.dd LM71-_main
	.dw 0x0d,0x0a
.code
LM71:
	pc=L51	// Indirect jump
L51:
.debug
	.dw '.stabn 0x44,0,121,',0,0
	.dd LM72-_main
	.dw 0x0d,0x0a
.code
LM72:
	R1=[BP]	// QImode move
	CMP R1,129	// QImode compare
	NSJZ L59	//QImode EQ
	R1=[BP]	// QImode move
	CMP R1,33	// QImode compare
	NSJZ L59	//QImode EQ
	pc=L58	// Indirect jump
L59:
.debug
	.dw '.stabn 0x44,0,123,',0,0
	.dd LM73-_main
	.dw 0x0d,0x0a
.code
LM73:
	R1=0	// QImode move
	[BP]=R1	// QImode move
	pc=L45	// Indirect jump
.debug
	.dw '.stabn 0x44,0,124,',0,0
	.dd LM74-_main
	.dw 0x0d,0x0a
.code
LM74:
	pc=L60	// Indirect jump
L58:
.debug
	.dw '.stabn 0x44,0,126,',0,0
	.dd LM75-_main
	.dw 0x0d,0x0a
.code
LM75:
	R1=0	// QImode move
	[BP]=R1	// QImode move
L60:
.debug
	.dw '.stabn 0x44,0,127,',0,0
	.dd LM76-_main
	.dw 0x0d,0x0a
.code
LM76:
	pc=L44	// Indirect jump
L45:
.debug
	.dw '.stabn 0x44,0,128,',0,0
	.dd LM77-_main
	.dw 0x0d,0x0a
.code
LM77:
	pc=L6	// Indirect jump
L61:
.debug
	.dw '.stabn 0x44,0,131,',0,0
	.dd LM78-_main
	.dw 0x0d,0x0a
.code
LM78:
L62:
	pc=L64	// Indirect jump
	pc=L63	// Indirect jump
L64:
.debug
	.dw '.stabn 0x44,0,133,',0,0
	.dd LM79-_main
	.dw 0x0d,0x0a
.code
LM79:
	R1=1	// QImode move
	[28690]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,134,',0,0
	.dd LM80-_main
	.dw 0x0d,0x0a
.code
LM80:
L65:
	call _Key_Get	// call with return value
	[BP]=R1	// QImode move
	R1=1	// QImode move
	[28690]=R1	// QImode move
L67:
.debug
	.dw '.stabn 0x44,0,135,',0,0
	.dd LM81-_main
	.dw 0x0d,0x0a
.code
LM81:
	R1=[BP]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L68	//QImode EQ
	pc=L66	// Indirect jump
L68:
	pc=L65	// Indirect jump
L66:
.debug
	.dw '.stabn 0x44,0,136,',0,0
	.dd LM82-_main
	.dw 0x0d,0x0a
.code
LM82:
	R1=[BP]	// QImode move
	CMP R1,68	// QImode compare
	NSJZ L74	//QImode EQ
	CMP R1,68	// QImode compare
	NSJA L82	//QImode GTU
	CMP R1,18	// QImode compare
	NSJZ L79	//QImode EQ
	CMP R1,18	// QImode compare
	NSJA L83	//QImode GTU
	CMP R1,17	// QImode compare
	NSJZ L78	//QImode EQ
	pc=L80	// Indirect jump
L83:
	CMP R1,33	// QImode compare
	NSJZ L77	//QImode EQ
	CMP R1,65	// QImode compare
	NSJZ L76	//QImode EQ
	pc=L80	// Indirect jump
L82:
	CMP R1,130	// QImode compare
	NSJZ L72	//QImode EQ
	CMP R1,130	// QImode compare
	NSJA L84	//QImode GTU
	CMP R1,72	// QImode compare
	NSJZ L73	//QImode EQ
	CMP R1,129	// QImode compare
	NSJZ L75	//QImode EQ
	pc=L80	// Indirect jump
L84:
	CMP R1,132	// QImode compare
	NSJZ L71	//QImode EQ
	CMP R1,136	// QImode compare
	NSJZ L70	//QImode EQ
	pc=L80	// Indirect jump
.debug
	.dw '.stabn 0x44,0,138,',0,0
	.dd LM83-_main
	.dw 0x0d,0x0a
.code
LM83:
L70:
	R1=_song0	// QImode move
	[SP--]=R1	// QImode move
	call _sing	// call without return value
	SP = SP + 1	//SP
	pc=L69	// Indirect jump
L71:
.debug
	.dw '.stabn 0x44,0,139,',0,0
	.dd LM84-_main
	.dw 0x0d,0x0a
.code
LM84:
	R1=_song1	// QImode move
	[SP--]=R1	// QImode move
	call _sing	// call without return value
	SP = SP + 1	//SP
	pc=L69	// Indirect jump
L72:
.debug
	.dw '.stabn 0x44,0,140,',0,0
	.dd LM85-_main
	.dw 0x0d,0x0a
.code
LM85:
	R1=_song2	// QImode move
	[SP--]=R1	// QImode move
	call _sing	// call without return value
	SP = SP + 1	//SP
	pc=L69	// Indirect jump
L73:
.debug
	.dw '.stabn 0x44,0,141,',0,0
	.dd LM86-_main
	.dw 0x0d,0x0a
.code
LM86:
	R1=_song3	// QImode move
	[SP--]=R1	// QImode move
	call _sing	// call without return value
	SP = SP + 1	//SP
	pc=L69	// Indirect jump
L74:
.debug
	.dw '.stabn 0x44,0,142,',0,0
	.dd LM87-_main
	.dw 0x0d,0x0a
.code
LM87:
	R1=_song4	// QImode move
	[SP--]=R1	// QImode move
	call _sing	// call without return value
	SP = SP + 1	//SP
	pc=L69	// Indirect jump
L75:
.debug
	.dw '.stabn 0x44,0,143,',0,0
	.dd LM88-_main
	.dw 0x0d,0x0a
.code
LM88:
	R1=0	// QImode move
	[_mode]=R1	// QImode move
	call _Clear_S	// call without return value
	call _display_mode_0	// call without return value
	pc=L69	// Indirect jump
L76:
.debug
	.dw '.stabn 0x44,0,144,',0,0
	.dd LM89-_main
	.dw 0x0d,0x0a
.code
LM89:
	pc=L69	// Indirect jump
L77:
.debug
	.dw '.stabn 0x44,0,145,',0,0
	.dd LM90-_main
	.dw 0x0d,0x0a
.code
LM90:
	pc=L69	// Indirect jump
L78:
.debug
	.dw '.stabn 0x44,0,146,',0,0
	.dd LM91-_main
	.dw 0x0d,0x0a
.code
LM91:
	pc=L69	// Indirect jump
L79:
.debug
	.dw '.stabn 0x44,0,147,',0,0
	.dd LM92-_main
	.dw 0x0d,0x0a
.code
LM92:
	R1=_song	// QImode move
	[SP--]=R1	// QImode move
	call _sing	// call without return value
	SP = SP + 1	//SP
	pc=L69	// Indirect jump
L80:
.debug
	.dw '.stabn 0x44,0,149,',0,0
	.dd LM93-_main
	.dw 0x0d,0x0a
.code
LM93:
	pc=L69	// Indirect jump
L69:
.debug
	.dw '.stabn 0x44,0,151,',0,0
	.dd LM94-_main
	.dw 0x0d,0x0a
.code
LM94:
	R1=[BP]	// QImode move
	CMP R1,129	// QImode compare
	NSJNZ L85	//QImode NE
.debug
	.dw '.stabn 0x44,0,153,',0,0
	.dd LM95-_main
	.dw 0x0d,0x0a
.code
LM95:
	R1=0	// QImode move
	[BP]=R1	// QImode move
	pc=L63	// Indirect jump
.debug
	.dw '.stabn 0x44,0,154,',0,0
	.dd LM96-_main
	.dw 0x0d,0x0a
.code
LM96:
	pc=L86	// Indirect jump
L85:
.debug
	.dw '.stabn 0x44,0,155,',0,0
	.dd LM97-_main
	.dw 0x0d,0x0a
.code
LM97:
	R1=0	// QImode move
	[BP]=R1	// QImode move
L86:
.debug
	.dw '.stabn 0x44,0,156,',0,0
	.dd LM98-_main
	.dw 0x0d,0x0a
.code
LM98:
	pc=L62	// Indirect jump
L63:
.debug
	.dw '.stabn 0x44,0,157,',0,0
	.dd LM99-_main
	.dw 0x0d,0x0a
.code
LM99:
	pc=L6	// Indirect jump
L88:
L6:
.debug
	.dw '.stabn 0x44,0,160,',0,0
	.dd LM100-_main
	.dw 0x0d,0x0a
.code
LM100:
	R1=1	// QImode move
	[28690]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,161,',0,0
	.dd LM101-_main
	.dw 0x0d,0x0a
.code
LM101:
LBE3:
	pc=L3	// Indirect jump
L4:
.debug
	.dw '.stabn 0x44,0,162,',0,0
	.dd LM102-_main
	.dw 0x0d,0x0a
.code
LM102:
	R1=0	// QImode move
	pc=L2	// Indirect jump
.debug
	.dw '.stabn 0x44,0,163,',0,0
	.dd LM103-_main
	.dw 0x0d,0x0a
.code
LM103:
LBE2:
.debug
	.dw '.stabn 0x44,0,163,',0,0
	.dd LM104-_main
	.dw 0x0d,0x0a
.code
LM104:
L2:

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

.debug
	.dw '.stabn 0xc0,0,0,',0,0
	.dd LBB2-_main
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabn 0xc0,0,0,',0,0
	.dd LBB3-_main
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabs "key_code:4",128,0,0,0',0x0d,0x0a
.CODE
.debug
	.dw '.stabs "key_delay:4",128,0,0,1',0x0d,0x0a
.CODE
.debug
	.dw '.stabs "key_num:1",128,0,0,2',0x0d,0x0a
.CODE
.debug
	.dw '.stabs "key_note:56=*11",128,0,0,3',0x0d,0x0a
.CODE
.debug
	.dw '.stabn 0xe0,0,0,',0,0
	.dd LBE3-_main
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabn 0xe0,0,0,',0,0
	.dd LBE2-_main
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabf ',0,0
	.dd LME1-_main
	.dw 0x0d,0x0a
.code
LME1:
.code
.debug
	.dw '.stabs "delay_nus:F19",36,0,0,',0,0,offset _delay_nus,seg _delay_nus,0x0d,0x0a
.CODE
.public _delay_nus
_delay_nus:	.proc
.debug
	.dw '.stabn 0x44,0,188,',0,0
	.dd LM105-_delay_nus
	.dw 0x0d,0x0a
.code
LM105:
	// total=0, vars=0
	// frame_pointer_needed: 1
	push bp to [sp]
	bp=sp+1

	R1=BP+3
.debug
	.dw '.stabn 0x44,0,189,',0,0
	.dd LM106-_delay_nus
	.dw 0x0d,0x0a
.code
LM106:
L128:
	R2=R1	// QImode move
	R3=[R2]	// QImode move
	R2=R3+(-1)
	R3=R2	// QImode move
	R2=R1	// QImode move
	[R2]=R3	// QImode move
	CMP R3,(-1)	// QImode compare
	NSJNZ L130	//QImode NE
	pc=L129	// Indirect jump
L130:
	pc=L128	// Indirect jump
L129:
.debug
	.dw '.stabn 0x44,0,190,',0,0
	.dd LM107-_delay_nus
	.dw 0x0d,0x0a

⌨️ 快捷键说明

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