答案:DSEG SEGMENT
ADDR DW N DUP(?)
DSEG ENDS
CSEG SEGMENT
MAIN PROC FAR
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
MOV CX,N:内循环变量存于CX中,初值为N-1
DEC CX
LOOP1:
MOV DI,CX:外循环变量存于DI中,初值为N-1
MOV BX,0;地址指针置为0
LOOP2:
MOV AX,ADDR[BX];取相邻两数比较
CMP AX,ADDR[BX+2]
JGE COTINUE;若符合次序,转移
XCHG AX,ADDR[BX+2];不符合,交换
MOV ADDR[BX],A;存大数
CONTINUE:
ADD BX,2;修改地址指针
LOOP LOOP2;若一遍未比较完,继续
MOV CX,DI
LOOP LOOP1;若N-1遍未作完,继续
RET
MAIN ENDP
CSEG ENDS
END START
其他:下面是冒泡法排序的源程序(已改进):
dseg segment
array db 0feh,86h,95h,21h,90h
count equ $-array
dseg ends
cseg segment
assume ds:dseg,cs:cseg
start: mov ax,dseg
mov ds,ax
mov dx,2
loop1: mov cx,count
mov si,cx
mov bx,cx
loop2: mov al,array[si-1]
cmp al,array[si-2]
jge next
xchg al,array[si-2]
mov array[si-1],al
mov bx,cx
next: dec si
dec cx
cmp cx,dx
jge loop2
cmp bx,count
je done
inc dx
jmp loop1
done: mov ah,4ch
int 21h
cseg ends
end start 看不懂哦 什么意思
上一个:有关汇编语言的,可以帮我讲解一下下面的程序每个语句的作用吗?
下一个:单片机汇编语言