📄 facnf.asm
字号:
DATA SEGMENT
MSG DB 'INPUT N(0..9):$'
NEWLINE DB 0AH,0DH,'$'
RESULT DB 'N! IS $'
ERROR DB 'ERROR:OUT OF RANGE OF N WITH 0..9!'
DB 0AH,0DH,'$'
N DB ?
FACN DW ? ;STORE THE N!
DATA ENDS
STACK SEGMENT PARA STACK'STACK'
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN: MOV AX,STACK
MOV SS,AX
MOV AX,DATA
MOV DS,AX
MAIN: MOV DX,OFFSET MSG
MOV AH,9 ;TO OUPUT A STRING BEGIN WITH DX
INT 21H
MOV AH,1 ;TO INPUT A DATA OF N
INT 21H
CMP AL,'0'
JB ERR
CMP AL,'9'
JA ERR
AND AL,0FH
MOV N,AL
MOV CL,AL
XOR BX,BX
XOR AX,AX
MOV AL,1
LOP: INC BL
MUL BX
DEC CL
JNE LOP
MOV FACN,AX
MOV DX,OFFSET NEWLINE
MOV AH,9 ;TO OUPUT A STRING BEGIN WITH DX
INT 21H
MOV DX,OFFSET RESULT
MOV AH,9
INT 21H
MOV BX,FACN
MOV CL,4 ;SHIFT NUM
MOV CH,4 ;LOOP NUM
SHOW: MOV DL,BH
SHR DL,CL ;
SHL BX,CL
CMP DL,9
JLE DIRECT
ADD DL,7
DIRECT: ADD DL,'0'
MOV AH,2
INT 21H
DEC CH
JNE SHOW
MOV AH,4CH
INT 21H
ERR: MOV DX,OFFSET NEWLINE
MOV AH,9 ;TO OUPUT A STRING BEGIN WITH DX
INT 21H
MOV DX,OFFSET ERROR
MOV AH,9
INT 21H
JMP MAIN
CODE ENDS
END BEGIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -