11-08除法

除数位-2的幂

和除数是2的幂一样,但是最后多一个neg取反
定式:

cdq
and edx, immA
add eax, immB
neg eax

还原:

和之前的还原一样,最后加上符号就可以了

除数为非2的幂

第一种情况

**定式:**

mov eax, MagicNumber(> 7fffffffh)
imul reg
sar edx, immA
mov reg, edx
shr, 1fh
add edx, reg

还原:

利用公式 |o| = 2^n / 2^32 - MagicNumber
可以得除数的绝对值

第二种情况

定式:

mov eax, MagicNumber( <= 7fffffffh)
imul reg
sub edx, reg
sar edx, immA
mov reg, edx
shr reg, 1fh
add edx, reg

遇到以上定式代码,MagicNumber为整数,而却乘法和移位中间见到了sub指令来调整,可以判定除数为负,我们可以利用公式还原:

|o| = 2^n / 2^32 - MagicNumber
可以得除数的绝对值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 代码分析:分段,以块为单位看代码,逐个击破 流水线优化:在不影响结果的前提下,排列指令顺序,提高并行程度 除法 变...
    五行猫阅读 1,021评论 0 1
  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 38,125评论 8 114
  • 我们称计算机CPU是32位或者64位,有很多书上说之所以叫32位计算机是因为寄存器的宽度是32位,这样说是不准确的...
    1301c72阅读 1,267评论 0 3
  • Version:1.0.0 Objective-C工程及代码规范 一、工程总述 1.工程名称为英文 工程名称必须为...
    小霍同学阅读 594评论 2 4
  • 这幅图应该就能解释今天一天的内容所在。 一觉睡到中午,老妈一早已回外婆家。我睁眼就在盘算着午饭怎么解决,心里念叨着...
    jenny911阅读 307评论 0 0

友情链接更多精彩内容