一个关于汇编求阶乘的问题!!
.386
DATAS SEGMENT USE16
BUF DB 10 DUP(0)
INPUT DB 'PLEASE INPUT X(0~9):$'
X DB ?
ERROR DB 0AH,0DH,'Input Error!',0AH,0DH,'$'
DATAS ENDS
STACKS SEGMENT USE16 STACK
DD 200 DUP(0)
STACKS ENDS
CODES SEGMENT USE16
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,OFFSET INPUT
MOV AH,9
INT 21H
MOV AH,1
INT 21H
CMP AL,'0'
JB ERR
CMP AL,'9'
JA ERR
CALL L1
CALL L2
MOV AH,4CH
INT 21H
L1 PROC
SUB AL,30H
MOV BL,AL
MOV EAX,1
A: MUL BX
DEC BX
CMP BX,1
JZ AA
JMP A
AA: RET
L1 ENDP
;求阶乘
L2 PROC
MOV CX,0
MOV EBX,10
LOP1:CWD
DIV EBX
PUSH EDX
INC CX
OR EAX,EAX
JNZ LOP1
LOP2:POP EDX
ADD DL,30H
MOV AH,2
INT 21H
DEC CX
JNE LOP2
RET
L2 ENDP
;输出
ERR: MOV DX,OFFSET ERROR
MOV AH,9
INT 21H
EXIT:MOV AH,4CH
INT 21H
CODES ENDS
END START
这是一个从键盘输入数字N(N为1~9之一),使用子程序求N! 并用子程序以十进制显示结果,程序如上,但是当输入8和9时,显示"DIVIDE ERROR',不知道是怎么回事,麻烦高手帮忙解答下!!谢谢