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

MSP430 一段汇编程序求解

大家好,最近看到一个汇编程序,因为汇编知识有些薄弱,有点眼花缭乱了,希望大家能帮我解答下,源程序描述是MSP430 16×16=>32 multiply

程序为:

//16×16=>32 multiply
//long mul16(register int x, register int y)

public mul16

RSEG CODE
mul16

#define x1 r9
#define z0 r14
#define z1 r15
#define x r12
#define y r13

push r9

clr z0 int z = 0
mov z0,z1 short x1 = 0
mov z0,x1 z = x; tst x if(x < 0) x1 = -1;
jge xbooth_2 mov #-1,x1
jmp xbooth_2

xbooth_6
add x,z1 addc x1,z0
xbooth_1
rla x
rlc x1
xbooth_2
rra y
jc xbooth_5
jne xbooth_1
jmp xbooth_4

xbooth_5
sub x,z1
subc x1,z0
xbooth_3
rla x
rlc x1
rra y
jnc xbooth_6
cmp #0FFFFh,y
jne xbooth_3

xbooth_4
mov z1,r12
mov z0,r13
pop r9

ret
end

描述上看这是个16位乘16位的函数,不明白的是没找到返回值是多少,是否是R12,R13

主程序调用 sum = mul16(x,y);的话,sum的结果是不是为x*y呢?这样的话能否用c语言的 MPYS = x; OP2 =  y;代替?

真心求助,请原谅我的无知

另外有没有在CCS上用汇编编程的完整例子,谢谢分享

灰小子:

不懂汇编。为什么不用C语言来实现呢?

msp430的硬件乘法器很实用,用起来也很简单

user151383853:

看最后, 应该是 Z0,Z1 吧

赞(0)
未经允许不得转载:TI中文支持网 » MSP430 一段汇编程序求解
分享到: 更多 (0)