汇编中的乘法指令
来源:互联网 发布:货运接单软件 编辑:程序博客网 时间:2024/05/21 07:01
汇编中的乘法指令分为signed、unsigned指令两种。
unsigned:
mulsource//the source can be a 8、16、32-bits unsigned register or memory value
你可能在想,只有一个数怎么进行乘法运算呢,其实还有一个乘数已经隐含的放在eax中,其中根据mul指令后缀b、w、l大小放入al,ax,eax中。
由于乘法运算后产生的数比其中任何一个都大,所以一般用2倍于source位长的空间存放计算结果。
例如:
1.如果source是8-bits那么,运算结果将放在ax中,ax是16-bits。
2.如果source是16-bits,那么整个eax将被使用?错!为了与以前的处理器兼容,dx:ax的register pair将被使用,dx存储高字节的16-bits,ax存储低字节的16-bits,两个register大小加起来刚好32-bits。
3.如果source是32-bits,那将怎样存储运算结果呢,依旧使用eax么,可是eax只有32-bits啊,不够存储整个运算结果……
这时候一个64-bits的edx:eax的register pair将被使用,其中edx存储计算结果的高字节的32-bits,eax存储低字节的32-bits。
注意,如果在32-bits乘法指令运算之前,你如果有数据保存在edx中,请提前保存好,一进行32-bits mul指令,你的edx中数据就没了……
测试代码:
signed:
1.imulsource//用法同unsigned 的mul
2.imulsource,destination//这个指令格式能让你指定结果的目的地,但是有一个缺点,如果目标register大小不够,运算结果将被截断
3.imulimmediate,source,destination//destination = immediate * source,immediate 可以是signed
测试代码:
- 汇编中的乘法指令
- 汇编乘法指令
- 乘法、除法汇编指令总结
- 汇编中的乘法
- 汇编中的除法指令
- ARM中的---汇编指令
- ARM中的---汇编指令
- ARM中的---汇编指令
- ARM中的---汇编指令
- ARM中的---汇编指令
- ARM中的---汇编指令
- ARM中的---汇编指令
- 1.17.ARM汇编指令集5之乘法指令
- arm汇编中的跳转指令
- 汇编中的条件转移指令
- 汇编中的字符串操作指令
- 汇编中的各种跳转指令
- 汇编中的位操作指令
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- 实战 Jetty
- 中国移动boss
- [转帖]拉登斗霸权,打油诗!
- 哈夫曼编码
- 汇编中的乘法指令
- 拉登列传【转载】
- Jetty 源码分析
- Linux压缩文件的读取
- 编辑框
- 蝶恋花 悲情本拉登 (转贴)
- 防止对话框程序按Enter和ESC退出的对策
- Bridge Design
- android-gallery-头像选择器效果