model tiny .data ;после - идут данные a dw 9,8,-4,-1,-9,1,2,3,4,5 len dw $-a ;длина массива aa dw 10 dup(?) len2 dw 0 ;длина массива2 scx dw ? ;переменная запомин. счетч. filehandle dw ? ;dos опр. что за фаил мы использ. file1 db "out",0 ;название первого файла file2 db "out2",0 ;название второго файла .code ;после - идет программа org 100h start: ;-----------------------------сортировка массива------------------ mov di,0 mov cx,10 l: mov si,0 mov scx,cx ;сохраняем cx mov cx,9 l1: cmp a[si],0 ;a[si]>0 то выполняем jl metka mov ax,a[si] mov dx,a[di] mov a[di],ax mov a[si],dx metka:mov ax,a[si] cmp ax,a[si+2] ;a[si]>a[si+1] то выполняем jl metka1 cmp a[si],0 ;a[si]<0 то выполняем jge metka1 mov ax,a[si] mov dx,a[si+2] mov a[si+2],ax mov a[si],dx metka1:add si,2 loop l1 mov cx,scx ; восстановка счетч. add di,2 loop l mov ax,0 mov si,0 mov cx,10 l2: add ax,a[si] inc si inc si loop l2 cwd mov bx,0ah ;0ah=10(константа) idiv bx mov di,offset aa ;далее идет базовая адресация mov si,0 mov cx,10 l3: cmp ax,a[si] ;сравниваем со средним значением jle metka3 mov dx,a[si] mov [di],dx inc di inc di metka3:inc si inc si loop l3 sub di,offset aa ; длина массива mov len2,di ; сохраняем длину массива ;запись отсортированных данных ;открываем файл mov ah,3ch mov dx,offset file1 mov cx,0 int 21h mov FileHandle,ax ;пишем в файл mov ah,40h mov bx,FileHandle mov cx,len mov dx,offset a int 21h ;обрезаем файл mov ah,40h mov bx,FileHandle mov cx,0 int 21h ;закрываем файл mov ah,3eh mov bx,FileHandle int 21h ;для второго массива ;открываем файл mov ah,3ch mov dx,offset file2 mov cx,0 int 21h mov FileHandle,ax ;пишем в файл mov ah,40h mov bx,FileHandle mov cx,len2 mov dx,offset aa int 21h ;обрезаем файл mov ah,40h mov bx,FileHandle mov cx,0 int 21h ;закрываем файл mov ah,3eh mov bx,FileHandle int 21h mov ah,4ch ;выход из программы int 21h end start