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

📄 text1.asm

📁 凌阳单片机对语音的处理和调用
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	//  C:\PROGRA~1\Sunplus\UNSPID~1.3\\be::0.9.14

	//-----------------------------------------------------------
	// Compiling E:\600text3\text1.c (C:\DOCUME~1\yifeng\LOCALS~1\Temp\ccB.3)
	//-----------------------------------------------------------

	//-----------------------------------------------------------
	// Options:
	//-----------------------------------------------------------
	//  Target:unSP, ISA:ISA_1.1, Pointer Size:32
	//  -O0	(Optimization level)
	//  -g2	(Debug level)
	//  -m1	(Report warnings)
	//-----------------------------------------------------------

.stabs "E:\600text3",100,0,3,Ltext0
.stabs "E:\600text3\text1.c",100,0,3,Ltext0

.code
Ltext0:
.stabs "int:t1=r1;-32768;32767;",128,0,0,0
.stabs "char:t2=r2;-32768;32767;",128,0,0,0
.stabs "long int:t3=r3;-2147483648;2147483647;",128,0,0,0
.stabs "unsigned int:t4=r4;0;65535;",128,0,0,0
.stabs "long unsigned int:t5=r5;0;4294967295;",128,0,0,0
.stabs "long long int:t6=r1;4;0;",128,0,0,0
.stabs "long long unsigned int:t7=r1;4;0;",128,0,0,0
.stabs "short int:t8=r8;-32768;32767;",128,0,0,0
.stabs "short unsigned int:t9=r9;0;65535;",128,0,0,0
.stabs "signed char:t10=r10;-32768;32767;",128,0,0,0
.stabs "unsigned char:t11=r11;0;65535;",128,0,0,0
.stabs "float:t12=r1;2;0;",128,0,0,0
.stabs "double:t13=r1;4;0;",128,0,0,0
.stabs "long double:t14=r1;4;0;",128,0,0,0
.stabs "complex float:t15=r1;4;0;",128,0,0,0
.stabs "complex double:t16=r1;8;0;",128,0,0,0
.stabs "complex long double:t17=r1;8;0;",128,0,0,0
.stabs "void:t18=18",128,0,0,0
.stabs "Bit8Def:T19=s1bitl:4,0,8;bith:4,8,8;;",128,0,0,0
.stabs "wordfielddef:T20=s1bit:4,0,16;;",128,0,0,0

.iram
	     .stabs "StatusData:G4",32,0,0,_StatusData
.public	_StatusData
_StatusData:
	.dw 1 dup(0)
	     .stabs "data1:G4",32,0,0,_data1
.public	_data1
_data1:
	.dw 1 dup(0)
	     .stabs "data2:G4",32,0,0,_data2
.public	_data2
_data2:
	.dw 1 dup(0)
	     .stabs "data3:G4",32,0,0,_data3
.public	_data3
_data3:
	.dw 1 dup(0)
	     .stabs "data4:G4",32,0,0,_data4
.public	_data4
_data4:
	.dw 1 dup(0)
	     .stabs "VolumeValue:G4",32,0,0,_VolumeValue
.public	_VolumeValue
_VolumeValue:
	.dw 1 dup(0)
.code
	     .stabs "KeyValue:F4",36,0,0,_KeyValue

	// Program Unit: KeyValue
.public	_KeyValue
_KeyValue: .proc	
	     .stabn 0xa6,0,0,0
	// old_frame_pointer = 0
	// return_address = 1
// 	//.file	0 "E:\600text3\text1.c"
// 	.loc	0	28	0
//  24  //入口:无
//  25  //出口:处理过的键值
//  26  //-------------------------
//  27  U16 KeyValue(viod)
//  28  {

LM1:
	     .stabn 68,0,28,LM1-_KeyValue
BB1_PU0:	// 0x0
// BB:1 cycle count: 68
	     push BP to [SP]          	// [0:28]  
	     BP = SP + 1              	// [6:28]  
// 	.loc	0	29	0
//  29  	data1+=1;

LM2:
	     .stabn 68,0,29,LM2-_KeyValue
	     SR = SR & 63             	// [10:29]  
	     SR = SR | high6 _data1   	// [12:29]  data1
	     R4 = offset _data1       	// [16:29]  data1
	     R4 = DS:[R4]             	// [20:29]  
	     R4 = R4 + 1              	// [26:29]  
	     SR = SR & 63             	// [28:29]  
	     SR = SR | high6 _data1   	// [30:29]  data1
	     R3 = offset _data1       	// [34:29]  data1
	     DS:[R3] = R4             	// [38:29]  
// 	.loc	0	30	0
//  30  	if (data1>=0x5f53)

LM3:
	     .stabn 68,0,30,LM3-_KeyValue
	     SR = SR & 63             	// [44:30]  
	     SR = SR | high6 _data1   	// [46:30]  data1
	     R4 = offset _data1       	// [50:30]  data1
	     R4 = DS:[R4]             	// [54:30]  
	     cmp R4, 24402            	// [60:30]  
	     jbe L_0_1                	// [64:30]  
