N的阶乘
计算N的阶乘
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
编写计算N!的程序。数值N由键盘输入,结果在屏幕上输出。 设计目的
通过编写一个阶乘的计算程序,了解怎样在汇编语言一级上实现高级语言的数学函数。
设计要求
N的范围为0~65536,即不超过一个16位寄存器的容量。 设计思路
本课程设计的
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图如图1所示。
编制阶乘程序的难点
本课程设计的难点在于随着N的增大,其结果远非寄存器所能容纳。这
就必须把结果放在一个内存缓冲区中。然而乘法运算只限于两个字相
乘,因此要确定好算法,依次从缓冲区中取数,进行两字相乘,并将
DX中的高16位积作为产生的进位。
算法
阶乘的定义为N!=N(N-1)(N-2)……2,从左至右依次计算,结果保存在缓
冲区BUF中。缓冲区BUF按结果由高到低依次排列。程序首先将BP初始
化为N,N不等于0或1则将N送入BUF缓冲区最低字节单元中。然后使
BP为N-1,以后BP依次减1,直到变化为1为止。每次让BP与BUF中
的字节单元按由低到高的次序相乘。低位结果AX仍保存在相应的BUF字
节单元中,高位结果DX则送到进位字单元CY中,作为高字相乘时从低字
来的进位,初始化CY为0.计算结果的长度随着乘积运算而不断增长。由
字单元LEN指示。LEN单元初始化为1。当最高字单元与BP相乘时。若
DX不为0,则结果长度要扩展。
N的阶乘程序流图