汇编:调用函数进行求阶乘,并进行输出

使用函数进行求阶乘,然后调用函数进行输出

; 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_努力努力再努力_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值