BB2_PU0:	// 0x19
// BB:2 cycle count: 52
// 	.loc	0	32	0
//  31  	{
//  32  		data1=0;

LM4:
	     .stabn 68,0,32,LM4-_KeyValue
	     R3 = 0                   	// [0:32]  
	     SR = SR & 63             	// [2:32]  
	     SR = SR | high6 _data1   	// [4:32]  data1
	     R4 = offset _data1       	// [8:32]  data1
	     DS:[R4] = R3             	// [12:32]  
// 	.loc	0	33	0
//  33  		data2+=1;

LM5:
	     .stabn 68,0,33,LM5-_KeyValue
	     SR = SR & 63             	// [18:33]  
	     SR = SR | high6 _data2   	// [20:33]  data2
	     R4 = offset _data2       	// [24:33]  data2
	     R4 = DS:[R4]             	// [28:33]  
	     R4 = R4 + 1              	// [34:33]  
	     SR = SR & 63             	// [36:33]  
	     SR = SR | high6 _data2   	// [38:33]  data2
	     R3 = offset _data2       	// [42:33]  data2
	     DS:[R3] = R4             	// [46:33]  
L_0_1:	// 0x2d
// BB:3 cycle count: 30
// 	.loc	0	35	0
//  34  	}
//  35  	return data2;

LM6:
	     .stabn 68,0,35,LM6-_KeyValue
	     SR = SR & 63             	// [0:35]  
	     SR = SR | high6 _data2   	// [2:35]  data2
	     R4 = offset _data2       	// [6:35]  data2
	     R1 = DS:[R4]             	// [10:35]  
	     pop BP from [SP]         	// [16:35]  
	     retf                     	// [22:35]  
	.endp	
	     .stabs "viod:p1",160,0,0,3
LME1:
	     .stabf LME1-_KeyValue
.code
	     .stabs "PlaySpeech:F4",36,0,0,_PlaySpeech

	// Program Unit: PlaySpeech
.public	_PlaySpeech
_PlaySpeech: .proc	
	     .stabn 0xa6,0,0,2
	// key_value = 1
	// bit_exit = 0
	// old_frame_pointer = 2
	// return_address = 3
// 	.loc	0	45	0
//  41  //入口:Volume(音量0--3)  SongIndex(歌曲索引)
//  42  //出口:无
//  43  //----------------------------
//  44  U16 PlaySpeech(U16 Volume,U16 SongIndex)
//  45  {

LM7:
	     .stabn 68,0,45,LM7-_PlaySpeech
BB1_PU1:	// 0x35
// BB:1 cycle count: 63
	     push BP to [SP]          	// [0:45]  
	     SP = SP - 2              	// [6:45]  
	     BP = SP + 1              	// [8:45]  
LBB2:
// 	.loc	0	46	0
//  46  	U16 key_value,bit_exit=00;

LM8:
	     .stabn 68,0,46,LM8-_PlaySpeech
	     R4 = 0                   	// [12:46]  
	     [BP + 0] = R4            	// [14:46]  bit_exit
// 	.loc	0	48	0
//  47  	
//  48  	InilSpeech(Volume,SongIndex);            //---语音播放初始化 入口:音量(0-3)和歌曲索引  出口:无

LM9:
	     .stabn 68,0,48,LM9-_PlaySpeech
	     SP = SP - 2              	// [20:48]  
	     R3 = [BP + 5]            	// [22:48]  Volume
	     R4 = SP + 1              	// [28:48]  
	     [R4] = R3                	// [32:48]  
	     R3 = [BP + 6]            	// [38:48]  SongIndex
	     R4 = SP + 2              	// [44:48]  
	     [R4] = R3                	// [48:48]  
	     call _InilSpeech         	// [54:48]  InilSpeech
BB2_PU1:	// 0x46
// BB:2 cycle count: 11
	     SP = SP + 2              	// [0:48]  
// 	.loc	0	49	0
//  49  	T_SACM_DVR1600_Status();      			//---在汇编中调用播放状态库函数 返回播放状态

LM10:
	     .stabn 68,0,49,LM10-_PlaySpeech
	     call _T_SACM_DVR1600_Status	// [2:49]  T_SACM_DVR1600_Status
L_1_17:	// 0x49
// BB:3 cycle count: 24
// 	.loc	0	50	0
//  50  	while((StatusData&0x03)!=0x00)

LM11:
	     .stabn 68,0,50,LM11-_PlaySpeech
	     SR = SR & 63             	// [0:50]  
	     SR = SR | high6 _StatusData	// [2:50]  StatusData
	     R4 = offset _StatusData  	// [6:50]  StatusData
	     R4 = DS:[R4]             	// [10:50]  
	     R4 = R4 & 3              	// [16:50]  
	     cmp R4, 0                	// [18:50]  
	     jne BB4_PU1              	// [20:50]  
BB33_PU1:	// 0x52
// BB:33 cycle count: 5
	     goto L_1_18              	// [0:0]  
BB4_PU1:	// 0x54
// BB:4 cycle count: 9
// 	.loc	0	52	0
//  51  	{
//  52  		key_value=KeyValue();

LM12:
	     .stabn 68,0,52,LM12-_PlaySpeech
	     call _KeyValue           	// [0:52]  KeyValue
BB5_PU1:	// 0x56
// BB:5 cycle count: 26
	     [BP + 1] = R1            	// [0:52]  key_value
// 	.loc	0	53	0
//  53  		key_value=0;

LM13:
	     .stabn 68,0,53,LM13-_PlaySpeech
	     R4 = 0                   	// [6:53]  
	     [BP + 1] = R4            	// [8:53]  key_value
// 	.loc	0	54	0
//  54  		switch (key_value)

LM14:
	     .stabn 68,0,54,LM14-_PlaySpeech
	     R4 = [BP + 1]            	// [14:54]  key_value
	     cmp R4, 0                	// [20:54]  
	     je Lt_1_1                	// [22:54]  
BB6_PU1:	// 0x5c
// BB:6 cycle count: 12
	     R4 = [BP + 1]            	// [0:54]  key_value
	     cmp R4, 1                	// [6:54]  
	     je Lt_1_3                	// [8:54]  
BB7_PU1:	// 0x5f
// BB:7 cycle count: 12
	     R4 = [BP + 1]            	// [0:54]  key_value
	     cmp R4, 2                	// [6:54]  
	     jne BB8_PU1              	// [8:54]  
BB37_PU1:	// 0x62
// BB:37 cycle count: 5
	     goto Lt_1_4              	// [0:0]  
BB8_PU1:	// 0x64
// BB:8 cycle count: 12
	     R4 = [BP + 1]            	// [0:54]  key_value
	     cmp R4, 3                	// [6:54]  
	     jne BB9_PU1              	// [8:54]  
BB36_PU1:	// 0x67
// BB:36 cycle count: 5
	     goto Lt_1_5              	// [0:0]  
BB9_PU1:	// 0x69
// BB:9 cycle count: 12
	     R4 = [BP + 1]            	// [0:54]  key_value
	     cmp R4, 4                	// [6:54]  
	     jne BB10_PU1             	// [8:54]  
BB35_PU1:	// 0x6c
// BB:35 cycle count: 5
	     goto Lt_1_6              	// [0:0]  
BB10_PU1:	// 0x6e
// BB:10 cycle count: 5
	     goto Lt_1_7              	// [0:54]  
Lt_1_1:	// 0x70
// BB:11 cycle count: 22
// 	.loc	0	58	0
//  55  		{
//  56  			//---加大音量
//  57  			case 0:
//  58  				if (VolumeValue<4)

LM15:
	     .stabn 68,0,58,LM15-_PlaySpeech
	     SR = SR & 63             	// [0:58]  
	     SR = SR | high6 _VolumeValue	// [2:58]  VolumeValue
	     R4 = offset _VolumeValue 	// [6:58]  VolumeValue
	     R4 = DS:[R4]             	// [10:58]  
	     cmp R4, 3                	// [16:58]  
	     ja L_1_19                	// [18:58]  
BB12_PU1:	// 0x78
// BB:12 cycle count: 34
// 	.loc	0	59	0
//  59  					VolumeValue+=1;					

LM16:
	     .stabn 68,0,59,LM16-_PlaySpeech
	     SR = SR & 63             	// [0:59]  
	     SR = SR | high6 _VolumeValue	// [2:59]  VolumeValue
	     R4 = offset _VolumeValue 	// [6:59]  VolumeValue
	     R4 = DS:[R4]             	// [10:59]  
	     R4 = R4 + 1              	// [16:59]  
	     SR = SR & 63             	// [18:59]  
	     SR = SR | high6 _VolumeValue	// [20:59]  VolumeValue
	     R3 = offset _VolumeValue 	// [24:59]  VolumeValue
	     DS:[R3] = R4             	// [28:59]  
L_1_19:	// 0x85
// BB:13 cycle count: 37
// 	.loc	0	60	0
//  60  				T_SACM_DVR1600_Volume(VolumeValue);

LM17:
	     .stabn 68,0,60,LM17-_PlaySpeech
	     SP = SP - 1              	// [0:60]  
	     SR = SR & 63             	// [2:60]  
	     SR = SR | high6 _VolumeValue	// [4:60]  VolumeValue
	     R4 = offset _VolumeValue 	// [8:60]  VolumeValue
	     R3 = DS:[R4]             	// [12:60]  
	     R4 = SP + 1              	// [18:60]  
	     [R4] = R3                	// [22:60]  
	     call _T_SACM_DVR1600_Volume	// [28:60]  T_SACM_DVR1600_Volume
BB14_PU1:	// 0x91
// BB:14 cycle count: 6
	     SP = SP + 1              	// [0:60]  
// 	.loc	0	61	0
//  61  			break;			

LM18:
	     .stabn 68,0,61,LM18-_PlaySpeech
	     jmp Lt_1_2               	// [2:61]  
Lt_1_3:	// 0x93
// BB:15 cycle count: 22
// 	.loc	0	64	0

⌨️ 快捷键说明

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