پاسخ : اموزش DSP
**************
DEC loc16 :
این دستور 1 واحد از محتوای ادرس اشاره شده کم می کند.
INC loc16 :
این دستور یک واحد به محتوای ادرس اشاره شده اضافه می کند.
FLIP AX :
این دستور مکان بیتهای رجیستر AX را با هم عوض می کند .
ZALR ACC,loc16 :
این دستور 16 بیت پایین ACC را با مقدار 0x800 و 16 بیت بالا را با محتوای ادرس اشاره شده پر می کند.
CSB ACC :
این دستور بیتهای علامت را در رجیستر ACC با تعیین تقدم صفرها یا یکها در رجیستر ACC می شمارد و نتیجه را با کسر عدد یک از ان در رجیستر T قرار می دهد.
عملیات شمارش بیتهای علامت اغلب برای عملیات نرمالیزه کردن استفاده می شود همچنیین برای الگوریتمهایی مانند محاسبه جذر یک عدد،محاسبه وارون یک عدد یا جستجو برای اولین بیت یک در یک کلمه استفاده می شود.
**************
DEC loc16 :
این دستور 1 واحد از محتوای ادرس اشاره شده کم می کند.
Example ; VarA = VarA − 1;
DEC @VarA ; Decrement contents of VarA
DEC @VarA ; Decrement contents of VarA
INC loc16 :
این دستور یک واحد به محتوای ادرس اشاره شده اضافه می کند.
FLIP AX :
این دستور مکان بیتهای رجیستر AX را با هم عوض می کند .
temp = AX;
AX(bit 0) = temp(bit 15);
AX(bit 1) = temp(bit 14);
.
.
AX(bit 14) = temp(bit 1);
AX(bit 15) = temp(bit 0);
AX(bit 0) = temp(bit 15);
AX(bit 1) = temp(bit 14);
.
.
AX(bit 14) = temp(bit 1);
AX(bit 15) = temp(bit 0);
; Flip the contents of 32-bit variable VarA:
MOV AH,@VarA+0 ; Load AH with low 16 bits of VarA
MOV AL,@VarA+1 ; Load AL with high 16 bits of VarA
FLIP AL ; Flip contents of AL
FLIP AH ; Flip contents of AH
MOVL @VarA,ACC ; Store 32-bit result in VarA
MOV AH,@VarA+0 ; Load AH with low 16 bits of VarA
MOV AL,@VarA+1 ; Load AL with high 16 bits of VarA
FLIP AL ; Flip contents of AL
FLIP AH ; Flip contents of AH
MOVL @VarA,ACC ; Store 32-bit result in VarA
ZALR ACC,loc16 :
این دستور 16 بیت پایین ACC را با مقدار 0x800 و 16 بیت بالا را با محتوای ادرس اشاره شده پر می کند.
AH = [loc16];
AL = 0x8000;
AL = 0x8000;
; Calculate: Y = round(M*X << 1 + B << 16)
; Y, M, X, B are all Q15 numbers
SPM +1 ; Set product shift mode to << 1
MOV T,@M ; T = M (Q15)
MPY P,T,@X ; P = M * X (Q30)
ZALR ACC,@B ; ACC = B << 16 + 0x8000 (Q31)
ADDL ACC,P << PM ; Add P to ACC with shift (Q31)
MOV @Y,AH ; Store AH into Y (Q15)
; Y, M, X, B are all Q15 numbers
SPM +1 ; Set product shift mode to << 1
MOV T,@M ; T = M (Q15)
MPY P,T,@X ; P = M * X (Q30)
ZALR ACC,@B ; ACC = B << 16 + 0x8000 (Q31)
ADDL ACC,P << PM ; Add P to ACC with shift (Q31)
MOV @Y,AH ; Store AH into Y (Q15)
CSB ACC :
این دستور بیتهای علامت را در رجیستر ACC با تعیین تقدم صفرها یا یکها در رجیستر ACC می شمارد و نتیجه را با کسر عدد یک از ان در رجیستر T قرار می دهد.
T = 0, 1 sign bit
T = 1, 2 sign bits
.
.
T = 31, 32 sign bits
T = 1, 2 sign bits
.
.
T = 31, 32 sign bits
عملیات شمارش بیتهای علامت اغلب برای عملیات نرمالیزه کردن استفاده می شود همچنیین برای الگوریتمهایی مانند محاسبه جذر یک عدد،محاسبه وارون یک عدد یا جستجو برای اولین بیت یک در یک کلمه استفاده می شود.
; Normalize the contents of VarA:
MOVL ACC,@VarA ; Load ACC with contents of VarA
CSB ACC ; Count sign bits
LSLL ACC,T ; Logical shift left ACC by T(4:0)
MOVL @VarA,ACC ; Store result into VarA
MOVL ACC,@VarA ; Load ACC with contents of VarA
CSB ACC ; Count sign bits
LSLL ACC,T ; Logical shift left ACC by T(4:0)
MOVL @VarA,ACC ; Store result into VarA
دیدگاه