| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2117 人关注过本帖
标题:8086汇编div和mul不是很理解
只看楼主 加入收藏
hncdcsm1
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-1-2
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:3 
8086汇编div和mul不是很理解
8086汇编里面的div和mul不是很理解
搜索更多相关主题的帖子: div 
2012-03-07 17:11
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:18 
同道啊 我也记不住 可以现查嘛

无符号数乘法指令MUL(Unsigned Multiply Instruction)

指令的格式:MUL  Reg/Mem
受影响的标志位:CF和OF(AF、PF、SF和ZF无定义)
指令的功能是把显式操作数和隐含操作数(都作为无符号数)相乘,所得的乘积按表5.2的对应关系存放。

表5.2 乘法指令中乘数、被乘数和乘积的对应关系

乘数位数    隐含的被乘数    乘积的存放位置    举例
 
8位        AL        AX        MUL  BL
 
16位        AX        DX-AX        MUL  BX
 
32位        EAX        EDX-EAX        MUL  ECX
 

、有符号数乘法指令IMUL(Signed Integer Multiply Instruction)

 指令的格式: IMUL Reg/Mem
IMUL Reg, Imm ;80286+
IMUL Reg, Reg, Imm ;80286+
IMUL Reg, Reg/Mem ;80386+

受影响的标志位:CF和OF(AF、PF、SF和ZF无定义)

1)、指令格式1——该指令的功能是把显式操作数和隐含操作数相乘,所得的乘积按表5.2的对应关系存放。

2)、指令格式2——其寄存器必须是16位/32位通用寄存器,其计算方式为:

Reg ← Reg × Imm

3)、指令格式3——其寄存器只能是16位通用寄存器,其计算方式为:

Reg1 ← Reg2×Imm    Reg1 ← Mem×Imm

4)、指令格式4——其寄存器必须是16位/32位通用寄存器,其计算方式为:

Reg1 ← Reg1×Reg2    Reg1 ← Reg1×Mem

在指令格式2~4中,各操作数的位数要一致。如果乘积超过目标寄存器所能存储的范围,则系统将置溢出标志OF为1。

下面是学习和掌握乘法类指令的控件,可模拟执行MUL和IMUL等指令。
4、除法指令

除法指令的被除数是隐含操作数,除数在指令中显式地写出来。CPU会根据除数是8位、16位,还是32位,来自动选用被除数AX、DX-AX,还是EDX-EAX。

除法指令功能是用显式操作数去除隐含操作数,可得到商和余数。当除数为0,或商超出数据类型所能表示的范围时,系统会自动产生0号中断。

、无符号数除法指令DIV(Unsigned Divide Instruction)

指令的格式:DIV  Reg/Mem
指令的功能是用显式操作数去除隐含操作数(都作为无符号数),所得商和余数按表5.3的对应关系存放。指令对标志位的影响无定义。

、有符号数除法指令IDIV(Signed Integer Divide Instruction)

指令的格式:IDIV  Reg/Mem
受影响的标志位:AF、CF、OF、PF、SF和ZF

指令的功能是用显式操作数去除隐含操作数(都作为有符号数),所得商和余数的对应关系见表5.3。

表5.3 除法指令除数、被除数、商和余数的对应关系

除数位数        隐含的被除数       余数    举例
 
8位        AX        AL    AH    DIV  BH
 
16位        DX-AX        AX    DX    DIV  BX
 
32位        EDX-EAX        EAX    EDX    DIV  ECX

乘法比较慢 3-12个时钟周期 在还是在目前的core架构上 以前可能更慢罢

除法一贯很慢 以前要大约100个时钟周期 现在是大约50个

上面说的都是整数的 浮点的除法比较快

所以 记不住除法没关系 用的少 乘法嘛 如果是386以上用哪个imul的形式比较好

8086比较悲剧了 不过能查总是好的
2012-03-07 19:37
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
不是很理解?这个需要理解?
就是有几个硬件单元,你把数放进去,给她个指令,结果就出现在规定好的硬件单元里,很难?

技术问题,请不要以短消息方式提问
2012-03-07 23:20
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用zaixuexi在2012-3-7 23:20:56的发言:

不是很理解?这个需要理解?
就是有几个硬件单元,你把数放进去,给她个指令,结果就出现在规定好的硬件单元里,很难?

我觉得好难啊 比add等指令复杂多了
2012-03-08 11:56
快速回复:8086汇编div和mul不是很理解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030796 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved