我必须键入和数组(仅限数字),当引入它时,必须在第二个中进行排序。我所要做的就是实现必须对它们进行排序的PROC。我的问题是我不知道怎么做,因为我唯一能做的就是将第一个复制到第二个。感谢您的帮助,对不起我的英语。
;mov ax, vector[si]
;mov vector[di], ax
;this loop copy all elements
; start code
Sort_DecreasingOrder:
cmp si, 0
mov ax, vector1[si]
bCompare:
xor di, di
mov bx, vector2[di]
cmp ax, bx
jge IntroduceBefore
答案 0 :(得分:1)
另一种排序方法是Selection Sort,在这里:
数据段定义为:
elements db 7,1,0,5,'$'
size dw $-elements - 1 ; size stores 5 (including '$') so we subtract one now it stores 4 ( which is the actual number of elements )
msg db 10,13,'Unsorted Array: $'
msg2 db 10,13,'Sorted Array: $'
对数组进行排序的步骤:
sort proc
mov cx, size
mov si, 0
mov di, 0
mov ax, 1 ; this is done
dec cx ; to avoid the last comparison
outerLoop:
push cx ; store the limit of outerLoop in stack
mov bl, elements[si] ; store the element in bl pointed by si
mov cx, size ; store the value of size in cx for innerLoop
sub cx, ax ; this is done so that the limit does not proceed the limit of array elements.
innerLoop:
inc di
cmp bl, elements[di] ; compare the if BL is not greater than
jna continue ; content of element pointed by DI if yes then continue otherwise swap the value by executing below statements
mov dl, elements[di] ; get the element pointed by DI into DL
mov elements[di], bl ; swap the
mov elements[si], dl ; elements
mov bl, dl ; store the smallest element in BL
continue:
loop inner
inc ax
pop cx ; get the limit of outerLoop
inc si ; increment the index of outerLoop to point to the next element
mov di, si
loop outer
return2:
ret
sort endp
end