如何使用汇编语言实现冒泡排序 最低0.27元开通文库会员,查看完整内容>;原发布者:TEAGLEAOYOU用汇编语言实现实现冒泡排序,并将排序后的数输出DATASSEGMENTAdw100,344,3435,43433,3438,343,134,80,8,1000,65535,54,45N=$-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位除需e799bee5baa6e59b9ee7ad9431333433623762要置高16位为0MOVAX,[SI];低16位为排序后的数CALLDTOC;调用DTOC将十进制数转换为字符串CALLSHOW_STR;调用SHOW_STR将一个数转化得到的字符串输出ADDSI,2;下一个数POPCX;循环次数出栈栈LOOPSHOWMOVAH,4CHINT21H;冒泡排序BUBBLEPROCL1:PUSHCX;将循环次数入栈LEASI,A;SI遍历DATAS数据段的数字L2:MOVAX,A[SI];将前一个数存于AXCMPAX,A[SI+2];比较前后两个数JBENEXT
求汇编语言冒泡排序程序,要简单的! 以下是冒泡排序子程序,可直2113接调用:(请设置es与ds相同5261)字数组排序(有4102符号数冒泡排序)SORTWORD PROC NEAR数组长度置入cx,数组首1653地址置入 siPUSH AXPUSH CXPUSH DXPUSH SIPUSH DIPUSHFPUSH CXPOP DXDEC DXSORTWL1:MOV CX,DXMOV DI,SISORTWL2:MOV AX,[DI+2]CMP AX,[DI]JL@SORTWNEXT;从大到小(无符号换成 JB)XCHG AX,[DI]MOV[DI+2],AXSORTWNEXT:INC DIINC DILOOP@SORTWL2DEC DXJNZ@SORTWL1POPFPOP DIPOP SIPOP DXPOP CXPOP AXRETSORTWORD ENDP字节数组排序(有符号数冒泡排序)SORTBYTE PROC NEAR数组长度置入cx,数组首地址置入 siPUSH AXPUSH CXPUSH DXPUSH SIPUSH DIPUSHFPUSH CXPOP DXDEC DXSORTBL1:MOV CX,DXMOV DI,SISORTBL2:MOV AL,[DI+1]CMP AL,[DI]JL@SORTBNEXT;从大到小(无符号换成 JB)XCHG AL,[DI]MOV[DI+1],ALSORTBNEXT:INC DILOOP@SORTBL2DEC DXJNZ@SORTBL1POPFPOP DIPOP SIPOP DXPOP CXPOP AXRETSORTBYTE ENDP
简述汇编语言冒泡排序的算法 data segment;定义数据段org 2000arr db 5,3,4,5,2,3,4,9,6count equ$-arrdata endscode segment;定义代码段assume cs:code,ds:datastart:初始化待排序列lea si,arrmov dx,countFoaming:不足两个元素,已有序sub dx,1jle endfoamingxor bx,bxmov cx,dxFoaminglop:开始一趟排序mov ax,[si][bx]cmp ax,1[si][bx]jle next逆序则交换swap:push axmov ax,1[si][bx]mov[si][bx],axpop axmov 1[si][bx],axnext:继续本趟排序inc bxloop Foaminglop开始下趟排序jmp Foamingendfoaming:结束排序mov ax,4c00hint 21hcode ends;结束程序