汇编实现冒泡排序的方法示例
冒泡排序算法的运作如下:(从后往前)
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
以下为实现代码:
S0SEGMENTSTACK DW30DUP(?) TOPLABELWORD S0ENDS S1SEGMENT TIPDB"Inputtennumberandseparatethenumberswithspace:",0DH,0AH,24H ARYDW20DUP(0) CRLFDB0DH,0AH,24H NDW0 S1ENDS S2SEGMENT ASSUMESS:S0,DS:S1,CS:S2,ES:S1 PPROCFAR MOVAX,S0 MOVSS,AX LEASP,TOP MOVAX,S1 MOVDS,AX MOVAX,S1 MOVES,AX LEADX,TIP MOVAH,9 INT21H LEASI,ARY XORDX,DX MOVBL,10 MOVCX,10 INPUT:MOVAH,1 INT21H CMPAL,20H;空格分隔字符 JESAVE ;输入十进制数,将数存入SI对应的内存单元 MOVDL,AL MOVAX,[SI] MULBL SUBDL,30H ADDAL,DL MOV[SI],AX JMPINPUT SAVE: ADDSI,2 LOOPINPUT ;数组保存完毕 LEASI,ARY MOVDI,SI ADDDI,2 MOVCL,9 MOVCH,9 CMPA:MOVBX,[DI] CMPBX,[DI-2] JACON MOVDX,[DI-2] PUSHDX MOV[DI-2],BX POPDX MOV[DI],DX CON:ADDDI,2 DECCH CMPCH,0 JNECMPA CALLPRINT MOVDI,SI ADDDI,2 DECCL MOVCH,CL CMPCL,1 JNECMPA ;以下为十进制输出ARY中的数 EXIT:MOVAH,4CH INT21H PENDP PRINTPROCNEAR PUSHSI PUSHCX PUSHAX PUSHDX LEADX,CRLF MOVAH,9 INT21H LEASI,ARY MOVCX,10 L1:MOVAX,[SI] MOVN,AX CALLOUTPUT ADDSI,2 MOVDX,20H MOVAH,2 INT21H LOOPL1 POPDX POPAX POPCX POPSI RET PRINTENDP OUTPUTPROCNEAR PUSHAX PUSHBX PUSHCX PUSHDX XORCX,CX MOVAX,N MOVBX,10 L2:XORDX,DX DIVBX PUSHDX INCCX CMPAX,0 JNEL2 L3:POPDX ADDDX,30H MOVAH,2 INT21H LOOPL3 POPDX POPCX POPBX POPAX RET OUTPUTENDP S2ENDS ENDP
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。