汇编语言对一个字符串进行排序应该如何做

DATASSEGMENTbufdb'bacegd$'countequ$-buf;此处输入数据段代码DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STAC... DATAS SEGMENT
buf db 'bacegd$'
count equ $-buf ;此处输入数据段代码
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea si,buf
mov cx,count
dec cx
lp1:mov di,cx
lp2:mov ax,[si]
CMP AX,[si+1]
JLE NEXT
XCHG AX, [si+1]
MOV [si], AX

next:
inc si
loop lp2
mov cx,di
loop lp1
mov dx,ax
mov ah,9
int 21h
;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果稀奇古怪,求大神教
展开
 我来答
碧血玉叶花
2015-05-19 · TA获得超过4976个赞
知道大有可为答主
回答量:6154
采纳率:0%
帮助的人:1738万
展开全部
DATA SEGMENT
    A DB 32 DUP(0)
    M DB  'input A string:',0AH,0DH,'$'   
    N DB 0AH,0DH,'$'
DATA ENDS
CODE SEGMENT
    ASSUME DS:DATA,CS:CODE
START:
    MOV AX,DATA
    MOV DS,AX
    
    MOV DX,OFFSET M
    MOV AH,09H  
    INT 21H
    
    MOV BX,0
    MOV CX,32
L:  MOV AH,01H
    INT 21H
    MOV A[BX],AL  
    INC BX
    LOOP L
    
    MOV CX,32
LOOP1:
    MOV DI,CX
    MOV BX,0
LOOP2:
    MOV AL,A[BX]
    CMP AL,A[BX+1]
    JLE CONTI
    XCHG AL,A[BX+1]
    MOV A[BX],AL  
CONTI:
    INC BX
    LOOP LOOP2
    MOV CX,DI
    LOOP LOOP1     
    
    MOV DX,OFFSET N
    MOV AH,09H
    INT 21H
    
    MOV BX,0
    MOV CX,32
X:  MOV DL,A[BX]
    MOV AH,02H
    INT 21H
    INC BX
    LOOP X      
MOV AH,4CH
    INT 21H
CODE ENDS 
END START


这个汇编的排序是没问题的。。。
看别人的程序太麻烦了。。我就直接编了一个
排序没问题,你当做参考吧。。不知道符合你的要求不

追问
能给讲讲为什么这么编吗
比如说MOV DI,CX是什么意思
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式