;X86汇编_用循环结构编程计算阶乘n!
code segment
assume cs:code,ds:code
org 100h
start:
push cs
pop ds
push cs
pop es
Q0:lea dx,Tips
mov ah,9 ;显示提示
int 21h
Q1:mov ah,0
int 16h
cmp al,1bh ;Esc退出
jz exit
cmp al,'0'
jb Q1 ;不是数字重新输入
cmp al,'8';大于8,则产生溢出错误
ja Q1
mov ah,0eh
int 10h
sub al,30h;'0'
or al,al
jnz Q2
mov ax,1 ;0!=1
jmp Q4
Q2:mov ah,0
mov cx,ax
mov al,1
xor dx,dx
Q3:mul cx ;用mul cl算到6!便出错
loop Q3
Q4:cld
lea di,Result
add di,2
lea bp,Table
mov cx,5
Q5:xor dx,dx
div word ptr [bp]
or al,30h
stosb
mov ax,dx
add bp,2
loop Q5
lea dx,Result ;显示计算结果
mov ah,9
int 21h
jmp Q0
exit:
mov ah,4ch
int 21h
Tips db 'Please Input a Number(0-8),Esc to Quit: ',0dh,0ah,'$' ;提示
Table dw 10000,1000,100,10,1
Result db '!=00000',0dh,0ah,'$'
code ends
end start
so easy!
把N置到计数器,每次减1,算乘法,LOOP.
源代码就不给了,自己想象把.