汇编语言cdq求解

[复制链接]
查看11 | 回复2 | 2013-8-3 12:35:20 | 显示全部楼层 |阅读模式
CDQ 把EAX 的 31位 复制到EDX的每个位去 如果EAX = 0x0000000A那么执行CDQ后 EDX = 0x00000000所谓的自身减去扩展高位就是这样 不过应该是自身减去扩展最高位 这书说的有点问题 不靠谱......
回复

使用道具 举报

千问 | 2013-8-3 12:35:20 | 显示全部楼层
首先在进行有符号除法运算的时候,编译器会优化,不会用idiv。在除数是2的N次的情况下,可以通过移位运算来实现。但是有一个问题,那就是符号位的修正。也就是这里的sub eax, edx的作用。被除数为正数的情况下,eax - edx值不变。在被除数为负数的情况下,由于C语言的除法是向零取整,需要在商为负的情况做+1调整,减去-1等同于+1(这个时候edx就是...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行