内嵌汇编:__int64除以int

iwantnon 2010-03-16 12:32:31
下面程序如何实现?:
__int64 a;
int b;
int d;
int r;
__asm{
//用内嵌汇编实现a除以b,并将商存于d,余数存于r
}
...全文
170 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iwantnon 的回复:]
恩,谢谢,还有一个问题:
如果把其中的
mov ecx,b
idiv ecx
改成
idiv b
率效会提高吗?
[/Quote]

会,大约能快1/3到1/2个时钟周期,取决于处理器类型,不过指令长度会增加4个字节。

  • 打赏
  • 举报
回复

__int64 a;
int b;
int d;
int r;

__asm{
mov eax,dword ptr a
mov edx,dword ptr a+4
mov ecx,b
idiv ecx
mov d,eax
mov r,edx
}
cnzdgs 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iwantnon 的回复:]
恩,谢谢,还有一个问题:
如果把其中的
mov ecx,b
idiv ecx
改成
idiv b
率效会提高吗?
[/Quote]
onecomestwo 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cy330206 的回复:]

mov eax,dword ptr a;存放高32位
mov edx,dword ptr a+4;存放底32位
[/Quote]

高低位是不是反了?
cy330206 2010-03-16
  • 打赏
  • 举报
回复
你b没有给寄存器怎么进行接口啊。。。
iwantnon 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 delphiguy 的回复:]
__int64 a;
int b;
int d;
int r;

__asm{
mov eax,dword ptr a
mov edx,dword ptr a+4
mov ecx,b
idiv ecx
mov d,eax
mov r,edx
}
[/Quote]
恩,谢谢,还有一个问题:
如果把其中的
mov ecx,b
idiv ecx
改成
idiv b
率效会提高吗?
cy330206 2010-03-16
  • 打赏
  • 举报
回复
mov eax,dword ptr a;存放高32位
mov edx,dword ptr a+4;存放底32位

21,458

社区成员

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

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