📄 7.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 + -