;сортировка массива
DATA SEGMENT ; Открыть сегмент данных
MAS DW 6, 102, 12, 150, 46, -78, 150, 200, -4, 76, 89, 287, -190, 27, 85, -3, 9, 15, 156, -96 ; Определить массив из 20 чисел
MasMax DW 20 dup(?)
MasMin DW 20 dup(?)
DATA ENDS ; Закрыть сегмент данных
STK SEGMENT ; Открыть сегмент стека
DW 100 DUP (?) ; Определить стек длиной 100 слов (а не байт!!!)
STK ENDS ; Закрыть сегмент стека
ASSUME DS:DATA, CS:CODE, SS:STK ; Задать соответствия сегментов
CODE SEGMENT ; открыть сегмент кода
START:
MOV AX, DATA ; инициализировать
MOV DS, AX ; сегментный регистр DS
MOV CX, 20 ; Задать счетчик для цикла
lea si, MAS ; Задать адрес массива MAS
lea di, MasMax ; адрес массива MasMax
lea bx, MasMin ; адрес массива MasMin
MET1: ; цикл по всем словам
lodsw ; читаем слово ax = ds:[si], si=si+2
test ax, 1 ; признаком четности является младший бит!
jnz next ; = 1 - нечет - обходим
cmp ax, 100 ; четные числа сравниваем с 100
jg SetMax ; если > 100, то пишем в массив MasMax
mov [bx], ax ; если <= 100, то пишем в массив MasMin
inc bx ; на следующий адрес
inc bx
jmp next ; на следующее слово
SetMax:
mov [di], ax ; пишем в MasMax
inc di ; на следующий адрес
inc di
next:
loop MET1 ; dec cx, переход на MET1, если cx не 0
mov ax,4c00h ;стандартный выход
int 21h
CODE ENDS ; закрыть сегмент кода
END START
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.