すでにソートされている2つの配列を、同じ順序で別の大きな配列にマージする必要があります。ソートは使えません。うまく組み立てられますが、何も表示されません。
これは私がこれまでに持っているものです。私はこれに慣れていないので、それが最善ではない場合は簡単に行ってください。
include irvine32.inc
Title MergeArrays
.data
a1 dw 1,3,4,7,9,15,17
a2 dw 2,6,8,10,11,14,18,19
a3 dw 15 dup(0)
.code
main proc
sub EAX,EAX
mov ESI,OFFSET a1
mov EDI,OFFSET a2
mov EDX,OFFSET a3
mov ECX,lengthof a3 ;Set loop times
call Merge
call Display
exit
main endp
jmp Endit
;=====================================================================
Merge proc
TheLoop:
TheJump:
mov ax,[ESI]
cmp ax,[EDI]
jl AddA1 ;Jump if less
jg AddA2 ;Jump if greater
Loop TheLoop
AddA1:
mov ax,[ESI]
mov [EDX],ax
inc ESI
inc EDX
jmp TheJump
AddA2:
mov ax,[EDI]
mov [EDX],ax
inc EDI
inc EDX
jmp TheJump
Merge endp
;==================================================================
Display proc
mov ECX,lengthof a3 ;Set loop times
mov EDX,OFFSET a3
DisplayLoop:
mov ax,[EDX]
call writedec
call crlf
inc EDX
loop DisplayLoop
Display endp
;===================================================================
Endit:
end main