⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7.asm

📁 1!+2!+3!+4!+5!用递归方法进行!
💻 ASM
字号:
;计算SUM=1!+2!+3!+4!+5!
STACK     SEGMENT
DB        100 DUP(?)
STACK     ENDS
DATA      SEGMENT
N         DB    5
RESULT    DW    ?
DATA      ENDS
CODE      SEGMENT
          ASSUME   CS: CODE, DS: DATA, SS: STACK
START:    MOV   AX,   DATA
          MOV   DS,   AX 
          MOV   CL,   N                        ;设置循环次数
SUM:      MOV   AL,   CL                       ;SUM=1!+2!+3!+4!+5!,通过改变CL的值来取5,4,3,2,1
          CALL  FACT                           ;求N!,即1!,2!,3!,4!,5!
          ADD   RESULT,  DX                    ; 1!+2!+3!+4!+5!的结果,保存到RESULT
          DEC   CL                             ;循环次数减1
          JNZ   SUM
          MOV   AH,   4CH
          INT   21H                            ;返回DOS
FACT      PROC    NEAR                         ;子程序FACT;计算N!;AL=N
          CMP    AL,   0  
          JNE    INSTC
          MOV    DX,   1                       ;DX←0!
          RET
INSTC:    PUSH   AX                            ;N,N-1,N-2......2,1依次进栈
          DEC    AL
          CALL   FACT                          ;递归调用
          POP    CX
          CALL   NFMUL                         ;调用无符号乘法子程序NFMUL
          RET
FACT      ENDP                
NFMUL     PROC    NEAR                         ;无符号字节乘法子程序NFMUL,
                                               ;CL为被乘数,DL为乘数,AL为积
          MOV   AL,   CL
          MUL   DL
          MOV   DX,  AX                        ;乘积送DX
          RET
NFMUL     ENDP	
CODE      ENDS
          END   START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -