;从首地址为buf开始存放10个数,将这些数放在这些数的后面由小 ;到大排序,并将全部数据送CRT显示. data segment org 1000h buf db 15,5,8,2,1,6,3,6,9,2 buf1 db 10 dup(?) data ends stack segment para stack 'stack' db 100 dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov ax,stack mov ss,ax ;************************************ lea si,buf lea di,buf1 mov cx,10 l1: mov al,[si] mov [di],al inc si inc di loop l1 ;************************************ mov cx,9 p2: push cx mov bl,0 lea di,buf1 p3: mov al,[di] cmp al,[di+1] jbe s1 xchg al,[di+1] mov [di],al or bl,1 s1: inc di loop p3 and bl,bl jz j1 pop cx loop p2 ;------------------------ j1: mov cx,20 lea si,buf lea di,buf1 p1: mov al,[si] mov ah,al push cx mov cl,4 shr al,cl pop cx call z1 mov al,ah and al,0fh call z1 call z2 ;打印一空格 inc si cmp si,di ;** jne u1 call z3 ;回车换行 u1: loop p1 mov ah,4ch int 21h z1 proc push ax push bx push cx push dx cmp al,9 jbe x1 add al,7 x1: add al,30h mov dl,al mov ah,2 int 21h pop dx pop cx pop bx pop ax ret z1 endp z2 proc push ax push bx push cx push dx mov dl,20h mov ah,2 int 21h pop dx pop cx pop bx pop ax ret z2 endp z3 proc push ax push bx push cx push dx mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h pop dx pop cx pop bx pop ax ret z3 endp code ends end start