求阶乘运算程序内容:从计算机键盘任意输入一个1位十进制数据,要求使用汇编语言编写程序实现计算该数据的阶乘,要求屏幕有提示

问题描述:

求阶乘运算程序
内容:从计算机键盘任意输入一个1位十进制数据,要求使用汇编语言编写程序实现计算该数据的阶乘,要求屏幕有提示信息和相应结果.
1个回答 分类:综合 2014-10-23

问题解答:

我来补答
; 操作说明:
; 1、输入0~8一位数,显示N!;
; 2、重复1的过程,Esc键结束程序
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法:Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
push ax
lea dx,Str_Addr
mov ah,9
int 21h
pop ax
EndM
; -------------------------------------
; 功能:输出回车换行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF Endp
; -------------------------------------
; 功能:非递归算法求N!
; 入口:cx=N
; 出口:ax=N!
Factorial_NR Proc Near
cmp cx,1
ja @@Next_NR
mov ax,1
ret
@@Next_NR:push cx
push cx
pop ax
dec cx
@@Multi_Self:mul cx
loop @@Multi_Self
pop cx
ret
Factorial_NR EndP
; -------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[5]
mov BYTE PTR [di],'$'
dec di
cld
@@Divide:xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 6 dup(?)
Dec_ASCII EndP
; -------------------------------------
Prompt_Recure db 13,10,'N!=$'
Prompt_N db 'Please input a number(0-8):$'
Press_Key db 13,10,13,10,'The complated.Press any key to exit...$'
Start:push cs
pop ds
push cs
pop es
Input_Order:Output Prompt_N ;提示输入阶次
@@Input_Order:mov ah,1
int 21h
cmp al,27 ;Esc?
jz Exit_Proc ;结束程序
cmp al,'0' ;'8'?
ja @@Input_Order ;是,超出范围,重新输入
mov Prompt_Recure[2],al
and ax,0fh
mov cx,ax
call Factorial_NR ;求阶乘
push ax ;保存阶乘数
Output Prompt_Recure ;提示显示阶乘
pop ax ;弹出阶乘数
call Dec_ASCII ;显示阶乘数
call Output_CTLF ;输出一个回车、换行
call Output_CTLF
jmp Input_Order
; -------------------------------------
Exit_Proc:Output Press_Key ;提示操作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
 
 
展开全文阅读
剩余:2000
上一页:合外力做功,