使用函数进行求阶乘,然后调用函数进行输出
; main 函数开始
START:
MOV AX,DATAS
MOV DS,AX
; 调用 1 号功能函数,输出数据存储到 ax 中
mov ah, 1
int 21h
; ax 输入的是字符,先转成数字
sub ax, 48
;将 al 的数值赋值给 ch
mov ch, al
;调用函数 jiecheng,入口参数是 ch,出口参数是 ax
call jiecheng
;调用输出函数,入口是 ax,无出口
call output
MOV AH,4CH
INT 21H
; 阶乘开始
jiecheng proc
; 这里首先首先将 ax 置为 1,依次乘以 ch,直到 ch 减到 1 为止
mov ax, 1
L0: cmp ch, 1
jna over
mul ch
dec ch
jmp L0
over:
ret
jiecheng endp
; 输出开始
output proc
; 调用输出
mov ch, 0
mov cl, 10
; 每次循环除以 cl
L0: div cl
; 除以 cl 以后,结果在 al 中,余数在 ah 中
;将余数入栈
push ax
; ch 每次增加,记录位数
inc ch
mov ah, 0
cmp al, 0
ja L0
L1: ; 输出函数
cmp ch, 0
je over2
; 出栈,将栈顶元素存储到 dx 中
pop dx
mov dl, dh
add dl, 48
mov ah, 2
int 21h
dec ch
jmp L1
over2:
ret
output endp