初学MUL乘法指令,写法求解释下

OICQshenshi 2012-01-28 08:02:17
MUL r8/m8 ;无符号字节乘:AX←AL×r8/m8
MUL r16/m16 ;无符号字乘:DX.AX←AX×r16/m16

MUL指令影响标志OF和CF。如果乘积的高一半(AH或DX)为0,则OF=CF=0;否则OF=CF=1。利用乘法指令对OF和CF的影响,可以判断相乘的结果中高一半是否含有有效数值。但是,MUL指令对其他状态标志的影响没有定义,也就是成为任意,不可预测。

例2.21a:无符号数0B4H与11H相乘
mov al,0b4h ;al=b4h=180d
mov bl,11h ;bl=11h=17d
mul bl ;ax=Obf4h=3060d,OF=CF=1(AX高8位不为0)

====================================================================
请问,
1、AX←AL×r8/m8 的符号←是什么意思,他的计算顺序是怎样的
2、r8/m8是r8或m8还是r8除以m8 ?
3、 mul bl ;ax=Obf4h=3060d,OF=CF=1(AX高8位不为0) mul bl 看ax的结果应该是al乘以bl,mul bl我知道隐藏了一个数,他的显示公式是什么
...全文
728 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
OICQshenshi 2012-01-28
  • 打赏
  • 举报
回复
理解了,谢谢
hili210 2012-01-28
  • 打赏
  • 举报
回复
“这是积的高位放在DX寄存器中”
“这是”打错了,是“这时”
hili210 2012-01-28
  • 打赏
  • 举报
回复
1.不是,一个乘数已经放到AL寄存器里的,MUL r8/m8 指的是另一个乘数,比如:MUL BL,BL就是一个8位的寄存器也就是r8的例子,再来个m8的例子:MUL Byte Ptr ds:[ 0 ]


2.那个是乘数为16位的一种情况,在乘数为16位时,得出的积就是32位的,这是积的高位放在DX寄存器中,积的低位放在AX寄存器中,也就是说,这个得出的积是由2个寄存器来进行存放的
OICQshenshi 2012-01-28
  • 打赏
  • 举报
回复
感觉好绕人啊
OICQshenshi 2012-01-28
  • 打赏
  • 举报
回复
1、MUL r8/m8 ;无符号字节乘:AX←AL×r8/m8
这句话意思是否是把r8或m8存到AL中去,然后再乘以AL,把结果存到AX中,是这样吗??

2、还有漏了个MUL r16/m16 ;无符号字乘:DX.AX←AX×r16/m16
中的DX.AX 为什么中间加个点呢?
hili210 2012-01-28
  • 打赏
  • 举报
回复

随便再补充下,第二问的r8/m8不是除法,刚刚已经解释了他们的单词简写,这个其实就表示:他们可以是一个8位寄存器,也可以是一个8位内存单元

.
hili210 2012-01-28
  • 打赏
  • 举报
回复
1. 那个意思是一个乘数存放在AL中,另一个乘数存放在一个8位的寄存器或内存中。而结果(积)存放在AX中

2.r8,r是寄存器(Register)单词的简写,m8,m是内存(Memory)单词的简写。

3.mul bl 公式就是:al × bl = ax(存放在AX寄存器中)

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