📄 speech.lst
字号:
Sunplus u'nSP Assembler - Ver. 1.14.4
Listing File Has Been Relocated
// D:\PROGRA~1\Sunplus\UNSPID~1.3\\be::0.9.14
//-----------------------------------------------------------
// Compiling E:\A1600\speech.c (C:\DOCUME~1\dqs\LOCALS~1\Temp\ccB.3)
//-----------------------------------------------------------
//-----------------------------------------------------------
// Options:
//-----------------------------------------------------------
// Target:unSP, ISA:ISA_1.1, Pointer Size:32
// -O0 (Optimization level)
// -g2 (Debug level)
// -m1 (Report warnings)
//-----------------------------------------------------------
00009A72 .code
Ltext0:
0000017A .iram
.public _StatusData
_StatusData:
0000017A 00 00 .dw 1 dup(0)
.public _toteldata
_toteldata:
0000017B 00 00 .dw 1 dup(0)
.public _data1
_data1:
0000017C 00 00 .dw 1 dup(0)
.public _data2
_data2:
0000017D 00 00 .dw 1 dup(0)
.public _data3
_data3:
0000017E 00 00 .dw 1 dup(0)
.public _data4
_data4:
0000017F 00 00 .dw 1 dup(0)
.public _VolumeValue
_VolumeValue:
00000180 00 00 .dw 1 dup(0)
00009A72 .code
// Program Unit: KeyValue
.public _KeyValue
_KeyValue: .proc
// old_frame_pointer = 0
// return_address = 1
// //.file 0 "E:\A1600\speech.c"
// .loc 0 29 0
// 25 //入口:无
// 26 //出口:处理过的键值
// 27 //-------------------------
// 28 U16 KeyValue(void)
// 29 {
LM1:
BB1_PU0: // 0x0
// BB:1 cycle count: 68
00009A72 88 DA push BP to [SP] // [0:29]
00009A73 08 0B 01 00 BP = SP + 1 // [6:29]
// .loc 0 30 0
// 30 data1+=1;
LM2:
00009A75 7F BC SR = SR & 63 // [10:30]
00009A76 0E AD 00 00 SR = SR | high6 _data1 // [12:30] data1
00009A78 0C 99 7C 01 R4 = offset _data1 // [16:30] data1
00009A7A E4 98 R4 = DS:[R4] // [20:30]
00009A7B 41 08 R4 = R4 + 1 // [26:30]
00009A7C 7F BC SR = SR & 63 // [28:30]
00009A7D 0E AD 00 00 SR = SR | high6 _data1 // [30:30] data1
00009A7F 0B 97 7C 01 R3 = offset _data1 // [34:30] data1
00009A81 E3 D8 DS:[R3] = R4 // [38:30]
// .loc 0 31 0
// 31 if (data1>=0x5f53)
LM3:
00009A82 7F BC SR = SR & 63 // [44:31]
00009A83 0E AD 00 00 SR = SR | high6 _data1 // [46:31] data1
00009A85 0C 99 7C 01 R4 = offset _data1 // [50:31] data1
00009A87 E4 98 R4 = DS:[R4] // [54:31]
00009A88 0C 49 52 5F cmp R4, 24402 // [60:31]
00009A8A 14 8E jbe L_0_1 // [64:31]
BB2_PU0: // 0x19
// BB:2 cycle count: 52
// .loc 0 33 0
// 32 {
// 33 data1=0;
LM4:
00009A8B 40 96 R3 = 0 // [0:33]
00009A8C 7F BC SR = SR & 63 // [2:33]
00009A8D 0E AD 00 00 SR = SR | high6 _data1 // [4:33] data1
00009A8F 0C 99 7C 01 R4 = offset _data1 // [8:33] data1
00009A91 E4 D6 DS:[R4] = R3 // [12:33]
// .loc 0 34 0
// 34 data2+=1;
LM5:
00009A92 7F BC SR = SR & 63 // [18:34]
00009A93 0E AD 00 00 SR = SR | high6 _data2 // [20:34] data2
00009A95 0C 99 7D 01 R4 = offset _data2 // [24:34] data2
00009A97 E4 98 R4 = DS:[R4] // [28:34]
00009A98 41 08 R4 = R4 + 1 // [34:34]
00009A99 7F BC SR = SR & 63 // [36:34]
00009A9A 0E AD 00 00 SR = SR | high6 _data2 // [38:34] data2
00009A9C 0B 97 7D 01 R3 = offset _data2 // [42:34] data2
00009A9E E3 D8 DS:[R3] = R4 // [46:34]
L_0_1: // 0x2d
// BB:3 cycle count: 30
// .loc 0 36 0
// 35 }
// 36 return data2;
LM6:
00009A9F 7F BC SR = SR & 63 // [0:36]
00009AA0 0E AD 00 00 SR = SR | high6 _data2 // [2:36] data2
00009AA2 0C 99 7D 01 R4 = offset _data2 // [6:36] data2
00009AA4 E4 92 R1 = DS:[R4] // [10:36]
00009AA5 88 98 pop BP from [SP] // [16:36]
00009AA6 90 9A retf // [22:36]
.endp
LME1:
00009AA7 .code
// Program Unit: PlaySpeech
.public _PlaySpeech
_PlaySpeech: .proc
// key_value = 0
// bit_exit = 1
// old_frame_pointer = 2
// return_address = 3
// .loc 0 46 0
// 42 //入口:Volume(音量0--3) SongIndex(歌曲索引)
// 43 //出口:无
// 44 //----------------------------
// 45 U16 PlaySpeech(U16 Volume,U16 SongIndex)
// 46 {
LM7:
BB1_PU1: // 0x35
// BB:1 cycle count: 71
00009AA7 88 DA push BP to [SP] // [0:46]
00009AA8 42 20 SP = SP - 2 // [6:46]
00009AA9 08 0B 01 00 BP = SP + 1 // [8:46]
LBB2:
// .loc 0 47 0
// 47 U16 key_value=0,bit_exit=00;
LM8:
00009AAB 40 98 R4 = 0 // [12:47]
00009AAC 00 D8 [BP + 0] = R4 // [14:47] key_value
00009AAD 40 98 R4 = 0 // [20:47]
00009AAE 01 D8 [BP + 1] = R4 // [22:47] bit_exit
// .loc 0 49 0
// 48
// 49 InilSpeech(SongIndex,Volume); //---语音播放初始化 入口:音量(0-3)和歌曲索引 出口:无
LM9:
00009AAF 42 20 SP = SP - 2 // [28:49]
00009AB0 06 96 R3 = [BP + 6] // [30:49] SongIndex
00009AB1 08 09 01 00 R4 = SP + 1 // [36:49]
00009AB3 C4 D6 [R4] = R3 // [40:49]
00009AB4 05 96 R3 = [BP + 5] // [46:49] Volume
00009AB5 08 09 02 00 R4 = SP + 2 // [52:49]
00009AB7 C4 D6 [R4] = R3 // [56:49]
00009AB8 40 F0 6D 99 call _InilSpeech // [62:49] InilSpeech
BB2_PU1: // 0x48
// BB:2 cycle count: 11
00009ABA 42 00 SP = SP + 2 // [0:49]
// .loc 0 50 0
// 50 T_SACM_DVR1600_Status(); //---在汇编中调用播放状态库函数 返回播放状态
LM10:
00009ABB 40 F0 57 9A call _T_SACM_DVR1600_Status // [2:50] T_SACM_DVR1600_Status
L_1_1: // 0x4b
// BB:3 cycle count: 24
// .loc 0 51 0
// 51 while((StatusData&0x03)!=0x00)
LM11:
00009ABD 7F BC SR = SR & 63 // [0:51]
00009ABE 0E AD 00 00 SR = SR | high6 _StatusData // [2:51] StatusData
00009AC0 0C 99 7A 01 R4 = offset _StatusData // [6:51] StatusData
00009AC2 E4 98 R4 = DS:[R4] // [10:51]
00009AC3 43 B8 R4 = R4 & 3 // [16:51]
00009AC4 40 48 cmp R4, 0 // [18:51]
00009AC5 11 5E je L_1_2 // [20:51]
BB4_PU1: // 0x54
// BB:4 cycle count: 9
// .loc 0 87 0
// 83 // break;
// 84 // }
// 85 // if (bit_exit==0x55)
// 86 // break;
// 87 T_SACM_DVR1600_ServiceLoop(); //---在汇编中调用解码库函数
LM12:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -