下载此文档

汇编子程序设计阶乘.doc


文档分类:汽车/机械/制造 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
实验:递归计算N!
张钰琪 9**********

;
!程序;

!程序1,流程图
FACT子程序
主程序

保存BP内容,建立帧首地址
接过地址入栈

保存寄存器内容
结果地址入栈
取结果地址
结果地址入栈
取N
返回
N=0?
结果地址入栈
N-1入栈
调用FACT,求N-1
取(N-1)!
N!=N*(N-1)!
N!存入结果单元
恢复寄存器内容
返回
N!源程序
STACKSG SEGMENT STACK 'S' ;定义堆栈
DW 128 DUP('ST')
STACKSG ENDS
DATA SEGMENT
N_VAL DW 4 ;定义N值
RESULT DW ? ;结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACKSG
FRAME STRUC ;定义帧结构
SAV_BP DW ? ;保存BP值
SAV_CS_IP DW 2 DUP(?) ;保存返回地址
N DW ? ;当前N值
RESULT_ADDR DW ? ;结果地址
FRAME ENDS
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
LEA BX,RESULT
PUSH BX ;结果地址入栈
PUSH N_VAL ;N值入栈
CALL FAR PTR FACT ;调用递归子程序
MOV CL,10
MOV AX,RESULT
DIV CL
;把阶乘结果转换成十进制数
OR AX,3030H ;转换成ASCII码
MOV DL,AL
MOV AH,2 ;显示结果的高位
INT 21H
MOV AX,RESULT
DIV CL
; 把阶乘结果转换成十进制数
OR AX,3030H ;转换成ASCII码
MOV DL,AH
MOV AH,2 ;显示结果的低位
INT 21H
R1: MOV AX,4C00H
INT 21H
MAIN ENDP
FACT PROC FAR ;N!递归子程序
PUSH BP ;保存BP值
MOV BP,SP ;BP指向帧基地址
PUSH BX
PUSH AX
MOV BX,[BP].RESULT_ADDR
MOV AX

汇编子程序设计阶乘 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人260933426
  • 文件大小52 KB
  • 时间2017-08-06