看雪论坛
发新帖

[求助]p66页and edx,7问题求助

WandererY 5天前 95

0040B851 mov eax,dword ptr [ebp-4]

0040B854 cdq

;若eax为负数,则0xFFFFFFFF & 0x00000007 <==>0x00000007,反之为0  //0xFFFFFFFF & 0x00000007 <==>0x00000007请问这个是怎么来的?为何反之为0?

0040B855 and edx,7

;使用eax加edx,如eax为负数则加7,反之加0

0040B858 add eax,edx

0040B85A sar eax,3

本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (4)
1
Lnairan 5天前
2
cdq  指令把edx的每一位置成eax的最高位
如果  eax  为负数,最高位就为  1,  执行  cdq  指令之后  edx  就为  0xFFFFFFFF
如果  eax  为正数,最高位就为  0,  执行  cdq  指令之后  edx  就为  0
WandererY 5天前
3
Lnairan cdq&nbsp; 指令把edx的每一位置成eax的最高位如果&nbsp; eax&nbsp; 为负数,最高位就为&nbsp; 1,&nbsp; 执行& ...
这个我知道  下面的呢
1
Lnairan 5天前
4
WandererY 这个我知道 下面的呢
向零取整,被除数为负除数为正结果为负数,负数向上取整(需要加上  (2^n)-1),正数向下取整(不变)
WandererY 4天前
5
Lnairan 向零取整,被除数为负除数为正结果为负数,负数向上取整(需要加上 (2^n)-1),正数向下取整(不变)
好的谢谢!
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 微信公众号:ikanxue
Time: 0.012, SQL: 9 / 京ICP备10040895号-17