首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在x86程序集中,是否有可能被直接与mul相乘?

在x86程序集中,是否有可能被直接与mul相乘?
EN

Stack Overflow用户
提问于 2013-12-10 07:58:34
回答 3查看 50.9K关注 0票数 12

我正在使用x86仿真器学习DosBox程序集。我在做乘法。我不明白它是怎么工作的。当我编写以下代码时:

代码语言:javascript
运行
AI代码解释
复制
mov al, 3
mul 2

我犯了个错误。虽然,在我使用的引用中,它在乘法中说,它假设AX始终是位置持有者,因此,如果我写:

代码语言:javascript
运行
AI代码解释
复制
mul, 2

它将al值乘以2,但它不适用于我。

当我尝试以下几点时:

代码语言:javascript
运行
AI代码解释
复制
mov al, 3
mul al,2
int 3

我在ax中得到了结果9。请看这张图以求澄清:

另一个问题:我可以直接使用内存位置进行乘法吗?示例:

代码语言:javascript
运行
AI代码解释
复制
mov si,100
mul [si],5
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-10 08:07:39

没有任何形式的MUL接受直接操作数。

要么做:

代码语言:javascript
运行
AI代码解释
复制
mov al,3
mov bl,2
mul bl     ; the product is in ax

或(imul-立即需要186 ):

代码语言:javascript
运行
AI代码解释
复制
mov ax,3
imul ax,2  ; imul is for signed multiplication, but low half is the same
           ; the product is in ax.  dx is not modified

或者:

代码语言:javascript
运行
AI代码解释
复制
mov al,3
add al,al  ; same thing as multiplying by 2

或者:

代码语言:javascript
运行
AI代码解释
复制
mov al,3
shl al,1   ; same thing as multiplying by 2
票数 15
EN

Stack Overflow用户

发布于 2015-10-18 11:35:33

英特尔手册

英特尔64和IA-32架构软件开发人员手册-第2卷指令集参考- 325383-056US 2015年9月部分"MUL -无符号乘法“列Instruction只包含:

代码语言:javascript
运行
AI代码解释
复制
MUL r/m8
MUL r/m8*
MUL r/m16
MUL r/m32
MUL r/m64

r/mXX的意思是寄存器或内存:因此在任何形式中都不允许像mul 2这样的即时性(immXX):处理器根本不支持该操作。

这也回答了第二个问题:可以用记忆乘以:

代码语言:javascript
运行
AI代码解释
复制
x: dd 0x12341234
mov eax, 2
mul dword [x]
; eax == 0x24682468

同时也说明了为什么像mul al,2这样的东西不能工作:没有任何形式需要两个参数。

然而,正如迈克尔所提到的,imul确实有直接的形式,如IMUL r32, r/m32, imm32和许多mul没有的其他形式。

票数 3
EN

Stack Overflow用户

发布于 2022-05-22 10:54:56

没有即时的mul,但是在186和更高版本中没有扩展的imul-immediate,在386和更高版本中有imul reg, r/m。有关更多细节,请参见@phuclv在汇编语言指令理解中的问题上的回答,当然,英特尔的指令集参考手册用于mul和imul:

即使在最新的CPU上也没有内存目的地mulimul

不过,如果你想要在186和更高版本上使用16位操作数和更宽的操作数,可以使用imul cx, [si], 5。在386,也是imul di, [si]

但这些新形式的imul不存在8位操作数大小,因此不存在imul cl, [si], 5

在386或更高版本上,用LEA乘以一个简单的常量通常会更有效,尽管它确实花费了更多的代码大小。

代码语言:javascript
运行
AI代码解释
复制
; assuming 16-bit mode
    mov  cx, [si]              ; or better movzx ecx, word [si] on newer CPUs
    lea  cx, [ecx + ecx*4]     ; CX *= 5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20499141

复制
相关文章
[ASP.NET Web API]如何Host定义在独立程序集中的Controller
通过《ASP.NET Web API的Controller是如何被创建的?》的介绍我们知道默认ASP.NET Web API在Self Host寄宿模式下用于解析程序集的AssembliesResolver是一个DefaultAssembliesResolver对象,它只会提供当前应用程序域已经加载的程序集。如果我们将HttpController定义在非寄宿程序所在的程序集中(实际上在采用Self Host寄宿模式下,我们基本上都会选择在独立的项目定义HttpController类型),即使我们将它们
蒋金楠
2018/01/15
1.2K1
[ASP.NET Web API]如何Host定义在独立程序集中的Controller
矩阵转置与矩阵相乘[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说矩阵转置与矩阵相乘[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/06/19
5K0
矩阵转置与矩阵相乘[通俗易懂]
字符串相乘与反转(15)
首先来共勉一句话:Use the utility in the API is recommended in the project. But if you use it in an interview, you will definitely fail .来自老表!
公众号guangcity
2019/09/20
4230
字符串相乘与反转(15)
矩阵转置与矩阵相乘
写这篇博客的原因是为了记录一下矩阵转置与矩阵相乘的实现代码,供日后不时之需。直接原因是今晚(2016.09.13)参加了百度2017校招的笔试(C++岗),里面就有一道矩阵转置后相乘的在线编程题。考虑到日后笔试可能会用到,特此记录,也希望能够帮助到需要的网友。
恋喵大鲤鱼
2018/08/03
3.1K0
矩阵转置与矩阵相乘
矩阵转置与矩阵相乘
写这篇博客的原因是为了记录一下矩阵转置与矩阵相乘的实现代码,供日后不时之需。直接原因是今晚(2016.09.13)参加了百度 2017 校招的笔试(C++岗),里面就有一道矩阵转置后相乘的在线编程题。考虑到日后笔试可能会用到,特此记录,也希望能够帮助到需要的网友。
全栈程序员站长
2022/07/04
8150
矩阵转置与矩阵相乘
CV领域,Transformer在未来有可能替代CNN吗?
Transformer在CV领域得到广泛关注,从Vision Transformer到层出不穷的变种,不断地刷新了各项任务地榜单。在CV领域的应用,Transformer在未来有可能替代CNN吗?
CV君
2021/07/13
8720
CV领域,Transformer在未来有可能替代CNN吗?
windows 任何应用程序在 运行 里直接打开
    很多时候电脑的桌面 应用 icon 很多了,不方便找到也比较浪费时间,还有 有些 应用 icon 也许不想放在桌面上,如果能用命令方式打开 应用 那该多好。
卓越笔记
2023/02/18
9830
windows 任何应用程序在 运行 里直接打开
AutoML 是否被过度炒作?
汤姆和杰瑞,第70集(译者注:直到暑假去了上海Disney,我才知道它和兔八哥、啄木鸟伍迪都和迪士尼木有关系=-=)--按键猫(1952)
AI科技评论
2019/10/23
5950
AutoML 是否被过度炒作?
查询域名是否被K
最近又想购一个域名,突然想到现在这个域名起的时候没想太多,导致的结果是和oxox的‘挂钩’多了一点。这次留了个心眼,想查一下中意的域名是否被百度K过,不然收录是个问题。
上山打老虎了
2022/06/14
13.3K0
查询域名是否被K
AutoML 是否被过度炒作?
图源:汤姆和杰瑞,第70集 —— 按键猫(1952)(译者注:直到暑假去了上海Disney,我才知道它和兔八哥、啄木鸟伍迪都和迪士尼木有关系,气气
AI研习社
2019/10/29
6820
AutoML 是否被过度炒作?
VBA实用小程序:核查并标记公式是否被正确复制
下面的代码将复制活动工作表,然后标记公式,使用阴影显示已复制哪些以及从何处复制。它从左到右、从上到下进行核查。
fanjy
2023/02/14
5140
VBA实用小程序:核查并标记公式是否被正确复制
在制造行业中,ERP是否有更大是施展空间
  其实,在很多企业认为自己已经实现智能制造的时候,提出工业4.0的德国也仅仅是将其作为一个发展的目标。中国制造的总体水平基本在中等的水平,甚至更低,智能制造就更是遥不可及的。
明象ERP
2019/03/01
6760
判断有向图是否有圈
1. 拓扑排序 拓扑排序是对有向无圈图的顶点的一种排序:如果存在一条vi到vj的路径,则vj排在vi后面(因为只要满足这个特性就是拓扑序列,所以它不一定是唯一的)。比如在众多的大学课程中,有些课有先修课,我们可以将其抽象为拓扑排序,有向边(v, w)表明课程v必须安排在w之前,否则课程w就无法进行。我们可以想象所有的课程以及课与课之间的关系可以用一个图来表示,而拓扑排序就可以知道课程安排的顺序。然而,如果图存在圈,就没有拓扑序列。比如如果要上课程A必须上课程B,要上课程B必须上课程C,而要上课程C必须上课程
llhthinker
2018/01/24
3K0
【Android 逆向】x86 汇编 ( add / sub / mul / div 数值运算指令 | xor / not / sal / sar / shl / shr 位运算指令 )
align 字节对齐 , db 声明字符 / 字符串 , nop 空指令 cmp 比较 , test 比较 call 子函数调用指令 , jmp 跳转指令 ( 可选参数 a , b , c , g , l , o , p , s , z , e , n) lea 加载指令 , lds , les , lfs , lgs , lss , mov 数据传送指令 push 入栈指令 , pop 出栈指令 , pushf , popf , pushd , popd , pushad , popad , pusha , popa ret , retn 返回指令 , set 设置目标值指令 add , sub , mul , div 数值运算指令 xor , not , shl , shr , sal , sar , rol , ror , rcl , rcr 位运算指令
韩曙亮
2023/03/29
1.4K0
[算法题] 大数相乘
静默虚空
2018/01/05
8660
在微信小程序中直接运行React组件
在研究跨端开发时,我的一个重要目标,是可以让react组件跑在微信小程序中。在这个过程中,我探索了微信小程序的架构,并且引发了很多思考。而作为跨端开发,实际上很难做到 write once,run anywhere,因为每个平台所提供的能力是不一样的,例如微信小程序提供了原生的能力,例如调起摄像头或其他需要原生环境支持的能力,在微信小程序中开发虽然也是在webview中开展,但是,却需要一些原生的思维。所以,要做到 write once 就必须有一些限制,这些限制注定了我们无法完全利用小程序的能力,仅仅只用到一些布局的能力而已。所以,奉劝各位,在做跨端开发时,要有个心理准备。但如果跳出跨端开发,我现在只开发小程序,那我能否用我熟悉的react来开发呢?甚至,能否用我开发的nautil框架来开发呢?答案是可以的,本文将带你一步一步实现自己的react小程序开发之路,帮助你在某些特定的场景下,完成react项目往小程序迁移的目标。
否子戈
2021/07/16
5.3K0
在微信小程序中直接运行React组件
sl从程序集中读取xaml文件
 StreamResourceInfo sri = Application.GetResourceStream(new Uri("HowTo;component/Page.xaml", UriKind.Relative)); StreamReader sr = new StreamReader(sri.Stream); txtReadxml.Text = sr.ReadToEnd(); {1};component/{2} 1为程序集的名字 2为想读取的页面 page.xaml: <UserCont
用户1172164
2018/01/16
1.1K0
sl从程序集中读取xaml文件
在PHP中检测一个类是否可以被foreach遍历
在PHP中,我们可以非常简单的判断一个变量是什么类型,也可以非常方便的确定一个数组的长度从而决定这个数组是否可以遍历。那么类呢?我们要如何知道这个类是否可以通过 foreach 来进行遍历呢?其实,PHP已经为我们提供了一个现成的接口。
硬核项目经理
2020/06/04
2.2K0
在Typecho文章页面添加是否被百度收录的功能
我们是否经常在一些网友的博客内容页看到"百度已收录"等字样?其实这样加上去有多少效果也没有多少,但是对于有些个人来说他喜欢的,或者可以在考核编辑的时候可以看看他们的文案是否达到有效的收录率。前几年老蒋在医院做网络营销的时候对于编辑考核中好像是有这么一条,需要考核收录率。
老蒋
2021/12/24
4520
32 岁程序员去面试,因年龄太大被直接送走。。
在互联网企业中,有一个奇怪的现象:年龄越大的程序员,越不敢重用!因为大多数人觉得,程序员到了一定的年龄就不能创造太多价值,要么当公司管理要么改行。
用户1655470
2018/12/17
5440

相似问题

x86程序集中是否有仅以64位模式存在的指令?

614

汇编8086不使用MUL相乘41

12

是否有可能避免直接引用?

10

在x86程序集中运行总程序

16

检查地址是否可在x86程序集中写入

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档