实验2.2 除法计算
DSP并没有除法指令,回想一下我们用在稿纸上演算除法列的竖式,实际是一种移位减法,DSP中也是通过做多次减法的办法来做除法。下面例子是把用除以10的办法二进制数转成BCD码例子:
*********************************
*16进制转BCD码
*********************************
.mmregs
.global CodeStart
.data
x: .word 1234 ;待转换的数字
y: .word 10 ;除数
z: .word 0Fh,0Fh,0Fh,0Fh,0Fh;结果区,每位BCD存一个字,
;初始化为F因为实验板的数码管不显示F
.text
CodeStart:
LD #x,DP ;设置DP
LD x,A ;被除数
STM #z,AR1 ;结果区指针
loop:
RPT #15 ;执行完16次减法后,A的高16位是余数
SUBC y,A ;低16位是商
STH A,*AR1+ ;余数保存到Z
AND #0FFFFH,A ;掩盖掉高16位,保留商值
BC loop,ANEQ ;继续做除法直到商为0
end: B end
练习:
练习其他算术指令
其它参考:
spru172c:TMS320C54x DSP Reference Set Volume 2: Mnemonic Instruction
Set,2.1 Arithmetic Operations
这个资料对每个指令都有详细说明。也可以在Help中的TMS320C54x DSP Mnemonic Instruction
Set中查询或搜索相关指令。
|