汇编语言对一个字符串进行排序应该如何做
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
结果稀奇古怪,求大神教 展开
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
结果稀奇古怪,求大神教 展开
展开全部
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是什么意思
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询