如何用十六位乘法指令完成三十二位无符号数乘法(结果64位)高手请进。。。急!!!!!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/09/23 13:25:50
使用MUl指令,完成双字无符号数乘法程序,要求乘数和被乘数从键盘输入,结果显示于屏幕上

怎么无人回答啊?同求啊!
找了好久找到一个类似的:

4. 无符号整数乘法,乘数为32bit,结果为64bit
提示:32bit整数分解为16bit相乘
void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower );
void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower )
{
DWORD ah,al,bh,bl
ah = dwFirst>>16;
al = dwFirst&0xffff;
bh = dwSecond>>16;
bl = dwSecond&0xffff;
dwHigh = ah*bh;
dwLower = al*bl;
DWORD tmp1 = ah*bl;
DWORD tmp2 = al*bh;
dwHigh += tmp1>>16;
dwHigh += tmp2>>16;
DWORD tmp3 = (tmp1&0xffff) + (tmp2&0xffff) + (dwLower>>16);
dwHigh += tmp3>>16;
dwLower &= 0xffff;
dwLower |= (tmp3&0xffff)<<16;
}