下载此文档

中南大学试题.docx


文档分类:研究生考试 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
;用汇编语言实现实现冒泡排序,并将排序后的数输出DATASSEGMENTAdw3108562236143313 N=$-A ;计算数字所占的字节数DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVSI,0 ;SI遍历数字;前一个数的地址MOVCX,N/2-1 ;设置循环次数,M(M=N/2)个数需要,循环M-1次CALLBUBBLE ;调用BUBBLE将原来的数排序;输出排序后的数MOVCX,N/2 ;循环M次输出排序后的M个数MOVSI,0 ;SI遍历排序后的数MOVDI,0 ;用DI记录数字的位数 MOVBP,N+5 ;BP用于遍历存储的转化后的字符的位置SHOW:PUSHCX ;循环次数入栈MOVDX,0 ;由于将要进行16位除需要置高16位为0 MOVAX,[SI];低16位为排序后的数 CALLDTOC ;调用DTOC将十进制数转换为字符串 CALLSHOW_STR;调用SHOW_STR将一个数转化得到的字符串输出 ADDSI,2 ;下一个数 POPCX ;循环次数出栈栈 LOOPSHOWMOVAH,4CHINT21H;冒泡排序BUBBLEPROCL1: PUSHCX ;将循环次数入栈 LEASI,A ;SI遍历DATAS数据段的数字L2:MOVAX,A[SI] ;将前一个数存于AX CMPAX,A[SI+2] ;比较前后两个数 JBENEXT ;如果前一个数小于或等于后一个数则继续本轮的比较 XCHGAX,A[SI+2] ;否则,交换前后两个数的位置 MOVA[SI],AXNEXT:ADDSI,2 ;下一个数 LOOPL2 ;注意内层循环的次数已经确定了 POPCX ;将循环次数出栈 LOOPL1 ;下一轮比较 RETBUBBLEENDP;将十进制数转换为字符串并储存起来DTOCPROCS:MOVCX,10;将除数10,放入CX中CALLDIVDW ;调用DIVDW程序ADDCL,30H ;把数字转换为ASCII码,这样就能显示了MOVDS:[BP],CL;把ASCII码放到内存中INCDI ;用DI记录循环的次数PUSHAX ;将低16位入栈ADDAX,DX ;将高位与低位相加,接着判断是否已经除尽JZBACK ;除尽后返回调用处POPAX ;将低16位出栈DECBP ;逆序存放转化后的字符,便于主程序调用SHOW_STRJMPSBACK:POPAX;为了得到正确的IP值,需要出栈一次RETDTOCENDP;子程序定义开始,功能是分离被除数的各个位的数字;公式:X/N=int(H/N)*65536+[rem(H/N)*65536+L]/NDIVDWPROC PUSHAX ;低16位入栈MOVAX,DX ;将高16位写入AX,MOVDX,0 ;将高16位置零DIVCX ;将新的数除10,MOVBX,AX ;将商int(H/N)转移到BX,默认余数rem(H/N)在DXPOPAX ;将低16位出栈,DIVCX;将[rem(H/N)*65536+L]除10,默认余数在DXMOVCX,DX;将余数转移到CXMOVDX,BX;将商int(H/N)转移到dx,相当于int(H/N)*65536RET;子程序定义结束DIVDWENDP;实现字符串的输出SHOW_STRPROCS2:MOVAH,2 ;输出数字转化后的字符串MOVDL,DS:[BP]INT21HINCBP ;顺序输出DECDI ;数字的位数减一JZOK ;字符串输出完了就结束JMPS2 ;否则继续输出OK:MOVAH,2 ;输出空格MOVDL,0INT21HRET SHOW_STRENDPCODESENDSENDSTART第一个累加和的源码:  AREATEXT,CODE,READWRITE    ENTRY    MOVR0,#100 ;循环数目    MOVR1,#0    ;初始化数据  LOOP    ADDR1,R1,R0 ;将数据进行相加,获得最后的数据    SUBSR0,R0,#1;循环数据R0减去1    CMPR0,#0    ;将R0与0比较看循环是否结束    BNELOOP    ;判断循环是否结束,接受则进行下面的步骤     LDRR2,=RESULT    STRR1,[R2]  RESULT    DCD0  STOP    BSTOP 第二个排序的源码附上:  ;排列算法:先将所有的数据与第一个进行比较,最后取出最小的数据放到第一个内存单元中    ;然后再从第二个内存单元开始进行比较,将第二小的数据放到第二个内存单元中,    ;以此内推则能将十个数据进行排列。    AREATEXT,CODE,READWRITE    ENTRY 

中南大学试题 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人rsqcpza
  • 文件大小31 KB
  • 时间2020-04-04