用汇编语言计算N阶乘(0到FFFFH).docVIP

  • 46
  • 0
  • 约8.95千字
  • 约 13页
  • 2018-12-22 发布于浙江
  • 举报
PAGE \* MERGEFORMAT1 设计题目 编写计算N!的程序(数值N由键盘输入,结果在屏幕上输出。N的范围为0-65535,即刚好能被一个16位寄存器容纳)。 开发目的 由于当N值较大时(N10),N的阶乘计算很繁琐并且计算容易出错。所以可以编写计算N!的程序,利用计算机强大的计算能力计算N!。这不仅能节省繁琐计算的时间,而且得到的N!的积比起手工算的要准确。 设计方案 N的阶乘为1*2*3……(N-1)*N,N的范围为(0000H—FFFFH),N!以字为单位存在一个或几个定义的数据段中。 若已算到(n-1)!,假如它占4个字的空间,接下来它乘以n的原理,如图1所示。 图1 (n-1)!* n的原理 因此计算N!的算法可以这样编写,当前n!的值为被乘数,内容存在str2中,单位为字,n+1的值为乘数,存在str1中,单位也为字。被乘数从str2首地址中内容开始与乘数相乘,得到32位的积,它的低16位覆盖掉当前被乘数所在存储空间的内容。接着str2下一个字的内容与乘数相乘,也得到32位的积,前一个积的高16位与现在积的低16位相加,它们的和覆盖掉当前被乘数所在存储空间的内容,若它们的和有进位,把进位加到现在积的高16位。直到把str2中内容乘完。然后乘数增1,循环上面的内容。直到执行完(N-1)!*N 输入的N为4位16进制数

文档评论(0)

1亿VIP精品文档

相关文档