stack segment para stack 'stack' db 100h dup (?) stack ends data segment para public 'data' Arr1 db 3,9,7,-5,-8,0,3,5,9,8 Arr2 db 0ah dup (?) middle dw 0 i db 0 data ends code segment para 'code' assume cs:code, ds:data, ss:stack _START: mov cx,6 0ah mov ax, offset data mov ds,ax for_i: xor si,si for_j: cmp si, cx jge exit_for_j mov ah,[Arr1+si+1] cmp [Arr1+si],ah jle no_swap mov ah,[Arr1+si] mov [Arr1+si], al mov [Arr1+si+1], ah no_swap: inc si jmp for_j exit_for_j: loop for_i xor si,si mov cx,0ah _Exit: mov dl,Arr1[si] mov ah,02h inc si loop _Exit mov cx,0ah xor bx,bx mov si,offset Arr1 _middle: add ax,[si+bx] inc bx loop _middle sar ax,1 sar ax,1 sar ax,1 sar ax,1 mov middle,ax lea dx, Arr1 xor si,si mov cx,0ah lea bx, Arr2 _MakeArray2: inc si mov ds,dx mov ,[si] cmp [si],di jge m1 mov ds,bx mov di,[si] mov [si],di m1: inc si loop _MakeArray2 mov ax,4c00h int 21h code ends end _START