#include "MSP430FR5739.h"
int main( void )
{
unsigned char value1,value2;
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
//载入第一个操作数
MPY=0X1234;
//载入第二个操作数
OP2=0X5678;
//有符号乘加运算的两个操作数
value1=0x12;
value2=0x96;
//判断符号扩展位
if(value1>=0x80)
MACS=0xff00|value1;
else
MACS=value1;
if(value2>=0x80)
OP2=0XFF00|value2;
else
OP2=value2;
//OP2载入操作数后,MACS与OP2相乘后的结果再与之前的RESLO和RESHI中的值相加
__bis_SR_register(LPM4_bits);
//return 0;
}
我参考《MCU工程师炼成记》写了个乘法程序,如上,发现问题。
0x1234*0x5678=0x6260060.
此帖出自
小平头技术问答
我猜测 0xff96是个16位有符号数,是个负数.
一周热门 更多>