约瑟夫循环汇编程序.docx

约瑟夫循环汇编程序.docx

ID:51151412

大小:17.25 KB

页数:5页

时间:2020-03-19

约瑟夫循环汇编程序.docx_第1页
约瑟夫循环汇编程序.docx_第2页
约瑟夫循环汇编程序.docx_第3页
约瑟夫循环汇编程序.docx_第4页
约瑟夫循环汇编程序.docx_第5页
资源描述:

《约瑟夫循环汇编程序.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、;D.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的哪位?(要求:N是从键盘输入的10-9999的十进制数,以回车结束。);******************************************************************************************DATASEGMENTCIRLDW10000DUP(?)STR1DB'Pleaseinputthenumberofpeoples(10~9999):','$'STR2

2、DB'Pleaseinputthereportnumber:','$'STR3DB'Thelastpeopleis:','$'STR4DB'Pleaseinputthenumberbetween10and9999:','$'STR5DB'Presstocontinue.Otherstoquit...','$'KDB01HNUMDW?;总人数DELDW?;报数退出的数字DATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCA

3、LLHUI_HUANMOVDX,OFFSETSTR1MOVAH,09HINT21H;输出要求输入人数的提示CALLTERN1MOVNUM,BX;调用子程序TERN21,将输入的十进制数转换成十六进制CALLHUI_HUAN;回车,换行MOVDX,OFFSETSTR2MOVAH,09HINT21H;输出要求报数的提示CALLTERN1MOVDEL,BXCALLJohnCircle;调用约瑟夫循环子程序CALLHUI_HUAN;回车,换行MOVDX,OFFSETSTR5MOVAH,09HINT21H;输出要求继续输入的提示MOVAH,0

4、1HINT21HCMPAL,0DHCALLHUI_HUANJZMAINMOVAH,4CHINT21HMAINENDP;*****************************************;约瑟夫循环子程序;*****************************************JohnCirclePROCNEARMOVAX,1MOVCX,NUMMOVSI,OFFSETCIRLLOP1:MOVDX,SI;记下CIRL[NUM-1]的地址MOV[SI],AXADDSI,2INCAXLOOPLOP1;对数组付初值C

5、IRL[0]=1,CIRL[1]=2...CIRL[NUM-1]=NUMXORAX,AX;报数计数寄存器XORBX,BX;数组下标XORCX,CX;计数退出的人数寄存器DECNUM;将NUM减一,用来比较退出的人数是否达到(NUM-1)LOP2:CMPCX,NUM;CX用来计数退出的人数JZNEXT3;退出的人数达到N-1是跳转CMPCIRL[BX],0;当CIRL[BX]=0时,跳过继续报数JZNEXT1INCAXCMPAX,DEL;报数不等于DEL的值时,比较是否是第NUM个人报数,跳转JNZNEXT1MOVCIRL[BX],0

6、;报数等于DEL时,将此时的CIRL[BX]置0,AX置零,退出的人数CX加1MOVAX,0INCCXNEXT1:CMPBX,DXJNZNEXT2MOVBX,0JMPLOP2NEXT2:ADDBX,2JMPLOP2NEXT3:MOVBX,0NEXT4:CMPCIRL[BX],0JNZNEXT5ADDBX,2JMPNEXT4;找出最后不为0的数,并将其输出NEXT5:CALLHUI_HUAN;回车换行MOVDX,OFFSETSTR3MOVAH,09HINT21HMOVBX,CIRL[BX]CALLTERN2RETJohnCircleE

7、NDP;*****************************************;将输入的十进制数转换成十六进制数子程序;*****************************************TERN1PROCNEARXORAX,AXXORBX,BXXORCX,CXXORDX,DX;运算初始化SHURU:MOVAH,01HINT21HCMPAL,0DHJZNETSALBX,1MOVDX,BXMOVCL,2SALBX,CLADDBX,DX;将先输入的数X10再与后输入的数相加,存于BXSUBAL,30HMOVAH

8、,00HADDBX,AXJMPSHURUNET:CMPK,00H;比较输入的数是否再10—9999之间,不是的话,提示重新输入JZEXT1CMPBX,0AHJBREWCMPBX,270FHJAREWJMPEXT1REW:CALLHUI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。