📄 fmult.asm
字号:
;/*
; * fmult()
; *
; * returns the integer product of the 14-bit integer "an" and
; * "floating point" representation (4-bit exponent, 6-bit mantessa) "srn".
; */
;static short
;fmult(
; int an,
; int srn)
;{
; short anmag, anexp, anmant;
; short wanexp /*wanmag*/;
; short wanmant;
; short retval;
;
; anmag = (an > 0) ? an : ((-an) & 0x1FFF);
; anexp = quan(anmag, power2, 15) - 6;
; anmant = (anmag == 0) ? 32 :
; (anexp >= 0) ? shr(anmag ,anexp) : shl(anmag , -anexp); //not necessary
; wanexp = anexp + ((srn >> 6) & 0xF) - 13;
;
; wanmant = (anmant * (srn & 077) + 0x30) >> 4;
; retval = (wanexp >= 0) ? ((wanmant << wanexp) & 0x7FFF) :shr(wanmant,-wanexp);
; //(wanmant >> -wanexp);
;
; return (((an ^ srn) < 0) ? -retval : retval);
;}
;-----------------------------------------------------------------------------
.title "fmult.asm"
.include "g723_global.asm"
.include "g723tab_h.asm"
.include "g723_stat.asm"
.mmregs
arg_an .set 0
arg_srn .set 1
temp_anmant .set 2
temp_anexp .set 3
temp_r .set 4
temp_wanexp .set 5
temp_wanmant .set 6
.text
fmult: ;A=an, B=srn
frame #-7
rsbx FRCT
bcd an1, AGT
stl A, *SP(arg_an)
stl B, *SP(arg_srn)
neg A
and #0x1fff, A
an1:
;
stm #tab_power2, AR3
ld A, B
pshm AR4
pshm AR5
call quan
popm AR5
popm AR4
sub #6, B
stl B, *SP(temp_anexp)
bc anmag1, AEQ ;A=anmag
;nop
;bc anexp1, BLT
neg B
stlm B, T
nop
nop
norm A ;A=anmant
b end_anmag
anmag1:
ld #32, A ;A=anmant
end_anmag
stl A, *SP(temp_anmant) ;A=anmant
nop
ld *SP(arg_srn), -6, A
and #0xf, A
sub #13, A
add *SP(temp_anexp), A ;A=wanexp
stl A, *SP(temp_wanexp)
ld *SP(arg_srn), A
and #077, A ;077是8进制
nop
nop
nop
nop
stl A, *SP(temp_r) ;临时变量,在不同时期存储不同变量的值
ld *SP(temp_anmant), 16, A
mpya *SP(temp_r)
add #0x30, B
sfta B, -4 ;B=wanmant
stl B, *SP(temp_wanmant)
ld *SP(temp_wanexp), A
ld #-16, B
max B
stlm B, T
nop
nop
ld *SP(temp_wanexp), A
ld *SP(temp_wanmant), B
norm B
nop
xc 2, AGEQ
and #0x7fff, B ;B=retval
stl B, *SP(temp_r)
ld *SP(arg_an), A
ld *SP(arg_srn),B
;xor *SP(arg_srn), A
xor B, A
nop
ld *SP(temp_r), B
xc 1, ALT
neg B
ld B, A
frame #7
ret
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -