CALCULATE:
MOV AL,[SI]
MOV BL,N
MUL BL
ADD AL,DL
MOV BL,0AH
DIV BL
MOV [SI],AH
MOV DL,AL
INC SI
LOOP CALCULATE
DEC N
CMP N,1
JA NEXT
这是因为 40! 的计算结果已经超出了 64 位整数的最大值范围,所以不能用一个 8 位的寄存器 AL 来存储结果,因为 AL 只能存储一个字节大小的数据,最大只能存储 255 的值。因此,对于大于 40 的阶乘,该程序会输出错误结果。