急!!汇编语言我不会呀!!

来源:百度知道 编辑:UC知道 时间:2024/09/19 17:04:18
8086还是DOS我都不明白,哪位帮帮忙!!小弟在此谢过!!!!
编写一个完整的程序求N!,求N大于6时的运算结果,并在屏幕上显示结果!谢谢啊!!!!!

data segment
N db 8;求N!
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax

mov ah,0
mov al,N
push ax
call recursion
pop ax
call bini;将结果转换为十进制输出的子程序
mov ax,4c00h
int 21h
;栈传递要求递归的N值
;子程序的局限:N! <= 0xFFFFH

recursion:
push bp
push ax
mov bp,sp
;程序从call调用执行到此,进行了三次压栈,所以ss:[bp+6]是n
mov ax,ss:[bp+6]
cmp ax,0
;如果n的值不等于0,则计算(n - 1)!
jne recursion_next
;如果n的值等于0,则返回1(0!= 1)
mov ax,1
jmp recursion_end
recursion_next:
dec ax
push ax
;递归调用
call recursion
pop ax
;n的阶乘等于n乘以n-1的阶乘(n!= n*(n-1)!)