首页
社区
课程
招聘
[求助]IMUL到底怎么运算的?
发表于: 2011-3-13 13:48 6058

[求助]IMUL到底怎么运算的?

2011-3-13 13:48
6058
小弟对IMUL的规则不太了解。希望大侠解惑。请解释为啥88888889*34F4A以后EAX是3334BE9A,EDX却是FFFE7499。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 49
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
eax = 88888889h
ecx = 34F4Ah
IMUL为有符号乘
eax被视为有符号数
计算机中采用二进制补码存储数据
eax = 88888889h =
10001000100010001000100010001001b(补码)
求其原码 符号位不变 其余位取反加1
11110111011101110111011101110111b(原码)
及-77777777h = -2004318071d
ecx = 34F4Ah =    00000000000000110100111101001010b
其为正数原码与补码相同
34F4Ah = 216906d

-2004318071d * 216906d = -434748615508326d

-434748615508326d =
10000000000000011000101101100110 11001100110010110100000101100110d(原码)
求其补码 符号位不变 其余位取反加1
11111111111111100111010010011001 00110011001101001011111010011010d(补码)
及FFFE7499 3334BE9Ah
2011-3-17 17:32
0
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
imul:
首先看首位是不是1,是,将首位置为0,计算出结果后用0减去
mul
:
一个字节相乘存在ax
两个字节相乘存在eax
四个存在eax和edx中,eax为高位
2015-5-8 22:53
0
游客
登录 | 注册 方可回帖
返回
//