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

📄 step.asm

📁 利用G.723协议在DSP实现音频信号的压缩与解压缩实验
💻 ASM
字号:
;-------------------------------------------------------------------
; * step_size()
; *
; * computes the quantization step size of the adaptive quantizer.
; *
; */
;int
;step_size(
;	struct g723_state *state_ptr)
;{
;	int		y;
;	int		dif;
;	int		al;
;
;	if (state_ptr->ap >= 256)
;		return (state_ptr->yu);
;	else {
;		y = state_ptr->yl >> 6;
;		dif = state_ptr->yu - y;
;		al = state_ptr->ap >> 2;
;		if (dif > 0)
;			y += (dif * al) >> 6;
;		else if (dif < 0)
;			y += (dif * al + 0x3F) >> 6;
;		return (y);
;	}
;}
;---------------------------------------------------------------------
             .title   "step.asm"
             .include "g723_global.asm"
             
             .include "g723_stat.asm"
             .mmregs


temp_dif     .set      0             
             .text
         ;AR7=state_ptr
         
step_size:
         frame  #-1
         mvmm	AR7, AR5
         mar    *+AR5(ap)
         ld     #256, A  
         sub    *AR5, A
         bc     ret_yu, ALEQ
           
         mvmm   AR7, AR5
         mar    *+AR5(yl)
         dld    *AR5, A
         sfta   A, -6

         stlm   A, AR4   ; AR4 = y
         ld     A, B
         mvmm   AR7, AR5
         mar    *+AR5(yu)
         sub    *AR5, B   ;B=y   
         neg    B        ; B = dif
         stl    B, *SP(temp_dif)
         mvmm   AR7, AR5
         mar    *+AR5(ap)
         ld     *AR5, -2, B ;B = al
         stlm   B, T  ; T=al
         nop
         nop   
         ld     *SP(temp_dif), 16, A
         mpya   B           ;B=dif*al
         ld     *SP(temp_dif), A  ;A=dif
         bc     end_ret_y1, AEQ  ; if(dif<=0) then to ret_y1           
         
         xc     2, ALT  ;if dif<0
         add    #0x3f, B

         ldm    AR4, A      ;A = y   
         add    B, -6, A    ;A = y         
         frame   #1
         ret
         
end_ret_y1
         ldm    AR4, A      ;A = y  
         frame   #1
         ret
ret_yu:  
         mvmm   AR7, AR5
         mar    *+AR5(yu)   ;*AR5 = state_ptr->yu
         ld     *AR5, A
end_ret_yu:
         frame   #1
         ret            
             
             .end

⌨️ 快捷键说明

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