关于IMUL 的问题??

KongK 2004-05-12 06:50:40
我想把下面的汇编翻成c,
mov ecx,186A0h
mov eax,66666667h
imul ecx
sar edx,02

我是这样写c的

long a=0x66666667;
long b=0x186A0h;

a *= b;

我看了资料,imul乘后结果方在ax,dx中,
这里相乘后结果是9C400000EA60.也就是dx中是9C40。

那我在c里怎么得到这个dx的值啊。
...全文
103 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Areslee 2004-06-24
  • 打赏
  • 举报
回复
如果你用BC编译器,那么汇编级调试时你可以看到类似的代码
mov cx,186A0h
mov ax,6666h
imul cx
mov [sp+100],ax
mov [sp+102],dx
这里SP+100的一个双字就是一个变量
sunrui 2004-06-24
  • 打赏
  • 举报
回复
当操作数是32位时,IMUL register/memory32 的结果存放于edx:eax

long a=0x66666667;
long b=0x186A0h;

__int64 result = ((__int64)a) * b;
long highdword = result >> 32;
wangziz 2004-06-23
  • 打赏
  • 举报
回复
union regs inregs,outregs;

long a=outregs.x.dx

21,498

社区成员

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

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