📄 factorial.asm
字号:
; This sample gets the number
; from the user, and calculates
; factorial for it.
; Supported input from 0 to 8
; inclusive!
#make_COM#
include 'emu8086.inc'
ORG 100h
start:
; get first number:
CALL PTHIS
DB 13, 10, 'Enter the number: ', 0
CALL scan_num
; factorial of 0 = 1:
MOV AX, 1
CMP CX, 0
JE print_result
; move the number to BX:
; CX will be a counter:
MOV BX, CX
MOV AX, 1
MOV BX, 1
calc:
MUL BX
CMP DX, 0
JNE overflow
INC BX
LOOP calc
print_result:
; print result in AX:
CALL PTHIS
DB 13, 10, 'Factorial: ', 0
CALL PRINT_NUM_UNS
JMP exit
overflow:
CALL PTHIS
DB 13, 10, 'The result is too big!', 13, 10, 'Use values from 0 to 8.', 0
JMP start
exit:
RET
;=================================
; here we define the functions
; from emu8086.inc
; SCAN_NUM reads a
; number from the user and stores
; it in CX register.
DEFINE_SCAN_NUM
; PRINT_NUM prints a signed
; number in AX.
; PRINT_NUM_UNS prints an unsigned
; number in AX (required by
; PRINT_NUM):
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
; PTHIS prints NULL terminated
; string defined just after
; the CALL PTHIS instruction:
DEFINE_PTHIS
;=================================
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -