You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

8086双寄存器MUL运算逆操作:从DX、AX还原原AX值

还原MUL运算前的AX值:用DIV指令搞定逆操作

嘿,这事儿其实直接用x86的除法指令就能解决,刚好对应MUL的逆运算!先理清楚逻辑:

你之前用mul dx的时候,本质是把AX里的16位无符号数和DX里的16位无符号数相乘,结果存在DX:AX这个32位组合寄存器里——你的例子里就是0007h:C024h(也就是32位值0007C024h),这正是1234h × 109h的结果。

要把这个乘积还原回原来的AX值,只需要做一次32位除以16位的无符号除法就行,步骤如下:

具体操作代码

首先确保你的DX和AX里已经存着MUL后的结果(DX=0007h,AX=C024h),然后执行:

mov bx, 109h   ; 把原来的除数(也就是之前的DX值)放到BX里
div bx         ; 用DX:AX除以BX,商回存到AX,余数存DX

执行完这条div bx之后:

  • AX里就会是你要的原始值1234h(这是除法的商)
  • DX里会是0000h(因为这是精确的乘积逆运算,没有余数)

手动验证一下

咱们算一遍确认:
1234h转十进制是4660,109h是265,4660×265=1234900,转十六进制就是0007C024h,刚好是你MUL后的DX:AX值。用这个数除以265(109h),结果就是4660(1234h),完全对得上。

小提醒

  • 如果是有符号乘法用的imul,那得对应用idiv来逆运算,但你这里是无符号的mul,所以div就够了。
  • 别忘除数不能是0,这里你用的是109h,肯定没问题,要是除数为0会触发错误异常的。

内容的提问来源于stack exchange,提问作者Yeho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:11:27