8086汇编语言求n!.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8086汇编语言求n!

CODES SEGMENT ASSUME CS:CODES,DS:CODES main proc START: push cs pop ds ;------------------------------------ mov dx,offset string mov ah,9 int 21h call Shuru ; cmp bp,10000 jbe cs_ok mov dx,offset Error mov ah,9 int 21h jmp START cs_ok: call show mov n,bp mov ax,0e0dh int 10h mov al,0ah int 10h call fractor ; mov cx,di routput: ;循环输出 push cx ; mov di,cx ; call output pop cx dec cx cmp cx,0 jge routput ; mov dx,offset YN mov ah,9 int 21h mov ah,0 int 16h ; cmp ah,31h ;key: N(n) jnz START exit: mov ax,4c00h ; INT 21H ; ; main endp ; ; ;1、键盘输入数据,以回车 结束输入。(0~65535) ;2、数值结果放入BP ;3、可以直接调用,然后在BP 里面娶出要的结果。 ;!!! 超出65535的,如99999,取 超出65536部分34463到BP!!! Shuru proc push dx push cx push bx push ax xor bp,bp mov bx,10 mov cx,5 input: mov ah,0 ;键盘输入数据 int 16h cmp al,0dh ;以回车结束输入 jz ok cmp al,0 ;只允许输入0~9 jb input cmp al,9 ja input mov ah,0eh ;显示有效输入 int 10h and ax,000fH xchg ax,bp mul bx ;扩大10倍 add bp,ax ;加一位 loop input ok:nop ;数值结果放入BP ;恢复用到的寄存器 pop ax pop bx pop cx pop dx ret Shuru endp ; shuchu: push dx push cx mov ax,cx xor cx,cx mov bx,10 nx1: xor dx,dx div bx or dx,0e30h push dx inc cx cmp ax,0 jnz nx1 nx2: pop ax int 10h loop nx2 pop cx pop dx ret ; show: mov ax,0e21h ;! int 10h mov al,= int 10h mov cx,bp jcxz sss rss: call shuchu cmp cx,1 jz sss mov ax,0e2ah ;* int 10h loop rss sss: mov ax,0e3dh ;= int 10h ret ; fractor proc near ; mov cx,n ;n,要求阶乘的数 mov i, 1 mov m, 0 ;m,步长 ; mov di,0 MOV SI,DI SHL SI,1 ; mov word ptr [si+200h],1 ctrli: mov c, 0 ;c,进位 mov di,0 ctrldi: cmp di,m ;;m,步长 ja cmpc ; done: MOV SI,DI SHL SI,1 ; mov ax,[si+200h] ; mov bx,i ; mul bx ; add ax,c ; ;c,进位 ; adc dx,0 ; ; mov bx,10000 ; div bx ; mov c,ax ;c,进位 MOV SI,DI SHL SI,1 mov [si+200h],dx ; inc di ; jmp ctrldi ; cmpc: cmp c,0 ;c,进位 jbe next ; inc m ;;m,步长 mov ax,c ; mov [si+2+200h],ax ; next: inc i cmp cx,0 jng if0 ; loop ctrli if0: mov di,m ;;m,步长 ret ; ; fractor endp ; ;------------------------------------------ output proc near ; C2: MOV SI,DI SHL SI,1 mov bx,[si+200h] ; bid proc ; mov cx,1000

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档