STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT array1 DW -1,27,-31,45,51,-6,72,83,59,10,-11,92,132 array2 DW 13 DUP(?) answer db 20 DUP(?) abss dw ? n EQU 13 enterr db 0ah,'$' stop db 0 DATA ENDS CODE SEGMENT PARA PUBLIC 'CODE' ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX,DATA MOV DS,AX mov si,0 mov bx,0 sort: step_x: cmp array1[si][bx],0 jge bx_pp mov dx,si or dx,bx cmp dx,0 je si_pp xchg ax,array1[si][bx] xchg ax,array1[si] xchg ax,array1[si][bx] jmp si_pp bx_pp: add bx,2 cmp bx,26 jl step_x si_pp: mov bx,0 add si,2 cmp si,24 jl sort mov cx,n xor si,si xor ax,ax sm: add ax,array1[si] add si,2 loop sm xor dx,dx mov bx,13 idiv bx mov abss, ax xor si,si xor di,di mov cx,n to_array2: mov ax,array1[si] cmp ax,abss jge si_2_pp mov array2[di],ax add di,2 si_2_pp: add si,2 loop to_array2 lea bx,array1 strt: mov si,0 number: mov cx,16 mov di,0 mov ax,[bx][si] btbs_lp: rol ax,1 jc btbs_1 mov answer[di],'0' jmp btbs_end btbs_1: mov answer[di],'1' btbs_end: inc di cmp di,4 je add_ cmp di,9 je add_ cmp di,14 je add_ jmp cont add_: mov answer[di],' ' inc di cont: loop btbs_lp mov answer[di],'$' mov ah,9 lea dx, answer int 21h lea dx, enterr int 21h add si,2 cmp si,26 jl number mov dl,0ah mov ah, 02h int 21h lea bx,array2 inc stop cmp stop,2 jl strt MOV AX,4c00h INT 21H CODE ENDS END START