一次执行除法同时获得商和余数

zenny_chen 2006-12-07 08:13:03
#include <stdio.h>


// dividend, divisor, quotient and remainder should be replaced with variables instead of constant number
#define GET_DIV_AND_MOD(dividend, divisor, quotient, remainder) \
__asm{ \
__asm push eax \
__asm push edx \
__asm mov eax, dword ptr[dividend] \
__asm cdq \
__asm idiv dword ptr[divisor] \
__asm mov dword ptr[quotient], eax \
__asm mov dword ptr[remainder], edx \
__asm pop edx \
__asm pop eax \
}


void main(void)
{
int a = 9, b = 4;

int quo=0, rem=0;

//GET_DIV_AND_MOD(a, b, quo, rem);

quo = a / b;

GET_DIV_AND_MOD(a, b, quo, rem);

printf("The quo is: %d, and the rem is: %d\n", quo, rem);
}

...全文
666 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zenny_chen 2006-12-09
  • 打赏
  • 举报
回复
上面main()函数中的“quo = a / b;”是我在调试时用的,其实旦调用GET_DIV_AND_MOD
就可以了。其中quotient得到相应的商,而remainder得到相应的余数。

本程序仅适应支持MASM的编译器,并且基于i386及相关兼容机。
Perfect_Boy 2006-12-09
  • 打赏
  • 举报
回复
tb01412(tb)
是可以计算出来
但不能同时返回两个值啊!
好象zenny_chen (ACE Intercessor) 的也是一样
tb01412 2006-12-09
  • 打赏
  • 举报
回复
非得要用汇编么??用C不也可以在一个函数内同时计算出商与余数吗???
lockhall 2006-12-07
  • 打赏
  • 举报
回复
再见汇编。
softwarewander 2006-12-07
  • 打赏
  • 举报
回复
牛。不得不顶!!

70,027

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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