1.题目要求:
编写程序实现,将缓冲区BUFFER中的100个字按递增排序
2.代码:
DATAS SEGMENT
A dw 100,344,3435,43433,3438,343,134,80,8,1000,65535,54,45
N=$-A ;计算数字所占的字节数
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:MOV AX,DATAS
MOV DS,AX
MOV SI,0 ;SI遍历数字;前一个数的地址
MOV CX,N/2-1 ;设置循环次数,M(M=N/2)个数需要,循环M-1次
CALL BUBBLE ;调用BUBBLE将原来的数排序
;输出排序后的数
MOV CX,N/2 ;循环M次输出排序后的M个数
MOV SI,0 ;SI遍历排序后的数
MOV DI,0 ;用DI记录数字的位数
MOV BP,N+5 ;BP用于遍历存储的转化后的字符的位置
SHOW: PUSH CX ;循环次数入栈
MOV DX,0 ;由于将要进行16位除需要置高16位为0
MOV AX,[SI] ;低16位为排序后的数
CALL DTOC ;调用DTOC将十进制数转换为字符串
CALL SHOW_STR ;调用SHOW_STR将一个数转化得到的字符串输出
ADD SI,2 ;下一个数
POP CX ;循环次数出栈栈
LOOP SHOW
MOV AH,4CH
INT 21H
;冒泡排序
BUBBLE PROC
L1: PUSH