📄 text1.asm
字号:
// 62 //---减小音量
// 63 case 1:
// 64 if(VolumeValue>0)
LM19:
.stabn 68,0,64,LM19-_PlaySpeech
SR = SR & 63 // [0:64]
SR = SR | high6 _VolumeValue // [2:64] VolumeValue
R4 = offset _VolumeValue // [6:64] VolumeValue
R4 = DS:[R4] // [10:64]
cmp R4, 0 // [16:64]
je L_1_20 // [18:64]
BB16_PU1: // 0x9b
// BB:16 cycle count: 34
// .loc 0 65 0
// 65 VolumeValue-=1;
LM20:
.stabn 68,0,65,LM20-_PlaySpeech
SR = SR & 63 // [0:65]
SR = SR | high6 _VolumeValue // [2:65] VolumeValue
R4 = offset _VolumeValue // [6:65] VolumeValue
R4 = DS:[R4] // [10:65]
R4 = R4 - 1 // [16:65]
SR = SR & 63 // [18:65]
SR = SR | high6 _VolumeValue // [20:65] VolumeValue
R3 = offset _VolumeValue // [24:65] VolumeValue
DS:[R3] = R4 // [28:65]
L_1_20: // 0xa8
// BB:17 cycle count: 37
// .loc 0 66 0
// 66 T_SACM_DVR1600_Volume(VolumeValue);
LM21:
.stabn 68,0,66,LM21-_PlaySpeech
SP = SP - 1 // [0:66]
SR = SR & 63 // [2:66]
SR = SR | high6 _VolumeValue // [4:66] VolumeValue
R4 = offset _VolumeValue // [8:66] VolumeValue
R3 = DS:[R4] // [12:66]
R4 = SP + 1 // [18:66]
[R4] = R3 // [22:66]
call _T_SACM_DVR1600_Volume // [28:66] T_SACM_DVR1600_Volume
BB18_PU1: // 0xb4
// BB:18 cycle count: 6
SP = SP + 1 // [0:66]
// .loc 0 67 0
// 67 break;
LM22:
.stabn 68,0,67,LM22-_PlaySpeech
jmp Lt_1_2 // [2:67]
Lt_1_4: // 0xb6
// BB:19 cycle count: 9
// .loc 0 70 0
// 68 //---暂停播放
// 69 case 2:
// 70 T_SACM_DVR1600_Pause();
LM23:
.stabn 68,0,70,LM23-_PlaySpeech
call _T_SACM_DVR1600_Pause // [0:70] T_SACM_DVR1600_Pause
BB20_PU1: // 0xb8
// BB:20 cycle count: 4
// .loc 0 71 0
// 71 break;
LM24:
.stabn 68,0,71,LM24-_PlaySpeech
jmp Lt_1_2 // [0:71]
Lt_1_5: // 0xb9
// BB:21 cycle count: 9
// .loc 0 74 0
// 72 //---继续播放
// 73 case 3:
// 74 T_SACM_DVR1600_Resume();
LM25:
.stabn 68,0,74,LM25-_PlaySpeech
call _T_SACM_DVR1600_Resume // [0:74] T_SACM_DVR1600_Resume
BB22_PU1: // 0xbb
// BB:22 cycle count: 4
// .loc 0 75 0
// 75 break;
LM26:
.stabn 68,0,75,LM26-_PlaySpeech
jmp Lt_1_2 // [0:75]
Lt_1_6: // 0xbc
// BB:23 cycle count: 14
// .loc 0 78 0
// 76 //---有非音量键按下退出等待键盘处理
// 77 case 4:
// 78 bit_exit=0x55;
LM27:
.stabn 68,0,78,LM27-_PlaySpeech
R4 = 85 // [0:78]
[BP + 0] = R4 // [4:78] bit_exit
// .loc 0 79 0
// 79 break;
LM28:
.stabn 68,0,79,LM28-_PlaySpeech
jmp Lt_1_2 // [10:79]
Lt_1_7: // 0xc0
// BB:24 cycle count: 22
// .loc 0 81 0
// 80 default:
// 81 data2=0;
LM29:
.stabn 68,0,81,LM29-_PlaySpeech
R3 = 0 // [0:81]
SR = SR & 63 // [2:81]
SR = SR | high6 _data2 // [4:81] data2
R4 = offset _data2 // [8:81] data2
DS:[R4] = R3 // [12:81]
// .loc 0 82 0
// 82 break;
LM30:
.stabn 68,0,82,LM30-_PlaySpeech
jmp Lt_1_2 // [18:82]
Lt_1_2: // 0xc8
// BB:25 cycle count: 14
// .loc 0 84 0
// 83 }
// 84 if (bit_exit==0x55)
LM31:
.stabn 68,0,84,LM31-_PlaySpeech
R4 = [BP + 0] // [0:84] bit_exit
cmp R4, 85 // [6:84]
jne L_1_21 // [10:84]
BB26_PU1: // 0xcc
// BB:26 cycle count: 4
// .loc 0 85 0
// 85 break;
LM32:
.stabn 68,0,85,LM32-_PlaySpeech
jmp Lt_1_8 // [0:85]
L_1_21: // 0xcd
// BB:27 cycle count: 9
// .loc 0 86 0
// 86 T_SACM_DVR1600_ServiceLoop(); //---在汇编中调用解码库函数
LM33:
.stabn 68,0,86,LM33-_PlaySpeech
call _T_SACM_DVR1600_ServiceLoop // [0:86] T_SACM_DVR1600_ServiceLoop
BB28_PU1: // 0xcf
// BB:28 cycle count: 9
// .loc 0 87 0
// 87 FillRamBuf(); //---手动模式下填写播放内容 入口:无 出口:无
LM34:
.stabn 68,0,87,LM34-_PlaySpeech
call _FillRamBuf // [0:87] FillRamBuf
BB29_PU1: // 0xd1
// BB:29 cycle count: 9
// .loc 0 88 0
// 88 T_SACM_DVR1600_Status(); //---在汇编中调用播放状态库函数 返回播放状态
LM35:
.stabn 68,0,88,LM35-_PlaySpeech
call _T_SACM_DVR1600_Status // [0:88] T_SACM_DVR1600_Status
BB30_PU1: // 0xd3
// BB:30 cycle count: 5
goto L_1_17 // [0:88]
L_1_18: // 0xd5
Lt_1_8: // 0xd5
// BB:31 cycle count: 9
// .loc 0 91 0
// 89 }
// 90 //---播放结束后复位一些用到的寄存器
// 91 T_Stop_Play();
LM36:
.stabn 68,0,91,LM36-_PlaySpeech
call _T_Stop_Play // [0:91] T_Stop_Play
BB32_PU1: // 0xd7
// BB:32 cycle count: 16
SP = SP + 2 // [0:91]
pop BP from [SP] // [2:91]
retf // [8:91]
LBE2:
.endp
.stabs "Volume:p4",160,0,0,5
.stabs "SongIndex:p4",160,0,0,6
.stabn 192,0,0,LBB2-_PlaySpeech
.stabs "key_value:4",128,0,0,1
.stabs "bit_exit:4",128,0,0,0
.stabn 224,0,0,LBE2-_PlaySpeech
LME2:
.stabf LME2-_PlaySpeech
.code
.stabs "main:F1",36,0,0,_main
// Program Unit: main
.public _main
_main: .proc
.stabn 0xa6,0,0,2
// uiErr = 0
// i = 1
// old_frame_pointer = 2
// return_address = 3
// .loc 0 96 0
// 92 }
// 93
// 94
// 95 main()
// 96 {
LM37:
.stabn 68,0,96,LM37-_main
BB1_PU2: // 0xda
// BB:1 cycle count: 82
push BP to [SP] // [0:96]
SP = SP - 2 // [6:96]
BP = SP + 1 // [8:96]
LBB3:
// .loc 0 97 0
// 97 U16 uiErr=0,i;
LM38:
.stabn 68,0,97,LM38-_main
R4 = 0 // [12:97]
[BP + 0] = R4 // [14:97] uiErr
// .loc 0 98 0
// 98 VolumeValue=0;
LM39:
.stabn 68,0,98,LM39-_main
R3 = 0 // [20:98]
SR = SR & 63 // [22:98]
SR = SR | high6 _VolumeValue // [24:98] VolumeValue
R4 = offset _VolumeValue // [28:98] VolumeValue
DS:[R4] = R3 // [32:98]
// .loc 0 99 0
// 99 data1=0;data2=0;
LM40:
.stabn 68,0,99,LM40-_main
R3 = 0 // [38:99]
SR = SR & 63 // [40:99]
SR = SR | high6 _data1 // [42:99] data1
R4 = offset _data1 // [46:99] data1
DS:[R4] = R3 // [50:99]
R3 = 0 // [56:99]
SR = SR & 63 // [58:99]
SR = SR | high6 _data2 // [60:99] data2
R4 = offset _data2 // [64:99] data2
DS:[R4] = R3 // [68:99]
// .loc 0 101 0
// 100
// 101 for (i=0;i<57;i++)
LM41:
.stabn 68,0,101,LM41-_main
R4 = 0 // [74:101]
[BP + 1] = R4 // [76:101] i
L_2_2: // 0xf7
// BB:2 cycle count: 12
R4 = [BP + 1] // [0:101] i
cmp R4, 56 // [6:101]
ja L_2_3 // [8:101]
BB3_PU2: // 0xfa
// BB:3 cycle count: 53
// .loc 0 103 0
// 102 {
// 103 PlaySpeech(i,VolumeValue);
LM42:
.stabn 68,0,103,LM42-_main
SP = SP - 2 // [0:103]
R3 = [BP + 1] // [2:103] i
R4 = SP + 1 // [8:103]
[R4] = R3 // [12:103]
SR = SR & 63 // [18:103]
SR = SR | high6 _VolumeValue // [20:103] VolumeValue
R4 = offset _VolumeValue // [24:103] VolumeValue
R3 = DS:[R4] // [28:103]
R4 = SP + 2 // [34:103]
[R4] = R3 // [38:103]
call _PlaySpeech // [44:103] PlaySpeech
BB4_PU2: // 0x10a
// BB:4 cycle count: 2
SP = SP + 2 // [0:103]
Lt_2_1: // 0x10b
// BB:5 cycle count: 18
// .loc 0 101 0
LM43:
.stabn 68,0,101,LM43-_main
R4 = [BP + 1] // [0:101] i
R4 = R4 + 1 // [6:101]
[BP + 1] = R4 // [8:101] i
jmp L_2_2 // [14:101]
L_2_3: // 0x10f
// BB:6 cycle count: 35
// .loc 0 106 0
// 104 }
// 105
// 106 PlaySpeech(1,1);
LM44:
.stabn 68,0,106,LM44-_main
SP = SP - 2 // [0:106]
R3 = 1 // [2:106]
R4 = SP + 1 // [4:106]
[R4] = R3 // [8:106]
R3 = 1 // [14:106]
R4 = SP + 2 // [16:106]
[R4] = R3 // [20:106]
call _PlaySpeech // [26:106] PlaySpeech
BB7_PU2: // 0x11a
// BB:7 cycle count: 2
SP = SP + 2 // [0:106]
L_2_4: // 0x11b
// BB:8 cycle count: 4
// .loc 0 107 0
// 107 while(1) ;
LM45:
.stabn 68,0,107,LM45-_main
jmp L_2_4 // [0:107]
L_2_5: // 0x11c
// BB:9 cycle count: 16
SP = SP + 2 // [0:107]
pop BP from [SP] // [2:107]
retf // [8:107]
LBE3:
.endp
.stabn 192,0,0,LBB3-_main
.stabs "uiErr:4",128,0,0,0
.stabs "i:4",128,0,0,1
.stabn 224,0,0,LBE3-_main
LME3:
.stabf LME3-_main
.external _InilSpeech
.external _T_SACM_DVR1600_Status
.external _T_SACM_DVR1600_Volume
.external _T_SACM_DVR1600_Pause
.external _T_SACM_DVR1600_Resume
.external _T_SACM_DVR1600_ServiceLoop
.external _FillRamBuf
.external _T_Stop_Play
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -