今天发现易语言长整数会把最低位的一个字节四舍五入,这样就导致计算有问题了。同时可以取出低位合高位值。
直接复杂代码到易语言里即可
.版本 2
.子程序 大数乘法, 长整数型, , 返回两个数相乘的值
.参数 乘数, 整数型
.参数 被乘数, 整数型
.参数 低位值, 整数型, 参考, 两个数相乘取42亿以内的值
.参数 高位值, 整数型, 参考, 两个数相乘取超出42亿的值
.局部变量 ext, 长整数型
置入代码 ({ 139, 69, 8 }) ' mov eax,dword [ebp+0x8]
置入代码 ({ 139, 77, 12 }) ' mov ecx,dword [ebp+0xc]
置入代码 ({ 247, 225 }) ' mul ecx
置入代码 ({ 139, 93, 16 }) ' mov ebx,dword [ebp+0x10]
置入代码 ({ 137, 3 }) ' mov dword [ebx],eax
置入代码 ({ 139, 125, 20 }) ' mov edi,dword [ebp+0x14]
置入代码 ({ 137, 23 }) ' mov dword [edi],edx
置入代码 ({ 137, 85, 252 }) ' mov dword [ebp-0x4],edx
置入代码 ({ 137, 69, 248 }) ' mov dword [ebp-0x8],eax
返回 (ext)
|