问题
用变量传递参数键盘输入字符串到缓冲区后,对缓冲区内容降序排序并输出(冒泡排序)
流程
①把字符串通过键盘输入到缓冲区
②对字符串按照ASCII码降序排序(子程序)
③对排序后的字符串输出(子程序)
难点
排序算法的多重循环实现
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
;author XY ;数据区 Data segment ;注意此处一定要按照顺序写 buff db 16 ;缓冲区大小 numb db '?' ;输入的数量自动统计 arry db 16 dup('?') ;缓冲区的内容一共16个字符 Data ends ;--------------------------- Code segment assume cs:code,ds:data main proc far push ds sub ax,ax push ax mov ds,ax lea dx,buff mov ah,10 ;即0A键盘输入至缓冲区 int 21h call order ret main endp ;--------------------------- order proc near mov cl,numb mov ch,0 mov di,cx lp1:mov cx,di ;外循环由di控制 mov bx,0 ;下标 lp2:mov al,arry[bx] ;内循环由cx控制 cmp al,arry[bx+1] jge cont xchg al,arry[bx+1] mov arry[bx],al cont:inc bx loop lp2 dec di jnz lp1 call output ret order endp ;--------------------------- output proc near mov bl,numb mov bh,0 mov byte ptr[arry+bx],'$' mov dx,offset arry mov ah,9 int 21h ret output endp Code ends end main |
结果