这道题可以通过C语言的冒泡排序法来实现;
代码实现如下:
DATA SEGMENT
a db 'qwertyuioplkjhgfdsazxcvbnm'
b db '0'
d db 26
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
mov cx,25
mov si,0
mov di,1
mov ax,10
;循环排序
tim:
mov al,a[si]
mov bl,a[di]
cmp al,bl
jge duan
FLAG1:
INC SI ;自增
INC di ;自减
cmp cx,1
jle duan1 ;cx减到1时跳转程序重新对cx赋值
FLAG2:
loop tim
MOV SI,0
MOV CX,26
;显示字符串
T:
mov dl,a[SI]
MOV AH,02H
INT 21H
INC SI
loop T
MOV AH,4CH
INT 21H
duan:
mov a[si],bl ;调换位置
mov a[di],al
JMP FLAG1
duan1:
dec d
mov cl,d
mov si,0
mov di,1
jmp FLAG2
CODE ENDS
END START
以下是运行结果:
可以看到被打乱的26个英文字母按从小到大的顺序输出。