TI中文支持网
TI专业的中文技术问题搜集分享网站

请教一个关于CCS用ASM编程做带符号除法的小问题

就是想做一个32位被除数除以一个16位除数的小实验。
然后保留商和余数。
我刚学这些东西,对指令不太熟悉,所以现在写到这些就卡住了。。。。
其中AR1存放被除数,AR2存放除数,然后AR5和AR6存最后的余数和商。
.MMREGS
 .GLOBAL _MAIN
 .TEXT
_MAIN:
 XOR A
 XOR B
 STM #0100H,AR1
 STM #0106H,AR2
 STM #0110H,AR3
 STM #0120H,AR4
 STM #0130H,AR5
 STM #0132H,AR6
 LD *AR1+,A
 MPYA *AR2
 NOP
 
 
 
 ABS A
 RPT #15
 SUBC *AR2,A
 STH A,*AR4
 STL A,*AR3
 XOR A
 ADD *AR4,16,A
 ADD *AR1,A
 RPT #15
 SUBC *AR2,A
 
 
 XC 1,BLT
 NEG A
 STH A,*AR5
 STL A,*AR6+
 NOP
 B $
在添加MPYA和下面的XC以及NEG这三条指令之前,正数的除法还是能简单做一下的。但还是有很多问题,就像被除数最高位不能是1的问题。
所以~~请教一下
Shine:

rts库支持除法,直接用c语言写就可以了。

Xianhao Bai:

回复 Shine:

谢谢您,但是我们现在课程设计要求用这个ASM,所以如果用ASM的话,您知道怎么修改一下吗

Shine:

回复 Xianhao Bai:

可以参考rts.lib里的除法源码C:\ti\ccsv6\tools\compiler\c5500_4.4.1\lib\rtssrc.zip

赞(0)
未经允许不得转载:TI中文支持网 » 请教一个关于CCS用ASM编程做带符号除法的小问题
分享到: 更多 (0)