这款芯片的16位数据的乘法和除法怎么弄
哪位大侠有没有相关的子程序(kf8f2020)最好是汇编的代码
谢谢
C语言直接写乘除即可: long multiply_16bit(unsigned int a, unsigned int b);
int divide_16bit(int dividend, int divisor);
long product;
int quotient;
// Main Function
int main()
{
unsigned int a = 1000;
unsigned int b = 2000;
int dividend = 10000;
int divisor = 200;
// 16位乘法
product = multiply_16bit(a, b);
printf("16位乘法结果: %u\n", product);
// 16位除法
quotient = divide_16bit(dividend, divisor);
printf("16位除法结果: %d\n", quotient);
while (1)
{
}
}
// 16位乘法函数
long multiply_16bit(unsigned int a, unsigned int b)
{
return (unsigned long)a * b;
}
// 16位除法函数
int divide_16bit(int dividend, int divisor)
{
if (divisor == 0)
{
// 处理除零错误
return 0;
}
return dividend / divisor;
} 汇编指令在lst文件中可以查看 感谢回复 没乘除法指令。你得用加减法拼凑 钟爱柳州 发表于 2025-8-25 08:47
long multiply_16bit(unsigned int a, unsigned int b);
int divide_16bit(int dividend, int divisor);
貌似这不是汇编吧,不过现在用汇编搞的话已经很少了 cooldog123pp 发表于 2025-8-25 18:32
貌似这不是汇编吧,不过现在用汇编搞的话已经很少了
用C编译以后在编译文件夹里面找到lst文件,搜函数名查看汇编代码 st文件里可以看到汇编程序,但不是很清楚,本想想直接调用,没成功,后来还是自己慢慢敲汇编代码实现了两个16位数据的除法、乘法、比较子程序。
总体来讲这款芯片对应的指令较少还是容易上手的。最搞的是sub r0,r1这指令与常规的不一样。
页:
[1]