data segment//数据段
b db 10 //10字节储存单元
d db ? //定义变量,暂不分配储存单元
a db 10 dup(?) //10字节储存单元
data ends
code segment //代码段
assume cs:code,ds:data//提示系统各段对应的是代码段和数据段
start://标号
mov ax,data
mov ds,ax //装载数据段ds
lea dx,b //取b偏移地址
mov ah,0Ah
int 21h //中断输入字符串b
mov al,d
cbw //有符号数位拓展
mov cx,ax
dec cx //cx=d作为计数循环控制
loop1:
mov di,cx
mov bx,0
loop2:
mov al,a[bx]
cmp al,a[bx+1]
jge continue
xchg al,a[bx+1]
mov a[bx],al
continue:add bx,1
loop loop2//内存a中实现从大到小的排列
mov cx,di
loop loop1
mov al,d
cbw
mov si,ax
mov a[si],24h
lea dx,a
mov ah,9
int 21h //中断,进行字符串输出
mov ah,4ch
int 21h //中断返回DOS
code ends
end start //代码段结束的一般结构
(该行注释是针对从该行开始,以上的代码。)
希望对你有帮助